aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Coudron <mcoudron@hotmail.com>2021-03-23 23:32:45 +0100
committerThomas Vigouroux <tomvig38@gmail.com>2021-04-06 18:54:22 +0200
commit86ced59a6a5f9da137f75b98b5fc03b777255f52 (patch)
tree546a5f46dc4c831c3c31a1e7d7118ebfa621d3fa
parent11bea67a557397a52f881c935f3c85484bdfe121 (diff)
downloadrneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.tar.gz
rneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.tar.bz2
rneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.zip
feat: treesitter checkhealth
-rw-r--r--runtime/autoload/health/treesitter.vim5
-rw-r--r--runtime/lua/nvim/treesitter.lua32
2 files changed, 37 insertions, 0 deletions
diff --git a/runtime/autoload/health/treesitter.vim b/runtime/autoload/health/treesitter.vim
new file mode 100644
index 0000000000..5d3f62d2f5
--- /dev/null
+++ b/runtime/autoload/health/treesitter.vim
@@ -0,0 +1,5 @@
+function! health#treesitter#check() abort
+ call health#report_start('Checking treesitter configuration')
+ lua require 'nvim/treesitter'.check_health()
+endfunction
+
diff --git a/runtime/lua/nvim/treesitter.lua b/runtime/lua/nvim/treesitter.lua
new file mode 100644
index 0000000000..b3369b2e82
--- /dev/null
+++ b/runtime/lua/nvim/treesitter.lua
@@ -0,0 +1,32 @@
+local M = {}
+local ts = vim.treesitter
+
+function M.list_parsers()
+ return vim.api.nvim_get_runtime_file('parser/*', true)
+end
+
+function M.check_health()
+ local report_info = vim.fn['health#report_info']
+ local report_ok = vim.fn['health#report_ok']
+ local report_error = vim.fn['health#report_error']
+ local parsers = M.list_parsers()
+
+ report_info(string.format("Runtime ABI version : %d", ts.language_version))
+
+ for _, parser in pairs(parsers) do
+ local parsername = vim.fn.fnamemodify(parser, ":t:r")
+
+ local is_loadable, ret = pcall(ts.language.require_language, parsername)
+
+ if not is_loadable then
+ report_error(string.format("Impossible to load parser for %s: %s", parsername, ret))
+ elseif ret then
+ report_ok(string.format("Loaded parser for %s", parsername))
+ else
+ report_error(string.format("Unable to load parser for %s", parsername))
+ end
+ end
+end
+
+return M
+