Skip to content

Commit 3427645

Browse files
committed
Hl Usages: don't calculate definitions again if on the same node
Closes nvim-treesitter#21
1 parent 1a377fa commit 3427645

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

Diff for: lua/nvim-treesitter-refactor/highlight_definitions.lua

+13-5
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,19 @@ local cmd = api.nvim_command
99
local M = {}
1010

1111
local usage_namespace = api.nvim_create_namespace('nvim-treesitter-usages')
12+
local last_node = nil
1213

1314
function M.highlight_usages(bufnr)
14-
M.clear_usage_highlights(bufnr)
15-
1615
local node_at_point = ts_utils.get_node_at_cursor()
17-
local references = locals.get_references(bufnr)
16+
-- Don't calculate usages again if we are on the same node.
17+
if node_at_point == last_node and M.has_highlights(bufnr) then
18+
return
19+
else
20+
last_node = node_at_point
21+
end
1822

23+
M.clear_usage_highlights(bufnr)
24+
local references = locals.get_references(bufnr)
1925
if not node_at_point or not vim.tbl_contains(references, node_at_point) then
2026
return
2127
end
@@ -34,6 +40,10 @@ function M.highlight_usages(bufnr)
3440
end
3541
end
3642

43+
function M.has_highlights(bufnr)
44+
return #api.nvim_buf_get_extmarks(bufnr, usage_namespace, 0, -1, {}) > 0
45+
end
46+
3747
function M.clear_usage_highlights(bufnr)
3848
api.nvim_buf_clear_namespace(bufnr, usage_namespace, 0, -1)
3949
end
@@ -43,7 +53,6 @@ function M.attach(bufnr)
4353
cmd 'au!'
4454
-- luacheck: push ignore 631
4555
cmd(string.format([[autocmd CursorHold <buffer=%d> lua require'nvim-treesitter-refactor.highlight_definitions'.highlight_usages(%d)]], bufnr, bufnr))
46-
cmd(string.format([[autocmd CursorMoved <buffer=%d> lua require'nvim-treesitter-refactor.highlight_definitions'.clear_usage_highlights(%d)]], bufnr, bufnr))
4756
cmd(string.format([[autocmd InsertEnter <buffer=%d> lua require'nvim-treesitter-refactor.highlight_definitions'.clear_usage_highlights(%d)]], bufnr, bufnr))
4857
-- luacheck: pop
4958
cmd 'augroup END'
@@ -52,7 +61,6 @@ end
5261
function M.detach(bufnr)
5362
M.clear_usage_highlights(bufnr)
5463
cmd(string.format('autocmd! NvimTreesitterUsages_%d CursorHold', bufnr))
55-
cmd(string.format('autocmd! NvimTreesitterUsages_%d CursorMoved', bufnr))
5664
cmd(string.format('autocmd! NvimTreesitterUsages_%d InsertEnter', bufnr))
5765
end
5866

0 commit comments

Comments
 (0)