return { 'mfussenegger/nvim-dap', dependencies = { 'igorlfs/nvim-dap-view', 'kbenzie/mason.nvim', 'jay-babu/mason-nvim-dap.nvim', 'theHamsta/nvim-dap-virtual-text', 'Jorenar/nvim-dap-disasm', }, config = function() local dap = require('dap') -- Installation local debug_adapters = { 'codelldb', -- C/C++/Rust/Zig } if vim.fn.executable('pip') == 1 then table.insert(debug_adapters, 'python') -- Python end if vim.fn.executable('go') == 1 then table.insert(debug_adapters, 'delve') -- Go end require("mason-nvim-dap").setup({ ensure_installed = debug_adapters, handlers = {}, }) -- UI plugins require('dap-view').setup({}) require('nvim-dap-virtual-text').setup({}) require('dap-disasm').setup({ dapview_register = true, }) vim.api.nvim_create_autocmd({ "FileType" }, { pattern = { 'dap-float', }, callback = function(args) vim.keymap.set("n", "q", "q", { buffer = args.buf }) end, }) local widgets = require('dap.ui.widgets') -- Mappings vim.keymap.set('n', 'D', vim.cmd.DapViewToggle) vim.keymap.set('n', '', dap.continue) vim.keymap.set('n', '', dap.terminate) -- Shift-F5 vim.keymap.set('n', '', dap.toggle_breakpoint) vim.keymap.set('n', '', vim.cmd.DapViewWatch) -- Shift-F9 vim.keymap.set('n', '', dap.restart) -- Ctrl-Shift-F5 vim.keymap.set('n', '', dap.run_to_cursor) -- Ctrl-F10 vim.keymap.set('n', '', dap.step_into) vim.keymap.set('n', '', dap.step_out) -- Shift-F11 vim.keymap.set('n', '', dap.step_over) vim.keymap.set('n', 'K', widgets.hover) end, }