# HG changeset patch # User Bram Moolenaar # Date 1621078202 -7200 # Node ID c6aaf17426340ecb1b720713318936b5ff6bfba0 # Parent 99ec3d98043f8306c033f03fbfbeb9ade307f9ba patch 8.2.2851: using mapping on the command line triggers CmdlineChanged Commit: https://github.com/vim/vim/commit/847fe7d750001a46a09b97ad57286612d0be8100 Author: Bram Moolenaar Date: Sat May 15 13:19:16 2021 +0200 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 --- 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 --- 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 --- 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,