1
0
forked from aniani/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)
This commit is contained in:
Bram Moolenaar
2017-07-01 23:11:17 +02:00
parent a83fe75ca7
commit da5116da45
3 changed files with 44 additions and 0 deletions

View File

@@ -1708,6 +1708,14 @@ getcmdline(
search_start = t;
(void)decl(&search_start);
}
else if (c == Ctrl_G && firstc == '?')
{
/* move just after the current match, so that
* when nv_search finishes the cursor will be
* put back on the match */
search_start = t;
(void)incl(&search_start);
}
if (LT_POS(t, search_start) && c == Ctrl_G)
{
/* wrap around */

View File

@@ -322,3 +322,37 @@ func Test_search_cmdline3()
call test_override("char_avail", 0)
bw!
endfunc
func Test_search_cmdline4()
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

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
692,
/**/
691,
/**/