treesitter: add string parser (#13008)

This commit is contained in:
Thomas Vigouroux
2020-09-30 15:32:43 +02:00
committed by GitHub
parent d5adc8c00e
commit 3c5141d2cf
4 changed files with 114 additions and 35 deletions

View File

@@ -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