# Debug Adapter Protocol client implementation for Neovim. { config, lib, ... }: { config.programs.nixvim = lib.mkIf config.development.nixvim.enable { plugins.dap = { enable = true; }; keymaps = [ # Core DAP controls { mode = "n"; key = "dc"; action = "lua require('dap').continue()"; options.desc = "Debug: Continue"; } { mode = "n"; key = "di"; action = "lua require('dap').step_into()"; options.desc = "Debug: Step Into"; } { mode = "n"; key = "do"; action = "lua require('dap').step_over()"; options.desc = "Debug: Step Over"; } { mode = "n"; key = "dO"; action = "lua require('dap').step_out()"; options.desc = "Debug: Step Out"; } { mode = "n"; key = "db"; action = "lua require('dap').toggle_breakpoint()"; options.desc = "Debug: Toggle Breakpoint"; } { mode = "n"; key = "dB"; action = "lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))"; options.desc = "Debug: Conditional Breakpoint"; } { mode = "n"; key = "dl"; action = "lua require('dap').run_last()"; options.desc = "Debug: Run Last"; } { mode = "n"; key = "dt"; action = "lua require('dap').terminate()"; options.desc = "Debug: Terminate"; } { mode = "n"; key = "dr"; action = "lua require('dap').repl.toggle()"; options.desc = "Debug: Toggle REPL"; } ]; }; }