diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-28 22:08:24 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-28 22:08:24 +0200 |
commit | eac784eced501c54d2c99e18a1af96cd996f3a6c (patch) | |
tree | 63181559c29cab455fe2dd086c845748f6164c93 | |
parent | ad9c2a08f0509294269a2f11a59a438b944bdd5a (diff) | |
download | vim-git-eac784eced501c54d2c99e18a1af96cd996f3a6c.tar.gz |
patch 7.4.2110v7.4.2110
Problem: When there is an CmdUndefined autocmd then the error for a missing
command is E464 instead of E492. (Manuel Ortega)
Solution: Don't let the pointer be NULL.
-rw-r--r-- | src/ex_docmd.c | 2 | ||||
-rw-r--r-- | src/testdir/test_usercommands.vim | 30 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 33 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 28de56ab0..34c9955c1 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2343,7 +2343,7 @@ do_one_cmd( vim_free(p); /* If the autocommands did something and didn't cause an error, try * finding the command again. */ - p = (ret && !aborting()) ? find_command(&ea, NULL) : NULL; + p = (ret && !aborting()) ? find_command(&ea, NULL) : ea.cmd; } #endif diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim index a3c5b9572..e6c31962d 100644 --- a/src/testdir/test_usercommands.vim +++ b/src/testdir/test_usercommands.vim @@ -46,3 +46,33 @@ function Test_cmdmods() delcommand MyQCmd unlet g:mods endfunction + +func Test_Ambiguous() + command Doit let g:didit = 'yes' + command Dothat let g:didthat = 'also' + call assert_fails('Do', 'E464:') + Doit + call assert_equal('yes', g:didit) + Dothat + call assert_equal('also', g:didthat) + unlet g:didit + unlet g:didthat + + delcommand Doit + Do + call assert_equal('also', g:didthat) + delcommand Dothat +endfunc + +func Test_CmdUndefined() + call assert_fails('Doit', 'E492:') + au CmdUndefined Doit :command Doit let g:didit = 'yes' + Doit + call assert_equal('yes', g:didit) + delcommand Doit + + call assert_fails('Dothat', 'E492:') + au CmdUndefined * let g:didnot = 'yes' + call assert_fails('Dothat', 'E492:') + call assert_equal('yes', g:didnot) +endfunc diff --git a/src/version.c b/src/version.c index c24cf7a80..8bb9d9d07 100644 --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2110, +/**/ 2109, /**/ 2108, |