mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-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 vim/vim#5164)
82cf7f6df7
This commit is contained in:
parent
5689008060
commit
b8a56e0986
@ -4037,9 +4037,6 @@ current_search(
|
||||
bool old_p_ws = p_ws;
|
||||
pos_T save_VIsual = VIsual;
|
||||
|
||||
/* wrapping should not occur */
|
||||
p_ws = false;
|
||||
|
||||
/* Correct cursor when 'selection' is exclusive */
|
||||
if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
|
||||
dec_cursor();
|
||||
@ -4063,8 +4060,7 @@ current_search(
|
||||
int 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 */
|
||||
return FAIL; // pattern not found
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4081,11 +4077,18 @@ current_search(
|
||||
}
|
||||
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, 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
|
||||
@ -4094,7 +4097,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) {
|
||||
if (forward) { // try again from start of buffer
|
||||
@ -4110,8 +4112,6 @@ current_search(
|
||||
|
||||
pos_T start_pos = pos;
|
||||
|
||||
p_ws = old_p_ws;
|
||||
|
||||
if (!VIsual_active) {
|
||||
VIsual = start_pos;
|
||||
}
|
||||
|
@ -136,8 +136,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'
|
||||
|
Loading…
Reference in New Issue
Block a user