aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter.lua
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2020-09-30 15:32:43 +0200
committerGitHub <noreply@github.com>2020-09-30 09:32:43 -0400
commit3c5141d2cf359d9ac70799bb987482d753263782 (patch)
tree03fddee132f8d2e76e21a2582989d19048481c46 /runtime/lua/vim/treesitter.lua
parentd5adc8c00e07b12403c99b7d3fbd6e20a51fa1e4 (diff)
downloadrneovim-3c5141d2cf359d9ac70799bb987482d753263782.tar.gz
rneovim-3c5141d2cf359d9ac70799bb987482d753263782.tar.bz2
rneovim-3c5141d2cf359d9ac70799bb987482d753263782.zip
treesitter: add string parser (#13008)
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r--runtime/lua/vim/treesitter.lua22
1 files changed, 21 insertions, 1 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua
index 3a475b8f98..77bbfaa3ad 100644
--- a/runtime/lua/vim/treesitter.lua
+++ b/runtime/lua/vim/treesitter.lua
@@ -21,7 +21,9 @@ function Parser:parse()
return self.tree
end
local changes
- self.tree, changes = self._parser:parse_buf(self.bufnr)
+
+ self.tree, changes = self._parser:parse(self:input_source())
+
self.valid = true
if not vim.tbl_isempty(changes) then
@@ -33,6 +35,10 @@ function Parser:parse()
return self.tree, changes
end
+function Parser:input_source()
+ return self.bufnr or self.str
+end
+
function Parser:_on_bytes(bufnr, changed_tick,
start_row, start_col, start_byte,
old_row, old_col, old_byte,
@@ -152,4 +158,18 @@ function M.get_parser(bufnr, lang, buf_attach_cbs)
return parsers[id]
end
+function M.get_string_parser(str, lang)
+ vim.validate {
+ str = { str, 'string' },
+ lang = { lang, 'string' }
+ }
+ language.require_language(lang)
+
+ local self = setmetatable({str=str, lang=lang, valid=false}, Parser)
+ self._parser = vim._create_ts_parser(lang)
+ self:parse()
+
+ return self
+end
+
return M