diff options
author | TJ DeVries <devries.timothyj@gmail.com> | 2020-08-14 08:33:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-14 08:33:50 -0400 |
commit | aa48c1c724f7164485782a3a5a8ff7a94373f607 (patch) | |
tree | ae8374d26f1c1dd56fa0fe0df58be3c84e19fcc2 /runtime/lua/vim/treesitter/language.lua | |
parent | 94b7ff730a1914c14f347f5dc75175dc34a4b3f5 (diff) | |
parent | 6a8dcfab4b2bada9c68379ee17235974fa8ad411 (diff) | |
download | rneovim-aa48c1c724f7164485782a3a5a8ff7a94373f607.tar.gz rneovim-aa48c1c724f7164485782a3a5a8ff7a94373f607.tar.bz2 rneovim-aa48c1c724f7164485782a3a5a8ff7a94373f607.zip |
Merge pull request #12739 from vigoux/ts-refactor-predicates
treesitter: refactor
Diffstat (limited to 'runtime/lua/vim/treesitter/language.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/language.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/runtime/lua/vim/treesitter/language.lua b/runtime/lua/vim/treesitter/language.lua new file mode 100644 index 0000000000..a7e36a0b89 --- /dev/null +++ b/runtime/lua/vim/treesitter/language.lua @@ -0,0 +1,37 @@ +local a = vim.api + +local M = {} + +--- Asserts that the provided language is installed, and optionnaly provide a path for the parser +-- +-- Parsers are searched in the `parser` runtime directory. +-- +-- @param lang The language the parser should parse +-- @param path Optionnal path the parser is located at +function M.require_language(lang, path) + if vim._ts_has_language(lang) then + return true + end + if path == nil then + local fname = 'parser/' .. lang .. '.*' + local paths = a.nvim_get_runtime_file(fname, false) + if #paths == 0 then + -- TODO(bfredl): help tag? + error("no parser for '"..lang.."' language, see :help treesitter-parsers") + end + path = paths[1] + end + vim._ts_add_language(path, lang) +end + +--- Inspects the provided language. +-- +-- Inspecting provides some useful informations on the language like node names, ... +-- +-- @param lang The language. +function M.inspect_language(lang) + M.require_language(lang) + return vim._ts_inspect_language(lang) +end + +return M |