diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-04-15 22:57:09 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-15 22:57:09 +0100 |
commit | 12eb2eb4d78828513d91e04b0e69550ed37a5932 (patch) | |
tree | 87ca8d96cf92c7864816df4a36987c24b293ebc9 | |
parent | 7714231bb5b15f7c85453f3945c108478de1d08a (diff) | |
download | vim-git-12eb2eb4d78828513d91e04b0e69550ed37a5932.tar.gz |
patch 8.2.4755: cannot use <SID>FuncRef in completion specv8.2.4755
Problem: Cannot use <SID>FuncRef in completion spec.
Solution: Dereference a function name in another way. (closes #10197)
-rw-r--r-- | src/eval.c | 10 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 35 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index 90ed14b60..cad688775 100644 --- a/src/eval.c +++ b/src/eval.c @@ -639,7 +639,15 @@ deref_function_name( ref.v_type = VAR_UNKNOWN; if (eval7(arg, &ref, evalarg, FALSE) == FAIL) - return NULL; + { + dictitem_T *v; + + // If <SID>VarName was used it would not be found, try another way. + v = find_var_also_in_script(name, NULL, FALSE); + if (v == NULL) + return NULL; + copy_tv(&v->di_tv, &ref); + } if (*skipwhite(*arg) != NUL) { if (verbose) diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index dd9f5668d..ebd875ed9 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -749,6 +749,30 @@ def Test_use_import_in_command_completion() delete('Xscript.vim') enddef +def Test_use_import_with_funcref_in_command_completion() + var lines =<< trim END + vim9script + export def Complete(..._): list<string> + return ['abcd'] + enddef + END + writefile(lines, 'Xscript.vim') + + lines =<< trim END + vim9script + import './Xscript.vim' + + var Ref = Xscript.Complete + exe "command -nargs=1 -complete=customlist," .. expand('<SID>') .. "Ref Cmd echo 'ok'" + feedkeys(":Cmd ab\<Tab>\<C-B>#\<CR>", 'xnt') + assert_equal('#Cmd abcd', @:) + END + v9.CheckScriptSuccess(lines) + + delcommand Cmd + delete('Xscript.vim') +enddef + def Test_use_autoload_import_in_insert_completion() mkdir('Xdir/autoload', 'p') var save_rtp = &rtp diff --git a/src/version.c b/src/version.c index e833b78be..017557eb0 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4755, +/**/ 4754, /**/ 4753, |