return { 'mfussenegger/nvim-dap', dependencies = { -- Creates a beautiful debugger UI 'rcarriga/nvim-dap-ui', -- Required dependency for nvim-dap-ui 'nvim-neotest/nvim-nio', -- Installs the debug adapters for you 'williamboman/mason.nvim', 'jay-babu/mason-nvim-dap.nvim', -- Add your own debuggers here 'leoluz/nvim-dap-go', }, config = function() local dap = require 'dap' local dapui = require 'dapui' require('mason-nvim-dap').setup { automatic_installation = true, -- see mason-nvim-dap README for more information handlers = {}, ensure_installed = { 'netcoredbg', 'codelldb', }, } vim.keymap.set('n', '', dap.continue, { desc = 'Debug: Start/Continue' }) vim.keymap.set('n', '', dap.step_into, { desc = 'Debug: Step Into' }) vim.keymap.set('n', '', dap.step_over, { desc = 'Debug: Step Over' }) vim.keymap.set('n', '', dap.step_out, { desc = 'Debug: Step Out' }) vim.keymap.set('n', 'b', dap.toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' }) vim.keymap.set('n', 'B', function() dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, { desc = 'Debug: Set Breakpoint' }) -- Dap UI setup -- For more information, see |:help nvim-dap-ui| dapui.setup { layouts = { { -- You can change the order of elements in the sidebar elements = { -- Provide IDs as strings or tables with "id" and "size" keys { id = 'scopes', size = 0.35, -- Can be float or integer > 1 }, { id = 'breakpoints', size = 0.25 }, { id = 'stacks', size = 0.25 }, { id = 'watches', size = 0.25 }, }, size = 40, position = 'left', -- Can be "left" or "right" }, { elements = { 'repl', 'console', }, size = 15, position = 'bottom', -- Can be "bottom" or "top" }, }, icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, controls = { icons = { pause = '⏸', play = '▶', step_into = '⏎', step_over = '⏭', step_out = '⏮', step_back = 'b', run_last = '▶▶', terminate = '⏹', disconnect = '⏏', }, }, } -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. vim.keymap.set('n', '', dapui.toggle, { desc = 'Debug: See last session result.' }) 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 end, }