mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-18 16:06:56 -05:00
refactor!(debugger): remove dap-mode
BREAKING CHANGE: This removes dap-mode from the debugger module. Use dape instead. dap-mode was deprecated inb4bd368
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:
@@ -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./
|
||||
|
@@ -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")))
|
||||
|
@@ -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))
|
||||
|
Reference in New Issue
Block a user