summaryrefslogtreecommitdiff
path: root/lua/nvim-treesitter/health.lua
diff options
context:
space:
mode:
authorkiyan42 <yazdani.kiyan@protonmail.com>2020-04-20 22:33:13 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2020-04-21 13:38:16 +0200
commit698453e50ca1341245ff6c3f5303991a6f919342 (patch)
tree916f722c69f23c85247b65528a74ff9c17382f87 /lua/nvim-treesitter/health.lua
parent8b01b9caee849253713adbdf156a4dac843349a4 (diff)
feat: add checkhealth
Diffstat (limited to 'lua/nvim-treesitter/health.lua')
-rw-r--r--lua/nvim-treesitter/health.lua49
1 files changed, 49 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/health.lua b/lua/nvim-treesitter/health.lua
new file mode 100644
index 00000000..b5e86980
--- /dev/null
+++ b/lua/nvim-treesitter/health.lua
@@ -0,0 +1,49 @@
+local api = vim.api
+
+local install = require'nvim-treesitter.install'
+local queries = require'nvim-treesitter.query'
+local locals = require'nvim-treesitter.locals'
+
+local health_start = vim.fn["health#report_start"]
+local health_ok = vim.fn['health#report_ok']
+local health_info = vim.fn['health#report_info']
+local health_warn = vim.fn['health#report_warn']
+local health_error = vim.fn['health#report_error']
+
+local M = {}
+
+-- TODO(vigoux): Maybe we should move each check to be perform in its own module
+function M.checkhealth()
+ -- Installation dependency checks
+ health_start('Installation')
+ install.checkhealth()
+
+ local missing_parsers = {}
+ -- Parser installation checks
+ for parser_name, repo in pairs(install.repositories) do
+ local installed = #api.nvim_get_runtime_file('parser/'..parser_name..'.so', false)
+
+ -- Only print informations about installed parsers
+ if installed == 1 then
+ health_start(parser_name .. " parser healthcheck")
+ health_ok(parser_name .. " parser found.")
+
+ locals.checkhealth(parser_name)
+ 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 `:lua require'nvim-treesitter'.install_parser('language')`"})
+ end
+end
+
+return M