neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 1391385ba9f83d32f3b6fc54587f03a1d34960d9
parent 3170e05d5743c5b46b14058f3c0702b4d7a43320
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue,  7 Feb 2023 07:54:33 +0800

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.
Diffstat:
Msrc/nvim/ex_getln.c | 4++--
Msrc/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 @@ -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 @@ -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