-- DAP plugin stack: core client, UI, inline virtual text. -- Provides d keybindings and codelldb adapter configuration. return { { "mfussenegger/nvim-dap", dependencies = { "rcarriga/nvim-dap-ui", "theHamsta/nvim-dap-virtual-text", "nvim-neotest/nvim-nio", }, keys = { { "d", "", desc = "+debug", mode = { "n", "v" } }, { "db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" }, { "dB", function() require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: ")) end, desc = "Conditional Breakpoint" }, { "dc", function() require("dap").continue() end, desc = "Continue / Start" }, { "dC", function() require("dap").run_to_cursor() end, desc = "Run to Cursor" }, { "dg", function() require("dap").goto_() end, desc = "Go to Line (skip execution)" }, { "di", function() require("dap").step_into() end, desc = "Step Into" }, { "dj", function() require("dap").down() end, desc = "Frame Down" }, { "dk", function() require("dap").up() end, desc = "Frame Up" }, { "dl", function() require("dap").run_last() end, desc = "Run Last" }, { "do", function() require("dap").step_out() end, desc = "Step Out" }, { "dO", function() require("dap").step_over() end, desc = "Step Over" }, { "dp", function() require("dap").pause() end, desc = "Pause" }, { "dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" }, { "ds", function() require("dap").session() end, desc = "Session Info" }, { "dt", function() require("dap").terminate() end, desc = "Terminate" }, { "dw", function() require("dap.ui.widgets").hover() end, desc = "Hover Widget" }, { "du", function() require("dapui").toggle() end, desc = "Toggle DAP UI" }, { "de", function() require("dapui").eval() end, desc = "Evaluate Expression", mode = { "n", "v" } }, }, config = function() local dap = require("dap") local dapui = require("dapui") dapui.setup() dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end require("nvim-dap-virtual-text").setup() -- Adapter: connect to codelldb running on the "remote" container. -- codelldb listens as a DAP server on port 13000. dap.adapters.codelldb = { type = "server", host = "remote", port = 13000, } -- Debug configurations. dap.configurations.cpp = { { -- Remote launch: codelldb on the remote starts the program. -- Source paths in debug info (/project/src/...) match the -- devstation's filesystem, so nvim-dap opens source files -- correctly when stopped at a breakpoint. name = "Remote launch (codelldb remote:13000)", type = "codelldb", request = "launch", program = "/project/build/debugapp", cwd = "/project", stopOnEntry = false, }, } dap.configurations.c = dap.configurations.cpp end, }, }