aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 3bcec56b06..dc18532b40 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -23969,28 +23969,37 @@ typval_T eval_call_provider(char *provider, char *method, list_T *arguments)
}
/// Checks if a named provider is enabled.
-bool eval_has_provider(const char *provider)
-{
+bool eval_has_provider(const char *name)
+{
+ if (!strequal(name, "clipboard")
+ && !strequal(name, "python")
+ && !strequal(name, "python3")
+ && !strequal(name, "ruby")
+ && !strequal(name, "node")) {
+ // Avoid autoload for non-provider has() features.
+ return false;
+ }
+
char buf[256];
int len;
typval_T tv;
// Get the g:loaded_xx_provider variable.
- len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", provider);
+ len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", name);
if (get_var_tv(buf, len, &tv, NULL, false, true) == FAIL) {
// Trigger autoload once.
- len = snprintf(buf, sizeof(buf), "provider#%s#bogus", provider);
+ len = snprintf(buf, sizeof(buf), "provider#%s#bogus", name);
script_autoload(buf, len, false);
// Retry the (non-autoload-style) variable.
- len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", provider);
+ len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", name);
if (get_var_tv(buf, len, &tv, NULL, false, true) == FAIL) {
// Show a hint if Call() is defined but g:loaded_xx_provider is missing.
- snprintf(buf, sizeof(buf), "provider#%s#Call", provider);
+ snprintf(buf, sizeof(buf), "provider#%s#Call", name);
bool has_call = !!find_func((char_u *)buf);
if (has_call && p_lpl) {
emsgf("provider: %s: missing required variable g:loaded_%s_provider",
- provider, provider);
+ name, name);
}
return false;
}