sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 262cbd21e10a9c67378018079facb2201b900ba4
parent 275b78e02c01d6ae2d98473e2af60ee211e16aa2
Author: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date:   Wed,  4 Jan 2017 19:06:21 +0100

[st][scrollback] fix wrong commit

Diffstat:
Mst.suckless.org/patches/st-scrollback-20170104-c63a87c.diff | 71++++++++++++++++++++++++++++++++++++-----------------------------------
1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/st.suckless.org/patches/st-scrollback-20170104-c63a87c.diff b/st.suckless.org/patches/st-scrollback-20170104-c63a87c.diff @@ -1,5 +1,5 @@ diff --git a/config.def.h b/config.def.h -index b41747f..eae969e 100644 +index a719e36..0f25e8b 100644 --- a/config.def.h +++ b/config.def.h @@ -7,6 +7,7 @@ @@ -10,29 +10,29 @@ index b41747f..eae969e 100644 /* * What program is execed by st depends of these precedence rules: -@@ -172,6 +173,8 @@ static Shortcut shortcuts[] = { - { MODKEY|ShiftMask, XK_C, clipcopy, {.i = 0} }, +@@ -178,6 +179,8 @@ static Shortcut shortcuts[] = { { MODKEY|ShiftMask, XK_V, clippaste, {.i = 0} }, { MODKEY, XK_Num_Lock, numlock, {.i = 0} }, + { MODKEY, XK_Control_L, iso14755, {.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 6c16386..05e84dc 100644 +index fbcd9e0..3db7b78 100644 --- a/st.c +++ b/st.c -@@ -86,6 +86,8 @@ char *argv0; +@@ -87,6 +87,8 @@ char *argv0; #define TRUERED(x) (((x) & 0xff0000) >> 8) #define TRUEGREEN(x) (((x) & 0xff00)) #define TRUEBLUE(x) (((x) & 0xff) << 8) +#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - term.scr \ + + histsize + 1) % histsize] : term.line[(y) - term.scr]) - - enum glyph_attribute { -@@ -232,26 +234,6 @@ typedef struct { + /* constants */ + #define ISO14755CMD "dmenu -w %lu -p codepoint: </dev/null" +@@ -235,26 +237,6 @@ typedef struct { int narg; /* nb of args */ } STREscape; @@ -59,7 +59,7 @@ index 6c16386..05e84dc 100644 /* Purely graphic info */ typedef struct { Display *dpy; -@@ -331,6 +313,8 @@ typedef struct { +@@ -334,6 +316,8 @@ typedef struct { /* function definitions used in config.h */ static void clipcopy(const Arg *); static void clippaste(const Arg *); @@ -68,9 +68,9 @@ index 6c16386..05e84dc 100644 static void numlock(const Arg *); static void selpaste(const Arg *); static void xzoom(const Arg *); -@@ -344,6 +328,29 @@ static void sendbreak(const Arg *); - /* Config.h for applying patches and the configuration. */ - #include "config.h" +@@ -370,6 +354,29 @@ typedef struct { + GC gc; + } DC; +/* Internal representation of the screen */ +typedef struct { @@ -95,10 +95,10 @@ index 6c16386..05e84dc 100644 + int *tabs; +} Term; + - /* Font structure */ - typedef struct { - int height; -@@ -403,8 +410,8 @@ static void tputtab(int); + static void die(const char *, ...); + static void draw(void); + static void redraw(void); +@@ -409,8 +416,8 @@ static void tputtab(int); static void tputc(Rune); static void treset(void); static void tresize(int, int); @@ -109,7 +109,7 @@ index 6c16386..05e84dc 100644 static void tsetattr(int *, int); static void tsetchar(Rune, Glyph *, int, int); static void tsetscroll(int, int); -@@ -736,10 +743,10 @@ tlinelen(int y) +@@ -742,10 +749,10 @@ tlinelen(int y) { int i = term.col; @@ -122,7 +122,7 @@ index 6c16386..05e84dc 100644 --i; return i; -@@ -801,7 +808,7 @@ selsnap(int *x, int *y, int direction) +@@ -807,7 +814,7 @@ selsnap(int *x, int *y, int direction) * Snap around if the word wraps around at the end or * beginning of a line. */ @@ -131,7 +131,7 @@ index 6c16386..05e84dc 100644 prevdelim = ISDELIM(prevgp->u); for (;;) { newx = *x + direction; -@@ -816,14 +823,14 @@ selsnap(int *x, int *y, int direction) +@@ -822,14 +829,14 @@ selsnap(int *x, int *y, int direction) yt = *y, xt = *x; else yt = newy, xt = newx; @@ -148,7 +148,7 @@ index 6c16386..05e84dc 100644 delim = ISDELIM(gp->u); if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim || (delim && gp->u != prevgp->u))) -@@ -844,14 +851,14 @@ selsnap(int *x, int *y, int direction) +@@ -850,14 +857,14 @@ selsnap(int *x, int *y, int direction) *x = (direction < 0) ? 0 : term.col - 1; if (direction < 0) { for (; *y > 0; *y += direction) { @@ -165,7 +165,7 @@ index 6c16386..05e84dc 100644 & ATTR_WRAP)) { break; } -@@ -1017,13 +1024,13 @@ getsel(void) +@@ -1023,13 +1030,13 @@ getsel(void) } if (sel.type == SEL_RECTANGULAR) { @@ -182,7 +182,7 @@ index 6c16386..05e84dc 100644 while (last >= gp && last->u == ' ') --last; -@@ -1507,6 +1514,9 @@ ttyread(void) +@@ -1513,6 +1520,9 @@ ttyread(void) if (buflen > 0) memmove(buf, ptr, buflen); @@ -192,17 +192,17 @@ index 6c16386..05e84dc 100644 return ret; } -@@ -1516,6 +1526,9 @@ ttywrite(const char *s, size_t n) +@@ -1522,6 +1532,9 @@ ttywrite(const char *s, size_t n) fd_set wfd, rfd; ssize_t r; size_t lim = 256; -+ Arg arg = (Arg){ .i = term.scr }; ++ Arg arg = (Arg) { .i = term.scr }; + + kscrolldown(&arg); /* * Remember that we are using a pty, which might be a modem line. -@@ -1718,13 +1731,53 @@ tswapscreen(void) +@@ -1724,13 +1737,53 @@ tswapscreen(void) } void @@ -257,7 +257,7 @@ index 6c16386..05e84dc 100644 tsetdirt(orig, term.bot-n); tclearregion(0, term.bot-n+1, term.col-1, term.bot); -@@ -1738,13 +1791,20 @@ tscrolldown(int orig, int n) +@@ -1744,13 +1797,20 @@ tscrolldown(int orig, int n) } void @@ -279,7 +279,7 @@ index 6c16386..05e84dc 100644 tclearregion(0, orig, term.col-1, orig+n-1); tsetdirt(orig+n, term.bot); -@@ -1793,7 +1853,7 @@ tnewline(int first_col) +@@ -1799,7 +1859,7 @@ tnewline(int first_col) int y = term.c.y; if (y == term.bot) { @@ -288,7 +288,7 @@ index 6c16386..05e84dc 100644 } else { y++; } -@@ -1958,14 +2018,14 @@ void +@@ -1964,14 +2024,14 @@ void tinsertblankline(int n) { if (BETWEEN(term.c.y, term.top, term.bot)) @@ -305,7 +305,7 @@ index 6c16386..05e84dc 100644 } int32_t -@@ -2399,11 +2459,11 @@ csihandle(void) +@@ -2405,11 +2465,11 @@ csihandle(void) break; case 'S': /* SU -- Scroll <n> line up */ DEFAULT(csiescseq.arg[0], 1); @@ -319,7 +319,7 @@ index 6c16386..05e84dc 100644 break; case 'L': /* IL -- Insert <n> blank lines */ DEFAULT(csiescseq.arg[0], 1); -@@ -2914,7 +2974,7 @@ eschandle(uchar ascii) +@@ -2945,7 +3005,7 @@ eschandle(uchar ascii) return 0; case 'D': /* IND -- Linefeed */ if (term.c.y == term.bot) { @@ -328,7 +328,7 @@ index 6c16386..05e84dc 100644 } else { tmoveto(term.c.x, term.c.y+1); } -@@ -2927,7 +2987,7 @@ eschandle(uchar ascii) +@@ -2958,7 +3018,7 @@ eschandle(uchar ascii) break; case 'M': /* RI -- Reverse index */ if (term.c.y == term.top) { @@ -337,7 +337,7 @@ index 6c16386..05e84dc 100644 } else { tmoveto(term.c.x, term.c.y-1); } -@@ -3114,7 +3174,7 @@ check_control_code: +@@ -3145,7 +3205,7 @@ check_control_code: void tresize(int col, int row) { @@ -346,7 +346,7 @@ index 6c16386..05e84dc 100644 int minrow = MIN(row, term.row); int mincol = MIN(col, term.col); int *bp; -@@ -3154,6 +3214,14 @@ tresize(int col, int row) +@@ -3185,6 +3245,14 @@ tresize(int col, int row) term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty)); term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs)); @@ -361,7 +361,7 @@ index 6c16386..05e84dc 100644 /* 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)); -@@ -4043,11 +4111,11 @@ drawregion(int x1, int y1, int x2, int y2) +@@ -4112,11 +4180,11 @@ drawregion(int x1, int y1, int x2, int y2) term.dirty[y] = 0; specs = term.specbuf; @@ -375,11 +375,12 @@ index 6c16386..05e84dc 100644 if (new.mode == ATTR_WDUMMY) continue; if (ena_sel && selected(x, y)) -@@ -4067,7 +4135,8 @@ drawregion(int x1, int y1, int x2, int y2) +@@ -4136,7 +4204,9 @@ drawregion(int x1, int y1, int x2, int y2) if (i > 0) xdrawglyphfontspecs(specs, base, i, ox, y); } - xdrawcursor(); ++ + if (term.scr == 0) + xdrawcursor(); }