diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-02-11 19:01:43 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-02-11 19:04:28 +0800 |
commit | f1fcdcc2c43839b037517d1dd7b1a4570eb970a8 (patch) | |
tree | 80f6093861b080847287a6a8c94c5007926f412c /src | |
parent | 9437800d280385c018a99aa0fbe9043e4d7715aa (diff) | |
download | rneovim-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.c | 11 | ||||
-rw-r--r-- | src/nvim/testdir/test_autocmd.vim | 22 |
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 |