vim-patch:7.4.2110 (#5880)

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.

eac784eced
This commit is contained in:
lonerover 2017-01-05 20:55:32 +08:00 committed by Justin M. Keyes
parent e21aef1e10
commit 12b50b116f
3 changed files with 32 additions and 2 deletions

View File

@ -1711,7 +1711,7 @@ static char_u * do_one_cmd(char_u **cmdlinep,
xfree(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;
}
if (p == NULL) {

View 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

View File

@ -330,7 +330,7 @@ static int included_patches[] = {
// 2113,
2112,
// 2111,
// 2110,
2110,
2109,
// 2108 NA
// 2107,