mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
Options to set the colours and attributes for status-left/-right. From Thomas
Adam, thanks.
This commit is contained in:
34
status.c
34
status.c
@ -47,8 +47,10 @@ status_redraw(struct client *c)
|
||||
char *left, *right, *text, *ptr;
|
||||
size_t llen, llen2, rlen, rlen2, offset;
|
||||
size_t ox, xx, yy, size, start, width;
|
||||
struct grid_cell stdgc, gc;
|
||||
struct grid_cell stdgc, sl_stdgc, sr_stdgc, gc;
|
||||
int larrow, rarrow, utf8flag;
|
||||
int sl_fg, sl_bg, sr_fg, sr_bg;
|
||||
int sl_attr, sr_attr;
|
||||
|
||||
left = right = NULL;
|
||||
|
||||
@ -68,6 +70,32 @@ status_redraw(struct client *c)
|
||||
stdgc.bg = options_get_number(&s->options, "status-bg");
|
||||
stdgc.attr |= options_get_number(&s->options, "status-attr");
|
||||
|
||||
/*
|
||||
* Set the status-left and status-right parts to the default status
|
||||
* line options and only change them where they differ from the
|
||||
* defaults.
|
||||
*/
|
||||
memcpy(&sl_stdgc, &stdgc, sizeof sl_stdgc);
|
||||
memcpy(&sr_stdgc, &stdgc, sizeof sr_stdgc);
|
||||
sl_fg = options_get_number(&s->options, "status-left-fg");
|
||||
if (sl_fg != 8)
|
||||
sl_stdgc.fg = sl_fg;
|
||||
sl_bg = options_get_number(&s->options, "status-left-bg");
|
||||
if (sl_bg != 8)
|
||||
sl_stdgc.bg = sl_bg;
|
||||
sl_attr = options_get_number(&s->options, "status-left-attr");
|
||||
if (sl_attr != 0)
|
||||
sl_stdgc.attr = sl_attr;
|
||||
sr_fg = options_get_number(&s->options, "status-right-fg");
|
||||
if (sr_fg != 8)
|
||||
sr_stdgc.fg = sr_fg;
|
||||
sr_bg = options_get_number(&s->options, "status-right-bg");
|
||||
if (sr_bg != 8)
|
||||
sr_stdgc.bg = sr_bg;
|
||||
sr_attr = options_get_number(&s->options, "status-right-attr");
|
||||
if (sr_attr != 0)
|
||||
sr_stdgc.attr = sr_attr;
|
||||
|
||||
yy = c->tty.sy - 1;
|
||||
if (yy == 0)
|
||||
goto blank;
|
||||
@ -164,7 +192,7 @@ draw:
|
||||
screen_write_start(&ctx, NULL, &c->status);
|
||||
if (llen != 0) {
|
||||
screen_write_cursormove(&ctx, 0, yy);
|
||||
screen_write_nputs(&ctx, llen, &stdgc, utf8flag, "%s", left);
|
||||
screen_write_nputs(&ctx, llen, &sl_stdgc, utf8flag, "%s", left);
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
if (larrow)
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
@ -238,7 +266,7 @@ draw:
|
||||
if (rlen != 0) {
|
||||
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
screen_write_nputs(&ctx, rlen, &stdgc, utf8flag, "%s", right);
|
||||
screen_write_nputs(&ctx, rlen, &sr_stdgc, utf8flag, "%s", right);
|
||||
}
|
||||
|
||||
/* Draw the arrows. */
|
||||
|
Reference in New Issue
Block a user