summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKota Kato <github@kat0h.com>2023-01-18 15:27:38 +0000
committerBram Moolenaar <Bram@vim.org>2023-01-18 15:27:38 +0000
commit90c2353365c5da40dec01b09e1f482983cf7f55d (patch)
treea47d5f873b94349f6a11669d744957847be8dfd6
parent486fc25a295464d107264b63997bdbe3745e3c71 (diff)
downloadvim-git-90c2353365c5da40dec01b09e1f482983cf7f55d.tar.gz
patch 9.0.1218: completion includes functions that don't workv9.0.1218
Problem: Completion includes functions that don't work. Solution: Skip functions that are not implemented. (Kota Kato, closes #11845)
-rw-r--r--src/evalfunc.c4
-rw-r--r--src/testdir/test_cmdline.vim6
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 923a75024..5b25e97cb 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2872,6 +2872,10 @@ get_function_name(expand_T *xp, int idx)
}
if (++intidx < (int)ARRAY_LENGTH(global_functions))
{
+ // Skip if the function doesn't have an implementation (feature not
+ // implemented).
+ if (global_functions[intidx].f_func == NULL)
+ return (char_u *)"";
STRCPY(IObuff, global_functions[intidx].f_name);
STRCAT(IObuff, "(");
if (global_functions[intidx].f_max_argc == 0)
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index a83230620..9eca9186f 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -489,6 +489,12 @@ func Test_getcompletion()
let l = getcompletion('paint', 'function')
call assert_equal([], l)
+ if !has('ruby')
+ " global_functions[] has an entry but it doesn't have an implemention
+ let l = getcompletion('ruby', 'function')
+ call assert_equal([], l)
+ endif
+
let Flambda = {-> 'hello'}
let l = getcompletion('', 'function')
let l = filter(l, {i, v -> v =~ 'lambda'})
diff --git a/src/version.c b/src/version.c
index 4c7d8962c..1cac4b572 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1218,
+/**/
1217,
/**/
1216,