From 09e90c1645a8ecd1e467b13a743bb46d48febd37 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 5 Jun 2019 19:00:36 +0000 Subject: Need to increment the argument to skip the prefix earlier, fixes repeated incremental search in copy mode, reported by Kaushal Modi in GitHub issue 1780. --- window-copy.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'window-copy.c') diff --git a/window-copy.c b/window-copy.c index 36ad6a83..d81073bf 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1668,9 +1668,11 @@ window_copy_cmd_search_backward_incremental(struct window_copy_cmd_state *cs) struct window_mode_entry *wme = cs->wme; struct window_copy_mode_data *data = wme->data; const char *argument = cs->args->argv[1]; - enum window_copy_cmd_action action = WINDOW_COPY_CMD_NOTHING; const char *ss = data->searchstr; + char prefix; + enum window_copy_cmd_action action = WINDOW_COPY_CMD_NOTHING; + prefix = *argument++; if (data->searchx == -1 || data->searchy == -1) { data->searchx = data->cx; data->searchy = data->cy; @@ -1681,13 +1683,11 @@ window_copy_cmd_search_backward_incremental(struct window_copy_cmd_state *cs) data->oy = data->searcho; action = WINDOW_COPY_CMD_REDRAW; } - if (*argument == '\0') { window_copy_clear_marks(wme); return (WINDOW_COPY_CMD_REDRAW); } - - switch (*argument++) { + switch (prefix) { case '=': case '-': data->searchtype = WINDOW_COPY_SEARCHUP; @@ -1717,9 +1717,11 @@ window_copy_cmd_search_forward_incremental(struct window_copy_cmd_state *cs) struct window_mode_entry *wme = cs->wme; struct window_copy_mode_data *data = wme->data; const char *argument = cs->args->argv[1]; - enum window_copy_cmd_action action = WINDOW_COPY_CMD_NOTHING; const char *ss = data->searchstr; + char prefix; + enum window_copy_cmd_action action = WINDOW_COPY_CMD_NOTHING; + prefix = *argument++; if (data->searchx == -1 || data->searchy == -1) { data->searchx = data->cx; data->searchy = data->cy; @@ -1730,13 +1732,11 @@ window_copy_cmd_search_forward_incremental(struct window_copy_cmd_state *cs) data->oy = data->searcho; action = WINDOW_COPY_CMD_REDRAW; } - if (*argument == '\0') { window_copy_clear_marks(wme); return (WINDOW_COPY_CMD_REDRAW); } - - switch (*argument++) { + switch (prefix) { case '=': case '+': data->searchtype = WINDOW_COPY_SEARCHDOWN; -- cgit From 26b9a8e49b7eee7b7c05f85c731f5829e64c507c Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 13 Jun 2019 20:38:05 +0000 Subject: Set the cursor x at the same time as changing the y or the end of line marker may not be redrawn. --- window-copy.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'window-copy.c') diff --git a/window-copy.c b/window-copy.c index d81073bf..a7cb5dfa 100644 --- a/window-copy.c +++ b/window-copy.c @@ -3027,8 +3027,8 @@ window_copy_cursor_up(struct window_mode_entry *wme, int scroll_only) if (data->lineflag == LINE_SEL_LEFT_RIGHT && oy == data->sely) window_copy_other_end(wme); - data->cx = data->lastcx; if (scroll_only || data->cy == 0) { + data->cx = data->lastcx; window_copy_scroll_down(wme, 1); if (scroll_only) { if (data->cy == screen_size_y(s) - 1) @@ -3037,7 +3037,7 @@ window_copy_cursor_up(struct window_mode_entry *wme, int scroll_only) window_copy_redraw_lines(wme, data->cy, 2); } } else { - window_copy_update_cursor(wme, data->cx, data->cy - 1); + window_copy_update_cursor(wme, data->lastcx, data->cy - 1); if (window_copy_update_selection(wme, 1)) { if (data->cy == screen_size_y(s) - 1) window_copy_redraw_lines(wme, data->cy, 1); @@ -3077,13 +3077,13 @@ window_copy_cursor_down(struct window_mode_entry *wme, int scroll_only) if (data->lineflag == LINE_SEL_RIGHT_LEFT && oy == data->endsely) window_copy_other_end(wme); - data->cx = data->lastcx; if (scroll_only || data->cy == screen_size_y(s) - 1) { + data->cx = data->lastcx; window_copy_scroll_up(wme, 1); if (scroll_only && data->cy > 0) window_copy_redraw_lines(wme, data->cy - 1, 2); } else { - window_copy_update_cursor(wme, data->cx, data->cy + 1); + window_copy_update_cursor(wme, data->lastcx, data->cy + 1); if (window_copy_update_selection(wme, 1)) window_copy_redraw_lines(wme, data->cy - 1, 2); } -- cgit From 55c694a4679ee225b1962db63671422f3e641fc6 Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 5 Jul 2019 07:52:27 +0000 Subject: Do not use uninitialized buffer name. --- window-copy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'window-copy.c') diff --git a/window-copy.c b/window-copy.c index a7cb5dfa..28d728bb 100644 --- a/window-copy.c +++ b/window-copy.c @@ -2700,7 +2700,7 @@ window_copy_append_selection(struct window_mode_entry *wme) struct window_pane *wp = wme->wp; char *buf; struct paste_buffer *pb; - const char *bufdata, *bufname; + const char *bufdata, *bufname = NULL; size_t len, bufsize; struct screen_write_ctx ctx; -- cgit From a4be028b76b8cc9c2066e30db8dc3866b52418ef Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 8 Jul 2019 20:29:11 +0000 Subject: Clear search marks before resize, GitHub issue 1823. --- window-copy.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'window-copy.c') diff --git a/window-copy.c b/window-copy.c index 28d728bb..d868631c 100644 --- a/window-copy.c +++ b/window-copy.c @@ -577,6 +577,7 @@ window_copy_resize(struct window_mode_entry *wme, u_int sx, u_int sy) struct window_copy_mode_data *data = wme->data; struct screen *s = &data->screen; struct screen_write_ctx ctx; + int search; screen_resize(s, sx, sy, 1); if (data->backing != &wp->base) @@ -589,13 +590,15 @@ window_copy_resize(struct window_mode_entry *wme, u_int sx, u_int sy) if (data->oy > screen_hsize(data->backing)) data->oy = screen_hsize(data->backing); + search = (data->searchmark != NULL); window_copy_clear_selection(wme); + window_copy_clear_marks(wme); screen_write_start(&ctx, NULL, s); window_copy_write_lines(wme, &ctx, 0, screen_size_y(s) - 1); screen_write_stop(&ctx); - if (data->searchmark != NULL) + if (search) window_copy_search_marks(wme, NULL); data->searchx = data->cx; data->searchy = data->cy; -- cgit