summaryrefslogtreecommitdiffstatshomepage
path: root/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'nvim')
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/init.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins.lua12
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap.lua76
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua5
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/mason-lspconfig.lua13
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/mason-null-ls.lua13
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/mason-nvim-dap.lua24
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