60 lines
1.8 KiB
Lua
60 lines
1.8 KiB
Lua
--[[
|
|
Path: lua/config/health.lua
|
|
Module: config.health
|
|
|
|
Purpose
|
|
Optional `:checkhealth` provider: Neovim version gate, common CLI tools
|
|
(git, make, unzip, rg), and contextual notes for Mason-related warnings.
|
|
|
|
Rationale
|
|
Health checks catch environment issues before debugging “mystery” plugin
|
|
failures. Safe to ignore if you do not run `:checkhealth`; harmless if loaded.
|
|
|
|
See `:help health-dev`, `:checkhealth`.
|
|
]]
|
|
|
|
local check_version = function()
|
|
local verstr = tostring(vim.version())
|
|
if not vim.version.ge then
|
|
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
|
return
|
|
end
|
|
|
|
if vim.version.ge(vim.version(), '0.11') then
|
|
vim.health.ok(string.format("Neovim version is: '%s'", verstr))
|
|
else
|
|
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
|
end
|
|
end
|
|
|
|
local check_external_reqs = function()
|
|
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
|
|
local is_executable = vim.fn.executable(exe) == 1
|
|
if is_executable then
|
|
vim.health.ok(string.format("Found executable: '%s'", exe))
|
|
else
|
|
vim.health.warn(string.format("Could not find executable: '%s'", exe))
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
return {
|
|
check = function()
|
|
vim.health.start 'nvim configuration'
|
|
|
|
vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
|
|
|
|
Fix only warnings for plugins and languages you intend to use.
|
|
Mason will give warnings for languages that are not installed.
|
|
You do not need to install, unless you want to use those languages!]]
|
|
|
|
local uv = vim.uv or vim.loop
|
|
vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
|
|
|
|
check_version()
|
|
check_external_reqs()
|
|
end,
|
|
}
|