mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-02 11:36:54 -04:00
fix(health): only check installed parsers
This is to avoid awfully long checkhealths. And not installed parsers can be infered from the fact that they are not listed.
This commit is contained in:
parent
dee3c242d9
commit
34160bb6f2
1 changed files with 7 additions and 20 deletions
|
|
@ -2,7 +2,7 @@ local api = vim.api
|
|||
local fn = vim.fn
|
||||
|
||||
local queries = require'nvim-treesitter.query'
|
||||
local parsers = require'nvim-treesitter.parsers'
|
||||
local info = require'nvim-treesitter.info'
|
||||
|
||||
local health_start = vim.fn["health#report_start"]
|
||||
local health_ok = vim.fn['health#report_ok']
|
||||
|
|
@ -12,6 +12,7 @@ local health_error = vim.fn['health#report_error']
|
|||
local M = {}
|
||||
|
||||
local function install_health()
|
||||
health_start('Installation')
|
||||
if fn.executable('git') == 0 then
|
||||
health_error('`git` executable not found.', {
|
||||
'Install it with your package manager.',
|
||||
|
|
@ -44,38 +45,24 @@ end
|
|||
|
||||
function M.checkhealth()
|
||||
-- Installation dependency checks
|
||||
health_start('Installation')
|
||||
install_health()
|
||||
|
||||
local missing_parsers = {}
|
||||
-- Parser installation checks
|
||||
for _, parser_name in pairs(parsers.available_parsers()) do
|
||||
for _, parser_name in pairs(info.installed_parsers()) do
|
||||
local installed = #api.nvim_get_runtime_file('parser/'..parser_name..'.so', false)
|
||||
|
||||
-- Only print informations about installed parsers
|
||||
if installed == 1 then
|
||||
if installed >= 1 then
|
||||
if installed > 1 then
|
||||
health_warn(string.format("Multiple parsers found for %s, only %s will be used.", parser_name, installed[1]))
|
||||
end
|
||||
health_start(parser_name .. " parser healthcheck")
|
||||
health_ok(parser_name .. " parser found.")
|
||||
|
||||
for _, query_group in pairs(queries.built_in_query_groups) do
|
||||
query_health(parser_name, query_group)
|
||||
end
|
||||
|
||||
elseif installed > 1 then
|
||||
health_warn(string.format("Multiple parsers found for %s, only %s will be used.", parser_name, installed[1]))
|
||||
else
|
||||
table.insert(missing_parsers, parser_name)
|
||||
end
|
||||
end
|
||||
|
||||
-- Add informations on parsers we dont find
|
||||
if #missing_parsers > 0 then
|
||||
health_start('Missing parsers')
|
||||
|
||||
-- TODO(vigoux): The installation command should be changed so that its easier to find
|
||||
health_warn('Some parsers are not installed:\n' .. table.concat(missing_parsers, '\n'), {
|
||||
"Install them using `:TSInstall language"})
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue