# HG changeset patch # User Bram Moolenaar # Date 1647518407 -3600 # Node ID 57ea74314c1bd0ae3fdb2a6cd4c7e09540a41818 # Parent 9f0aed0d75e2e1a5e743ab654f6d75dca0e5c706 patch 8.2.4584: error for using autoload function in custom completion Commit: https://github.com/vim/vim/commit/da6d42c35a68610af872551b03077047258a7551 Author: Bram Moolenaar Date: Thu Mar 17 11:46:55 2022 +0000 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 --- a/src/eval.c +++ b/src/eval.c @@ -705,10 +705,9 @@ call_vim_function( // 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 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1829,6 +1829,29 @@ func Test_wildmode() 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 \\\"\", '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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4584, +/**/ 4583, /**/ 4582,