summaryrefslogtreecommitdiff
path: root/lua/nvim-treesitter/ts_utils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-treesitter/ts_utils.lua')
-rw-r--r--lua/nvim-treesitter/ts_utils.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/lua/nvim-treesitter/ts_utils.lua b/lua/nvim-treesitter/ts_utils.lua
index 52fdd0fc..6647cc96 100644
--- a/lua/nvim-treesitter/ts_utils.lua
+++ b/lua/nvim-treesitter/ts_utils.lua
@@ -276,4 +276,24 @@ function M.swap_nodes(node_or_range1, node_or_range2, bufnr, cursor_to_second)
end
end
+function M.goto_node(node, goto_end, avoid_set_jump)
+ if not node then return end
+ if not avoid_set_jump then
+ utils.set_jump()
+ end
+ local range = {node:range()}
+ local position
+ if not goto_end then
+ position = { range[1], range[2] }
+ else
+ -- ranges are exclusive: -1 character!
+ if range[4] == 0 then
+ position = { range[3] - 1, -1 }
+ else
+ position = { range[3], range[4] - 1 }
+ end
+ end
+ api.nvim_win_set_cursor(0, { position[1] + 1, position[2] })
+end
+
return M