provider: g:loaded_xx_provider=2 means "enabled and working"

Value of 1 cannot be used, because users might set that in their vimrc
to _disable_ a provider, which would confuse :checkhealth and has().
This commit is contained in:
Justin M. Keyes
2019-08-04 12:06:24 +02:00
parent 66938b928c
commit 241956720d
10 changed files with 23 additions and 21 deletions

View File

@@ -5,11 +5,11 @@
if exists('g:loaded_clipboard_provider')
finish
endif
" Default to FALSE. Set by provider#clipboard#Executable() later.
" Default to 1. provider#clipboard#Executable() may set 2.
" To force a reload:
" :unlet g:loaded_clipboard_provider
" :runtime autoload/provider/clipboard.vim
let g:loaded_clipboard_provider = 0
let g:loaded_clipboard_provider = 1
let s:copy = {}
let s:paste = {}
@@ -197,4 +197,4 @@ function! provider#clipboard#Call(method, args) abort
endfunction
" eval_has_provider() decides based on this variable.
let g:loaded_clipboard_provider = !empty(provider#clipboard#Executable())
let g:loaded_clipboard_provider = empty(provider#clipboard#Executable()) ? 1 : 2

View File

@@ -1,7 +1,7 @@
if exists('g:loaded_node_provider')
finish
endif
let g:loaded_node_provider = 0
let g:loaded_node_provider = 1
function! s:is_minimum_version(version, min_major, min_minor) abort
if empty(a:version)
@@ -140,9 +140,9 @@ endfunction
let s:err = ''
let s:prog = provider#node#Detect()
let g:loaded_node_provider = !empty(s:prog)
let g:loaded_node_provider = empty(s:prog) ? 1 : 2
if !g:loaded_node_provider
if g:loaded_node_provider != 2
let s:err = 'Cannot find the "neovim" node package. Try :checkhealth'
endif

View File

@@ -8,7 +8,7 @@ if exists('g:loaded_python_provider')
finish
endif
let [s:prog, s:err] = provider#pythonx#Detect(2)
let g:loaded_python_provider = !empty(s:prog)
let g:loaded_python_provider = empty(s:prog) ? 1 : 2
function! provider#python#Prog() abort
return s:prog

View File

@@ -8,7 +8,7 @@ if exists('g:loaded_python3_provider')
finish
endif
let [s:prog, s:err] = provider#pythonx#Detect(3)
let g:loaded_python3_provider = !empty(s:prog)
let g:loaded_python3_provider = empty(s:prog) ? 1 : 2
function! provider#python3#Prog() abort
return s:prog

View File

@@ -2,7 +2,7 @@
if exists('g:loaded_ruby_provider')
finish
endif
let g:loaded_ruby_provider = 0
let g:loaded_ruby_provider = 1
function! provider#ruby#Detect() abort
return s:prog
@@ -62,9 +62,9 @@ endfunction
let s:err = ''
let s:prog = s:detect()
let s:plugin_path = expand('<sfile>:p:h') . '/script_host.rb'
let g:loaded_ruby_provider = !empty(s:prog)
let g:loaded_ruby_provider = empty(s:prog) ? 1 : 2
if !g:loaded_ruby_provider
if g:loaded_ruby_provider != 2
let s:err = 'Cannot find the neovim RubyGem. Try :checkhealth'
endif

View File

@@ -106,12 +106,12 @@ in eval.c:
- eval_call_provider(name, method, arguments): calls provider#{name}#Call
with the method and arguments.
- eval_has_provider(name): Checks the `g:loaded_{name}_provider` variable
which must be set by the provider script to indicate whether it is enabled
and working. Called by |has()| to check if features are available.
which must be set to 2 by the provider script to indicate that it is
"enabled and working". Called by |has()| to check if features are available.
For example, the Python provider is implemented by the
"autoload/provider/python.vim" script, which sets `g:loaded_python_provider`
to TRUE only if a valid external Python host is found. Then `has("python")`
to 2 only if a valid external Python host is found. Then `has("python")`
reflects whether Python support is working.
*provider-reload*

View File

@@ -68,11 +68,11 @@ startup faster. Useful for working with virtualenvs. >
<
*g:loaded_python_provider*
To disable Python 2 support: >
let g:loaded_python_provider = 1
let g:loaded_python_provider = 0
<
*g:loaded_python3_provider*
To disable Python 3 support: >
let g:loaded_python3_provider = 1
let g:loaded_python3_provider = 0
PYTHON VIRTUALENVS ~
@@ -111,7 +111,7 @@ Run |:checkhealth| to see if your system is up-to-date.
RUBY PROVIDER CONFIGURATION ~
*g:loaded_ruby_provider*
To disable Ruby support: >
let g:loaded_ruby_provider = 1
let g:loaded_ruby_provider = 0
<
*g:ruby_host_prog*
Command to start the Ruby host. By default this is "neovim-ruby-host". With
@@ -142,7 +142,7 @@ Run |:checkhealth| to see if your system is up-to-date.
NODEJS PROVIDER CONFIGURATION~
*g:loaded_node_provider*
To disable Node.js support: >
:let g:loaded_node_provider = 1
:let g:loaded_node_provider = 0
<
*g:node_host_prog*
Command to start the Node.js host. Setting this makes startup faster.

View File

@@ -23996,7 +23996,9 @@ bool eval_has_provider(const char *provider)
}
}
return (tv.v_type == VAR_NUMBER) ? !!tv.vval.v_number : false;
return (tv.v_type == VAR_NUMBER)
? 2 == tv.vval.v_number // Value of 2 means "loaded and working".
: false;
}
/// Writes "<sourcing_name>:<sourcing_lnum>" to `buf[bufsize]`.

View File

@@ -1,2 +1,2 @@
" A dummy test provider
let g:loaded_brokencall_provider = 1
let g:loaded_brokencall_provider = 2

View File

@@ -1,4 +1,4 @@
let g:loaded_clipboard_provider = 1
let g:loaded_clipboard_provider = 2
let g:test_clip = { '+': [''], '*': [''], }