From bf4929f4df73beebcb7924a59f6c758f85775245 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 20 Aug 2020 17:23:45 -0400 Subject: [PATCH] Fix #3760: bind SPC m d only when debugger is active --- modules/tools/debugger/config.el | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index c9e870584..b23a322d6 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -120,8 +120,31 @@ (dap-mode 1) + (define-minor-mode +dap-running-session-mode + "A mode for adding keybindings to running sessions" + nil nil (make-sparse-keymap) + (when (bound-and-true-p evil-mode) + (evil-normalize-keymaps)) ; if you use evil, this is necessary to update the keymaps + ;; The following code adds to the dap-terminated-hook so that this minor + ;; mode will be deactivated when the debugger finishes + (when +dap-running-session-mode + (let ((session-at-creation (dap--cur-active-session-or-die))) + (add-hook 'dap-terminated-hook + (lambda (session) + (when (eq session session-at-creation) + (+dap-running-session-mode -1))))))) + + ;; Activate this minor mode when dap is initialized + (add-hook 'dap-session-created-hook #'+dap-running-session-mode) + ;; Activate this minor mode when hitting a breakpoint in another file + (add-hook 'dap-stopped-hook #'+dap-running-session-mode) + ;; Activate this minor mode when stepping into code in another file + (add-hook 'dap-stack-frame-changed-hook (lambda (session) + (when (dap--session-running session) + (+dap-running-session-mode 1)))) + (map! :localleader - :map dap-mode-map + :map +dap-running-session-mode "d" #'dap-hydra))