diff --git a/src/evalfunc.c b/src/evalfunc.c index 4d73d40f12441cf0897029d36fb286b8250d0134..d6fb03ee40a78c146c240babae858ff7da935bd3 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -2307,9 +2307,10 @@ get_function_name(expand_T *xp, int idx) if (intidx < 0) { name = get_user_func_name(xp, idx); - if (name != NULL && *name != NUL) + if (name != NULL) { - if (*name != '<' && STRNCMP("g:", xp->xp_pattern, 2) == 0) + if (*name != NUL && *name != '<' + && STRNCMP("g:", xp->xp_pattern, 2) == 0) return cat_prefix_varname('g', name); return name; } diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 5d919524439fef41438974e2b27dd7e816474599..d04bb4c8cb186b8f99e09b1494367fda76ea9163 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -650,7 +650,7 @@ endfunc func Test_cmdline_complete_user_func() call feedkeys(":func Test_cmdline_complete_user\<Tab>\<Home>\"\<cr>", 'tx') - call assert_match('"func Test_cmdline_complete_user', @:) + call assert_match('"func Test_cmdline_complete_user_', @:) call feedkeys(":func s:ScriptL\<Tab>\<Home>\"\<cr>", 'tx') call assert_match('"func <SNR>\d\+_ScriptLocalFunction', @:) @@ -662,6 +662,14 @@ func Test_cmdline_complete_user_func() let Fx = { a -> a } call feedkeys(":echo g:\<Tab>\<Home>\"\<cr>", 'tx') call assert_match('"echo g:[A-Z]', @:) + + " existence of script-local dict function does not break user function name + " completion + function s:a_dict_func() dict + endfunction + call feedkeys(":call Test_cmdline_complete_user\<Tab>\<Home>\"\<cr>", 'tx') + call assert_match('"call Test_cmdline_complete_user_', @:) + delfunction s:a_dict_func endfunc func Test_cmdline_complete_user_names() diff --git a/src/version.c b/src/version.c index b47b1e358146da5e722d4cba2fb7c1fa8443c965..2d890f83c3db2202a24173250c1bba38d2658112 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3360, /**/ 3359, /**/