patch 8.2.4584: error for using autoload function in custom completion
Problem: Error for using autoload function in custom completion.
Solution: Do not check for errors when using an autoload function.
(closes #9962)
diff --git a/src/eval.c b/src/eval.c
index e4f47b1..3f6be18 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -705,10 +705,9 @@
// The name might be "import.Func" or "Funcref". We don't know, we need to
// ignore errors for an undefined name. But we do want errors when an
- // autoload script has errors. Guess that when there is a dot or '#' in
- // the name showing errors is the right choice.
- ignore_errors = vim_strchr(func, '.') == NULL
- && vim_strchr(func, AUTOLOAD_CHAR) == NULL;
+ // autoload script has errors. Guess that when there is a dot in the name
+ // showing errors is the right choice.
+ ignore_errors = vim_strchr(func, '.') == NULL;
arg = func;
if (ignore_errors)
++emsg_off;
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index ba3c508..c3a6425 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1829,6 +1829,29 @@
let &encoding = save_encoding
endfunc
+func Test_custom_complete_autoload()
+ call mkdir('Xdir/autoload', 'p')
+ let save_rtp = &rtp
+ exe 'set rtp=' .. getcwd() .. '/Xdir'
+ let lines =<< trim END
+ func vim8#Complete(a, c, p)
+ return "oneA\noneB\noneC"
+ endfunc
+ END
+ call writefile(lines, 'Xdir/autoload/vim8.vim')
+
+ command -nargs=1 -complete=custom,vim8#Complete MyCmd
+ set nowildmenu
+ set wildmode=full,list
+ call feedkeys(":MyCmd \<C-A>\<C-B>\"\<CR>", 'xt')
+ call assert_equal('"MyCmd oneA oneB oneC', @:)
+
+ let &rtp = save_rtp
+ set wildmode& wildmenu&
+ delcommand MyCmd
+ call delete('Xdir', 'rf')
+endfunc
+
" Test for interrupting the command-line completion
func Test_interrupt_compl()
func F(lead, cmdl, p)
diff --git a/src/version.c b/src/version.c
index 4b5088c..b9ec937 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4584,
+/**/
4583,
/**/
4582,