aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-11 19:01:43 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-02-11 19:04:28 +0800
commitf1fcdcc2c43839b037517d1dd7b1a4570eb970a8 (patch)
tree80f6093861b080847287a6a8c94c5007926f412c /src
parent9437800d280385c018a99aa0fbe9043e4d7715aa (diff)
downloadrneovim-f1fcdcc2c43839b037517d1dd7b1a4570eb970a8.tar.gz
rneovim-f1fcdcc2c43839b037517d1dd7b1a4570eb970a8.tar.bz2
rneovim-f1fcdcc2c43839b037517d1dd7b1a4570eb970a8.zip
vim-patch:9.0.1299: change for triggering incsearch not sufficiently tested
Problem: Change for triggering incsearch not sufficiently tested. Solution: Add a test case. Simplify the code. (closes vim/vim#11971) https://github.com/vim/vim/commit/412e0e4ed903682f352d8ea58ded480930cc664f
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_getln.c11
-rw-r--r--src/nvim/testdir/test_autocmd.vim22
2 files changed, 23 insertions, 10 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index d55da46227..af26fe8a1c 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -1626,9 +1626,9 @@ static int command_line_insert_reg(CommandLineState *s)
ccline.special_char = NUL;
redrawcmd();
- // The text has been stuffed, the command line didn't change yet, but it
- // will change soon. The caller must take care of it.
- return literally ? CMDLINE_NOT_CHANGED : CMDLINE_CHANGED;
+ // With "literally": the command line has already changed.
+ // Else: the text has been stuffed, but the command line didn't change yet.
+ return literally ? CMDLINE_CHANGED : CMDLINE_NOT_CHANGED;
}
/// Handle the Left and Right mouse clicks in the command-line mode.
@@ -1862,9 +1862,8 @@ static int command_line_handle_key(CommandLineState *s)
switch (command_line_insert_reg(s)) {
case GOTO_NORMAL_MODE:
return 0; // back to cmd mode
- case CMDLINE_NOT_CHANGED:
- s->is_state.incsearch_postponed = true;
- FALLTHROUGH;
+ case CMDLINE_CHANGED:
+ return command_line_changed(s);
default:
return command_line_not_changed(s);
}
diff --git a/src/nvim/testdir/test_autocmd.vim b/src/nvim/testdir/test_autocmd.vim
index a1a3ba3198..30d30c8b29 100644
--- a/src/nvim/testdir/test_autocmd.vim
+++ b/src/nvim/testdir/test_autocmd.vim
@@ -1897,17 +1897,15 @@ func Test_Cmdline()
call assert_equal(':', g:entered)
au! CmdlineChanged
+ autocmd CmdlineChanged : let g:log += [getcmdline()]
+
let g:log = []
cnoremap <F1> <Cmd>call setcmdline('ls')<CR>
- autocmd CmdlineChanged : let g:log += [getcmdline()]
call feedkeys(":\<F1>", 'xt')
call assert_equal(['ls'], g:log)
- unlet g:log
- au! CmdlineChanged
cunmap <F1>
let g:log = []
- autocmd CmdlineChanged : let g:log += [getcmdline()]
call feedkeys(":sign \<Tab>\<Tab>\<C-N>\<C-P>\<S-Tab>\<S-Tab>\<Esc>", 'xt')
call assert_equal([
\ 's',
@@ -1938,6 +1936,22 @@ func Test_Cmdline()
\ 'sign unplace',
\ ], g:log)
set wildmenu& wildoptions&
+
+ let g:log = []
+ let @r = 'abc'
+ call feedkeys(":0\<C-R>r1\<C-R>\<C-O>r2\<C-R>\<C-R>r3\<Esc>", 'xt')
+ call assert_equal([
+ \ '0',
+ \ '0a',
+ \ '0ab',
+ \ '0abc',
+ \ '0abc1',
+ \ '0abc1abc',
+ \ '0abc1abc2',
+ \ '0abc1abc2abc',
+ \ '0abc1abc2abc3',
+ \ ], g:log)
+
unlet g:log
au! CmdlineChanged