]> granicus.if.org Git - vim/commitdiff
patch 7.4.2110 v7.4.2110
authorBram Moolenaar <Bram@vim.org>
Thu, 28 Jul 2016 20:08:24 +0000 (22:08 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 28 Jul 2016 20:08:24 +0000 (22:08 +0200)
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.

src/ex_docmd.c
src/testdir/test_usercommands.vim
src/version.c

index 28de56ab056551220b95830720d189cec26cbdd4..34c9955c1625f83e1bce208ec9d6745579d3d867 100644 (file)
@@ -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
 
index a3c5b9572dc6618fdf9b83104d301cdf3e523cc7..e6c31962dd7a7df0278d9f183e52db85a3659a33 100644 (file)
@@ -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
index c24cf7a8010cba87c59c76a354d6c19d616589d5..8bb9d9d074bf80c4de97ee50b1773ce31f848383 100644 (file)
@@ -758,6 +758,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2110,
 /**/
     2109,
 /**/