diff options
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/init.lua | 3 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins.lua | 8 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/tree-climber.lua | 18 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua | 29 |
4 files changed, 54 insertions, 4 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua index cbe4f14..11d976f 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua @@ -21,7 +21,8 @@ M.on_attach = function(client, bufnr) nmap("w", "<cmd>Telescope lsp_workspace_diagnostics<cr>", { desc = "Workspace Diagnostics" }) local nmap_goto = require("tobyvin.utils").create_map_group("n", "<leader>lg", { desc = "Goto", buffer = bufnr }) - nmap_goto("d", vim.lsp.buf.definition, { desc = "Definition" }) + -- disabled in favor of treesitter.refactor's goto-with-lsp-fallback + -- nmap_goto("d", vim.lsp.buf.definition, { desc = "Definition" }) nmap_goto("D", vim.lsp.buf.declaration, { desc = "Declaration" }) nmap_goto("i", vim.lsp.buf.implementation, { desc = "Implementation" }) nmap_goto("r", vim.lsp.buf.references, { desc = "References" }) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index 0aa87e4..e0a77b8 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -275,6 +275,14 @@ M.plugins = function(use) }) use({ + "drybalka/tree-climber.nvim", + requires = { "nvim-treesitter/nvim-treesitter" }, + config = function() + require("tobyvin.plugins.tree-climber").setup() + end, + }) + + use({ "ThePrimeagen/refactoring.nvim", requires = { "nvim-lua/plenary.nvim", diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/tree-climber.lua b/nvim/.config/nvim/lua/tobyvin/plugins/tree-climber.lua new file mode 100644 index 0000000..c569480 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/tree-climber.lua @@ -0,0 +1,18 @@ +local M = {} + +M.setup = function() + local status_ok, tree_climber = pcall(require, "tree-climber") + if not status_ok then + vim.notify("Failed to load module 'tree-climber'", "error") + return + end + + vim.keymap.set({ "n", "v", "o" }, "<s-h>", tree_climber.goto_parent, { desc = "Goto Parent" }) + vim.keymap.set({ "n", "v", "o" }, "<s-l>", tree_climber.goto_child, { desc = "Goto Child" }) + vim.keymap.set({ "n", "v", "o" }, "<s-j>", tree_climber.goto_next, { desc = "Goto Next" }) + vim.keymap.set({ "n", "v", "o" }, "<s-k>", tree_climber.goto_prev, { desc = "Goto Prev" }) + vim.keymap.set("n", "<c-k>", tree_climber.swap_prev, { desc = "Swap Prev" }) + vim.keymap.set("n", "<c-j>", tree_climber.swap_next, { desc = "Swap Next" }) +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua b/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua index e620c14..8925034 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/treesitter.lua @@ -8,20 +8,43 @@ M.setup = function() end treesitter.setup({ - ensure_installed = { "c", "lua", "rust", "latex" }, + ensure_installed = "all", indent = { enable = true, }, highlight = { enable = true, - additional_vim_regex_highlighting = false, + additional_vim_regex_highlighting = { "latex" }, + disable = function(_, bufnr) + return vim.api.nvim_buf_line_count(bufnr) > 2500 + end, + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "<CR>", + scope_incremental = "<CR>", + node_incremental = "<TAB>", + node_decremental = "<S-TAB>", + }, }, - -- TODO: add navagation with lsp fallback, requires setting keybinds for module manually refactor = { highlight_definitions = { enable = true, clear_on_cursor_move = true, }, + smart_rename = { + enable = true, + keymaps = { + smart_rename = "<leader>lr", + }, + }, + navigation = { + enable = true, + keymaps = { + goto_definition_lsp_fallback = "<leader>lgd", + }, + }, }, textobjects = { select = { |