diff options
author | bfredl <bjorn.linse@gmail.com> | 2024-04-25 08:58:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-25 08:58:58 +0200 |
commit | 2b9df3f79541507bfc3ba2645e6b9740e7c922ed (patch) | |
tree | 6112039092aabc134276fd5a8c121742be9ff069 /src/nvim/eval.c | |
parent | 30374db9554d871c217f41d00ce015b8e00b8680 (diff) | |
parent | 1294e221a205f1f3c6d2e31421b674db6e747406 (diff) | |
download | rneovim-2b9df3f79541507bfc3ba2645e6b9740e7c922ed.tar.gz rneovim-2b9df3f79541507bfc3ba2645e6b9740e7c922ed.tar.bz2 rneovim-2b9df3f79541507bfc3ba2645e6b9740e7c922ed.zip |
Merge pull request #28492 from bfredl/hotfix
fix(lua): vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate
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. |