summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-28 22:08:24 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-28 22:08:24 +0200
commiteac784eced501c54d2c99e18a1af96cd996f3a6c (patch)
tree63181559c29cab455fe2dd086c845748f6164c93
parentad9c2a08f0509294269a2f11a59a438b944bdd5a (diff)
downloadvim-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.c2
-rw-r--r--src/testdir/test_usercommands.vim30
-rw-r--r--src/version.c2
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,