diff options
| author | Stephan Seitz <stephan.seitz@fau.de> | 2020-08-22 20:46:40 +0200 |
|---|---|---|
| committer | Thomas Vigouroux <39092278+vigoux@users.noreply.github.com> | 2020-08-31 18:56:41 +0200 |
| commit | 5948aba886e8aad26043402684cf85c307813c4d (patch) | |
| tree | ea402ab5c1468fb76c49a0e1f39a6c60b1260831 /lua/nvim-treesitter/ts_utils.lua | |
| parent | ffe7d96dfda89857a757656ba9e4b079fff6e33f (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.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 |
