From a92a4e97ec9b14e61eefd4e81b581474c509f0a0 Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Mon, 13 May 2024 14:28:58 -0500 Subject: [PATCH] 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. --- lua/nvim-ts-autotag/internal.lua | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lua/nvim-ts-autotag/internal.lua b/lua/nvim-ts-autotag/internal.lua index 16dada3..41616fc 100644 --- a/lua/nvim-ts-autotag/internal.lua +++ b/lua/nvim-ts-autotag/internal.lua @@ -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("", 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