Mercurial > vim
changeset 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 | b27ed4764264 |
children | c9777bf23eb8 |
files | src/search.c src/testdir/test_gn.vim src/version.c |
diffstat | 3 files changed, 10 insertions(+), 9 deletions(-) [+] |
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;
--- a/src/testdir/test_gn.vim +++ b/src/testdir/test_gn.vim @@ -135,8 +135,9 @@ func Test_gn_command() call assert_equal(['ABCDEFGHi'], getline(1,'$')) call setline('.', ['abcdefghi']) let @/ = 'b' + " this gn wraps around the end of the file exe "norm! 0fhvhhgngU" - call assert_equal(['abcdefghi'], getline(1,'$')) + call assert_equal(['aBCDEFGHi'], getline(1,'$')) sil! %d _ call setline('.', ['abcdefghi']) let @/ = 'f'