diff --git a/cmd.c b/cmd.c index 7fed2a15..150121af 100644 --- a/cmd.c +++ b/cmd.c @@ -681,6 +681,9 @@ cmd_list_print(const struct cmd_list *cmdlist, int escaped) struct cmd *cmd, *next; char *buf, *this; size_t len; + const char *separator; + const char *single_separator = escaped ? " \\; " : " ; "; + const char *double_separator = escaped ? " \\;\\; " : " ;; "; len = 1; buf = xcalloc(1, len); @@ -695,17 +698,11 @@ cmd_list_print(const struct cmd_list *cmdlist, int escaped) next = TAILQ_NEXT(cmd, qentry); if (next != NULL) { - if (cmd->group != next->group) { - if (escaped) - strlcat(buf, " \\;\\; ", len); - else - strlcat(buf, " ;; ", len); - } else { - if (escaped) - strlcat(buf, " \\; ", len); - else - strlcat(buf, " ; ", len); - } + if (cmd->group != next->group) + separator = double_separator; + else + separator = single_separator; + strlcat(buf, separator, len); } free(this); diff --git a/input.c b/input.c index 98961f03..056ce662 100644 --- a/input.c +++ b/input.c @@ -3432,14 +3432,19 @@ input_cancel_requests(struct client *c) static void input_report_current_theme(struct input_ctx *ictx) { - switch (window_pane_get_theme(ictx->wp)) { + struct window_pane *wp = ictx->wp; + + switch (window_pane_get_theme(wp)) { case THEME_DARK: + log_debug("%s: %%%u dark theme", __func__, wp->id); input_reply(ictx, 0, "\033[?997;1n"); break; case THEME_LIGHT: + log_debug("%s: %%%u light theme", __func__, wp->id); input_reply(ictx, 0, "\033[?997;2n"); break; case THEME_UNKNOWN: + log_debug("%s: %%%u unknown theme", __func__, wp->id); break; } } diff --git a/key-string.c b/key-string.c index a171b0cb..8b9b5604 100644 --- a/key-string.c +++ b/key-string.c @@ -382,6 +382,14 @@ key_string_lookup_key(key_code key, int with_flags) s = "PasteEnd"; goto append; } + if (key == KEYC_REPORT_DARK_THEME) { + s = "ReportDarkTheme"; + goto append; + } + if (key == KEYC_REPORT_LIGHT_THEME) { + s = "ReportLightTheme"; + goto append; + } if (key == KEYC_MOUSE) { s = "Mouse"; goto append; diff --git a/screen.c b/screen.c index d82784c5..7f4f9383 100644 --- a/screen.c +++ b/screen.c @@ -765,6 +765,8 @@ screen_mode_to_string(int mode) strlcat(tmp, "KEYS_EXTENDED,", sizeof tmp); if (mode & MODE_KEYS_EXTENDED_2) strlcat(tmp, "KEYS_EXTENDED_2,", sizeof tmp); + if (mode & MODE_THEME_UPDATES) + strlcat(tmp, "THEME_UPDATES,", sizeof tmp); tmp[strlen(tmp) - 1] = '\0'; return (tmp); } diff --git a/window.c b/window.c index b62d1921..2d3ef383 100644 --- a/window.c +++ b/window.c @@ -1943,17 +1943,18 @@ window_pane_send_theme_update(struct window_pane *wp) return; if (~wp->screen->mode & MODE_THEME_UPDATES) return; - switch (window_pane_get_theme(wp)) { case THEME_LIGHT: + log_debug("%s: %%%u light theme", __func__, wp->id); input_key_pane(wp, KEYC_REPORT_LIGHT_THEME, NULL); break; case THEME_DARK: + log_debug("%s: %%%u dark theme", __func__, wp->id); input_key_pane(wp, KEYC_REPORT_DARK_THEME, NULL); break; case THEME_UNKNOWN: + log_debug("%s: %%%u unknown theme", __func__, wp->id); break; } - wp->flags &= ~PANE_THEMECHANGED; }