summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-03-17 11:46:55 +0000
committerBram Moolenaar <Bram@vim.org>2022-03-17 11:46:55 +0000
commitda6d42c35a68610af872551b03077047258a7551 (patch)
tree55bb0a5f23a54940c76cd220ed26d4a164c04811
parent4f6e772c9cd013a8690ab0f1efecc0ab3e855148 (diff)
downloadvim-git-da6d42c35a68610af872551b03077047258a7551.tar.gz
patch 8.2.4584: error for using autoload function in custom completionv8.2.4584
Problem: Error for using autoload function in custom completion. Solution: Do not check for errors when using an autoload function. (closes #9962)
-rw-r--r--src/eval.c7
-rw-r--r--src/testdir/test_cmdline.vim23
-rw-r--r--src/version.c2
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 \<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 4b5088cf6..b9ec937e8 100644
--- 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,