From 8a7b6200fbaaafa13c1425faacecbd779d05d729 Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Sat, 12 Jan 2019 00:52:12 +0100 Subject: provider: improve error message if provider is missing (#9487) Move `has_eval_provider()` check to `eval_call_provider()` to make sure that every code path calls it first. Previously we would, when pynvim was missing, get a nice error message for `:python3 1`, but not for `:py3file blah`. Fixes https://github.com/neovim/neovim/issues/9485 --- src/nvim/eval.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/nvim/eval.c') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index d67818aa81..5191328b5d 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -22683,6 +22683,16 @@ static void script_host_eval(char *name, typval_T *argvars, typval_T *rettv) typval_T eval_call_provider(char *provider, char *method, list_T *arguments) { + if (!eval_has_provider(provider)) { + emsgf("E319: No \"%s\" provider found. Run \":checkhealth provider\"", + provider); + return (typval_T){ + .v_type = VAR_NUMBER, + .v_lock = VAR_UNLOCKED, + .vval.v_number = (varnumber_T)0 + }; + } + char func[256]; int name_len = snprintf(func, sizeof(func), "provider#%s#Call", provider); -- cgit