From 67cc7f6dc6fb30efc2a7846d8fefedc43f300084 Mon Sep 17 00:00:00 2001 From: nicm Date: Tue, 26 Nov 2024 15:51:48 +0000 Subject: [PATCH 1/2] Enter is now sent from single prompt as \r not empty string. --- cmd-confirm-before.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c index fb42d431..af630b1e 100644 --- a/cmd-confirm-before.c +++ b/cmd-confirm-before.c @@ -130,7 +130,7 @@ cmd_confirm_before_callback(struct client *c, void *data, const char *s, if (s == NULL) goto out; - if (s[0] != cdata->confirm_key && (s[0] != '\0' || !cdata->default_yes)) + if (s[0] != cdata->confirm_key && (s[0] != '\r' || !cdata->default_yes)) goto out; retcode = 0; From 6f7db82b18262735ac9e61562c5216d8b8063823 Mon Sep 17 00:00:00 2001 From: nicm Date: Tue, 26 Nov 2024 15:52:41 +0000 Subject: [PATCH 2/2] Add copy-mode-position-style and copy-mode-selection-style for copy mode (they default to mode-style as before). --- options-table.c | 18 ++++++++++++++++++ tmux.1 | 16 ++++++++++++++++ window-copy.c | 19 ++++++++++++------- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/options-table.c b/options-table.c index 0a75700d..b09dcc3d 100644 --- a/options-table.c +++ b/options-table.c @@ -1026,6 +1026,24 @@ const struct options_table_entry options_table[] = { .text = "Format of the position indicator in copy mode." }, + { .name = "copy-mode-position-style", + .type = OPTIONS_TABLE_STRING, + .scope = OPTIONS_TABLE_WINDOW, + .default_str = "#{mode-style}", + .flags = OPTIONS_TABLE_IS_STYLE, + .separator = ",", + .text = "Style of position indicator in copy mode." + }, + + { .name = "copy-mode-selection-style", + .type = OPTIONS_TABLE_STRING, + .scope = OPTIONS_TABLE_WINDOW, + .default_str = "#{mode-style}", + .flags = OPTIONS_TABLE_IS_STYLE, + .separator = ",", + .text = "Style of selection in copy mode." + }, + { .name = "fill-character", .type = OPTIONS_TABLE_STRING, .scope = OPTIONS_TABLE_WINDOW, diff --git a/tmux.1 b/tmux.1 index 5f584acf..43a7b681 100644 --- a/tmux.1 +++ b/tmux.1 @@ -4888,6 +4888,22 @@ or contains .Ql vi . .Pp +.It Ic copy-mode-position-style Ar style +Set the style of the position indicator in copy mode. +For how to specify +.Ar style , +see the +.Sx STYLES +section. +.Pp +.It Ic copy-mode-selection-style Ar style +Set the style of the selection in copy mode. +For how to specify +.Ar style , +see the +.Sx STYLES +section. +.Pp .It Ic mode-style Ar style Set window modes style. For how to specify diff --git a/window-copy.c b/window-copy.c index 36b9f89c..1cda6d39 100644 --- a/window-copy.c +++ b/window-copy.c @@ -4391,13 +4391,15 @@ window_copy_write_line(struct window_mode_entry *wme, char *expanded; struct format_tree *ft; - style_apply(&gc, oo, "mode-style", NULL); + ft = format_create_defaults(NULL, NULL, NULL, NULL, wp); + + style_apply(&gc, oo, "copy-mode-position-style", ft); gc.flags |= GRID_FLAG_NOPALETTE; - style_apply(&mgc, oo, "copy-mode-match-style", NULL); + style_apply(&mgc, oo, "copy-mode-match-style", ft); mgc.flags |= GRID_FLAG_NOPALETTE; - style_apply(&cgc, oo, "copy-mode-current-match-style", NULL); + style_apply(&cgc, oo, "copy-mode-current-match-style", ft); cgc.flags |= GRID_FLAG_NOPALETTE; - style_apply(&mkgc, oo, "copy-mode-mark-style", NULL); + style_apply(&mkgc, oo, "copy-mode-mark-style", ft); mkgc.flags |= GRID_FLAG_NOPALETTE; window_copy_write_one(wme, ctx, py, hsize - data->oy + py, @@ -4406,14 +4408,12 @@ window_copy_write_line(struct window_mode_entry *wme, if (py == 0 && s->rupper < s->rlower && !data->hide_position) { value = options_get_string(oo, "copy-mode-position-format"); if (*value != '\0') { - ft = format_create_defaults(NULL, NULL, NULL, NULL, wp); expanded = format_expand(ft, value); if (*expanded != '\0') { screen_write_cursormove(ctx, 0, 0, 0); format_draw(ctx, &gc, sx, expanded, NULL, 0); } free(expanded); - format_free(ft); } } @@ -4421,6 +4421,8 @@ window_copy_write_line(struct window_mode_entry *wme, screen_write_cursormove(ctx, screen_size_x(s) - 1, py, 0); screen_write_putc(ctx, &grid_default_cell, '$'); } + + format_free(ft); } static void @@ -4668,6 +4670,7 @@ window_copy_set_selection(struct window_mode_entry *wme, int may_redraw, struct grid_cell gc; u_int sx, sy, cy, endsx, endsy; int startrelpos, endrelpos; + struct format_tree *ft; window_copy_synchronize_cursor(wme, no_reset); @@ -4689,8 +4692,10 @@ window_copy_set_selection(struct window_mode_entry *wme, int may_redraw, } /* Set colours and selection. */ - style_apply(&gc, oo, "mode-style", NULL); + ft = format_create_defaults(NULL, NULL, NULL, NULL, wp); + style_apply(&gc, oo, "copy-mode-selection-style", ft); gc.flags |= GRID_FLAG_NOPALETTE; + format_free(ft); screen_set_selection(s, sx, sy, endsx, endsy, data->rectflag, data->modekeys, &gc);