diff options
Diffstat (limited to 'nvim')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/init.lua | 2 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins.lua | 12 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap.lua | 76 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua | 5 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua | 13 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua | 13 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/mason-nvim-dap.lua | 24 |
7 files changed, 109 insertions, 36 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua index 3bee629..5c7379a 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua @@ -40,6 +40,8 @@ lsp.on_attach = function(client, bufnr) lsp.formatting.on_attach(client, bufnr) lsp.symbol.on_attach(client, bufnr) require("lsp_signature").on_attach() + + vim.api.nvim_exec_autocmds("User", { pattern = "LspAttach", data = { client_id = client.id } }) end lsp.config = function(config) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index 0b7f7d0..b5543f9 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -456,6 +456,18 @@ M.plugins = function(use) }) use({ + "jayp0521/mason-nvim-dap.nvim", + after = { "mason.nvim", "nvim-dap" }, + requires = { + "williamboman/mason.nvim", + "mfussenegger/nvim-dap", + }, + config = function() + require("tobyvin.plugins.mason-nvim-dap").setup() + end, + }) + + use({ "theHamsta/nvim-dap-virtual-text", requires = { "mfussenegger/nvim-dap", diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua index c6a9ed9..58e5df5 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua @@ -158,37 +158,65 @@ M.setup = function() -- Language specific plugins require("dap-go").setup() + vim.api.nvim_create_autocmd("User", { + pattern = "DapAttach", + callback = function(args) + vim.keymap.set("n", "<leader>dc", dap.continue, { desc = "Continue", buffer = args.buf }) + vim.keymap.set("n", "<leader>da", dap.step_over, { desc = "Step Over", buffer = args.buf }) + vim.keymap.set("n", "<leader>di", dap.step_into, { desc = "Step Into", buffer = args.buf }) + vim.keymap.set("n", "<leader>do", dap.step_out, { desc = "Step Out", buffer = args.buf }) + vim.keymap.set("n", "<leader>dq", dap.terminate, { desc = "Terminate", buffer = args.buf }) + vim.keymap.set("n", "<F5>", dap.continue, { desc = "Continue", buffer = args.buf }) + vim.keymap.set("n", "<F10>", dap.step_over, { desc = "Step Over", buffer = args.buf }) + vim.keymap.set("n", "<F11>", dap.step_into, { desc = "Step Into", buffer = args.buf }) + vim.keymap.set("n", "<F12>", dap.step_out, { desc = "Step Out", buffer = args.buf }) + + local dap_ui_widgets = require("dap.ui.widgets") + M.lsp_hover = vim.lsp.handlers["textDocument/hover"] + vim.lsp.handlers["textDocument/hover"] = function(...) + if M.hover_available() then + dap_ui_widgets.hover() + else + M.lsp_hover(...) + end + end + end, + }) + + vim.api.nvim_create_autocmd("User", { + pattern = "DapDetach", + callback = function(args) + vim.keymap.del("n", "<leader>dc", { buffer = args.buf }) + vim.keymap.del("n", "<leader>da", { buffer = args.buf }) + vim.keymap.del("n", "<leader>di", { buffer = args.buf }) + vim.keymap.del("n", "<leader>do", { buffer = args.buf }) + vim.keymap.del("n", "<leader>dq", { buffer = args.buf }) + vim.keymap.del("n", "<F5>", { buffer = args.buf }) + vim.keymap.del("n", "<F10>", { buffer = args.buf }) + vim.keymap.del("n", "<F11>", { buffer = args.buf }) + vim.keymap.del("n", "<F12>", { buffer = args.buf }) + + if M.lsp_hover ~= nil then + vim.lsp.handlers["textDocument/hover"] = M.lsp_hover + M.lsp_hover = nil + end + end, + }) + + dap.listeners.after.event_initialized["User"] = function() + vim.api.nvim_exec_autocmds("User", { pattern = "DapAttach" }) + end + dap.listeners.before.event_terminated["User"] = function() + vim.api.nvim_exec_autocmds("User", { pattern = "DapDetach" }) + end + dap.listeners.before.event_progressStart["progress-notifications"] = M.progress_start dap.listeners.before.event_progressUpdate["progress-notifications"] = M.progress_update dap.listeners.before.event_progressEnd["progress-notifications"] = M.progress_end - dap.listeners.before.event_terminated["close_repl"] = dap.repl.close dap.listeners.before.event_exited["close_repl"] = dap.repl.close - local original_hover = vim.lsp.handlers["textDocument/hover"] - dap.listeners.after.event_initialized["keymap"] = function() - vim.lsp.handlers["textDocument/hover"] = function(...) - if M.hover_available() then - require("dap.ui.widgets").hover() - else - original_hover(...) - end - end - end - dap.listeners.before.event_terminated["keymap"] = function() - vim.lsp.handlers["textDocument/hover"] = original_hover - end - utils.keymap.group("n", "<leader>d", { desc = "Debug" }) - vim.keymap.set("n", "<F5>", dap.continue, { desc = "Continue" }) - vim.keymap.set("n", "<F10>", dap.step_over, { desc = "Step Over" }) - vim.keymap.set("n", "<F11>", dap.step_into, { desc = "Step Into" }) - vim.keymap.set("n", "<F12>", dap.step_out, { desc = "Step Out" }) - vim.keymap.set("n", "<leader>dc", dap.continue, { desc = "Continue" }) - vim.keymap.set("n", "<leader>da", dap.step_over, { desc = "Step Over" }) - vim.keymap.set("n", "<leader>di", dap.step_into, { desc = "Step Into" }) - vim.keymap.set("n", "<leader>do", dap.step_out, { desc = "Step Out" }) - vim.keymap.set("n", "<leader>dq", dap.terminate, { desc = "Terminate" }) vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { desc = "Toggle Breakpoint" }) vim.keymap.set("n", "<leader>dB", M.set_custom_breakpoint, { desc = "Custom Breakpoint" }) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua index 19d9049..604ec46 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua @@ -16,11 +16,13 @@ M.toggle_blameline = function() end M.on_attach = function(bufnr) - local gitsigns = require("gitsigns") + local gitsigns = package.loaded.gitsigns utils.keymap.group("n", "<leader>g", { desc = "Git", buffer = bufnr }) + vim.keymap.set("n", "<leader>gb", gitsigns.blame_line, { desc = "Show blame", buffer = bufnr }) vim.keymap.set("n", "<leader>gB", M.show_blameline, { desc = "Show blame", buffer = bufnr }) vim.keymap.set("n", "<leader>g<C-b>", M.toggle_blameline, { desc = "Toggle blame", buffer = bufnr }) + vim.keymap.set("n", "<leader>gj", gitsigns.next_hunk, { desc = "Next Hunk", buffer = bufnr }) vim.keymap.set("n", "<leader>gk", gitsigns.prev_hunk, { desc = "Prev Hunk", buffer = bufnr }) @@ -29,7 +31,6 @@ M.on_attach = function(bufnr) vim.keymap.set("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage Hunk", buffer = bufnr }) vim.keymap.set("n", "<leader>gu", gitsigns.undo_stage_hunk, { desc = "Undo Stage Hunk", buffer = bufnr }) - -- vim.keymap.set("n", "<leader>gP", gitsigns.preview_buffer, { desc = "Preview Buffer", buffer = bufnr }) vim.keymap.set("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset Buffer", buffer = bufnr }) vim.keymap.set("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage Buffer", buffer = bufnr }) vim.keymap.set("n", "<leader>gU", gitsigns.reset_buffer_index, { desc = "Undo Stage Buffer", buffer = bufnr }) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua b/nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua index e0b4ab6..9581d36 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua @@ -1,5 +1,9 @@ local M = {} +M.install = function() + require("mason-lspconfig.api.command").LspInstall({}) +end + M.setup = function() local status_ok, mason_lspconfig = pcall(require, "mason-lspconfig") if not status_ok then @@ -9,14 +13,13 @@ M.setup = function() mason_lspconfig.setup() - vim.api.nvim_create_autocmd("LspAttach", { + vim.api.nvim_create_autocmd("User", { + pattern = "LspAttach", callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) - if client.name == "null-ls" then - return + if client.name ~= "null-ls" then + vim.keymap.set("n", "<leader>lI", M.install, { desc = "LSP Install", buffer = args.buf }) end - local bufnr = args.buf - vim.keymap.set("n", "<leader>lI", "<CMD>LspInstall<CR>", { desc = "LSP Install", buffer = bufnr }) end, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua b/nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua index 1ac6496..b200bfa 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua @@ -1,5 +1,9 @@ local M = {} +M.install = function() + require("mason-null-ls.api.command").NullLsInstall({}) +end + M.setup = function() local status_ok, mason_null_ls = pcall(require, "mason-null-ls") if not status_ok then @@ -9,14 +13,13 @@ M.setup = function() mason_null_ls.setup() - vim.api.nvim_create_autocmd("LspAttach", { + vim.api.nvim_create_autocmd("User", { + pattern = "LspAttach", callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) - if client.name ~= "null-ls" then - return + if client.name == "null-ls" then + vim.keymap.set("n", "<leader>lN", M.install, { desc = "Null-LS Install", buffer = args.buf }) end - local bufnr = args.buf - vim.keymap.set("n", "<leader>lN", "<CMD>NullLsInstall<CR>", { desc = "Null-LS Install", buffer = bufnr }) end, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/mason-nvim-dap.lua b/nvim/.config/nvim/lua/tobyvin/plugins/mason-nvim-dap.lua new file mode 100644 index 0000000..3324bdd --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/mason-nvim-dap.lua @@ -0,0 +1,24 @@ +local M = {} + +M.install = function() + require("mason-nvim-dap.api.command").DapInstall({}) +end + +M.setup = function() + local status_ok, mason_nvim_dap = pcall(require, "mason-nvim-dap") + if not status_ok then + vim.notify("Failed to load module 'mason-nvim-dap'", vim.log.levels.ERROR) + return + end + + mason_nvim_dap.setup() + + vim.api.nvim_create_autocmd("User", { + pattern = "DapAttach", + callback = function(args) + vim.keymap.set("n", "<leader>dI", M.install, { desc = "Dap Install", buffer = args.buf }) + end, + }) +end + +return M |