mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
New session option, status-utf8, to control the interpretation of top-bit-set
characters in status-left and status-right (if on, they are treated as UTF-8; otherwise passed through).
This commit is contained in:
15
status.c
15
status.c
@ -50,7 +50,7 @@ status_redraw(struct client *c)
|
||||
size_t llen, llen2, rlen, rlen2, offset;
|
||||
size_t xx, yy, sy, size, start, width;
|
||||
struct grid_cell stdgc, gc;
|
||||
int larrow, rarrow;
|
||||
int larrow, rarrow, utf8flag;
|
||||
|
||||
left = right = NULL;
|
||||
|
||||
@ -74,18 +74,21 @@ status_redraw(struct client *c)
|
||||
if (yy == 0)
|
||||
goto blank;
|
||||
|
||||
/* Caring about UTF-8 in status line? */
|
||||
utf8flag = options_get_number(&s->options, "status-utf8");
|
||||
|
||||
/* Work out the left and right strings. */
|
||||
left = status_replace(s, options_get_string(
|
||||
&s->options, "status-left"), c->status_timer.tv_sec);
|
||||
llen = options_get_number(&s->options, "status-left-length");
|
||||
llen2 = screen_write_strlen("%s", left);
|
||||
llen2 = screen_write_strlen(utf8flag, "%s", left);
|
||||
if (llen2 < llen)
|
||||
llen = llen2;
|
||||
|
||||
right = status_replace(s, options_get_string(
|
||||
&s->options, "status-right"), c->status_timer.tv_sec);
|
||||
rlen = options_get_number(&s->options, "status-right-length");
|
||||
rlen2 = screen_write_strlen("%s", right);
|
||||
rlen2 = screen_write_strlen(utf8flag, "%s", right);
|
||||
if (rlen2 < rlen)
|
||||
rlen = rlen2;
|
||||
right[rlen] = '\0';
|
||||
@ -164,7 +167,8 @@ draw:
|
||||
screen_write_start(&ctx, NULL, &c->status);
|
||||
if (llen != 0) {
|
||||
screen_write_cursormove(&ctx, 0, yy);
|
||||
screen_write_nputs(&ctx, llen + 1, &stdgc, "%s ", left);
|
||||
screen_write_nputs(
|
||||
&ctx, llen + 1, &stdgc, utf8flag, "%s ", left);
|
||||
if (larrow)
|
||||
screen_write_putc(&ctx, &stdgc, ' ');
|
||||
} else {
|
||||
@ -221,7 +225,8 @@ draw:
|
||||
/* Draw the last item. */
|
||||
if (rlen != 0) {
|
||||
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
|
||||
screen_write_nputs(&ctx, rlen + 1, &stdgc, " %s", right);
|
||||
screen_write_nputs(
|
||||
&ctx, rlen + 1, &stdgc, utf8flag, " %s", right);
|
||||
}
|
||||
|
||||
/* Draw the arrows. */
|
||||
|
Reference in New Issue
Block a user