This looks good now, thanks, although I will need to find some time to play with it a bit. We still have the question of terminals without BCE. You can try to make tmux itself support BCE if you like which would be nice and have a bit of overlap with this diff, or add BCE support back on top of this like you had before.
On Thu, Feb 19, 2015 at 11:26:58PM -0600, J Raynor wrote: > I've attached a new patch. This patch: > > * Adds Thomas's fix for pane selection via the mouse > * Gets rid of nflags in cmd_display_panes_exec > * Fixes the usage of memcpy in window.c > * Leaves tty_reset unchanged > * Has the tty_cmd_* functions call tty_attributes instead of tty_reset > * Includes updates to the man page > diff --git a/cmd-display-panes.c b/cmd-display-panes.c > index 9ce8971..2cc29e4 100644 > --- a/cmd-display-panes.c > +++ b/cmd-display-panes.c > @@ -18,18 +18,21 @@ > > #include <sys/types.h> > > +#include <stdlib.h> > +#include <string.h> > + > #include "tmux.h" > > /* > - * Display panes on a client. > + * Display panes on a client, or get/set pane default fg/bg colours. > */ > > enum cmd_retval cmd_display_panes_exec(struct cmd *, struct cmd_q *); > > const struct cmd_entry cmd_display_panes_entry = { > "display-panes", "displayp", > - "t:", 0, 0, > - CMD_TARGET_CLIENT_USAGE, > + "gt:P:", 0, 0, > + "[-g] [-P style] " CMD_TARGET_CLIENT_USAGE, > 0, > cmd_display_panes_exec > }; > @@ -37,13 +40,48 @@ const struct cmd_entry cmd_display_panes_entry = { > enum cmd_retval > cmd_display_panes_exec(struct cmd *self, struct cmd_q *cmdq) > { > - struct args *args = self->args; > - struct client *c; > + struct args *args = self->args; > + struct client *c; > + struct session *s; > + struct winlink *wl; > + struct window_pane *wp; > + const char *str; > + > + if (!args_has(args, 'g') && !args_has(args, 'P')) { > + > + if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL) > + return (CMD_RETURN_ERROR); > + > + server_set_identify(c); > + > + return (CMD_RETURN_NORMAL); > + } > + > > - if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL) > + if ((wl = cmd_find_pane(cmdq, args_get(args, 't'), &s, &wp)) == NULL) > return (CMD_RETURN_ERROR); > > - server_set_identify(c); > + if (args_has(args, 'g')) { > + > + if (args_has(args, 'P')) { > + cmdq_error(cmdq, "don't use -P with -g"); > + return (CMD_RETURN_ERROR); > + } > + > + cmdq_print(cmdq, "%s", style_tostring(&wp->colgc)); > + > + return (CMD_RETURN_NORMAL); > + } > + > + if (args_has(args, 'P')) { > + str = args_get(args, 'P'); > + if (style_parse(&grid_default_cell, &wp->colgc, str) == -1) { > + cmdq_error(cmdq, "bad style: %s", str); > + return (CMD_RETURN_ERROR); > + } > + > + wp->flags |= PANE_REDRAW; > + } > > return (CMD_RETURN_NORMAL); > } > diff --git a/options-table.c b/options-table.c > index 2bcf29b..d7057bf 100644 > --- a/options-table.c > +++ b/options-table.c > @@ -667,6 +667,16 @@ const struct options_table_entry window_options_table[] > = { > .default_num = 0 /* overridden in main() */ > }, > > + { .name = "window-active-style", > + .type = OPTIONS_TABLE_STYLE, > + .default_str = "default" > + }, > + > + { .name = "window-style", > + .type = OPTIONS_TABLE_STYLE, > + .default_str = "default" > + }, > + > { .name = "window-status-activity-attr", > .type = OPTIONS_TABLE_ATTRIBUTES, > .default_num = GRID_ATTR_REVERSE, > diff --git a/screen-redraw.c b/screen-redraw.c > index c2b2ece..c718609 100644 > --- a/screen-redraw.c > +++ b/screen-redraw.c > @@ -266,7 +266,7 @@ screen_redraw_pane(struct client *c, struct window_pane > *wp) > yoff++; > > for (i = 0; i < wp->sy; i++) > - tty_draw_line(&c->tty, wp->screen, i, wp->xoff, yoff); > + tty_draw_line(&c->tty, wp->screen, i, wp->xoff, yoff, wp); > tty_reset(&c->tty); > } > > @@ -323,9 +323,9 @@ screen_redraw_draw_borders(struct client *c, int status, > u_int top) > small && i > msgx && j == msgy) > continue; > if (screen_redraw_check_active(i, j, type, w, wp)) > - tty_attributes(tty, &active_gc); > + tty_attributes(tty, &active_gc, wp); > else > - tty_attributes(tty, &other_gc); > + tty_attributes(tty, &other_gc, wp); > tty_cursor(tty, i, top + j); > tty_putc(tty, CELL_BORDERS[type]); > } > @@ -333,7 +333,7 @@ screen_redraw_draw_borders(struct client *c, int status, > u_int top) > > if (small) { > memcpy(&msg_gc, &grid_default_cell, sizeof msg_gc); > - tty_attributes(tty, &msg_gc); > + tty_attributes(tty, &msg_gc, wp); > tty_cursor(tty, msgx, msgy); > tty_puts(tty, msg); > } > @@ -354,7 +354,7 @@ screen_redraw_draw_panes(struct client *c, u_int top) > continue; > s = wp->screen; > for (i = 0; i < wp->sy; i++) > - tty_draw_line(tty, s, i, wp->xoff, top + wp->yoff); > + tty_draw_line(tty, s, i, wp->xoff, top + wp->yoff, wp); > if (c->flags & CLIENT_IDENTIFY) > screen_redraw_draw_number(c, wp); > } > @@ -367,9 +367,9 @@ screen_redraw_draw_status(struct client *c, u_int top) > struct tty *tty = &c->tty; > > if (top) > - tty_draw_line(tty, &c->status, 0, 0, 0); > + tty_draw_line(tty, &c->status, 0, 0, 0, NULL); > else > - tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1); > + tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1, NULL); > } > > /* Draw number on a pane. */ > @@ -411,7 +411,7 @@ screen_redraw_draw_number(struct client *c, struct > window_pane *wp) > colour_set_bg(&gc, active_colour); > else > colour_set_bg(&gc, colour); > - tty_attributes(tty, &gc); > + tty_attributes(tty, &gc, wp); > for (ptr = buf; *ptr != '\0'; ptr++) { > if (*ptr < '0' || *ptr > '9') > continue; > @@ -438,7 +438,7 @@ draw_text: > colour_set_fg(&gc, active_colour); > else > colour_set_fg(&gc, colour); > - tty_attributes(tty, &gc); > + tty_attributes(tty, &gc, wp); > tty_puts(tty, buf); > > tty_cursor(tty, 0, 0); > diff --git a/server-client.c b/server-client.c > index 3ca9907..f234f50 100644 > --- a/server-client.c > +++ b/server-client.c > @@ -328,8 +328,7 @@ server_client_check_mouse(struct client *c, struct > window_pane *wp) > if (options_get_number(oo, "mouse-select-pane") && > (m->event == MOUSE_EVENT_DOWN || m->event == MOUSE_EVENT_WHEEL)) { > window_set_active_at(wp->window, m->x, m->y); > - server_status_window(wp->window); > - server_redraw_window_borders(wp->window); > + server_redraw_window(wp->window); > wp = wp->window->active; /* may have changed */ > } > > diff --git a/tmux.1 b/tmux.1 > index f615dd0..656a2a7 100644 > --- a/tmux.1 > +++ b/tmux.1 > @@ -1305,9 +1305,14 @@ flag, see the > .Sx FORMATS > section. > This command works only if at least one client is attached. > -.It Ic display-panes Op Fl t Ar target-client > +.It Xo Ic display-panes > +.Op Fl g > +.Op Fl P Ar style > +.Op Fl t Ar target-client > +.Xc > .D1 (alias: Ic displayp ) > -Display a visible indicator of each pane shown by > +If no flags have been specified, display a visible indicator of > +each pane shown by > .Ar target-client . > See the > .Ic display-panes-time , > @@ -1320,6 +1325,15 @@ While the indicator is on screen, a pane may be > selected with the > to > .Ql 9 > keys. > +.Pp > +With > +.Fl P, > +a style argument can be passed to set a pane's foreground and > +background colour. The style will override any style that > +has been set with the window-style or window-active-style options. > +The > +.Fl g > +flag will show what colour style has been set for the pane. > .It Xo Ic find-window > .Op Fl CNT > .Op Fl F Ar format > @@ -2928,6 +2942,15 @@ Instructs > .Nm > to expect UTF-8 sequences to appear in this window. > .Pp > +.It Ic window-active-style Ar style > +Set the default foreground and background colours for the active pane in the > +window via a style argument. > +For how to specify > +.Ar style , > +see the > +.Ic message-command-style > +option. > +.Pp > .It Ic window-status-activity-style Ar style > Set status line style for windows with an activity alert. > For how to specify > @@ -2985,6 +3008,14 @@ see the > .Ic message-command-style > option. > .Pp > +.It Ic window-style Ar style > +Set the default window foreground and background colours via a style > argument. > +For how to specify > +.Ar style , > +see the > +.Ic message-command-style > +option. > +.Pp > .It Xo Ic xterm-keys > .Op Ic on | off > .Xc > diff --git a/tmux.h b/tmux.h > index e296ac7..4751cbd 100644 > --- a/tmux.h > +++ b/tmux.h > @@ -900,6 +900,9 @@ struct window_pane { > > struct input_ctx ictx; > > + /* Default fg/bg grid cell colours */ > + struct grid_cell colgc; > + > int pipe_fd; > struct bufferevent *pipe_event; > size_t pipe_off; > @@ -1604,7 +1607,8 @@ void environ_push(struct environ *); > /* tty.c */ > void tty_init_termios(int, struct termios *, struct bufferevent *); > void tty_raw(struct tty *, const char *); > -void tty_attributes(struct tty *, const struct grid_cell *); > +void tty_attributes(struct tty *, const struct grid_cell *, > + const struct window_pane *); > void tty_reset(struct tty *); > void tty_region_pane(struct tty *, const struct tty_ctx *, u_int, u_int); > void tty_region(struct tty *, u_int, u_int); > @@ -1628,7 +1632,8 @@ void tty_stop_tty(struct tty *); > void tty_set_title(struct tty *, const char *); > void tty_update_mode(struct tty *, int, struct screen *); > void tty_force_cursor_colour(struct tty *, const char *); > -void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int); > +void tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int, > + const struct window_pane *); > int tty_open(struct tty *, char **); > void tty_close(struct tty *); > void tty_free(struct tty *); > diff --git a/tty.c b/tty.c > index 1bb8981..257ebf8 100644 > --- a/tty.c > +++ b/tty.c > @@ -47,7 +47,9 @@ void tty_redraw_region(struct tty *, const struct > tty_ctx *); > void tty_emulate_repeat( > struct tty *, enum tty_code_code, enum tty_code_code, u_int); > void tty_repeat_space(struct tty *, u_int); > -void tty_cell(struct tty *, const struct grid_cell *); > +void tty_cell(struct tty *, const struct grid_cell *, > + const struct window_pane *); > +void tty_default_colours(struct grid_cell *, const struct window_pane *); > > #define tty_use_acs(tty) \ > (tty_term_has((tty)->term, TTYC_ACSC) && !((tty)->flags & TTY_UTF8)) > @@ -604,15 +606,16 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx > *ctx) > > if (ctx->ocy < ctx->orupper || ctx->ocy > ctx->orlower) { > for (i = ctx->ocy; i < screen_size_y(s); i++) > - tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff, wp); > } else { > for (i = ctx->orupper; i <= ctx->orlower; i++) > - tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff, wp); > } > } > > void > -tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int > oy) > +tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int > oy, > + const struct window_pane *wp) > { > const struct grid_cell *gc; > struct grid_line *gl; > @@ -650,16 +653,16 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int > py, u_int ox, u_int oy) > ~(GRID_FLAG_FG256|GRID_FLAG_BG256); > tmpgc.flags |= s->sel.cell.flags & > (GRID_FLAG_FG256|GRID_FLAG_BG256); > - tty_cell(tty, &tmpgc); > + tty_cell(tty, &tmpgc, wp); > } else > - tty_cell(tty, gc); > + tty_cell(tty, gc, wp); > } > > if (sx >= tty->sx) { > tty_update_mode(tty, tty->mode, s); > return; > } > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_cursor(tty, ox + sx, oy + py); > if (sx != screen_size_x(s) && ox + screen_size_x(s) >= tty->sx && > @@ -713,11 +716,12 @@ tty_cmd_insertcharacter(struct tty *tty, const struct > tty_ctx *ctx) > struct window_pane *wp = ctx->wp; > > if (!tty_pane_full_width(tty, ctx)) { > - tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff, > + wp); > return; > } > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > > @@ -725,7 +729,8 @@ tty_cmd_insertcharacter(struct tty *tty, const struct > tty_ctx *ctx) > tty_term_has(tty->term, TTYC_ICH1)) > tty_emulate_repeat(tty, TTYC_ICH, TTYC_ICH1, ctx->num); > else > - tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff, > + wp); > } > > void > @@ -736,11 +741,12 @@ tty_cmd_deletecharacter(struct tty *tty, const struct > tty_ctx *ctx) > if (!tty_pane_full_width(tty, ctx) || > (!tty_term_has(tty->term, TTYC_DCH) && > !tty_term_has(tty->term, TTYC_DCH1))) { > - tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff, > + wp); > return; > } > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > > @@ -754,7 +760,7 @@ tty_cmd_clearcharacter(struct tty *tty, const struct > tty_ctx *ctx) > { > u_int i; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > > @@ -776,7 +782,7 @@ tty_cmd_insertline(struct tty *tty, const struct tty_ctx > *ctx) > return; > } > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > > tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > @@ -794,7 +800,7 @@ tty_cmd_deleteline(struct tty *tty, const struct tty_ctx > *ctx) > return; > } > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > > tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > @@ -808,7 +814,7 @@ tty_cmd_clearline(struct tty *tty, const struct tty_ctx > *ctx) > struct window_pane *wp = ctx->wp; > struct screen *s = wp->screen; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_cursor_pane(tty, ctx, 0, ctx->ocy); > > @@ -824,7 +830,7 @@ tty_cmd_clearendofline(struct tty *tty, const struct > tty_ctx *ctx) > struct window_pane *wp = ctx->wp; > struct screen *s = wp->screen; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > > @@ -837,7 +843,7 @@ tty_cmd_clearendofline(struct tty *tty, const struct > tty_ctx *ctx) > void > tty_cmd_clearstartofline(struct tty *tty, const struct tty_ctx *ctx) > { > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > > if (ctx->xoff == 0 && tty_term_has(tty->term, TTYC_EL1)) { > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > @@ -861,7 +867,7 @@ tty_cmd_reverseindex(struct tty *tty, const struct > tty_ctx *ctx) > return; > } > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > > tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->orupper); > @@ -894,7 +900,7 @@ tty_cmd_linefeed(struct tty *tty, const struct tty_ctx > *ctx) > if (ctx->num && !(tty->term->flags & TERM_EARLYWRAP)) > return; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > @@ -909,7 +915,7 @@ tty_cmd_clearendofscreen(struct tty *tty, const struct > tty_ctx *ctx) > struct screen *s = wp->screen; > u_int i, j; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > @@ -942,7 +948,7 @@ tty_cmd_clearstartofscreen(struct tty *tty, const struct > tty_ctx *ctx) > struct screen *s = wp->screen; > u_int i, j; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); > tty_cursor_pane(tty, ctx, 0, 0); > @@ -969,7 +975,7 @@ tty_cmd_clearscreen(struct tty *tty, const struct tty_ctx > *ctx) > struct screen *s = wp->screen; > u_int i, j; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); > tty_cursor_pane(tty, ctx, 0, 0); > @@ -997,7 +1003,7 @@ tty_cmd_alignmenttest(struct tty *tty, const struct > tty_ctx *ctx) > struct screen *s = wp->screen; > u_int i, j; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, wp); > > tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); > > @@ -1038,12 +1044,12 @@ tty_cmd_cell(struct tty *tty, const struct tty_ctx > *ctx) > */ > cx = screen_size_x(s) - > grid_cell_width(&ctx->last_cell); > tty_cursor_pane(tty, ctx, cx, ctx->ocy); > - tty_cell(tty, &ctx->last_cell); > + tty_cell(tty, &ctx->last_cell, wp); > } > } else > tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy); > > - tty_cell(tty, ctx->cell); > + tty_cell(tty, ctx->cell, wp); > } > > void > @@ -1055,7 +1061,7 @@ tty_cmd_utf8character(struct tty *tty, const struct > tty_ctx *ctx) > * Cannot rely on not being a partial character, so just redraw the > * whole line. > */ > - tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff); > + tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff, wp); > } > > void > @@ -1088,12 +1094,13 @@ tty_cmd_rawstring(struct tty *tty, const struct > tty_ctx *ctx) > tty->cx = tty->cy = UINT_MAX; > tty->rupper = tty->rlower = UINT_MAX; > > - tty_reset(tty); > + tty_attributes(tty, &grid_default_cell, ctx->wp); > tty_cursor(tty, 0, 0); > } > > void > -tty_cell(struct tty *tty, const struct grid_cell *gc) > +tty_cell(struct tty *tty, const struct grid_cell *gc, > + const struct window_pane *wp) > { > struct utf8_data ud; > u_int i; > @@ -1108,7 +1115,7 @@ tty_cell(struct tty *tty, const struct grid_cell *gc) > return; > > /* Set the attributes. */ > - tty_attributes(tty, gc); > + tty_attributes(tty, gc, wp); > > /* Get the cell and if ASCII write with putc to do ACS translation. */ > grid_cell_get(gc, &ud); > @@ -1312,12 +1319,14 @@ out: > } > > void > -tty_attributes(struct tty *tty, const struct grid_cell *gc) > +tty_attributes(struct tty *tty, const struct grid_cell *gc, > + const struct window_pane *wp) > { > struct grid_cell *tc = &tty->cell, gc2; > u_char changed; > > memcpy(&gc2, gc, sizeof gc2); > + tty_default_colours(&gc2, wp); > > /* > * If no setab, try to use the reverse attribute as a best-effort for a > @@ -1614,3 +1623,44 @@ tty_bell(struct tty *tty) > { > tty_putcode(tty, TTYC_BEL); > } > + > +void > +tty_default_colours(struct grid_cell *gc, const struct window_pane *wp) > +{ > + const struct grid_cell *agc, *pgc, *wgc; > + > + if (wp == NULL) > + return; > + > + pgc = &wp->colgc; > + agc = options_get_style(&wp->window->options, "window-active-style"); > + wgc = options_get_style(&wp->window->options, "window-style"); > + > + if (gc->fg == 8 && !(gc->flags & GRID_FLAG_FG256)) { > + if (pgc->fg != 8 || (pgc->flags & GRID_FLAG_FG256)) { > + gc->fg = pgc->fg; > + gc->flags |= (pgc->flags & GRID_FLAG_FG256); > + } else if (wp == wp->window->active && > + (agc->fg != 8 || (agc->flags & GRID_FLAG_FG256))) { > + gc->fg = agc->fg; > + gc->flags |= (agc->flags & GRID_FLAG_FG256); > + } else { > + gc->fg = wgc->fg; > + gc->flags |= (wgc->flags & GRID_FLAG_FG256); > + } > + } > + > + if (gc->bg == 8 && !(gc->flags & GRID_FLAG_BG256)) { > + if (pgc->bg != 8 || (pgc->flags & GRID_FLAG_BG256)) { > + gc->bg = pgc->bg; > + gc->flags |= (pgc->flags & GRID_FLAG_BG256); > + } else if (wp == wp->window->active && > + (agc->bg != 8 || (agc->flags & GRID_FLAG_BG256))) { > + gc->bg = agc->bg; > + gc->flags |= (agc->flags & GRID_FLAG_BG256); > + } else { > + gc->bg = wgc->bg; > + gc->flags |= (wgc->flags & GRID_FLAG_BG256); > + } > + } > +} > diff --git a/window.c b/window.c > index fff2cfc..7a06470 100644 > --- a/window.c > +++ b/window.c > @@ -704,6 +704,8 @@ window_pane_create(struct window *w, u_int sx, u_int sy, > u_int hlimit) > > wp->saved_grid = NULL; > > + memcpy(&wp->colgc, &grid_default_cell, sizeof wp->colgc); > + > screen_init(&wp->base, sx, sy, hlimit); > wp->screen = &wp->base; > ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users