return { 'mfussenegger/nvim-dap', dependencies = { 'rcarriga/nvim-dap-ui', 'theHamsta/nvim-dap-virtual-text', 'nvim-neotest/nvim-nio', 'williamboman/mason.nvim', 'jay-babu/mason-nvim-dap.nvim' }, config = function() local dap = require("dap") local ui = require("dapui") require("dapui").setup() require("nvim-dap-virtual-text").setup() require("mason").setup() require("mason-nvim-dap").setup({ensure_installed = {"codelldb"}}) dap.adapters.codelldb = { type = "executable", command = "codelldb" -- or if not in $PATH: "/absolute/path/to/codelldb" } dap.configurations.cpp = { { name = "Launch file", type = "codelldb", request = "launch", program = function() return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end, cwd = '${workspaceFolder}', stopOnEntry = false } } dap.listeners.before.attach.dapui_config = function() ui.open() end dap.listeners.before.launch.dapui_config = function() ui.open() end dap.listeners.before.event_terminated.dapui_config = function() ui.close() end dap.listeners.before.event_exited.dapui_config = function() ui.close() end vim.keymap.set("n", "b", function() require("dap").toggle_breakpoint() end) vim.keymap.set("n", "gb", function() require("dap").run_to_cursor() end) vim.keymap.set("n", "B", function() local condition = vim.fn.input("Conditional breakpoint: ") require("dap").toggle_breakpoint(condition) end) -- Eval var under cursor vim.keymap.set("n", "?", function() require("dapui").eval(nil, {enter = true}) end) -- Use mT to start a new session vim.keymap.set("n", "mT", function() require("dap").continue() end) -- Use F1 to continue vim.keymap.set("n", "", function() require("dap").continue() end) vim.keymap.set("n", "", function() require("dap").step_over() end) vim.keymap.set("n", "", function() require("dap").step_into() end) vim.keymap.set("n", "", function() require("dap").step_out() end) vim.keymap.set("n", "", function() require("dap").step_back() end) end }