summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-06 20:58:09 +0000
committerBram Moolenaar <Bram@vim.org>2023-02-06 20:58:09 +0000
commitaf9e28a5b8f888b79459393ddb26fffe613c3f3c (patch)
treeb77d03b44b1bdf09e72d3102483d731528b08799
parent43e234e8b48caf59d6895a31628dad0bba4fd5c8 (diff)
downloadvim-git-af9e28a5b8f888b79459393ddb26fffe613c3f3c.tar.gz
patch 9.0.1290: CTRL-N and -P on cmdline don't trigger CmdlineChangedv9.0.1290
Problem: CTRL-N and -P on cmdline don't trigger CmdlineChanged. Solution: Jump to cmdline_changed instead of cmdline_not_changed. (closes #11956)
-rw-r--r--src/ex_getln.c4
-rw-r--r--src/testdir/test_autocmd.vim35
-rw-r--r--src/version.c2
3 files changed, 39 insertions, 2 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 2407bceb1..6d0b3c5db 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2293,7 +2293,7 @@ getcmdline_int(
wild_type = (c == Ctrl_P) ? WILD_PREV : WILD_NEXT;
if (nextwild(&xpc, wild_type, 0, firstc != '@') == FAIL)
break;
- goto cmdline_not_changed;
+ goto cmdline_changed;
}
// FALLTHROUGH
case K_UP:
@@ -2315,7 +2315,7 @@ getcmdline_int(
wild_type = WILD_PAGEDOWN;
if (nextwild(&xpc, wild_type, 0, firstc != '@') == FAIL)
break;
- goto cmdline_not_changed;
+ goto cmdline_changed;
}
else
{
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 8931678d7..c11f6ff30 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -1918,6 +1918,41 @@ func Test_Cmdline()
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
diff --git a/src/version.c b/src/version.c
index d7b12b1f1..3523df2b9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1290,
+/**/
1289,
/**/
1288,