Mercurial > vim
diff src/search.c @ 18500:c0445cb7cfe0 v8.1.2244
patch 8.1.2244: 'wrapscan' is not used for "gn"
Commit: https://github.com/vim/vim/commit/82cf7f6df751505da285815a791463a049587849
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 2 23:22:47 2019 +0100
patch 8.1.2244: 'wrapscan' is not used for "gn"
Problem: 'wrapscan' is not used for "gn".
Solution: Only reset 'wrapscan' for the first search round. (closes https://github.com/vim/vim/issues/5164)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 02 Nov 2019 23:30:04 +0100 |
parents | 35e0ab1f2975 |
children | bbea1f108187 |
line wrap: on
line diff
--- a/src/search.c +++ b/src/search.c @@ -4765,9 +4765,6 @@ current_search( pos_T save_VIsual = VIsual; int zero_width; - /* wrapping should not occur */ - p_ws = FALSE; - /* Correct cursor when 'selection' is exclusive */ if (VIsual_active && *p_sel == 'e' && LT_POS(VIsual, curwin->w_cursor)) dec_cursor(); @@ -4786,10 +4783,7 @@ current_search( zero_width = is_zero_width(spats[last_idx].pat, TRUE, &curwin->w_cursor, FORWARD); if (zero_width == -1) - { - p_ws = old_p_ws; return FAIL; /* pattern not found */ - } /* * The trick is to first search backwards and then search forward again, @@ -4808,11 +4802,17 @@ current_search( flags = SEARCH_END; end_pos = pos; + // wrapping should not occur in the first round + if (i == 0) + p_ws = FALSE; + result = searchit(curwin, curbuf, &pos, &end_pos, (dir ? FORWARD : BACKWARD), spats[last_idx].pat, (long) (i ? count : 1), SEARCH_KEEP | flags, RE_SEARCH, NULL); + p_ws = old_p_ws; + /* First search may fail, but then start searching from the * beginning of the file (cursor might be on the search match) * except when Visual mode is active, so that extending the visual @@ -4822,7 +4822,6 @@ current_search( curwin->w_cursor = orig_pos; if (VIsual_active) VIsual = save_VIsual; - p_ws = old_p_ws; return FAIL; } else if (i == 0 && !result) @@ -4844,7 +4843,6 @@ current_search( } start_pos = pos; - p_ws = old_p_ws; if (!VIsual_active) VIsual = start_pos;