From 89569a223e3e196605b1bf17c393938cd4e9ad53 Mon Sep 17 00:00:00 2001 From: Noah Swerhun Date: Wed, 15 Jul 2020 16:06:33 -0500 Subject: [PATCH] added scrollback --- config.def.h | 2 + st | Bin 102520 -> 102624 bytes st-scrollback-20200419-72e3f6c.diff | 351 ++++++++++++++++++++++++++++ st.c | 125 +++++++--- st.h | 2 + st.o | Bin 73552 -> 76648 bytes 6 files changed, 453 insertions(+), 27 deletions(-) create mode 100644 st-scrollback-20200419-72e3f6c.diff diff --git a/config.def.h b/config.def.h index b4fff92..f9c0ba6 100644 --- a/config.def.h +++ b/config.def.h @@ -203,6 +203,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} }, }; /* diff --git a/st b/st index 7eced8f2b009a452d3cc0dbb65a5302125552f25..83bc15009838520a6b6fa97b128c609fb8b41a26 100755 GIT binary patch delta 37314 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 wzoyOpGCS!x^Vo$geGotofw%0j=S;u!#6pP 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 diff --git a/st-scrollback-20200419-72e3f6c.diff b/st-scrollback-20200419-72e3f6c.diff new file mode 100644 index 0000000..e72999c --- /dev/null +++ b/st-scrollback-20200419-72e3f6c.diff @@ -0,0 +1,351 @@ +diff --git a/config.def.h b/config.def.h +index 0895a1f..eef24df 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -188,6 +188,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} }, + }; + + /* +diff --git a/st.c b/st.c +index 0ce6ac2..641edc0 100644 +--- a/st.c ++++ b/st.c +@@ -35,6 +35,7 @@ + #define ESC_ARG_SIZ 16 + #define STR_BUF_SIZ ESC_BUF_SIZ + #define STR_ARG_SIZ ESC_ARG_SIZ ++#define HISTSIZE 2000 + + /* macros */ + #define IS_SET(flag) ((term.mode & (flag)) != 0) +@@ -42,6 +43,9 @@ + #define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) + #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) + #define ISDELIM(u) (u && wcschr(worddelimiters, u)) ++#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - \ ++ term.scr + HISTSIZE + 1) % HISTSIZE] : \ ++ term.line[(y) - term.scr]) + + enum term_mode { + MODE_WRAP = 1 << 0, +@@ -117,6 +121,9 @@ typedef struct { + int col; /* nb col */ + Line *line; /* screen */ + Line *alt; /* alternate screen */ ++ Line hist[HISTSIZE]; /* history buffer */ ++ int histi; /* history index */ ++ int scr; /* scroll back */ + int *dirty; /* dirtyness of lines */ + TCursor c; /* cursor */ + int ocx; /* old cursor col */ +@@ -185,8 +192,8 @@ static void tnewline(int); + static void tputtab(int); + static void tputc(Rune); + static void treset(void); +-static void tscrollup(int, int); +-static void tscrolldown(int, int); ++static void tscrollup(int, int, int); ++static void tscrolldown(int, int, int); + static void tsetattr(int *, int); + static void tsetchar(Rune, Glyph *, int, int); + static void tsetdirt(int, int); +@@ -415,10 +422,10 @@ tlinelen(int y) + { + int i = term.col; + +- if (term.line[y][i - 1].mode & ATTR_WRAP) ++ if (TLINE(y)[i - 1].mode & ATTR_WRAP) + return i; + +- while (i > 0 && term.line[y][i - 1].u == ' ') ++ while (i > 0 && TLINE(y)[i - 1].u == ' ') + --i; + + return i; +@@ -527,7 +534,7 @@ selsnap(int *x, int *y, int direction) + * Snap around if the word wraps around at the end or + * beginning of a line. + */ +- prevgp = &term.line[*y][*x]; ++ prevgp = &TLINE(*y)[*x]; + prevdelim = ISDELIM(prevgp->u); + for (;;) { + newx = *x + direction; +@@ -542,14 +549,14 @@ selsnap(int *x, int *y, int direction) + yt = *y, xt = *x; + else + yt = newy, xt = newx; +- if (!(term.line[yt][xt].mode & ATTR_WRAP)) ++ if (!(TLINE(yt)[xt].mode & ATTR_WRAP)) + break; + } + + if (newx >= tlinelen(newy)) + break; + +- gp = &term.line[newy][newx]; ++ gp = &TLINE(newy)[newx]; + delim = ISDELIM(gp->u); + if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim + || (delim && gp->u != prevgp->u))) +@@ -570,14 +577,14 @@ selsnap(int *x, int *y, int direction) + *x = (direction < 0) ? 0 : term.col - 1; + if (direction < 0) { + for (; *y > 0; *y += direction) { +- if (!(term.line[*y-1][term.col-1].mode ++ if (!(TLINE(*y-1)[term.col-1].mode + & ATTR_WRAP)) { + break; + } + } + } else if (direction > 0) { + for (; *y < term.row-1; *y += direction) { +- if (!(term.line[*y][term.col-1].mode ++ if (!(TLINE(*y)[term.col-1].mode + & ATTR_WRAP)) { + break; + } +@@ -608,13 +615,13 @@ getsel(void) + } + + if (sel.type == SEL_RECTANGULAR) { +- gp = &term.line[y][sel.nb.x]; ++ gp = &TLINE(y)[sel.nb.x]; + lastx = sel.ne.x; + } else { +- gp = &term.line[y][sel.nb.y == y ? sel.nb.x : 0]; ++ gp = &TLINE(y)[sel.nb.y == y ? sel.nb.x : 0]; + lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1; + } +- last = &term.line[y][MIN(lastx, linelen-1)]; ++ last = &TLINE(y)[MIN(lastx, linelen-1)]; + while (last >= gp && last->u == ' ') + --last; + +@@ -849,6 +856,9 @@ void + ttywrite(const char *s, size_t n, int may_echo) + { + const char *next; ++ Arg arg = (Arg) { .i = term.scr }; ++ ++ kscrolldown(&arg); + + if (may_echo && IS_SET(MODE_ECHO)) + twrite(s, n, 1); +@@ -1060,13 +1070,53 @@ tswapscreen(void) + } + + void +-tscrolldown(int orig, int n) ++kscrolldown(const Arg* a) ++{ ++ int n = a->i; ++ ++ if (n < 0) ++ n = term.row + n; ++ ++ if (n > term.scr) ++ n = term.scr; ++ ++ if (term.scr > 0) { ++ term.scr -= n; ++ selscroll(0, -n); ++ tfulldirt(); ++ } ++} ++ ++void ++kscrollup(const Arg* a) ++{ ++ int n = a->i; ++ ++ if (n < 0) ++ n = term.row + n; ++ ++ if (term.scr <= HISTSIZE-n) { ++ term.scr += n; ++ selscroll(0, n); ++ tfulldirt(); ++ } ++} ++ ++void ++tscrolldown(int orig, int n, int copyhist) + { + int i; + Line temp; + + LIMIT(n, 0, term.bot-orig+1); + ++ if (copyhist) { ++ term.histi = (term.histi - 1 + HISTSIZE) % HISTSIZE; ++ temp = term.hist[term.histi]; ++ term.hist[term.histi] = term.line[term.bot]; ++ term.line[term.bot] = temp; ++ } ++ + tsetdirt(orig, term.bot-n); + tclearregion(0, term.bot-n+1, term.col-1, term.bot); + +@@ -1076,17 +1126,28 @@ tscrolldown(int orig, int n) + term.line[i-n] = temp; + } + +- selscroll(orig, n); ++ if (term.scr == 0) ++ selscroll(orig, n); + } + + void +-tscrollup(int orig, int n) ++tscrollup(int orig, int n, int copyhist) + { + int i; + Line temp; + + LIMIT(n, 0, term.bot-orig+1); + ++ if (copyhist) { ++ term.histi = (term.histi + 1) % HISTSIZE; ++ temp = term.hist[term.histi]; ++ term.hist[term.histi] = term.line[orig]; ++ term.line[orig] = temp; ++ } ++ ++ if (term.scr > 0 && term.scr < HISTSIZE) ++ term.scr = MIN(term.scr + n, HISTSIZE-1); ++ + tclearregion(0, orig, term.col-1, orig+n-1); + tsetdirt(orig+n, term.bot); + +@@ -1096,7 +1157,8 @@ tscrollup(int orig, int n) + term.line[i+n] = temp; + } + +- selscroll(orig, -n); ++ if (term.scr == 0) ++ selscroll(orig, -n); + } + + void +@@ -1135,7 +1197,7 @@ tnewline(int first_col) + int y = term.c.y; + + if (y == term.bot) { +- tscrollup(term.top, 1); ++ tscrollup(term.top, 1, 1); + } else { + y++; + } +@@ -1300,14 +1362,14 @@ void + tinsertblankline(int n) + { + if (BETWEEN(term.c.y, term.top, term.bot)) +- tscrolldown(term.c.y, n); ++ tscrolldown(term.c.y, n, 0); + } + + void + tdeleteline(int n) + { + if (BETWEEN(term.c.y, term.top, term.bot)) +- tscrollup(term.c.y, n); ++ tscrollup(term.c.y, n, 0); + } + + int32_t +@@ -1738,11 +1800,11 @@ csihandle(void) + break; + case 'S': /* SU -- Scroll line up */ + DEFAULT(csiescseq.arg[0], 1); +- tscrollup(term.top, csiescseq.arg[0]); ++ tscrollup(term.top, csiescseq.arg[0], 0); + break; + case 'T': /* SD -- Scroll line down */ + DEFAULT(csiescseq.arg[0], 1); +- tscrolldown(term.top, csiescseq.arg[0]); ++ tscrolldown(term.top, csiescseq.arg[0], 0); + break; + case 'L': /* IL -- Insert blank lines */ + DEFAULT(csiescseq.arg[0], 1); +@@ -2248,7 +2310,7 @@ eschandle(uchar ascii) + return 0; + case 'D': /* IND -- Linefeed */ + if (term.c.y == term.bot) { +- tscrollup(term.top, 1); ++ tscrollup(term.top, 1, 1); + } else { + tmoveto(term.c.x, term.c.y+1); + } +@@ -2261,7 +2323,7 @@ eschandle(uchar ascii) + break; + case 'M': /* RI -- Reverse index */ + if (term.c.y == term.top) { +- tscrolldown(term.top, 1); ++ tscrolldown(term.top, 1, 1); + } else { + tmoveto(term.c.x, term.c.y-1); + } +@@ -2482,7 +2544,7 @@ twrite(const char *buf, int buflen, int show_ctrl) + void + tresize(int col, int row) + { +- int i; ++ int i, j; + int minrow = MIN(row, term.row); + int mincol = MIN(col, term.col); + int *bp; +@@ -2519,6 +2581,14 @@ tresize(int col, int row) + term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty)); + term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs)); + ++ for (i = 0; i < HISTSIZE; i++) { ++ term.hist[i] = xrealloc(term.hist[i], col * sizeof(Glyph)); ++ for (j = mincol; j < col; j++) { ++ term.hist[i][j] = term.c.attr; ++ term.hist[i][j].u = ' '; ++ } ++ } ++ + /* resize each row to new width, zero-pad if needed */ + for (i = 0; i < minrow; i++) { + term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph)); +@@ -2577,7 +2647,7 @@ drawregion(int x1, int y1, int x2, int y2) + continue; + + term.dirty[y] = 0; +- xdrawline(term.line[y], x1, y, x2); ++ xdrawline(TLINE(y), x1, y, x2); + } + } + +@@ -2598,8 +2668,9 @@ draw(void) + cx--; + + drawregion(0, 0, term.col, term.row); +- xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], +- term.ocx, term.ocy, term.line[term.ocy][term.ocx]); ++ if (term.scr == 0) ++ xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], ++ term.ocx, term.ocy, term.line[term.ocy][term.ocx]); + term.ocx = cx; + term.ocy = term.c.y; + xfinishdraw(); +diff --git a/st.h b/st.h +index d978458..b9a4eeb 100644 +--- a/st.h ++++ b/st.h +@@ -81,6 +81,8 @@ void die(const char *, ...); + void redraw(void); + void draw(void); + ++void kscrolldown(const Arg *); ++void kscrollup(const Arg *); + void printscreen(const Arg *); + void printsel(const Arg *); + void sendbreak(const Arg *); diff --git a/st.c b/st.c index 76b7e0d..edec064 100644 --- a/st.c +++ b/st.c @@ -35,6 +35,7 @@ #define ESC_ARG_SIZ 16 #define STR_BUF_SIZ ESC_BUF_SIZ #define STR_ARG_SIZ ESC_ARG_SIZ +#define HISTSIZE 2000 /* macros */ #define IS_SET(flag) ((term.mode & (flag)) != 0) @@ -42,6 +43,9 @@ #define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) #define ISDELIM(u) (u && wcschr(worddelimiters, u)) +#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - \ + term.scr + HISTSIZE + 1) % HISTSIZE] : \ + term.line[(y) - term.scr]) enum term_mode { MODE_WRAP = 1 << 0, @@ -115,6 +119,9 @@ typedef struct { int col; /* nb col */ Line *line; /* screen */ Line *alt; /* alternate screen */ + Line hist[HISTSIZE]; /* history buffer */ + int histi; /* history index */ + int scr; /* scroll back */ int *dirty; /* dirtyness of lines */ TCursor c; /* cursor */ int ocx; /* old cursor col */ @@ -184,8 +191,8 @@ static void tnewline(int); static void tputtab(int); static void tputc(Rune); static void treset(void); -static void tscrollup(int, int); -static void tscrolldown(int, int); +static void tscrollup(int, int, int); +static void tscrolldown(int, int, int); static void tsetattr(int *, int); static void tsetchar(Rune, Glyph *, int, int); static void tsetdirt(int, int); @@ -414,10 +421,10 @@ tlinelen(int y) { int i = term.col; - if (term.line[y][i - 1].mode & ATTR_WRAP) + if (TLINE(y)[i - 1].mode & ATTR_WRAP) return i; - while (i > 0 && term.line[y][i - 1].u == ' ') + while (i > 0 && TLINE(y)[i - 1].u == ' ') --i; return i; @@ -526,7 +533,7 @@ selsnap(int *x, int *y, int direction) * Snap around if the word wraps around at the end or * beginning of a line. */ - prevgp = &term.line[*y][*x]; + prevgp = &TLINE(*y)[*x]; prevdelim = ISDELIM(prevgp->u); for (;;) { newx = *x + direction; @@ -541,14 +548,14 @@ selsnap(int *x, int *y, int direction) yt = *y, xt = *x; else yt = newy, xt = newx; - if (!(term.line[yt][xt].mode & ATTR_WRAP)) + if (!(TLINE(yt)[xt].mode & ATTR_WRAP)) break; } if (newx >= tlinelen(newy)) break; - gp = &term.line[newy][newx]; + gp = &TLINE(newy)[newx]; delim = ISDELIM(gp->u); if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim || (delim && gp->u != prevgp->u))) @@ -569,14 +576,14 @@ selsnap(int *x, int *y, int direction) *x = (direction < 0) ? 0 : term.col - 1; if (direction < 0) { for (; *y > 0; *y += direction) { - if (!(term.line[*y-1][term.col-1].mode + if (!(TLINE(*y-1)[term.col-1].mode & ATTR_WRAP)) { break; } } } else if (direction > 0) { for (; *y < term.row-1; *y += direction) { - if (!(term.line[*y][term.col-1].mode + if (!(TLINE(*y)[term.col-1].mode & ATTR_WRAP)) { break; } @@ -607,13 +614,13 @@ getsel(void) } if (sel.type == SEL_RECTANGULAR) { - gp = &term.line[y][sel.nb.x]; + gp = &TLINE(y)[sel.nb.x]; lastx = sel.ne.x; } else { - gp = &term.line[y][sel.nb.y == y ? sel.nb.x : 0]; + gp = &TLINE(y)[sel.nb.y == y ? sel.nb.x : 0]; lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1; } - last = &term.line[y][MIN(lastx, linelen-1)]; + last = &TLINE(y)[MIN(lastx, linelen-1)]; while (last >= gp && last->u == ' ') --last; @@ -848,6 +855,9 @@ void ttywrite(const char *s, size_t n, int may_echo) { const char *next; + Arg arg = (Arg) { .i = term.scr }; + + kscrolldown(&arg); if (may_echo && IS_SET(MODE_ECHO)) twrite(s, n, 1); @@ -1059,13 +1069,53 @@ tswapscreen(void) } void -tscrolldown(int orig, int n) +kscrolldown(const Arg* a) +{ + int n = a->i; + + if (n < 0) + n = term.row + n; + + if (n > term.scr) + n = term.scr; + + if (term.scr > 0) { + term.scr -= n; + selscroll(0, -n); + tfulldirt(); + } +} + +void +kscrollup(const Arg* a) +{ + int n = a->i; + + if (n < 0) + n = term.row + n; + + if (term.scr <= HISTSIZE-n) { + term.scr += n; + selscroll(0, n); + tfulldirt(); + } +} + +void +tscrolldown(int orig, int n, int copyhist) { int i; Line temp; LIMIT(n, 0, term.bot-orig+1); + if (copyhist) { + term.histi = (term.histi - 1 + HISTSIZE) % HISTSIZE; + temp = term.hist[term.histi]; + term.hist[term.histi] = term.line[term.bot]; + term.line[term.bot] = temp; + } + tsetdirt(orig, term.bot-n); tclearregion(0, term.bot-n+1, term.col-1, term.bot); @@ -1075,17 +1125,28 @@ tscrolldown(int orig, int n) term.line[i-n] = temp; } - selscroll(orig, n); + if (term.scr == 0) + selscroll(orig, n); } void -tscrollup(int orig, int n) +tscrollup(int orig, int n, int copyhist) { int i; Line temp; LIMIT(n, 0, term.bot-orig+1); + if (copyhist) { + term.histi = (term.histi + 1) % HISTSIZE; + temp = term.hist[term.histi]; + term.hist[term.histi] = term.line[orig]; + term.line[orig] = temp; + } + + if (term.scr > 0 && term.scr < HISTSIZE) + term.scr = MIN(term.scr + n, HISTSIZE-1); + tclearregion(0, orig, term.col-1, orig+n-1); tsetdirt(orig+n, term.bot); @@ -1095,7 +1156,8 @@ tscrollup(int orig, int n) term.line[i+n] = temp; } - selscroll(orig, -n); + if (term.scr == 0) + selscroll(orig, -n); } void @@ -1124,7 +1186,7 @@ tnewline(int first_col) int y = term.c.y; if (y == term.bot) { - tscrollup(term.top, 1); + tscrollup(term.top, 1, 1); } else { y++; } @@ -1289,14 +1351,14 @@ void tinsertblankline(int n) { if (BETWEEN(term.c.y, term.top, term.bot)) - tscrolldown(term.c.y, n); + tscrolldown(term.c.y, n, 0); } void tdeleteline(int n) { if (BETWEEN(term.c.y, term.top, term.bot)) - tscrollup(term.c.y, n); + tscrollup(term.c.y, n, 0); } int32_t @@ -1733,11 +1795,11 @@ csihandle(void) break; case 'S': /* SU -- Scroll line up */ DEFAULT(csiescseq.arg[0], 1); - tscrollup(term.top, csiescseq.arg[0]); + tscrollup(term.top, csiescseq.arg[0], 0); break; case 'T': /* SD -- Scroll line down */ DEFAULT(csiescseq.arg[0], 1); - tscrolldown(term.top, csiescseq.arg[0]); + tscrolldown(term.top, csiescseq.arg[0], 0); break; case 'L': /* IL -- Insert blank lines */ DEFAULT(csiescseq.arg[0], 1); @@ -2241,7 +2303,7 @@ eschandle(uchar ascii) return 0; case 'D': /* IND -- Linefeed */ if (term.c.y == term.bot) { - tscrollup(term.top, 1); + tscrollup(term.top, 1, 1); } else { tmoveto(term.c.x, term.c.y+1); } @@ -2254,7 +2316,7 @@ eschandle(uchar ascii) break; case 'M': /* RI -- Reverse index */ if (term.c.y == term.top) { - tscrolldown(term.top, 1); + tscrolldown(term.top, 1, 1); } else { tmoveto(term.c.x, term.c.y-1); } @@ -2464,7 +2526,7 @@ twrite(const char *buf, int buflen, int show_ctrl) void tresize(int col, int row) { - int i; + int i, j; int minrow = MIN(row, term.row); int mincol = MIN(col, term.col); int *bp; @@ -2501,6 +2563,14 @@ tresize(int col, int row) term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty)); term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs)); + for (i = 0; i < HISTSIZE; i++) { + term.hist[i] = xrealloc(term.hist[i], col * sizeof(Glyph)); + for (j = mincol; j < col; j++) { + term.hist[i][j] = term.c.attr; + term.hist[i][j].u = ' '; + } + } + /* resize each row to new width, zero-pad if needed */ for (i = 0; i < minrow; i++) { term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph)); @@ -2559,7 +2629,7 @@ drawregion(int x1, int y1, int x2, int y2) continue; term.dirty[y] = 0; - xdrawline(term.line[y], x1, y, x2); + xdrawline(TLINE(y), x1, y, x2); } } @@ -2580,8 +2650,9 @@ draw(void) cx--; drawregion(0, 0, term.col, term.row); - xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], - term.ocx, term.ocy, term.line[term.ocy][term.ocx]); + if (term.scr == 0) + xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], + term.ocx, term.ocy, term.line[term.ocy][term.ocx]); term.ocx = cx; term.ocy = term.c.y; xfinishdraw(); diff --git a/st.h b/st.h index 9f11a6a..7ea2fd3 100644 --- a/st.h +++ b/st.h @@ -81,6 +81,8 @@ void die(const char *, ...); void redraw(void); void draw(void); +void kscrolldown(const Arg *); +void kscrollup(const Arg *); void printscreen(const Arg *); void printsel(const Arg *); void sendbreak(const Arg *); diff --git a/st.o b/st.o index 35999e02407e1faa0091d64edfbcb358544bfc52..982bf7f51dd80b65b9a8598305610f8fd09995d9 100644 GIT binary patch literal 76648 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 P@IHw-Tg&C<7pMOhY)M{P literal 73552 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