st
simple terminal
git clone https://9o.is/git/st.git
commit 4d620d59fff3ff465dea8e3ce11939dccd9003ef parent 9f88f4fbf145a831dd2da22a680874e3db775da1 Author: Jul <jul@9o.is> Date: Tue, 15 Jul 2025 15:19:38 -0400 adjust scrollback with floating point Diffstat:
| M | config.def.h | | | 4 | ++-- |
| M | st.c | | | 10 | +++++----- |
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/config.def.h b/config.def.h @@ -201,8 +201,8 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, - { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, + { ShiftMask, XK_Page_Up, kscrollup, {.f = -0.1} }, + { ShiftMask, XK_Page_Down, kscrolldown, {.f = -0.1} }, }; /* diff --git a/st.c b/st.c @@ -1090,14 +1090,14 @@ tswapscreen(void) void kscrollup(const Arg *a) { - int n = a->i; + float n = a->f; if (IS_SET(MODE_ALTSCREEN)) return; - if (n < 0) n = (-n) * term.row; + if (n < 0) n = MAX((-n) * term.row, 1); if (n > TSCREEN.size - term.row - TSCREEN.off) n = TSCREEN.size - term.row - TSCREEN.off; - while (!TLINE(-n)) --n; + while (!TLINE((int)-n)) --n; TSCREEN.off += n; selscroll(0, n); tfulldirt(); @@ -1107,12 +1107,12 @@ void kscrolldown(const Arg *a) { - int n = a->i; + float n = a->f; if (IS_SET(MODE_ALTSCREEN)) return; - if (n < 0) n = (-n) * term.row; + if (n < 0) n = MAX((-n) * term.row, 1); if (n > TSCREEN.off) n = TSCREEN.off; TSCREEN.off -= n; selscroll(0, -n);