-- - /* Purely graphic info */ - typedef struct { - Display *dpy; -_AT_@ -334,6 +316,8 @@ typedef struct { +_AT_@ -241,6 +244,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 */ + XftGlyphFontSpec *specbuf; /* font spec buffer used for rendering */ + TCursor c; /* cursor */ +_AT_@ -334,6 +340,8 @@ typedef struct { /* function definitions used in config.h */ static void clipcopy(const Arg *); static void clippaste(const Arg *); _AT_@ -68,37 +51,7 @@ index fbcd9e0..3db7b78 100644 static void numlock(const Arg *); static void selpaste(const Arg *); static void xzoom(const Arg *); -_AT_@ -370,6 +354,29 @@ typedef struct { - GC gc; - } DC; - -+/* Internal representation of the screen */ -+typedef struct { -+ int row; /* nb row */ -+ 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 */ -+ XftGlyphFontSpec *specbuf; /* font spec buffer used for rendering */ -+ TCursor c; /* cursor */ -+ int top; /* top scroll limit */ -+ int bot; /* bottom scroll limit */ -+ int mode; /* terminal mode flags */ -+ int esc; /* escape state flags */ -+ char trantbl[4]; /* charset table translation */ -+ int charset; /* current charset */ -+ int icharset; /* selected charset for sequence */ -+ int numlock; /* lock numbers in keyboard */ -+ int *tabs; -+} Term; -+ - static void die(const char *, ...); - static void draw(void); - static void redraw(void); -_AT_@ -409,8 +416,8 @@ static void tputtab(int); +_AT_@ -409,8 +417,8 @@ static void tputtab(int); static void tputc(Rune); static void treset(void); static void tresize(int, int); _AT_@ -109,7 +62,7 @@ index fbcd9e0..3db7b78 100644 static void tsetattr(int *, int); static void tsetchar(Rune, Glyph *, int, int); static void tsetscroll(int, int); -_AT_@ -742,10 +749,10 @@ tlinelen(int y) +_AT_@ -742,10 +750,10 @@ tlinelen(int y) { int i = term.col; _AT_@ -122,7 +75,7 @@ index fbcd9e0..3db7b78 100644 --i; return i; -_AT_@ -807,7 +814,7 @@ selsnap(int *x, int *y, int direction) +_AT_@ -807,7 +815,7 @@ selsnap(int *x, int *y, int direction) * Snap around if the word wraps around at the end or * beginning of a line. */ _AT_@ -131,7 +84,7 @@ index fbcd9e0..3db7b78 100644 prevdelim = ISDELIM(prevgp->u); for (;;) { newx = *x + direction; -_AT_@ -822,14 +829,14 @@ selsnap(int *x, int *y, int direction) +_AT_@ -822,14 +830,14 @@ selsnap(int *x, int *y, int direction) yt = *y, xt = *x; else yt = newy, xt = newx; _AT_@ -148,7 +101,7 @@ index fbcd9e0..3db7b78 100644 delim = ISDELIM(gp->u); if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim || (delim && gp->u != prevgp->u))) -_AT_@ -850,14 +857,14 @@ selsnap(int *x, int *y, int direction) +_AT_@ -850,14 +858,14 @@ selsnap(int *x, int *y, int direction) *x = (direction < 0) ? 0 : term.col - 1; if (direction < 0) { for (; *y > 0; *y += direction) { _AT_@ -165,7 +118,7 @@ index fbcd9e0..3db7b78 100644 & ATTR_WRAP)) { break; } -_AT_@ -1023,13 +1030,13 @@ getsel(void) +_AT_@ -1023,13 +1031,13 @@ getsel(void) } if (sel.type == SEL_RECTANGULAR) { _AT_@ -182,7 +135,7 @@ index fbcd9e0..3db7b78 100644 while (last >= gp && last->u == ' ') --last; -_AT_@ -1513,6 +1520,9 @@ ttyread(void) +_AT_@ -1513,6 +1521,9 @@ ttyread(void) if (buflen > 0) memmove(buf, ptr, buflen); _AT_@ -192,7 +145,7 @@ index fbcd9e0..3db7b78 100644 return ret; } -_AT_@ -1522,6 +1532,9 @@ ttywrite(const char *s, size_t n) +_AT_@ -1522,6 +1533,9 @@ ttywrite(const char *s, size_t n) fd_set wfd, rfd; ssize_t r; size_t lim = 256; _AT_@ -202,7 +155,7 @@ index fbcd9e0..3db7b78 100644 /* * Remember that we are using a pty, which might be a modem line. -_AT_@ -1724,13 +1737,53 @@ tswapscreen(void) +_AT_@ -1724,13 +1738,53 @@ tswapscreen(void) } void _AT_@ -257,7 +210,7 @@ index fbcd9e0..3db7b78 100644 tsetdirt(orig, term.bot-n); tclearregion(0, term.bot-n+1, term.col-1, term.bot); -_AT_@ -1744,13 +1797,20 @@ tscrolldown(int orig, int n) +_AT_@ -1744,13 +1798,20 @@ tscrolldown(int orig, int n) } void _AT_@ -279,7 +232,7 @@ index fbcd9e0..3db7b78 100644 tclearregion(0, orig, term.col-1, orig+n-1); tsetdirt(orig+n, term.bot); -_AT_@ -1799,7 +1859,7 @@ tnewline(int first_col) +_AT_@ -1799,7 +1860,7 @@ tnewline(int first_col) int y = term.c.y; if (y == term.bot) { _AT_@ -288,7 +241,7 @@ index fbcd9e0..3db7b78 100644 } else { y++; } -_AT_@ -1964,14 +2024,14 @@ void +_AT_@ -1964,14 +2025,14 @@ void tinsertblankline(int n) { if (BETWEEN(term.c.y, term.top, term.bot)) _AT_@ -305,7 +258,7 @@ index fbcd9e0..3db7b78 100644 } int32_t -_AT_@ -2405,11 +2465,11 @@ csihandle(void) +_AT_@ -2405,11 +2466,11 @@ csihandle(void) break; case 'S': /* SU -- Scroll <n> line up */ DEFAULT(csiescseq.arg[0], 1); _AT_@ -319,7 +272,7 @@ index fbcd9e0..3db7b78 100644 break; case 'L': /* IL -- Insert <n> blank lines */ DEFAULT(csiescseq.arg[0], 1); -_AT_@ -2945,7 +3005,7 @@ eschandle(uchar ascii) +_AT_@ -2945,7 +3006,7 @@ eschandle(uchar ascii) return 0; case 'D': /* IND -- Linefeed */ if (term.c.y == term.bot) { _AT_@ -328,7 +281,7 @@ index fbcd9e0..3db7b78 100644 } else { tmoveto(term.c.x, term.c.y+1); } -_AT_@ -2958,7 +3018,7 @@ eschandle(uchar ascii) +_AT_@ -2958,7 +3019,7 @@ eschandle(uchar ascii) break; case 'M': /* RI -- Reverse index */ if (term.c.y == term.top) { _AT_@ -337,7 +290,7 @@ index fbcd9e0..3db7b78 100644 } else { tmoveto(term.c.x, term.c.y-1); } -_AT_@ -3145,7 +3205,7 @@ check_control_code: +_AT_@ -3145,7 +3206,7 @@ check_control_code: void tresize(int col, int row) { _AT_@ -346,7 +299,7 @@ index fbcd9e0..3db7b78 100644 int minrow = MIN(row, term.row); int mincol = MIN(col, term.col); int *bp; -_AT_@ -3185,6 +3245,14 @@ tresize(int col, int row) +_AT_@ -3185,6 +3246,14 @@ tresize(int col, int row) term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty)); term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs)); _AT_@ -361,7 +314,7 @@ index fbcd9e0..3db7b78 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)); -_AT_@ -4112,11 +4180,11 @@ drawregion(int x1, int y1, int x2, int y2) +_AT_@ -4112,11 +4181,11 @@ drawregion(int x1, int y1, int x2, int y2) term.dirty[y] = 0; specs = term.specbuf; _AT_@ -375,7 +328,7 @@ index fbcd9e0..3db7b78 100644 if (new.mode == ATTR_WDUMMY) continue; if (ena_sel && selected(x, y)) -_AT_@ -4136,7 +4204,9 @@ drawregion(int x1, int y1, int x2, int y2) +_AT_@ -4136,7 +4205,9 @@ drawregion(int x1, int y1, int x2, int y2) if (i > 0) xdrawglyphfontspecs(specs, base, i, ox, y); }Received on Thu Jan 05 2017 - 00:07:01 CET
This archive was generated by hypermail 2.3.0 : Thu Jan 05 2017 - 00:12:56 CET