patch 9.0.1218: completion includes functions that don't work
Problem: Completion includes functions that don't work.
Solution: Skip functions that are not implemented. (Kota Kato,
closes #11845)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 923a750..5b25e97 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2872,6 +2872,10 @@
}
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 a832306..9eca918 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -489,6 +489,12 @@
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 4c7d896..1cac4b5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1218,
+/**/
1217,
/**/
1216,