refactor!(debugger): remove dap-mode

BREAKING CHANGE: This removes dap-mode from the debugger module. Use
dape instead.

dap-mode was deprecated in b4bd368 when realgud was replaced with dape,
which has been excellent, so I want to focus this module's support on it
going forward.

Ref: b4bd368485
This commit is contained in:
Henrik Lissner
2025-09-16 12:07:54 -04:00
parent 979b3aa8c1
commit e0729fa7d7
3 changed files with 6 additions and 96 deletions

View File

@@ -12,16 +12,10 @@ debuggers.
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +lsp ::
*(This flag is deprecated)* Installs [[doom-package:dap-mode]] and
[[doom-package:dap-ui]]. Requires [[doom-module::tools lsp]] (not compatible with
Eglot).
/This module has no flags./
** Packages
- [[doom-package:dape]]
- if [[doom-module:+lsp]]
- [[doom-package:dap-mode]]
- [[doom-package:posframe]]
** Hacks
/No hacks documented for this module./

View File

@@ -1,25 +1,13 @@
;;; tools/debugger/autoload/debugger.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +debugger/start ()
"Start a debugger in the current project and buffer."
(interactive)
(call-interactively
(if (and (modulep! +lsp)
(bound-and-true-p lsp-mode)
(require 'dap-mode nil t))
#'dap-debug
#'dape)))
(defalias '+debugger/start #'dape)
;;;###autoload
(defun +debugger/quit ()
"Quit the active debugger session."
(interactive)
(if-let* ((conn (and (modulep! +lsp)
(require 'dap-mode nil t)
(dap--cur-session))))
(dap-disconnect conn)
(if-let* ((conn (and (featurep 'dape)
(dape--live-connection 'parent t))))
(dape-quit conn)
(user-error "No debugger session to quit"))))
(user-error "No debugger session to quit")))

View File

@@ -1,21 +1,5 @@
;;; tools/debugger/config.el -*- lexical-binding: t; -*-
(defvar +debugger--dap-alist
`(((:lang cc +lsp) :after ccls :require (dap-lldb dap-gdb-lldb))
((:lang elixir +lsp) :after elixir-mode :require dap-elixir)
((:lang go +lsp) :after go-mode :require dap-dlv-go)
((:lang gdscript +lsp) :after gdscript-mode :require dap-gdscript)
((:lang java +lsp) :after java-mode :require lsp-java)
((:lang php +lsp) :after php-mode :require dap-php)
((:lang python +lsp) :after python :require dap-python)
((:lang ruby +lsp) :after ruby-mode :require dap-ruby)
((:lang rust +lsp) :after rustic :require (dap-lldb dap-cpptools))
((:lang javascript +lsp)
:after (js2-mode typescript-mode)
:require (dap-node dap-chrome dap-firefox ,@(if (featurep :system 'windows) '(dap-edge)))))
"An alist mapping Doom modules to major mode and DAP packages.")
;;
;;; Packages
@@ -47,59 +31,3 @@
(defadvice! +debugger--make-directory-a (&optional file)
:before #'dape-breakpoint-save
(make-directory (file-name-directory (or file dape-default-breakpoints-file)) t)))
;; DEPRECATED
(use-package! dap-mode
:when (modulep! +lsp)
:when (modulep! :tools lsp -eglot)
:hook (dap-mode . dap-tooltip-mode)
:init
(setq dap-breakpoints-file (concat doom-data-dir "dap-breakpoints")
dap-utils-extension-path (concat doom-data-dir "dap-extension/"))
(after! lsp-mode (require 'dap-mode))
:config
(pcase-dolist (`((,category . ,modules) :after ,after :require ,libs)
+debugger--dap-alist)
(when (doom-module-active-p category (car modules) (cadr modules))
(dolist (lib (ensure-list after))
(with-eval-after-load lib
(mapc #'require (ensure-list libs))))))
(dap-mode 1)
(define-minor-mode +dap-running-session-mode
"A mode for adding keybindings to running sessions"
:init-value nil
:keymap (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-running-session-mode-map
"d" #'dap-hydra))
;; DEPRECATED
(use-package! dap-ui
:when (modulep! +lsp)
:when (modulep! :tools lsp -eglot)
:hook (dap-mode . dap-ui-mode)
:hook (dap-ui-mode . dap-ui-controls-mode))