diff options
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 70cf2b973d..d9c18431dd 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -8782,7 +8782,7 @@ void script_host_eval(char *name, typval_T *argvars, typval_T *rettv) /// an empty typval_T. typval_T eval_call_provider(char *provider, char *method, list_T *arguments, bool discard) { - if (!eval_has_provider(provider)) { + if (!eval_has_provider(provider, false)) { semsg("E319: No \"%s\" provider found. Run \":checkhealth provider\"", provider); return (typval_T){ @@ -8840,7 +8840,7 @@ typval_T eval_call_provider(char *provider, char *method, list_T *arguments, boo } /// Checks if provider for feature `feat` is enabled. -bool eval_has_provider(const char *feat) +bool eval_has_provider(const char *feat, bool throw_if_fast) { if (!strequal(feat, "clipboard") && !strequal(feat, "python3") @@ -8853,6 +8853,11 @@ bool eval_has_provider(const char *feat) return false; } + if (throw_if_fast && !nlua_is_deferred_safe()) { + semsg(e_luv_api_disabled, "Vimscript function"); + return false; + } + char name[32]; // Normalized: "python3_compiled" => "python3". snprintf(name, sizeof(name), "%s", feat); strchrsub(name, '_', '\0'); // Chop any "_xx" suffix. |