aboutsummaryrefslogtreecommitdiff
path: root/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-06-10 02:24:31 +0200
committerMosder <xmosder12@gmail.com>2026-06-10 02:24:31 +0200
commit1f2824b912b22a687fb0f1c56f82198128bef1ca (patch)
treea22c4425c43fcd111c441531b21e275b1fd97f3f /common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
parenta7fab53f802c8bacfce66fb3455145835e231460 (diff)
added and updated a lot of configs + refactored it to be more accessible
Diffstat (limited to 'common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua')
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua95
1 files changed, 95 insertions, 0 deletions
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
new file mode 100644
index 0000000..db5448c
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
@@ -0,0 +1,95 @@
+-- debug.lua
+--
+-- Shows how to use the DAP plugin to debug your code.
+--
+-- Primarily focused on configuring the debugger for Go, but can
+-- be extended to other languages as well. That's why it's called
+-- kickstart.nvim and not kitchen-sink.nvim ;)
+
+vim.pack.add {
+ 'https://github.com/mfussenegger/nvim-dap',
+ 'https://github.com/rcarriga/nvim-dap-ui',
+ 'https://github.com/nvim-neotest/nvim-nio',
+ 'https://github.com/mason-org/mason.nvim',
+ 'https://github.com/jay-babu/mason-nvim-dap.nvim',
+ 'https://github.com/leoluz/nvim-dap-go',
+}
+
+-- Basic debugging keymaps, feel free to change to your liking!
+vim.keymap.set('n', '<F5>', function() require('dap').continue() end, { desc = 'Debug: Start/Continue' })
+vim.keymap.set('n', '<F1>', function() require('dap').step_into() end, { desc = 'Debug: Step Into' })
+vim.keymap.set('n', '<F2>', function() require('dap').step_over() end, { desc = 'Debug: Step Over' })
+vim.keymap.set('n', '<F3>', function() require('dap').step_out() end, { desc = 'Debug: Step Out' })
+vim.keymap.set('n', '<leader>b', function() require('dap').toggle_breakpoint() end, { desc = 'Debug: Toggle Breakpoint' })
+vim.keymap.set('n', '<leader>B', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, { desc = 'Debug: Set Breakpoint' })
+-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
+vim.keymap.set('n', '<F7>', function() require('dapui').toggle() end, { desc = 'Debug: See last session result.' })
+
+local dap = require 'dap'
+local dapui = require 'dapui'
+
+require('mason-nvim-dap').setup {
+ -- Makes a best effort to setup the various debuggers with
+ -- reasonable debug configurations
+ automatic_installation = true,
+
+ -- You can provide additional configuration to the handlers,
+ -- see mason-nvim-dap README for more information
+ handlers = {},
+
+ -- You'll need to check that you have the required things installed
+ -- online, please don't ask me how to install them :)
+ ensure_installed = {
+ -- Update this to ensure that you have the debuggers for the langs you want
+ 'delve',
+ },
+}
+
+-- Dap UI setup
+-- For more information, see |:help nvim-dap-ui|
+---@diagnostic disable-next-line: missing-fields
+dapui.setup {
+ -- Set icons to characters that are more likely to work in every terminal.
+ -- Feel free to remove or use ones that you like more! :)
+ -- Don't feel like these are good choices.
+ icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
+ ---@diagnostic disable-next-line: missing-fields
+ controls = {
+ icons = {
+ pause = '⏸',
+ play = '▶',
+ step_into = '⏎',
+ step_over = '⏭',
+ step_out = '⏮',
+ step_back = 'b',
+ run_last = '▶▶',
+ terminate = '⏹',
+ disconnect = '⏏',
+ },
+ },
+}
+
+-- Change breakpoint icons
+-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
+-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
+-- local breakpoint_icons = vim.g.have_nerd_font
+-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
+-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
+-- for type, icon in pairs(breakpoint_icons) do
+-- local tp = 'Dap' .. type
+-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
+-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
+-- end
+
+dap.listeners.after.event_initialized['dapui_config'] = dapui.open
+dap.listeners.before.event_terminated['dapui_config'] = dapui.close
+dap.listeners.before.event_exited['dapui_config'] = dapui.close
+
+-- Install golang specific config
+require('dap-go').setup {
+ delve = {
+ -- On Windows delve must be run attached or it crashes.
+ -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
+ detached = vim.fn.has 'win32' == 0,
+ },
+}