0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.4578: no warning when autoload script for completion has an error

Problem:    No warning when an autoload script for completion function has an
            error.
Solution:   Do not ignore errors when a function name is given with a dot or
            '#' character. (closes #9958)
This commit is contained in:
Bram Moolenaar
2022-03-16 13:09:15 +00:00
parent 9323ca51c2
commit fe8e9f6740
3 changed files with 41 additions and 5 deletions

View File

@@ -695,6 +695,7 @@ call_vim_function(
char_u *arg;
char_u *name;
char_u *tofree = NULL;
int ignore_errors;
rettv->v_type = VAR_UNKNOWN; // clear_tv() uses this
CLEAR_FIELD(funcexe);
@@ -702,11 +703,18 @@ call_vim_function(
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate = TRUE;
// The name might be "import.Func" or "Funcref".
// 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;
arg = func;
++emsg_off;
if (ignore_errors)
++emsg_off;
name = deref_function_name(&arg, &tofree, &EVALARG_EVALUATE, FALSE);
--emsg_off;
if (ignore_errors)
--emsg_off;
if (name == NULL)
name = func;