summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-05-15 13:19:16 +0200
committerBram Moolenaar <Bram@vim.org>2021-05-15 13:19:16 +0200
commit847fe7d750001a46a09b97ad57286612d0be8100 (patch)
treea1240abc97f972c5ebc6e29da430346ea72c9fb0
parent71c6f7a665eb467054fbf319989d97c252af28d2 (diff)
downloadvim-git-847fe7d750001a46a09b97ad57286612d0be8100.tar.gz
patch 8.2.2851: using <Cmd> mapping on the command line triggers CmdlineChangedv8.2.2851
Problem: Using <Cmd> mapping on the command line triggers CmdlineChanged. (Naohiro Ono) Solution: Jump to cmdline_not_changed if the command line didn't change. (closes #8208)
-rw-r--r--src/ex_getln.c14
-rw-r--r--src/testdir/test_cmdline.vim19
-rw-r--r--src/version.c2
3 files changed, 32 insertions, 3 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index a9f33e6ec..e87b208cc 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1757,9 +1757,17 @@ getcmdline_int(
c = safe_vgetc();
} while (c == K_IGNORE || c == K_NOP);
- if (c == K_COMMAND
- && do_cmdline(NULL, getcmdkeycmd, NULL, DOCMD_NOWAIT) == OK)
- goto cmdline_changed;
+ if (c == K_COMMAND)
+ {
+ int clen = ccline.cmdlen;
+
+ if (do_cmdline(NULL, getcmdkeycmd, NULL, DOCMD_NOWAIT) == OK)
+ {
+ if (clen == ccline.cmdlen)
+ goto cmdline_not_changed;
+ goto cmdline_changed;
+ }
+ }
if (KeyTyped)
{
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 7df80b033..5ed283f1f 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1799,4 +1799,23 @@ func Test_recalling_cmdline()
cunmap <Plug>(save-cmdline)
endfunc
+func Test_cmd_map_cmdlineChanged()
+ let g:log = []
+ cnoremap <F1> l<Cmd><CR>s
+ augroup test
+ autocmd!
+ autocmd CmdlineChanged : let g:log += [getcmdline()]
+ augroup END
+
+ call feedkeys(":\<F1>\<CR>", 'xt')
+ call assert_equal(['l', 'ls'], g:log)
+
+ unlet g:log
+ cunmap <F1>
+ augroup test
+ autocmd!
+ augroup END
+endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 83c773f23..0d3c2ad52 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2851,
+/**/
2850,
/**/
2849,