mirror of
https://github.com/tmux/tmux.git
synced 2026-05-30 14:16:18 +00:00
Add window-pane-status-format options and adjust the default second
status line to show panes, also change how window-style is checked now it is a pane option.
This commit is contained in:
@@ -189,7 +189,7 @@ static const char *options_table_copy_mode_line_numbers_list[] = {
|
||||
"#{E:pane-status-style}" \
|
||||
"]" \
|
||||
"#[push-default]" \
|
||||
"#P[#{pane_width}x#{pane_height}]" \
|
||||
"#{T:window-pane-status-format}" \
|
||||
"#[pop-default]" \
|
||||
"#[norange list=on default] " \
|
||||
"," \
|
||||
@@ -200,7 +200,7 @@ static const char *options_table_copy_mode_line_numbers_list[] = {
|
||||
"}" \
|
||||
"]" \
|
||||
"#[push-default]" \
|
||||
"#P[#{pane_width}x#{pane_height}]*" \
|
||||
"#{T:window-pane-current-status-format}" \
|
||||
"#[pop-default]" \
|
||||
"#[norange list=on default] " \
|
||||
"}"
|
||||
@@ -1519,6 +1519,21 @@ const struct options_table_entry options_table[] = {
|
||||
.text = "Default style of the active pane."
|
||||
},
|
||||
|
||||
{ .name = "window-pane-current-status-format",
|
||||
.type = OPTIONS_TABLE_STRING,
|
||||
.scope = OPTIONS_TABLE_WINDOW,
|
||||
.default_str = "#P:[#T]#{?pane_flags,#{pane_flags}, }",
|
||||
.text = "Format of the current window pane in the status line."
|
||||
},
|
||||
|
||||
{ .name = "window-pane-status-format",
|
||||
.type = OPTIONS_TABLE_STRING,
|
||||
.scope = OPTIONS_TABLE_WINDOW,
|
||||
.default_str = "#P:[#T]#{?pane_flags,#{pane_flags}, }",
|
||||
.text = "Format of window panes in the status line, except the "
|
||||
"current pane."
|
||||
},
|
||||
|
||||
{ .name = "window-size",
|
||||
.type = OPTIONS_TABLE_CHOICE,
|
||||
.scope = OPTIONS_TABLE_WINDOW,
|
||||
|
||||
@@ -603,9 +603,7 @@ screen_redraw_make_pane_status(struct client *c, struct window_pane *wp,
|
||||
border_option = "pane-active-border-style";
|
||||
else
|
||||
border_option = "pane-border-style";
|
||||
style_apply(&gc, w->options, border_option, ft);
|
||||
if (options_get_only(wp->options, border_option) != NULL)
|
||||
style_add(&gc, wp->options, border_option, ft);
|
||||
style_apply(&gc, wp->options, border_option, ft);
|
||||
fmt = options_get_string(wp->options, "pane-border-format");
|
||||
|
||||
expanded = format_expand_time(ft, fmt);
|
||||
@@ -872,7 +870,6 @@ screen_redraw_draw_borders_style(struct screen_redraw_ctx *ctx, u_int x,
|
||||
{
|
||||
struct client *c = ctx->c;
|
||||
struct session *s = c->session;
|
||||
struct window *w = s->curw->window;
|
||||
struct window_pane *active = server_client_get_pane(c);
|
||||
struct grid_cell *gc;
|
||||
const char *border_option;
|
||||
@@ -891,11 +888,7 @@ screen_redraw_draw_borders_style(struct screen_redraw_ctx *ctx, u_int x,
|
||||
|
||||
if (!*flag) {
|
||||
ft = format_create_defaults(NULL, c, s, s->curw, wp);
|
||||
|
||||
style_apply(gc, w->options, border_option, ft);
|
||||
if (options_get_only(wp->options, border_option) != NULL)
|
||||
style_add(gc, wp->options, border_option, ft);
|
||||
|
||||
style_apply(gc, wp->options, border_option, ft);
|
||||
format_free(ft);
|
||||
*flag = 1;
|
||||
}
|
||||
@@ -1152,6 +1145,10 @@ screen_redraw_get_visible_ranges(struct window_pane *base_wp, u_int px,
|
||||
return (&sr);
|
||||
}
|
||||
|
||||
w = base_wp->window;
|
||||
if (px + width > w->sx)
|
||||
width = w->sx - px;
|
||||
|
||||
if (r == NULL) {
|
||||
/* Start with the entire width of the range. */
|
||||
server_client_ensure_ranges(&base_wp->r, 1);
|
||||
@@ -1161,7 +1158,6 @@ screen_redraw_get_visible_ranges(struct window_pane *base_wp, u_int px,
|
||||
r->used = 1;
|
||||
}
|
||||
|
||||
w = base_wp->window;
|
||||
sb = options_get_number(w->options, "pane-scrollbars");
|
||||
sb_pos = options_get_number(w->options, "pane-scrollbars-position");
|
||||
|
||||
|
||||
14
tmux.1
14
tmux.1
@@ -5765,6 +5765,20 @@ For how to specify
|
||||
see the
|
||||
.Sx STYLES
|
||||
section.
|
||||
.Pp
|
||||
.It Ic window-pane-status-format Ar string
|
||||
Set the format in which the window pane is displayed in the status line window
|
||||
pane list.
|
||||
See the
|
||||
.Sx FORMATS
|
||||
and
|
||||
.Sx STYLES
|
||||
sections.
|
||||
.Pp
|
||||
.It Ic window-pane-current-status-format Ar string
|
||||
Like
|
||||
.Ar window-status-format ,
|
||||
but is the format used when the window is the current window.
|
||||
.El
|
||||
.Sh HOOKS
|
||||
.Nm
|
||||
|
||||
25
tty.c
25
tty.c
@@ -2906,42 +2906,43 @@ tty_window_default_style(struct grid_cell *gc, struct window_pane *wp)
|
||||
gc->bg = wp->palette.bg;
|
||||
}
|
||||
|
||||
void
|
||||
tty_default_colours(struct grid_cell *gc, struct window_pane *wp)
|
||||
static void
|
||||
tty_style_changed(struct window_pane *wp)
|
||||
{
|
||||
struct options *oo = wp->options;
|
||||
struct format_tree *ft;
|
||||
|
||||
memcpy(gc, &grid_default_cell, sizeof *gc);
|
||||
|
||||
if (wp->flags & PANE_STYLECHANGED) {
|
||||
log_debug("%%%u: style changed", wp->id);
|
||||
wp->flags &= ~PANE_STYLECHANGED;
|
||||
|
||||
ft = format_create(NULL, NULL, FORMAT_PANE|wp->id,
|
||||
FORMAT_NOJOBS);
|
||||
ft = format_create(NULL, NULL, FORMAT_PANE|wp->id, FORMAT_NOJOBS);
|
||||
format_defaults(ft, NULL, NULL, NULL, wp);
|
||||
|
||||
tty_window_default_style(&wp->cached_active_gc, wp);
|
||||
style_add(&wp->cached_active_gc, oo, "window-active-style", ft);
|
||||
|
||||
tty_window_default_style(&wp->cached_gc, wp);
|
||||
style_add(&wp->cached_gc, oo, "window-style", ft);
|
||||
|
||||
format_free(ft);
|
||||
}
|
||||
|
||||
if (gc->fg == 8) {
|
||||
void
|
||||
tty_default_colours(struct grid_cell *gc, struct window_pane *wp)
|
||||
{
|
||||
if (wp->flags & PANE_STYLECHANGED)
|
||||
tty_style_changed (wp);
|
||||
|
||||
memcpy(gc, &grid_default_cell, sizeof *gc);
|
||||
if (wp == wp->window->active && wp->cached_active_gc.fg != 8)
|
||||
gc->fg = wp->cached_active_gc.fg;
|
||||
else
|
||||
gc->fg = wp->cached_gc.fg;
|
||||
}
|
||||
|
||||
if (gc->bg == 8) {
|
||||
if (wp == wp->window->active && wp->cached_active_gc.bg != 8)
|
||||
gc->bg = wp->cached_active_gc.bg;
|
||||
else
|
||||
gc->bg = wp->cached_gc.bg;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
tty_default_attributes(struct tty *tty, const struct grid_cell *defaults,
|
||||
|
||||
Reference in New Issue
Block a user