diff options
author | Matthieu Coudron <mcoudron@hotmail.com> | 2021-03-23 23:32:45 +0100 |
---|---|---|
committer | Thomas Vigouroux <tomvig38@gmail.com> | 2021-04-06 18:54:22 +0200 |
commit | 86ced59a6a5f9da137f75b98b5fc03b777255f52 (patch) | |
tree | 546a5f46dc4c831c3c31a1e7d7118ebfa621d3fa | |
parent | 11bea67a557397a52f881c935f3c85484bdfe121 (diff) | |
download | rneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.tar.gz rneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.tar.bz2 rneovim-86ced59a6a5f9da137f75b98b5fc03b777255f52.zip |
feat: treesitter checkhealth
-rw-r--r-- | runtime/autoload/health/treesitter.vim | 5 | ||||
-rw-r--r-- | runtime/lua/nvim/treesitter.lua | 32 |
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 + |