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') local debug_adapters = { 'codelldb', -- C/C++/Rust/Zig } if vim.fn.executable('pip') == 1 then for _, package in ipairs({ 'python', -- Python }) do table.insert(debug_adapters, package) end end if vim.fn.executable('go') == 1 then for _, package in ipairs({ 'delve', -- Go }) do table.insert(debug_adapters, package) end end require("mason-nvim-dap").setup({ ensure_installed = debug_adapters, handlers = {}, }) -- UI plugins require('dap-view').setup({}) 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') 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.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, }