vim-patch:8.0.0692: CTRL-G with 'incsearch' and ? goes in the wrong direction

Problem:    Using CTRL-G with 'incsearch' and ? goes in the wrong direction.
            (Ramel Eshed)
Solution:   Adjust search_start. (Christian Brabandt)

da5116da45
This commit is contained in:
Justin M. Keyes
2018-02-01 23:50:12 +01:00
parent ca24ad0b95
commit 7d12597d29
3 changed files with 153 additions and 0 deletions

View File

@@ -1063,6 +1063,13 @@ static void command_line_next_incsearch(CommandLineState *s, bool next_match)
s->search_start = t;
(void)decl(&s->search_start);
}
else if (next_match && s->firstc == '?') {
// move just after the current match, so that
// when nv_search finishes the cursor will be
// put back on the match
s->search_start = t;
(void)incl(&s->search_start);
}
if (lt(t, s->search_start) && next_match) {
// wrap around
s->search_start = t;

View File

@@ -327,3 +327,39 @@ func Test_search_cmdline3()
call test_override("char_avail", 0)
bw!
endfunc
func Test_search_cmdline4()
" See test/functional/legacy/search_spec.lua
throw 'skipped: Nvim does not support test_override()'
if !exists('+incsearch')
return
endif
" need to disable char_avail,
" so that expansion of commandline works
call test_override("char_avail", 1)
new
call setline(1, [' 1 the first', ' 2 the second', ' 3 the third'])
set incsearch
$
call feedkeys("?the\<c-g>\<cr>", 'tx')
call assert_equal(' 3 the third', getline('.'))
$
call feedkeys("?the\<c-g>\<c-g>\<cr>", 'tx')
call assert_equal(' 1 the first', getline('.'))
$
call feedkeys("?the\<c-g>\<c-g>\<c-g>\<cr>", 'tx')
call assert_equal(' 2 the second', getline('.'))
$
call feedkeys("?the\<c-t>\<cr>", 'tx')
call assert_equal(' 1 the first', getline('.'))
$
call feedkeys("?the\<c-t>\<c-t>\<cr>", 'tx')
call assert_equal(' 3 the third', getline('.'))
$
call feedkeys("?the\<c-t>\<c-t>\<c-t>\<cr>", 'tx')
call assert_equal(' 2 the second', getline('.'))
" clean up
set noincsearch
call test_override("char_avail", 0)
bw!
endfunc