From f48b041cf22a55bbd9f6e1ab498cf610fdfc1a5f Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 13 Feb 2020 09:02:07 +0000 Subject: [PATCH] Do not jump to next word end if already on a word end when selecting a word. Fixes select-word with single character words and vi(1) keys. From Mark Kelly. --- window-copy.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/window-copy.c b/window-copy.c index 6e80daad..a717884c 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1521,14 +1521,26 @@ window_copy_cmd_select_word(struct window_copy_cmd_state *cs) struct session *s = cs->s; struct window_copy_mode_data *data = wme->data; const char *ws; + u_int px, py, xx; data->lineflag = LINE_SEL_LEFT_RIGHT; data->rectflag = 0; + px = data->cx; + py = screen_hsize(data->backing) + data->cy - data->oy; + xx = window_copy_find_length(wme, py); + ws = options_get_string(s->options, "word-separators"); window_copy_cursor_previous_word(wme, ws, 0); window_copy_start_selection(wme); - window_copy_cursor_next_word_end(wme, ws); + + if (px >= xx || !window_copy_in_set(wme, px + 1, py, ws)) + window_copy_cursor_next_word_end(wme, ws); + else { + window_copy_update_cursor(wme, px, data->cy); + if (window_copy_update_selection(wme, 1)) + window_copy_redraw_lines(wme, data->cy, 1); + } return (WINDOW_COPY_CMD_REDRAW); }