1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
local api = vim.api
local fn = vim.fn
local queries = require'nvim-treesitter.query'
local info = require'nvim-treesitter.info'
local health_start = vim.fn["health#report_start"]
local health_ok = vim.fn['health#report_ok']
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.',
'Check that your `$PATH` is set correctly.'
})
else
health_ok('`git` executable found.')
end
if fn.executable('cc') == 0 then
health_error('`cc` executable not found.', {
'Check that either gcc or clang is in your $PATH'
})
else
health_ok('`cc` executable found.')
end
end
local function query_status(lang, query_group)
local ok, found_query = pcall(queries.get_query, lang, query_group)
if not ok then
return "x"
elseif not found_query then
return "."
else
return "✓"
end
end
function M.checkhealth()
-- Installation dependency checks
install_health()
health_start("Parser/Features H L F I")
-- Parser installation checks
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
local multiple_parsers = installed > 1 and "*" or ""
local out = " - "..parser_name..multiple_parsers..string.rep(" ", 15 - (#parser_name + #multiple_parsers))
for _, query_group in pairs(queries.built_in_query_groups) do
out = out..query_status(parser_name, query_group).." "
end
print(out)
end
end
print([[ Legend: H[ighlight], L[ocals], F[olds], I[ndents]
*) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang}]])
end
return M
|