diff options
Diffstat (limited to 'lua/nvim-treesitter/ts_utils.lua')
| -rw-r--r-- | lua/nvim-treesitter/ts_utils.lua | 20 |
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 |
