fix: force a full reparse of ts source

PERF: This will impact performance, something to keep an eye on.

Prior to this commit, some parsers like php were failing in tests. By
forcing a full reparse, the php parser among others get the correct
tree.
This commit is contained in:
Price Hiller 2024-05-13 14:28:58 -05:00
parent 81d0c78475
commit a92a4e97ec
Signed by: Price
GPG Key ID: C3FADDE7A8534BEB

View File

@ -256,13 +256,6 @@ local function find_tag_node(opt)
local name_tag_pattern = opt.name_tag_pattern
local skip_tag_pattern = opt.skip_tag_pattern
local find_child = opt.find_child or false
--- PERF: Some parsers don't seemingly pick up their trees correctly, so we have to reparse the
--- entire source. This is slow, see if we can avoid this.
if target and target:has_changes() then
local parser = vim.treesitter.get_parser()
_ = (parser and parser:parse(true) or nil)
target = ts_utils.get_node_at_cursor()
end
local node
if find_child then
node = find_child_match({
@ -381,7 +374,7 @@ M.close_tag = function()
if not buf_parser then
return
end
buf_parser:parse()
buf_parser:parse(true)
local result, tag_name = check_close_tag()
if result == true and tag_name ~= nil then
vim.api.nvim_put({ string.format("</%s>", tag_name) }, "", true, false)
@ -394,7 +387,7 @@ M.close_slash_tag = function()
if not buf_parser then
return
end
buf_parser:parse()
buf_parser:parse(true)
local result, tag_name = check_close_tag(true)
if result == true and tag_name ~= nil then
vim.api.nvim_put({ string.format("%s>", tag_name) }, "", true, true)
@ -564,7 +557,7 @@ local is_before_arrow = is_before("<", 0)
M.rename_tag = function()
if is_before_word() and parsers.has_parser() then
parsers.get_parser():parse()
parsers.get_parser():parse(true)
rename_start_tag()
rename_end_tag()
end