Option to display the active pane in a different colour with the display-panes

command. From Paul Hoffman, thanks.
This commit is contained in:
Nicholas Marriott 2010-02-04 18:20:16 +00:00
parent d6bd9c0e7f
commit 604b02cfaa
4 changed files with 26 additions and 10 deletions

View File

@ -88,6 +88,7 @@ const struct set_option_entry set_session_option_table[] = {
{ "default-shell", SET_OPTION_STRING, 0, 0, NULL }, { "default-shell", SET_OPTION_STRING, 0, 0, NULL },
{ "default-terminal", SET_OPTION_STRING, 0, 0, NULL }, { "default-terminal", SET_OPTION_STRING, 0, 0, NULL },
{ "display-panes-colour", SET_OPTION_COLOUR, 0, 0, NULL }, { "display-panes-colour", SET_OPTION_COLOUR, 0, 0, NULL },
{ "display-panes-active-colour", SET_OPTION_COLOUR, 0, 0, NULL },
{ "display-panes-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL }, { "display-panes-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL },
{ "display-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL }, { "display-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL },
{ "history-limit", SET_OPTION_NUMBER, 0, INT_MAX, NULL }, { "history-limit", SET_OPTION_NUMBER, 0, INT_MAX, NULL },

View File

@ -269,18 +269,21 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
{ {
struct tty *tty = &c->tty; struct tty *tty = &c->tty;
struct session *s = c->session; struct session *s = c->session;
struct options *oo = &s->options;
struct window *w = wp->window;
struct grid_cell gc; struct grid_cell gc;
u_int idx, px, py, i, j, xoff, yoff; u_int idx, px, py, i, j, xoff, yoff;
int colour; int colour, active_colour;
char buf[16], *ptr; char buf[16], *ptr;
size_t len; size_t len;
idx = window_pane_index(wp->window, wp); idx = window_pane_index(w, wp);
len = xsnprintf(buf, sizeof buf, "%u", idx); len = xsnprintf(buf, sizeof buf, "%u", idx);
if (wp->sx < len) if (wp->sx < len)
return; return;
colour = options_get_number(&s->options, "display-panes-colour"); colour = options_get_number(oo, "display-panes-colour");
active_colour = options_get_number(oo, "display-panes-active-colour");
px = wp->sx / 2; py = wp->sy / 2; px = wp->sx / 2; py = wp->sy / 2;
xoff = wp->xoff; yoff = wp->yoff; xoff = wp->xoff; yoff = wp->yoff;
@ -289,7 +292,10 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
tty_cursor(tty, xoff + px - len / 2, yoff + py); tty_cursor(tty, xoff + px - len / 2, yoff + py);
memcpy(&gc, &grid_default_cell, sizeof gc); memcpy(&gc, &grid_default_cell, sizeof gc);
gc.data = '_'; /* not space */ gc.data = '_'; /* not space */
colour_set_fg(&gc, colour); if (w->active == wp)
colour_set_fg(&gc, active_colour);
else
colour_set_fg(&gc, colour);
tty_attributes(tty, &gc); tty_attributes(tty, &gc);
tty_puts(tty, buf); tty_puts(tty, buf);
return; return;
@ -300,7 +306,10 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
memcpy(&gc, &grid_default_cell, sizeof gc); memcpy(&gc, &grid_default_cell, sizeof gc);
gc.data = '_'; /* not space */ gc.data = '_'; /* not space */
colour_set_bg(&gc, colour); if (w->active == wp)
colour_set_bg(&gc, active_colour);
else
colour_set_bg(&gc, colour);
tty_attributes(tty, &gc); tty_attributes(tty, &gc);
for (ptr = buf; *ptr != '\0'; ptr++) { for (ptr = buf; *ptr != '\0'; ptr++) {
if (*ptr < '0' || *ptr > '9') if (*ptr < '0' || *ptr > '9')

15
tmux.1
View File

@ -751,9 +751,10 @@ This command works only from inside
Display a visible indicator of each pane shown by Display a visible indicator of each pane shown by
.Ar target-client . .Ar target-client .
See the See the
.Ic display-panes-time .Ic display-panes-time ,
.Ic display-panes-colour ,
and and
.Ic display-panes-colour .Ic display-panes-active-colour
session options. session options.
While the indicator is on screen, a pane may be selected with the While the indicator is on screen, a pane may be selected with the
.Ql 0 .Ql 0
@ -1398,10 +1399,14 @@ to work correctly, this
be set to be set to
.Ql screen .Ql screen
or a derivative of it. or a derivative of it.
.It Ic display-panes-colour Ar colour .It Ic display-panes-active-colour Ar colour
Set the colour used for the Set the colour used by the
.Ic display-panes .Ic display-panes
command. command to show the indicator for the active pane.
.It Ic display-panes-colour Ar colour
Set the colour used by the
.Ic display-panes
command to show the indicators for inactive panes.
.It Ic display-panes-time Ar time .It Ic display-panes-time Ar time
Set the time in milliseconds for which the indicators shown by the Set the time in milliseconds for which the indicators shown by the
.Ic display-panes .Ic display-panes

1
tmux.c
View File

@ -328,6 +328,7 @@ main(int argc, char **argv)
options_set_string(so, "default-shell", "%s", getshell()); options_set_string(so, "default-shell", "%s", getshell());
options_set_string(so, "default-terminal", "screen"); options_set_string(so, "default-terminal", "screen");
options_set_number(so, "display-panes-colour", 4); options_set_number(so, "display-panes-colour", 4);
options_set_number(so, "display-panes-active-colour", 1);
options_set_number(so, "display-panes-time", 1000); options_set_number(so, "display-panes-time", 1000);
options_set_number(so, "display-time", 750); options_set_number(so, "display-time", 750);
options_set_number(so, "history-limit", 2000); options_set_number(so, "history-limit", 2000);