fix(provider): misleading :checkhealth if user sets g:loaded_python3_provider=1 #32696

Problem:
:checkhealth shows a confusing message if user sets
g:loaded_python3_provider=1.

Solution:
- Show a warning if that var is set to 1.
- Update provider modules to default to 0. Any user code that is
  checking for 1, is like already broken because these may be set to 2.
This commit is contained in:
Sathya Pramodh
2025-03-29 23:36:23 +05:30
committed by GitHub
parent f4fc769c81
commit b4906577c9
6 changed files with 18 additions and 8 deletions

View File

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

View File

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

View File

@@ -11,5 +11,5 @@ function! provider#perl#Require(host) abort
endfunction endfunction
let s:prog = v:lua.vim.provider.perl.detect() let s:prog = v:lua.vim.provider.perl.detect()
let g:loaded_perl_provider = empty(s:prog) ? 1 : 2 let g:loaded_perl_provider = empty(s:prog) ? 0 : 2
call v:lua.require'vim.provider.perl'.start() call v:lua.require'vim.provider.perl'.start()

View File

@@ -11,5 +11,5 @@ function! provider#python3#Require(host) abort
endfunction endfunction
let s:prog = v:lua.vim.provider.python.detect_by_module('neovim') let s:prog = v:lua.vim.provider.python.detect_by_module('neovim')
let g:loaded_python3_provider = empty(s:prog) ? 1 : 2 let g:loaded_python3_provider = empty(s:prog) ? 0 : 2
call v:lua.require'vim.provider.python'.start() call v:lua.require'vim.provider.python'.start()

View File

@@ -11,6 +11,6 @@ function! provider#ruby#Call(method, args) abort
endfunction endfunction
let s:prog = v:lua.vim.provider.ruby.detect() let s:prog = v:lua.vim.provider.ruby.detect()
let g:loaded_ruby_provider = empty(s:prog) ? 1 : 2 let g:loaded_ruby_provider = empty(s:prog) ? 0 : 2
let s:plugin_path = expand('<sfile>:p:h') . '/script_host.rb' let s:plugin_path = expand('<sfile>:p:h') . '/script_host.rb'
call v:lua.require'vim.provider.ruby'.start(s:plugin_path) call v:lua.require'vim.provider.ruby'.start(s:plugin_path)

View File

@@ -110,6 +110,16 @@ local function check_config()
) )
end end
if vim.g.loaded_python3_provider == 1 then
ok = false
health.error(
'`g:loaded_python3_provider=1` may have been set by mistake. This option should not be used to load python provider in your config.',
{
'Remove `vim.g.loaded_python3_provider=1` from your config.',
}
)
end
local writeable = true local writeable = true
local shadaopt = vim.fn.split(vim.o.shada, ',') local shadaopt = vim.fn.split(vim.o.shada, ',')
local shadafile = ( local shadafile = (