summaryrefslogtreecommitdiff
path: root/lua/nvim-treesitter/parsers.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-treesitter/parsers.lua')
-rw-r--r--lua/nvim-treesitter/parsers.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
new file mode 100644
index 00000000..c8517773
--- /dev/null
+++ b/lua/nvim-treesitter/parsers.lua
@@ -0,0 +1,21 @@
+local api = vim.api
+local ts = vim.treesitter
+
+local M = {}
+
+function M.has_parser(lang)
+ local lang = lang or api.nvim_buf_get_option(0, 'filetype')
+ return #api.nvim_get_runtime_file('parser/' .. lang .. '.*', false) > 0
+end
+
+function M.get_parser(bufnr)
+ if M.has_parser() then
+ local buf = bufnr or api.nvim_get_current_buf()
+ if not M[buf] then
+ M[buf] = ts.get_parser(buf)
+ end
+ return M[buf]
+ end
+end
+
+return M