mirror of
https://github.com/neovim/neovim.git
synced 2025-09-11 13:58:18 +00:00

The namespacing for healthchecks for neovim modules is inconsistent and confusing. The completion for `:checkhealth` with `--clean` gives ``` nvim provider.clipboard provider.node provider.perl provider.python provider.ruby vim.lsp vim.treesitter ``` There are now three top-level module names for nvim: `nvim`, `provider` and `vim` with no signs of stopping. The `nvim` name is especially confusing as it does not contain all neovim checkhealths, which makes it almost a decoy healthcheck. The confusion only worsens if you add plugins to the mix: ``` lazy mason nvim nvim-treesitter provider.clipboard provider.node provider.perl provider.python provider.ruby telescope vim.lsp vim.treesitter ``` Another problem with the current approach is that it's not easy to run nvim-only healthchecks since they don't share the same namespace. The current approach would be to run `:che nvim vim.* provider.*` and would also require the user to know these are the neovim modules. Instead, use this alternative structure: ``` vim.health vim.lsp vim.provider.clipboard vim.provider.node vim.provider.perl vim.provider.python vim.provider.ruby vim.treesitter ``` and ``` lazy mason nvim-treesitter telescope vim.health vim.lsp vim.provider.clipboard vim.provider.node vim.provider.perl vim.provider.python vim.provider.ruby vim.treesitter ``` Now, the entries are properly sorted and running nvim-only healthchecks requires running only `:che vim.*`.
40 lines
1.2 KiB
Lua
40 lines
1.2 KiB
Lua
local health = vim.health
|
|
|
|
local M = {}
|
|
|
|
function M.check()
|
|
health.start('Clipboard (optional)')
|
|
|
|
if
|
|
os.getenv('TMUX')
|
|
and vim.fn.executable('tmux') == 1
|
|
and vim.fn.executable('pbpaste') == 1
|
|
and not health.cmd_ok('pbpaste')
|
|
then
|
|
local tmux_version = string.match(vim.fn.system('tmux -V'), '%d+%.%d+')
|
|
local advice = {
|
|
'Install tmux 2.6+. https://superuser.com/q/231130',
|
|
'or use tmux with reattach-to-user-namespace. https://superuser.com/a/413233',
|
|
}
|
|
health.error('pbcopy does not work with tmux version: ' .. tmux_version, advice)
|
|
end
|
|
|
|
local clipboard_tool = vim.fn['provider#clipboard#Executable']()
|
|
if vim.g.clipboard ~= nil and clipboard_tool == '' then
|
|
local error_message = vim.fn['provider#clipboard#Error']()
|
|
health.error(
|
|
error_message,
|
|
"Use the example in :help g:clipboard as a template, or don't set g:clipboard at all."
|
|
)
|
|
elseif clipboard_tool:find('^%s*$') then
|
|
health.warn(
|
|
'No clipboard tool found. Clipboard registers (`"+` and `"*`) will not work.',
|
|
':help clipboard'
|
|
)
|
|
else
|
|
health.ok('Clipboard tool found: ' .. clipboard_tool)
|
|
end
|
|
end
|
|
|
|
return M
|