health: provider: skip checks with g:loaded_X_provider = 0 (#11147)

The Python provider was special (via [1]), and would continue to do
checks with `0` being set explicitly even.
This was fixed in #11044 (45447e3b6), ref: #11040.

This extends it to use the same method with all providers.

1: https://github.com/neovim/neovim/pull/8047
This commit is contained in:
Daniel Hahler 2019-10-04 08:16:30 +02:00 committed by GitHub
parent c3ae5e1375
commit 382391bb2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -265,6 +265,22 @@ function! s:check_bin(bin) abort
return 1
endfunction
" Check "loaded" var for given a:provider.
" Returns 1 if the caller should return (skip checks).
function! s:disabled_via_loaded_var(provider) abort
let loaded_var = 'g:loaded_'.a:provider.'_provider'
if exists(loaded_var) && !exists('*provider#'.a:provider.'#Call')
let v = eval(loaded_var)
if 0 is v
call health#report_info('Disabled ('.loaded_var.'='.v.').')
return 1
else
call health#report_info('Disabled ('.loaded_var.'='.v.'). This might be due to some previous error.')
endif
endif
return 0
endfunction
function! s:check_python(version) abort
call health#report_start('Python ' . a:version . ' provider (optional)')
@ -272,15 +288,10 @@ function! s:check_python(version) abort
let python_exe = ''
let venv = exists('$VIRTUAL_ENV') ? resolve($VIRTUAL_ENV) : ''
let host_prog_var = pyname.'_host_prog'
let loaded_var = 'g:loaded_'.pyname.'_provider'
let python_multiple = []
if exists(loaded_var) && !exists('*provider#'.pyname.'#Call')
let v = eval(loaded_var)
call health#report_info('Disabled ('.loaded_var.'='.v.').'.(0 is v ? '' : ' This might be due to some previous error.'))
if 0 is v
return
endif
if s:disabled_via_loaded_var(pyname)
return
endif
let [pyenv, pyenv_root] = s:check_for_pyenv()
@ -488,9 +499,7 @@ endfunction
function! s:check_ruby() abort
call health#report_start('Ruby provider (optional)')
let loaded_var = 'g:loaded_ruby_provider'
if exists(loaded_var) && !exists('*provider#ruby#Call')
call health#report_info('Disabled. '.loaded_var.'='.eval(loaded_var))
if s:disabled_via_loaded_var('ruby')
return
endif
@ -544,9 +553,7 @@ endfunction
function! s:check_node() abort
call health#report_start('Node.js provider (optional)')
let loaded_var = 'g:loaded_node_provider'
if exists(loaded_var) && !exists('*provider#node#Call')
call health#report_info('Disabled. '.loaded_var.'='.eval(loaded_var))
if s:disabled_via_loaded_var('node')
return
endif