From: Bram Moolenaar Date: Sat, 15 May 2021 11:19:16 +0000 (+0200) Subject: patch 8.2.2851: using mapping on the command line triggers CmdlineChanged X-Git-Tag: v8.2.2851 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=847fe7d750001a46a09b97ad57286612d0be8100;p=vim patch 8.2.2851: using mapping on the command line triggers CmdlineChanged Problem: Using mapping on the command line triggers CmdlineChanged. (Naohiro Ono) Solution: Jump to cmdline_not_changed if the command line didn't change. (closes #8208) --- 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 (save-cmdline) endfunc +func Test_cmd_map_cmdlineChanged() + let g:log = [] + cnoremap ls + augroup test + autocmd! + autocmd CmdlineChanged : let g:log += [getcmdline()] + augroup END + + call feedkeys(":\\", 'xt') + call assert_equal(['l', 'ls'], g:log) + + unlet g:log + cunmap + 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 @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2851, /**/ 2850, /**/