From da6d42c35a68610af872551b03077047258a7551 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 17 Mar 2022 11:46:55 +0000 Subject: [PATCH] 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) --- src/eval.c | 7 +++---- src/testdir/test_cmdline.vim | 23 +++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/eval.c b/src/eval.c index e4f47b18b..3f6be1847 100644 --- 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 index ba3c50878..c3a6425b8 100644 --- 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 index 4b5088cf6..b9ec937e8 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4584, /**/ 4583, /**/ -- 2.40.0