diff --git a/alerts.c b/alerts.c index 6fe88a09..9675934a 100644 --- a/alerts.c +++ b/alerts.c @@ -316,8 +316,10 @@ alerts_set_message(struct winlink *wl, const char *type, const char *option) if (visual == VISUAL_OFF) continue; if (c->session->curw == wl) - status_message_set(c, "%s in current window", type); - else - status_message_set(c, "%s in window %d", type, wl->idx); + status_message_set(c, 1, "%s in current window", type); + else { + status_message_set(c, 1, "%s in window %d", type, + wl->idx); + } } } diff --git a/cmd-display-message.c b/cmd-display-message.c index 4e69f03a..634f0a93 100644 --- a/cmd-display-message.c +++ b/cmd-display-message.c @@ -117,7 +117,7 @@ cmd_display_message_exec(struct cmd *self, struct cmdq_item *item) if (args_has(args, 'p')) cmdq_print(item, "%s", msg); else if (tc != NULL) - status_message_set(tc, "%s", msg); + status_message_set(tc, 0, "%s", msg); free(msg); format_free(ft); diff --git a/cmd-list-keys.c b/cmd-list-keys.c index 1141bbb5..4e7ba39c 100644 --- a/cmd-list-keys.c +++ b/cmd-list-keys.c @@ -112,7 +112,7 @@ cmd_list_keys_print_notes(struct cmdq_item *item, struct args *args, note = xstrdup(bd->note); tmp = utf8_padcstr(key, keywidth + 1); if (args_has(args, '1') && tc != NULL) - status_message_set(tc, "%s%s%s", prefix, tmp, note); + status_message_set(tc, 1, "%s%s%s", prefix, tmp, note); else cmdq_print(item, "%s%s%s", prefix, tmp, note); free(tmp); diff --git a/cmd-queue.c b/cmd-queue.c index 26e2f2f9..a40053a6 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -856,7 +856,7 @@ cmdq_error(struct cmdq_item *item, const char *fmt, ...) c->retval = 1; } else { *msg = toupper((u_char) *msg); - status_message_set(c, "%s", msg); + status_message_set(c, 1, "%s", msg); } free(msg); diff --git a/mode-tree.c b/mode-tree.c index 8a28be16..9ed2e102 100644 --- a/mode-tree.c +++ b/mode-tree.c @@ -1139,7 +1139,7 @@ mode_tree_run_command(struct client *c, struct cmd_find_state *fs, if (status == CMD_PARSE_ERROR) { if (c != NULL) { *error = toupper((u_char)*error); - status_message_set(c, "%s", error); + status_message_set(c, 1, "%s", error); } free(error); } diff --git a/status.c b/status.c index 375cad4d..b5fa0824 100644 --- a/status.c +++ b/status.c @@ -423,7 +423,7 @@ status_redraw(struct client *c) /* Set a status line message. */ void -status_message_set(struct client *c, const char *fmt, ...) +status_message_set(struct client *c, int ignore_styles, const char *fmt, ...) { struct timeval tv; va_list ap; @@ -433,6 +433,7 @@ status_message_set(struct client *c, const char *fmt, ...) status_push_screen(c); va_start(ap, fmt); + c->message_ignore_styles = ignore_styles; xvasprintf(&c->message_string, fmt, ap); va_end(ap); @@ -515,7 +516,10 @@ status_message_redraw(struct client *c) for (offset = 0; offset < c->tty.sx; offset++) screen_write_putc(&ctx, &gc, ' '); screen_write_cursormove(&ctx, 0, lines - 1, 0); - screen_write_nputs(&ctx, len, &gc, "%s", c->message_string); + if (c->message_ignore_styles) + screen_write_nputs(&ctx, len, &gc, "%s", c->message_string); + else + format_draw(&ctx, &gc, c->tty.sx, c->message_string, NULL); screen_write_stop(&ctx); if (grid_compare(sl->active->grid, old_screen.grid) == 0) { diff --git a/tmux.h b/tmux.h index 6a05e93d..eab3e34a 100644 --- a/tmux.h +++ b/tmux.h @@ -1607,6 +1607,7 @@ struct client { uint64_t redraw_panes; + int message_ignore_styles; char *message_string; struct event message_timer; @@ -2354,7 +2355,8 @@ struct style_range *status_get_range(struct client *, u_int, u_int); void status_init(struct client *); void status_free(struct client *); int status_redraw(struct client *); -void printflike(2, 3) status_message_set(struct client *, const char *, ...); +void printflike(3, 4) status_message_set(struct client *, int, const char *, + ...); void status_message_clear(struct client *); int status_message_redraw(struct client *); void status_prompt_set(struct client *, const char *, const char *, diff --git a/window-customize.c b/window-customize.c index e180b001..4efb3b1e 100644 --- a/window-customize.c +++ b/window-customize.c @@ -772,7 +772,7 @@ window_customize_set_callback(struct client *c, void *itemdata, const char *s, fail: *cause = toupper((u_char)*cause); - status_message_set(c, "%s", cause); + status_message_set(c, 1, "%s", cause); free(cause); return (0); }