Files
mason-conform.nvim/lua/mason-conform/health.lua
T

77 lines
2.3 KiB
Lua

local M = {}
---@return boolean
local function check_mason()
local ok, mason_version = pcall(require, "mason.version")
if not ok then
vim.health.error("mason.nvim was not found. Is it installed and loaded?")
return false
end
if mason_version.MAJOR_VERSION ~= 2 then
vim.health.error(("mason.nvim v2 is required (found v%d)."):format(mason_version.MAJOR_VERSION))
return false
end
vim.health.ok("mason.nvim v2")
return true
end
function M.check()
vim.health.start("mason-conform.nvim")
if vim.fn.has("nvim-0.11") == 1 then
vim.health.ok("Neovim v0.11+")
else
vim.health.error("Neovim v0.11 or higher is required.")
end
local mason_installed = check_mason()
if mason_installed then
local registry_ok = pcall(require, "mason-registry")
if registry_ok then
vim.health.ok("mason registry is accessible")
else
vim.health.error("mason-registry could not be loaded.")
end
end
local conform_ok = pcall(require, "conform")
if not conform_ok then
vim.health.error("conform.nvim was not found. Is it installed and loaded?")
return
end
vim.health.ok("conform.nvim")
local formatters = require("mason-conform.formatters").configured()
if #formatters == 0 then
vim.health.warn("No formatters are configured in conform's formatters_by_ft, so there is nothing to install.")
return
end
vim.health.ok(("%d formatter(s) configured in formatters_by_ft"):format(#formatters))
local mapping = require("mason-conform.mapping")
local unmapped = {}
for _, name in ipairs(formatters) do
if mapping.conform_to_package[name] == nil then
unmapped[#unmapped + 1] = name
end
end
if #unmapped > 0 then
vim.health.info(
("No mason package mapping for: %s. These will not be installed automatically."):format(
table.concat(unmapped, ", ")
)
)
end
local ignored = {}
for _, name in ipairs(require("mason-conform").config.ignore_install) do
ignored[#ignored + 1] = name
end
if #ignored > 0 then
vim.health.info(("Ignored by 'ignore_install': %s"):format(table.concat(ignored, ", ")))
end
end
return M