aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2024-04-25 08:58:58 +0200
committerGitHub <noreply@github.com>2024-04-25 08:58:58 +0200
commit2b9df3f79541507bfc3ba2645e6b9740e7c922ed (patch)
tree6112039092aabc134276fd5a8c121742be9ff069 /src/nvim/eval.c
parent30374db9554d871c217f41d00ce015b8e00b8680 (diff)
parent1294e221a205f1f3c6d2e31421b674db6e747406 (diff)
downloadrneovim-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.c9
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.