{ plugins.dap = { enable = true; extensions = { dap-ui.enable = true; dap-virtual-text.enable = true; }; adapters = { executables = { gdb = { command = "gdb"; args = [ "-i" "dap" ]; }; }; }; configurations = { c = [ { name = "Launch"; type = "gdb"; request = "launch"; program.__raw = # lua '' function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. '/', "file") end ''; args.__raw = # lua '' function() return vim.fn.input("Args: ", "", "file") end ''; cwd = ''''${workspacefolder}''; stopOnEntry = false; } ]; }; }; keymaps = [ { mode = "n"; key = "db"; action = ":DapToggleBreakpoint"; options.desc = "Toggle Breakpoint"; } { mode = "n"; key = "dc"; action = ":DapContinue"; options.desc = "Continue"; } { mode = "n"; key = "da"; action = "lua require('dap').continue({ before = get_args })"; options = { silent = true; desc = "Run with Args"; }; } { mode = "n"; key = "dC"; action = "lua require('dap').run_to_cursor()"; options = { silent = true; desc = "Run to cursor"; }; } { mode = "n"; key = "dg"; action = "lua require('dap').goto_()"; options = { silent = true; desc = "Go to line (no execute)"; }; } { mode = "n"; key = "di"; action = ":DapStepInto"; options = { silent = true; desc = "Step into"; }; } { mode = "n"; key = "dj"; action = " lua require('dap').down() "; options = { silent = true; desc = "Down"; }; } { mode = "n"; key = "dk"; action = "lua require('dap').up()"; options = { silent = true; desc = "Up"; }; } { mode = "n"; key = "dl"; action = "lua require('dap').run_last()"; options = { silent = true; desc = "Run Last"; }; } { mode = "n"; key = "do"; action = ":DapStepOut"; options = { silent = true; desc = "Step Out"; }; } { mode = "n"; key = "dO"; action = ":DapStepOver"; options = { silent = true; desc = "Step Over"; }; } { mode = "n"; key = "dp"; action = "lua require('dap').pause()"; options = { silent = true; desc = "Pause"; }; } { mode = "n"; key = "dr"; action = ":DapToggleRepl"; options = { silent = true; desc = "Toggle REPL"; }; } { mode = "n"; key = "ds"; action = "lua require('dap').session()"; options = { silent = true; desc = "Session"; }; } { mode = "n"; key = "dt"; action = ":DapTerminate"; options = { silent = true; desc = "Terminate"; }; } { mode = "n"; key = "du"; action.__raw = # lua '' function() require("dapui").toggle() end ''; options = { desc = "Toggle Debugger UI"; silent = true; }; } ]; }