summaryrefslogtreecommitdiff
path: root/lua/nvim-treesitter/ts_utils.lua
diff options
context:
space:
mode:
authorStephan Seitz <stephan.seitz@fau.de>2020-08-22 20:46:40 +0200
committerThomas Vigouroux <39092278+vigoux@users.noreply.github.com>2020-08-31 18:56:41 +0200
commit5948aba886e8aad26043402684cf85c307813c4d (patch)
treeea402ab5c1468fb76c49a0e1f39a6c60b1260831 /lua/nvim-treesitter/ts_utils.lua
parentffe7d96dfda89857a757656ba9e4b079fff6e33f (diff)
feat(refactor.navigation): add navigation.goto_{next,previous}_usage
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