diff options
| -rw-r--r-- | config.def.h | 60 | ||||
| -rw-r--r-- | st.c | 80 |
2 files changed, 72 insertions, 68 deletions
diff --git a/config.def.h b/config.def.h index a8f48ea..1ba6d8e 100644 --- a/config.def.h +++ b/config.def.h | |||
| @@ -1,11 +1,19 @@ | |||
| 1 | /* See LICENSE file for copyright and license details. */ | ||
| 1 | 2 | ||
| 2 | #define FONT "Liberation Mono:pixelsize=12:antialias=false:autohint=false" | 3 | /* appearance */ |
| 4 | static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false"; | ||
| 5 | static unsigned int borderpx = 2; | ||
| 6 | static char shell[] = "/bin/sh"; | ||
| 3 | 7 | ||
| 4 | /* Space in pixels around the terminal buffer */ | 8 | /* double-click timeout (in milliseconds) between clicks for selection */ |
| 5 | #define BORDER 2 | 9 | static unsigned int doubleclicktimeout = 300; |
| 10 | static unsigned int tripleclicktimeout = 600; | ||
| 11 | |||
| 12 | /* TERM value */ | ||
| 13 | static char termname[] = "st-256color"; | ||
| 14 | |||
| 15 | static unsigned int tabspaces = 8; | ||
| 6 | 16 | ||
| 7 | /* Default shell to use if SHELL is not set in the env */ | ||
| 8 | #define SHELL "/bin/sh" | ||
| 9 | 17 | ||
| 10 | /* Terminal colors (16 first used in escape sequence) */ | 18 | /* Terminal colors (16 first used in escape sequence) */ |
| 11 | static const char *colorname[] = { | 19 | static const char *colorname[] = { |
| @@ -36,21 +44,26 @@ static const char *colorname[] = { | |||
| 36 | "#333333", | 44 | "#333333", |
| 37 | }; | 45 | }; |
| 38 | 46 | ||
| 39 | /* Default colors (colorname index) | ||
| 40 | foreground, background, cursor, unfocused cursor */ | ||
| 41 | #define DefaultFG 7 | ||
| 42 | #define DefaultBG 0 | ||
| 43 | #define DefaultCS 256 | ||
| 44 | #define DefaultUCS 257 | ||
| 45 | |||
| 46 | /* Special keys (change & recompile st.info accordingly) | ||
| 47 | Keep in mind that kpress() in st.c hardcodes some keys. | ||
| 48 | |||
| 49 | Mask value: | ||
| 50 | * Use XK_ANY_MOD to match the key no matter modifiers state | ||
| 51 | * Use XK_NO_MOD to match the key alone (no modifiers) | ||
| 52 | 47 | ||
| 53 | key, mask, output */ | 48 | /* |
| 49 | * Default colors (colorname index) | ||
| 50 | * foreground, background, cursor, unfocused cursor | ||
| 51 | */ | ||
| 52 | static unsigned int defaultfg = 7; | ||
| 53 | static unsigned int defaultbg = 0; | ||
| 54 | static unsigned int defaultcs = 256; | ||
| 55 | static unsigned int defaultucs = 257; | ||
| 56 | |||
| 57 | /* | ||
| 58 | * Special keys (change & recompile st.info accordingly) | ||
| 59 | * Keep in mind that kpress() in st.c hardcodes some keys. | ||
| 60 | * | ||
| 61 | * Mask value: | ||
| 62 | * * Use XK_ANY_MOD to match the key no matter modifiers state | ||
| 63 | * * Use XK_NO_MOD to match the key alone (no modifiers) | ||
| 64 | */ | ||
| 65 | |||
| 66 | /* key, mask, output */ | ||
| 54 | static Key key[] = { | 67 | static Key key[] = { |
| 55 | { XK_BackSpace, XK_NO_MOD, "\177" }, | 68 | { XK_BackSpace, XK_NO_MOD, "\177" }, |
| 56 | { XK_Insert, XK_NO_MOD, "\033[2~" }, | 69 | { XK_Insert, XK_NO_MOD, "\033[2~" }, |
| @@ -82,12 +95,3 @@ static Shortcut shortcuts[] = { | |||
| 82 | { MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} }, | 95 | { MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} }, |
| 83 | }; | 96 | }; |
| 84 | 97 | ||
| 85 | /* Set TERM to this */ | ||
| 86 | #define TNAME "st-256color" | ||
| 87 | |||
| 88 | /* double-click timeout (in milliseconds) between clicks for selection */ | ||
| 89 | #define DOUBLECLICK_TIMEOUT 300 | ||
| 90 | #define TRIPLECLICK_TIMEOUT (2*DOUBLECLICK_TIMEOUT) | ||
| 91 | |||
| 92 | #define TAB 8 | ||
| 93 | |||
| @@ -72,8 +72,8 @@ | |||
| 72 | #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) | 72 | #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) |
| 73 | #define IS_SET(flag) (term.mode & (flag)) | 73 | #define IS_SET(flag) (term.mode & (flag)) |
| 74 | #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec)/1000) | 74 | #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec)/1000) |
| 75 | #define X2COL(x) (((x) - BORDER)/xw.cw) | 75 | #define X2COL(x) (((x) - borderpx)/xw.cw) |
| 76 | #define Y2ROW(y) (((y) - BORDER)/xw.ch) | 76 | #define Y2ROW(y) (((y) - borderpx)/xw.ch) |
| 77 | 77 | ||
| 78 | #define VT102ID "\033[?6c" | 78 | #define VT102ID "\033[?6c" |
| 79 | 79 | ||
| @@ -803,13 +803,13 @@ brelease(XEvent *e) { | |||
| 803 | sel.bx = -1; | 803 | sel.bx = -1; |
| 804 | gettimeofday(&now, NULL); | 804 | gettimeofday(&now, NULL); |
| 805 | 805 | ||
| 806 | if(TIMEDIFF(now, sel.tclick2) <= TRIPLECLICK_TIMEOUT) { | 806 | if(TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) { |
| 807 | /* triple click on the line */ | 807 | /* triple click on the line */ |
| 808 | sel.b.x = sel.bx = 0; | 808 | sel.b.x = sel.bx = 0; |
| 809 | sel.e.x = sel.ex = term.col; | 809 | sel.e.x = sel.ex = term.col; |
| 810 | sel.b.y = sel.e.y = sel.ey; | 810 | sel.b.y = sel.e.y = sel.ey; |
| 811 | selcopy(); | 811 | selcopy(); |
| 812 | } else if(TIMEDIFF(now, sel.tclick1) <= DOUBLECLICK_TIMEOUT) { | 812 | } else if(TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) { |
| 813 | /* double click to select word */ | 813 | /* double click to select word */ |
| 814 | sel.bx = sel.ex; | 814 | sel.bx = sel.ex; |
| 815 | while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].state & GLYPH_SET && | 815 | while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].state & GLYPH_SET && |
| @@ -894,8 +894,8 @@ execsh(void) { | |||
| 894 | signal(SIGTERM, SIG_DFL); | 894 | signal(SIGTERM, SIG_DFL); |
| 895 | signal(SIGALRM, SIG_DFL); | 895 | signal(SIGALRM, SIG_DFL); |
| 896 | 896 | ||
| 897 | DEFAULT(envshell, SHELL); | 897 | DEFAULT(envshell, shell); |
| 898 | putenv("TERM="TNAME); | 898 | setenv("TERM", termname, 1); |
| 899 | args = opt_cmd ? opt_cmd : (char *[]){envshell, "-i", NULL}; | 899 | args = opt_cmd ? opt_cmd : (char *[]){envshell, "-i", NULL}; |
| 900 | execvp(args[0], args); | 900 | execvp(args[0], args); |
| 901 | exit(EXIT_FAILURE); | 901 | exit(EXIT_FAILURE); |
| @@ -1045,12 +1045,12 @@ treset(void) { | |||
| 1045 | 1045 | ||
| 1046 | term.c = (TCursor){{ | 1046 | term.c = (TCursor){{ |
| 1047 | .mode = ATTR_NULL, | 1047 | .mode = ATTR_NULL, |
| 1048 | .fg = DefaultFG, | 1048 | .fg = defaultfg, |
| 1049 | .bg = DefaultBG | 1049 | .bg = defaultbg |
| 1050 | }, .x = 0, .y = 0, .state = CURSOR_DEFAULT}; | 1050 | }, .x = 0, .y = 0, .state = CURSOR_DEFAULT}; |
| 1051 | 1051 | ||
| 1052 | memset(term.tabs, 0, term.col * sizeof(*term.tabs)); | 1052 | memset(term.tabs, 0, term.col * sizeof(*term.tabs)); |
| 1053 | for(i = TAB; i < term.col; i += TAB) | 1053 | for(i = tabspaces; i < term.col; i += tabspaces) |
| 1054 | term.tabs[i] = 1; | 1054 | term.tabs[i] = 1; |
| 1055 | term.top = 0; | 1055 | term.top = 0; |
| 1056 | term.bot = term.row - 1; | 1056 | term.bot = term.row - 1; |
| @@ -1310,8 +1310,8 @@ tsetattr(int *attr, int l) { | |||
| 1310 | case 0: | 1310 | case 0: |
| 1311 | term.c.attr.mode &= ~(ATTR_REVERSE | ATTR_UNDERLINE | ATTR_BOLD \ | 1311 | term.c.attr.mode &= ~(ATTR_REVERSE | ATTR_UNDERLINE | ATTR_BOLD \ |
| 1312 | | ATTR_ITALIC | ATTR_BLINK); | 1312 | | ATTR_ITALIC | ATTR_BLINK); |
| 1313 | term.c.attr.fg = DefaultFG; | 1313 | term.c.attr.fg = defaultfg; |
| 1314 | term.c.attr.bg = DefaultBG; | 1314 | term.c.attr.bg = defaultbg; |
| 1315 | break; | 1315 | break; |
| 1316 | case 1: | 1316 | case 1: |
| 1317 | term.c.attr.mode |= ATTR_BOLD; | 1317 | term.c.attr.mode |= ATTR_BOLD; |
| @@ -1361,7 +1361,7 @@ tsetattr(int *attr, int l) { | |||
| 1361 | } | 1361 | } |
| 1362 | break; | 1362 | break; |
| 1363 | case 39: | 1363 | case 39: |
| 1364 | term.c.attr.fg = DefaultFG; | 1364 | term.c.attr.fg = defaultfg; |
| 1365 | break; | 1365 | break; |
| 1366 | case 48: | 1366 | case 48: |
| 1367 | if(i + 2 < l && attr[i + 1] == 5) { | 1367 | if(i + 2 < l && attr[i + 1] == 5) { |
| @@ -1380,7 +1380,7 @@ tsetattr(int *attr, int l) { | |||
| 1380 | } | 1380 | } |
| 1381 | break; | 1381 | break; |
| 1382 | case 49: | 1382 | case 49: |
| 1383 | term.c.attr.bg = DefaultBG; | 1383 | term.c.attr.bg = defaultbg; |
| 1384 | break; | 1384 | break; |
| 1385 | default: | 1385 | default: |
| 1386 | if(BETWEEN(attr[i], 30, 37)) { | 1386 | if(BETWEEN(attr[i], 30, 37)) { |
| @@ -2091,7 +2091,7 @@ tresize(int col, int row) { | |||
| 2091 | memset(bp, 0, sizeof(*term.tabs) * (col - term.col)); | 2091 | memset(bp, 0, sizeof(*term.tabs) * (col - term.col)); |
| 2092 | while(--bp > term.tabs && !*bp) | 2092 | while(--bp > term.tabs && !*bp) |
| 2093 | /* nothing */ ; | 2093 | /* nothing */ ; |
| 2094 | for(bp += TAB; bp < term.tabs + col; bp += TAB) | 2094 | for(bp += tabspaces; bp < term.tabs + col; bp += tabspaces) |
| 2095 | *bp = 1; | 2095 | *bp = 1; |
| 2096 | } | 2096 | } |
| 2097 | /* update terminal size */ | 2097 | /* update terminal size */ |
| @@ -2107,8 +2107,8 @@ tresize(int col, int row) { | |||
| 2107 | 2107 | ||
| 2108 | void | 2108 | void |
| 2109 | xresize(int col, int row) { | 2109 | xresize(int col, int row) { |
| 2110 | xw.tw = MAX(1, 2*BORDER + col * xw.cw); | 2110 | xw.tw = MAX(1, 2*borderpx + col * xw.cw); |
| 2111 | xw.th = MAX(1, 2*BORDER + row * xw.ch); | 2111 | xw.th = MAX(1, 2*borderpx + row * xw.ch); |
| 2112 | 2112 | ||
| 2113 | XftDrawChange(xw.xft_draw, xw.buf); | 2113 | XftDrawChange(xw.xft_draw, xw.buf); |
| 2114 | } | 2114 | } |
| @@ -2154,9 +2154,9 @@ xloadcols(void) { | |||
| 2154 | void | 2154 | void |
| 2155 | xtermclear(int col1, int row1, int col2, int row2) { | 2155 | xtermclear(int col1, int row1, int col2, int row2) { |
| 2156 | XftDrawRect(xw.xft_draw, | 2156 | XftDrawRect(xw.xft_draw, |
| 2157 | &dc.xft_col[IS_SET(MODE_REVERSE) ? DefaultFG : DefaultBG], | 2157 | &dc.xft_col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg], |
| 2158 | BORDER + col1 * xw.cw, | 2158 | borderpx + col1 * xw.cw, |
| 2159 | BORDER + row1 * xw.ch, | 2159 | borderpx + row1 * xw.ch, |
| 2160 | (col2-col1+1) * xw.cw, | 2160 | (col2-col1+1) * xw.cw, |
| 2161 | (row2-row1+1) * xw.ch); | 2161 | (row2-row1+1) * xw.ch); |
| 2162 | } | 2162 | } |
| @@ -2167,13 +2167,13 @@ xtermclear(int col1, int row1, int col2, int row2) { | |||
| 2167 | void | 2167 | void |
| 2168 | xclear(int x1, int y1, int x2, int y2) { | 2168 | xclear(int x1, int y1, int x2, int y2) { |
| 2169 | XftDrawRect(xw.xft_draw, | 2169 | XftDrawRect(xw.xft_draw, |
| 2170 | &dc.xft_col[IS_SET(MODE_REVERSE) ? DefaultFG : DefaultBG], | 2170 | &dc.xft_col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg], |
| 2171 | x1, y1, x2-x1, y2-y1); | 2171 | x1, y1, x2-x1, y2-y1); |
| 2172 | } | 2172 | } |
| 2173 | 2173 | ||
| 2174 | void | 2174 | void |
| 2175 | xhints(void) { | 2175 | xhints(void) { |
| 2176 | XClassHint class = {opt_class ? opt_class : TNAME, TNAME}; | 2176 | XClassHint class = {opt_class ? opt_class : termname, termname}; |
| 2177 | XWMHints wm = {.flags = InputHint, .input = 1}; | 2177 | XWMHints wm = {.flags = InputHint, .input = 1}; |
| 2178 | XSizeHints *sizeh = NULL; | 2178 | XSizeHints *sizeh = NULL; |
| 2179 | 2179 | ||
| @@ -2184,8 +2184,8 @@ xhints(void) { | |||
| 2184 | sizeh->width = xw.w; | 2184 | sizeh->width = xw.w; |
| 2185 | sizeh->height_inc = xw.ch; | 2185 | sizeh->height_inc = xw.ch; |
| 2186 | sizeh->width_inc = xw.cw; | 2186 | sizeh->width_inc = xw.cw; |
| 2187 | sizeh->base_height = 2*BORDER; | 2187 | sizeh->base_height = 2*borderpx; |
| 2188 | sizeh->base_width = 2*BORDER; | 2188 | sizeh->base_width = 2*borderpx; |
| 2189 | } else { | 2189 | } else { |
| 2190 | sizeh->flags = PMaxSize | PMinSize; | 2190 | sizeh->flags = PMaxSize | PMinSize; |
| 2191 | sizeh->min_width = sizeh->max_width = xw.fw; | 2191 | sizeh->min_width = sizeh->max_width = xw.fw; |
| @@ -2293,7 +2293,7 @@ xinit(void) { | |||
| 2293 | xw.vis = XDefaultVisual(xw.dpy, xw.scr); | 2293 | xw.vis = XDefaultVisual(xw.dpy, xw.scr); |
| 2294 | 2294 | ||
| 2295 | /* font */ | 2295 | /* font */ |
| 2296 | usedfont = (opt_font == NULL)? FONT : opt_font; | 2296 | usedfont = (opt_font == NULL)? font : opt_font; |
| 2297 | xloadfonts(usedfont, 0); | 2297 | xloadfonts(usedfont, 0); |
| 2298 | 2298 | ||
| 2299 | /* colors */ | 2299 | /* colors */ |
| @@ -2313,14 +2313,14 @@ xinit(void) { | |||
| 2313 | xw.w = xw.fw; | 2313 | xw.w = xw.fw; |
| 2314 | } else { | 2314 | } else { |
| 2315 | /* window - default size */ | 2315 | /* window - default size */ |
| 2316 | xw.h = 2*BORDER + term.row * xw.ch; | 2316 | xw.h = 2*borderpx + term.row * xw.ch; |
| 2317 | xw.w = 2*BORDER + term.col * xw.cw; | 2317 | xw.w = 2*borderpx + term.col * xw.cw; |
| 2318 | xw.fx = 0; | 2318 | xw.fx = 0; |
| 2319 | xw.fy = 0; | 2319 | xw.fy = 0; |
| 2320 | } | 2320 | } |
| 2321 | 2321 | ||
| 2322 | attrs.background_pixel = dc.xft_col[DefaultBG].pixel; | 2322 | attrs.background_pixel = dc.xft_col[defaultbg].pixel; |
| 2323 | attrs.border_pixel = dc.xft_col[DefaultBG].pixel; | 2323 | attrs.border_pixel = dc.xft_col[defaultbg].pixel; |
| 2324 | attrs.bit_gravity = NorthWestGravity; | 2324 | attrs.bit_gravity = NorthWestGravity; |
| 2325 | attrs.event_mask = FocusChangeMask | KeyPressMask | 2325 | attrs.event_mask = FocusChangeMask | KeyPressMask |
| 2326 | | ExposureMask | VisibilityChangeMask | StructureNotifyMask | 2326 | | ExposureMask | VisibilityChangeMask | StructureNotifyMask |
| @@ -2370,7 +2370,7 @@ xinit(void) { | |||
| 2370 | 2370 | ||
| 2371 | void | 2371 | void |
| 2372 | xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | 2372 | xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { |
| 2373 | int winx = BORDER + x * xw.cw, winy = BORDER + y * xw.ch, | 2373 | int winx = borderpx + x * xw.cw, winy = borderpx + y * xw.ch, |
| 2374 | width = charlen * xw.cw; | 2374 | width = charlen * xw.cw; |
| 2375 | Font *font = &dc.font; | 2375 | Font *font = &dc.font; |
| 2376 | XGlyphInfo extents; | 2376 | XGlyphInfo extents; |
| @@ -2407,8 +2407,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | |||
| 2407 | font = &dc.ibfont; | 2407 | font = &dc.ibfont; |
| 2408 | 2408 | ||
| 2409 | if(IS_SET(MODE_REVERSE)) { | 2409 | if(IS_SET(MODE_REVERSE)) { |
| 2410 | if(fg == &dc.xft_col[DefaultFG]) { | 2410 | if(fg == &dc.xft_col[defaultfg]) { |
| 2411 | fg = &dc.xft_col[DefaultBG]; | 2411 | fg = &dc.xft_col[defaultbg]; |
| 2412 | } else { | 2412 | } else { |
| 2413 | colfg.red = ~fg->color.red; | 2413 | colfg.red = ~fg->color.red; |
| 2414 | colfg.green = ~fg->color.green; | 2414 | colfg.green = ~fg->color.green; |
| @@ -2418,8 +2418,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | |||
| 2418 | fg = &revfg; | 2418 | fg = &revfg; |
| 2419 | } | 2419 | } |
| 2420 | 2420 | ||
| 2421 | if(bg == &dc.xft_col[DefaultBG]) { | 2421 | if(bg == &dc.xft_col[defaultbg]) { |
| 2422 | bg = &dc.xft_col[DefaultFG]; | 2422 | bg = &dc.xft_col[defaultfg]; |
| 2423 | } else { | 2423 | } else { |
| 2424 | colbg.red = ~bg->color.red; | 2424 | colbg.red = ~bg->color.red; |
| 2425 | colbg.green = ~bg->color.green; | 2425 | colbg.green = ~bg->color.green; |
| @@ -2436,7 +2436,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | |||
| 2436 | 2436 | ||
| 2437 | /* Intelligent cleaning up of the borders. */ | 2437 | /* Intelligent cleaning up of the borders. */ |
| 2438 | if(x == 0) { | 2438 | if(x == 0) { |
| 2439 | xclear(0, (y == 0)? 0 : winy, BORDER, | 2439 | xclear(0, (y == 0)? 0 : winy, borderpx, |
| 2440 | winy + xw.ch + (y == term.row-1)? xw.h : 0); | 2440 | winy + xw.ch + (y == term.row-1)? xw.h : 0); |
| 2441 | } | 2441 | } |
| 2442 | if(x + charlen >= term.col-1) { | 2442 | if(x + charlen >= term.col-1) { |
| @@ -2444,7 +2444,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | |||
| 2444 | (y == term.row-1)? xw.h : (winy + xw.ch)); | 2444 | (y == term.row-1)? xw.h : (winy + xw.ch)); |
| 2445 | } | 2445 | } |
| 2446 | if(y == 0) | 2446 | if(y == 0) |
| 2447 | xclear(winx, 0, winx + width, BORDER); | 2447 | xclear(winx, 0, winx + width, borderpx); |
| 2448 | if(y == term.row-1) | 2448 | if(y == term.row-1) |
| 2449 | xclear(winx, winy + xw.ch, winx + width, xw.h); | 2449 | xclear(winx, winy + xw.ch, winx + width, xw.h); |
| 2450 | 2450 | ||
| @@ -2462,7 +2462,7 @@ void | |||
| 2462 | xdrawcursor(void) { | 2462 | xdrawcursor(void) { |
| 2463 | static int oldx = 0, oldy = 0; | 2463 | static int oldx = 0, oldy = 0; |
| 2464 | int sl; | 2464 | int sl; |
| 2465 | Glyph g = {{' '}, ATTR_NULL, DefaultBG, DefaultCS, 0}; | 2465 | Glyph g = {{' '}, ATTR_NULL, defaultbg, defaultcs, 0}; |
| 2466 | 2466 | ||
| 2467 | LIMIT(oldx, 0, term.col-1); | 2467 | LIMIT(oldx, 0, term.col-1); |
| 2468 | LIMIT(oldy, 0, term.row-1); | 2468 | LIMIT(oldy, 0, term.row-1); |
| @@ -2482,10 +2482,10 @@ xdrawcursor(void) { | |||
| 2482 | /* draw the new one */ | 2482 | /* draw the new one */ |
| 2483 | if(!(term.c.state & CURSOR_HIDE)) { | 2483 | if(!(term.c.state & CURSOR_HIDE)) { |
| 2484 | if(!(xw.state & WIN_FOCUSED)) | 2484 | if(!(xw.state & WIN_FOCUSED)) |
| 2485 | g.bg = DefaultUCS; | 2485 | g.bg = defaultucs; |
| 2486 | 2486 | ||
| 2487 | if(IS_SET(MODE_REVERSE)) | 2487 | if(IS_SET(MODE_REVERSE)) |
| 2488 | g.mode |= ATTR_REVERSE, g.fg = DefaultCS, g.bg = DefaultFG; | 2488 | g.mode |= ATTR_REVERSE, g.fg = defaultcs, g.bg = defaultfg; |
| 2489 | 2489 | ||
| 2490 | sl = utf8size(g.c); | 2490 | sl = utf8size(g.c); |
| 2491 | xdraws(g.c, g, term.c.x, term.c.y, 1, sl); | 2491 | xdraws(g.c, g, term.c.x, term.c.y, 1, sl); |
| @@ -2720,8 +2720,8 @@ cresize(int width, int height) | |||
| 2720 | if(height != 0) | 2720 | if(height != 0) |
| 2721 | xw.h = height; | 2721 | xw.h = height; |
| 2722 | 2722 | ||
| 2723 | col = (xw.w - 2*BORDER) / xw.cw; | 2723 | col = (xw.w - 2*borderpx) / xw.cw; |
| 2724 | row = (xw.h - 2*BORDER) / xw.ch; | 2724 | row = (xw.h - 2*borderpx) / xw.ch; |
| 2725 | if(col == term.col && row == term.row) | 2725 | if(col == term.col && row == term.row) |
| 2726 | return; | 2726 | return; |
| 2727 | 2727 | ||
