diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-02-07 07:54:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-07 07:54:33 +0800 |
commit | 1391385ba9f83d32f3b6fc54587f03a1d34960d9 (patch) | |
tree | 0a6924688058c9338ee13eedc9a9c055fdb97a0a | |
parent | 3170e05d5743c5b46b14058f3c0702b4d7a43320 (diff) | |
download | rneovim-1391385ba9f83d32f3b6fc54587f03a1d34960d9.tar.gz rneovim-1391385ba9f83d32f3b6fc54587f03a1d34960d9.tar.bz2 rneovim-1391385ba9f83d32f3b6fc54587f03a1d34960d9.zip |
vim-patch:9.0.1290: CTRL-N and -P on cmdline don't trigger CmdlineChanged (#22151)
Problem: CTRL-N and -P on cmdline don't trigger CmdlineChanged.
Solution: Jump to cmdline_changed instead of cmdline_not_changed.
(closes vim/vim#11956)
https://github.com/vim/vim/commit/af9e28a5b8f888b79459393ddb26fffe613c3f3c
Cherry-pick Test_Cmdline() change from patch 9.0.1039.
-rw-r--r-- | src/nvim/ex_getln.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_autocmd.vim | 44 |
2 files changed, 46 insertions, 2 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 76c3680742..eadeb839de 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -2015,7 +2015,7 @@ static int command_line_handle_key(CommandLineState *s) if (nextwild(&s->xpc, wild_type, 0, s->firstc != '@') == FAIL) { break; } - return command_line_not_changed(s); + return command_line_changed(s); } FALLTHROUGH; @@ -2037,7 +2037,7 @@ static int command_line_handle_key(CommandLineState *s) if (nextwild(&s->xpc, wild_type, 0, s->firstc != '@') == FAIL) { break; } - return command_line_not_changed(s); + return command_line_changed(s); } else { switch (command_line_browse_history(s)) { case CMDLINE_CHANGED: diff --git a/src/nvim/testdir/test_autocmd.vim b/src/nvim/testdir/test_autocmd.vim index 83af0f6be0..a1a3ba3198 100644 --- a/src/nvim/testdir/test_autocmd.vim +++ b/src/nvim/testdir/test_autocmd.vim @@ -1897,6 +1897,50 @@ func Test_Cmdline() call assert_equal(':', g:entered) au! CmdlineChanged + 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', + \ 'si', + \ 'sig', + \ 'sign', + \ 'sign ', + \ 'sign define', + \ 'sign jump', + \ 'sign list', + \ 'sign jump', + \ 'sign define', + \ 'sign ', + \ ], g:log) + let g:log = [] + set wildmenu wildoptions+=pum + call feedkeys(":sign \<S-Tab>\<PageUp>\<kPageUp>\<kPageDown>\<PageDown>\<Esc>", 'xt') + call assert_equal([ + \ 's', + \ 'si', + \ 'sig', + \ 'sign', + \ 'sign ', + \ 'sign unplace', + \ 'sign jump', + \ 'sign define', + \ 'sign undefine', + \ 'sign unplace', + \ ], g:log) + set wildmenu& wildoptions& + unlet g:log + au! CmdlineChanged + au! CmdlineEnter : let g:entered = expand('<afile>') au! CmdlineLeave : let g:left = expand('<afile>') let g:entered = 0 |