Problem: Command line completion of user command may have duplicates.
(Dani Dickstein)
Solution: Skip global user command if an identical buffer-local one is
defined. (closes #10797)
delcommand Foo
endfunc
+func Test_complete_user_cmd()
+ command FooBar echo 'global'
+ command -buffer FooBar echo 'local'
+ call feedkeys(":Foo\<C-A>\<Home>\"\<CR>", 'tx')
+ call assert_equal('"FooBar', @:)
+
+ delcommand -buffer FooBar
+ delcommand FooBar
+endfunc
+
func s:ScriptLocalFunction()
echo 'yes'
endfunc
if (idx < buf->b_ucmds.ga_len)
return USER_CMD_GA(&buf->b_ucmds, idx)->uc_name;
+
idx -= buf->b_ucmds.ga_len;
if (idx < ucmds.ga_len)
- return USER_CMD(idx)->uc_name;
+ {
+ int i;
+ char_u *name = USER_CMD(idx)->uc_name;
+
+ for (i = 0; i < buf->b_ucmds.ga_len; ++i)
+ if (STRCMP(name, USER_CMD_GA(&buf->b_ucmds, i)->uc_name) == 0)
+ // global command is overruled by buffer-local one
+ return (char_u *)"";
+ return name;
+ }
return NULL;
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 81,
/**/
80,
/**/