diff options
author | Thomas Vigouroux <tomvig38@gmail.com> | 2020-09-30 15:32:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-30 09:32:43 -0400 |
commit | 3c5141d2cf359d9ac70799bb987482d753263782 (patch) | |
tree | 03fddee132f8d2e76e21a2582989d19048481c46 /runtime/lua/vim/treesitter.lua | |
parent | d5adc8c00e07b12403c99b7d3fbd6e20a51fa1e4 (diff) | |
download | rneovim-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.lua | 22 |
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 |