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/refactor/navigation.lua | |
| parent | ffe7d96dfda89857a757656ba9e4b079fff6e33f (diff) | |
feat(refactor.navigation): add navigation.goto_{next,previous}_usage
Diffstat (limited to 'lua/nvim-treesitter/refactor/navigation.lua')
| -rw-r--r-- | lua/nvim-treesitter/refactor/navigation.lua | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lua/nvim-treesitter/refactor/navigation.lua b/lua/nvim-treesitter/refactor/navigation.lua index 185cce89..98ef3780 100644 --- a/lua/nvim-treesitter/refactor/navigation.lua +++ b/lua/nvim-treesitter/refactor/navigation.lua @@ -12,14 +12,10 @@ function M.goto_definition(bufnr) local bufnr = bufnr or api.nvim_get_current_buf() local node_at_point = ts_utils.get_node_at_cursor() - utils.set_jump() - if not node_at_point then return end local definition, _ = locals.find_definition(node_at_point, bufnr) - local start_row, start_col, _ = definition:start() - - api.nvim_win_set_cursor(0, { start_row + 1, start_col }) + ts_utils.goto_node(definition) end function M.list_definitions(bufnr) @@ -48,6 +44,25 @@ function M.list_definitions(bufnr) api.nvim_command('copen') end +function M.goto_adjacent_usage(bufnr, delta) + local bufnr = bufnr or api.nvim_get_current_buf() + local node_at_point = ts_utils.get_node_at_cursor() + if not node_at_point then return end + + local def_node, scope = locals.find_definition(node_at_point, bufnr) + local usages = locals.find_usages(def_node, scope, bufnr) + + local index = utils.index_of(usages, node_at_point) + if not index then return end + + local target_index = (index + delta + #usages - 1) % #usages + 1 + ts_utils.goto_node(usages[target_index]) + return usages[target_index] +end + +function M.goto_next_usage(bufnr) return M.goto_adjacent_usage(bufnr, 1) end +function M.goto_previous_usage(bufnr) return M.goto_adjacent_usage(bufnr, -1) end + function M.attach(bufnr) local config = configs.get_module('refactor.navigation') |
