return { 'mfussenegger/nvim-dap', dependencies = { 'igorlfs/nvim-dap-view', 'kbenzie/mason.nvim', 'jay-babu/mason-nvim-dap.nvim', 'theHamsta/nvim-dap-virtual-text', }, 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({ winbar = { sections = { "console", "watches", "scopes", "exceptions", "breakpoints", "threads", "repl", }, -- Must be one of the sections declared above default_section = "console", } }) require('nvim-dap-virtual-text').setup({}) 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', '', 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, }