mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
treesitter: add string parser (#13008)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user