aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-07 07:54:33 +0800
committerGitHub <noreply@github.com>2023-02-07 07:54:33 +0800
commit1391385ba9f83d32f3b6fc54587f03a1d34960d9 (patch)
tree0a6924688058c9338ee13eedc9a9c055fdb97a0a
parent3170e05d5743c5b46b14058f3c0702b4d7a43320 (diff)
downloadrneovim-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.c4
-rw-r--r--src/nvim/testdir/test_autocmd.vim44
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