aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2018-12-12 03:22:45 +0100
committerMarco Hinz <mh.codebro@gmail.com>2018-12-12 21:59:02 +0100
commit5062d8e0dd47aa36c568bf8763d6f9054cbcec97 (patch)
treecb6aee7060a1bd3959b9c3e7701e7e1bc862122e /src
parent2f3a18695e41ec6afa98194b22d064ec81154dbf (diff)
downloadrneovim-5062d8e0dd47aa36c568bf8763d6f9054cbcec97.tar.gz
rneovim-5062d8e0dd47aa36c568bf8763d6f9054cbcec97.tar.bz2
rneovim-5062d8e0dd47aa36c568bf8763d6f9054cbcec97.zip
provider: make :ruby provider check use same code path as :python
Prior to this change, the provider check for ruby was special-cased and now it returns E319, like :python etc. References #9354
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index cd29e4ef19..d67818aa81 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10802,17 +10802,6 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr)
n = true;
}
- if (STRICMP(name, "ruby") == 0 && n == true) {
- char *rubyhost = call_func_retstr("provider#ruby#Detect", 0, NULL, true);
- if (rubyhost) {
- if (*rubyhost == NUL) {
- // Invalid rubyhost executable. Gem is probably not installed.
- n = false;
- }
- xfree(rubyhost);
- }
- }
-
rettv->vval.v_number = n;
}
@@ -22770,7 +22759,18 @@ bool eval_has_provider(const char *name)
CHECK_PROVIDER(python);
return has_python;
} else if (strequal(name, "ruby")) {
+ bool need_check_ruby = (has_ruby == -1);
CHECK_PROVIDER(ruby);
+ if (need_check_ruby && has_ruby == 1) {
+ char *rubyhost = call_func_retstr("provider#ruby#Detect", 0, NULL, true);
+ if (rubyhost) {
+ if (*rubyhost == NUL) {
+ // Invalid rubyhost executable. Gem is probably not installed.
+ has_ruby = 0;
+ }
+ xfree(rubyhost);
+ }
+ }
return has_ruby;
}