[Feature Request] Add a fine-grained debug options transient
- Dominant language
- Emacs Lisp
- Stars
- 22.7k
- Forks
- 3.1k
- Avg merge
- 10h 46m
- Merged PRs (30d)
- 4
Description
We should add a more fine-grained debug toggle. Take for example this transient I wrote for my config:
```elisp
(require 'transient)
(require 'debug)
(defmacro cae-debug-define-toggle-command (name var)
"Define a transient toggle command for debugging variable VAR with NAME."
(let ((func-name (intern (concat "cae-debug-toggle-" name))))
`(transient-define-suffix ,func-name ()
,(format "Toggle `%s'." var)
:description (lambda ()
(format "Toggle %s [%s]" ',var (if ,var "ON" "OFF")))
(interactive)
(setq ,var (not ,var))
(message "%s is now %s" ',var (if ,var "ON" "OFF")))))
(transient-define-suffix cae-debug-set-debug-on-message ()
"Set `debug-on-message' to a regular expression."
:description (lambda ()
(format "Set debug-on-message [%s]" (if debug-on-message debug-on-message "None")))
(interactive)
(let ((regexp (read-regexp "Set debug-on-message to regexp: ")))
(customize-set-variable 'debug-on-message
(if (string= regexp "") nil regexp))))
(cae-debug-define-toggle-command "debug-on-error" debug-on-error)
(cae-debug-define-toggle-command "debug-on-quit" debug-on-quit)
(cae-debug-define-toggle-command "debug-on-signal" debug-on-signal)
(cae-debug-define-toggle-command "debug-allow-recursive-debug" debug-allow-recursive-debug)
(cae-debug-define-toggle-command "backtrace-on-redisplay-error" backtrace-on-redisplay-error)
(transient-define-suffix cae-debug-toggle-doom-debug-mode ()
"Toggle `doom-debug-mode`."
:description (lambda ()
(format "Toggle doom-debug-mode [%s]" (if doom-debug-mode "ON" "OFF")))
(interactive)
(doom-debug-mode 'toggle)
(message "doom-debug-mode is now %s" (if doom-debug-mode "ON" "OFF"))
(transient-setup 'cae-debug-transient))
;;;###autoload (autoload 'cae-debug-transient "autoload/cae-debug" nil t)
(transient-define-prefix cae-debug-transient ()
"Set and toggle debugging options."
["Debugging Options"
("m" cae-debug-set-debug-on-message :transient t)
("e" cae-debug-toggle-debug-on-error :transient t)
("q" cae-debug-toggle-debug-on-quit :transient t)
("s" cae-debug-toggle-debug-on-signal :transient t)
("R" cae-debug-toggle-debug-allow-recursive-debug :transient t)
("r" cae-debug-toggle-backtrace-on-redisplay-error :transient t)
("d" cae-debug-toggle-doom-debug-mode :transient t)])
```
Since sometimes I want those other debug options instead of `doom-debug-mode`. Also, probably more useful things could be added to this. I prefer this instead of just lumping every debug option into `doom-debug-mode`.
Contributor guide
Assessment
This issue has not been assessed yet.