aboutsummaryrefslogtreecommitdiffstats
path: root/modules/development/nixvim/plugins/dap.nix
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@gmail.com>2026-09-15 04:10:04 +0530
committerArpit Chakladar <arpitchakladar@gmail.com>2026-09-15 04:10:04 +0530
commit61d7d04c916f1bc84058cc6043f14006522a9ede (patch)
tree5f321efe0c7087deceeb86d07ce495a80c6105cd /modules/development/nixvim/plugins/dap.nix
parent2368e5019ab0f5584443b920d057723029d67b75 (diff)
parent97069824b7ce38398bd03bc936d613998959b9be (diff)
downloadhome-manager-config-61d7d04c916f1bc84058cc6043f14006522a9ede.tar.gz
home-manager-config-61d7d04c916f1bc84058cc6043f14006522a9ede.zip
Merge branch 'nixvim-new-features'
Diffstat (limited to 'modules/development/nixvim/plugins/dap.nix')
-rw-r--r--modules/development/nixvim/plugins/dap.nix81
1 files changed, 81 insertions, 0 deletions
diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix
new file mode 100644
index 0000000..02bffa6
--- /dev/null
+++ b/modules/development/nixvim/plugins/dap.nix
@@ -0,0 +1,81 @@
+# 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 = "<leader>dc";
+ action = "<cmd>lua require('dap').continue()<CR>";
+ options.desc = "Debug: Continue";
+ }
+ {
+ mode = "n";
+ key = "<leader>di";
+ action = "<cmd>lua require('dap').step_into()<CR>";
+ options.desc = "Debug: Step Into";
+ }
+ {
+ mode = "n";
+ key = "<leader>do";
+ action = "<cmd>lua require('dap').step_over()<CR>";
+ options.desc = "Debug: Step Over";
+ }
+ {
+ mode = "n";
+ key = "<leader>dO";
+ action = "<cmd>lua require('dap').step_out()<CR>";
+ options.desc = "Debug: Step Out";
+ }
+ {
+ mode = "n";
+ key = "<leader>db";
+ action = "<cmd>lua require('dap').toggle_breakpoint()<CR>";
+ options.desc = "Debug: Toggle Breakpoint";
+ }
+ {
+ mode = "n";
+ key = "<leader>dB";
+ action = "<cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>";
+ options.desc = "Debug: Conditional Breakpoint";
+ }
+ {
+ mode = "n";
+ key = "<leader>dl";
+ action = "<cmd>lua require('dap').run_last()<CR>";
+ options.desc = "Debug: Run Last";
+ }
+ {
+ mode = "n";
+ key = "<leader>dt";
+ action = "<cmd>lua require('dap').terminate()<CR>";
+ options.desc = "Debug: Terminate";
+ }
+ {
+ mode = "n";
+ key = "<leader>dr";
+ action = "<cmd>lua require('dap').repl.toggle()<CR>";
+ options.desc = "Debug: Toggle REPL";
+ }
+ ];
+
+ # Auto open/close dap-ui with the debug session lifecycle
+ extraConfigLua = ''
+ local dap, dapui = require("dap"), require("dapui")
+ 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
+ '';
+ };
+}