Mercurial > vim
changeset 24624:c6aaf1742634 v8.2.2851
patch 8.2.2851: using <Cmd> mapping on the command line triggers CmdlineChanged
Commit: https://github.com/vim/vim/commit/847fe7d750001a46a09b97ad57286612d0be8100
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat May 15 13:19:16 2021 +0200
patch 8.2.2851: using <Cmd> mapping on the command line triggers CmdlineChanged
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 15 May 2021 13:30:02 +0200 |
parents | 99ec3d98043f |
children | 4bb3aeaba950 |
files | src/ex_getln.c src/testdir/test_cmdline.vim src/version.c |
diffstat | 3 files changed, 32 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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