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:
14
src/eval.c
14
src/eval.c
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user