This behaves similarily to POSIX vi and gives a nice way to reverse
search direction for search-again.

Also allow these commands to be called without argument now.

Signed-off-by: Leah Neukirchen <[email protected]>
---
 window-copy.c | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/window-copy.c b/window-copy.c
index 5b197e65..ecd7f89e 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -1635,12 +1635,16 @@ window_copy_cmd_search_backward(struct 
window_copy_cmd_state *cs)
        struct window_mode_entry        *wme = cs->wme;
        struct window_copy_mode_data    *data = wme->data;
        u_int                            np = wme->prefix;
-       const char                      *argument = cs->args->argv[1];
 
-       if (*argument != '\0') {
+       if (cs->args->argc == 2) {
+               const char *argument = cs->args->argv[1];
+               if (*argument != '\0') {
+                       free(data->searchstr);
+                       data->searchstr = xstrdup(argument);
+               }
+       }
+       if (data->searchstr) {
                data->searchtype = WINDOW_COPY_SEARCHUP;
-               free(data->searchstr);
-               data->searchstr = xstrdup(argument);
                for (; np != 0; np--)
                        window_copy_search_up(wme);
        }
@@ -1653,12 +1657,16 @@ window_copy_cmd_search_forward(struct 
window_copy_cmd_state *cs)
        struct window_mode_entry        *wme = cs->wme;
        struct window_copy_mode_data    *data = wme->data;
        u_int                            np = wme->prefix;
-       const char                      *argument = cs->args->argv[1];
 
-       if (*argument != '\0') {
+       if (cs->args->argc == 2) {
+               const char *argument = cs->args->argv[1];
+               if (*argument != '\0') {
+                       free(data->searchstr);
+                       data->searchstr = xstrdup(argument);
+               }
+       }
+       if (data->searchstr) {
                data->searchtype = WINDOW_COPY_SEARCHDOWN;
-               free(data->searchstr);
-               data->searchstr = xstrdup(argument);
                for (; np != 0; np--)
                        window_copy_search_down(wme);
        }
@@ -1872,11 +1880,11 @@ static const struct {
          window_copy_cmd_scroll_up },
        { "search-again", 0, 0,
          window_copy_cmd_search_again },
-       { "search-backward", 1, 1,
+       { "search-backward", 0, 1,
          window_copy_cmd_search_backward },
        { "search-backward-incremental", 1, 1,
          window_copy_cmd_search_backward_incremental },
-       { "search-forward", 1, 1,
+       { "search-forward", 0, 1,
          window_copy_cmd_search_forward },
        { "search-forward-incremental", 1, 1,
          window_copy_cmd_search_forward_incremental },
-- 
2.22.0

-- 
You received this message because you are subscribed to the Google Groups 
"tmux-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/tmux-users/20190808123046.27250-1-leah%40vuxu.org.

Reply via email to