Function: edebug-mode

edebug-mode is an interactive and byte-compiled function defined in edebug.el.gz.

Signature

(edebug-mode &optional ARG)

Documentation

Mode for Emacs Lisp buffers while in Edebug.

In addition to all Emacs Lisp commands (except those that modify the buffer) there are local and global key bindings to several Edebug specific commands. E.g. edebug-step-mode is bound to C-x X SPC (edebug-step-mode) in the Edebug buffer and C-x X SPC (edebug-step-mode) in any buffer.

Also see bindings for the eval list buffer *edebug* in edebug-eval-mode.

The edebug buffer commands:
- negative-argument
<intercept-state> all
= edebug-temp-display-freq-count
? edebug-help
B edebug-next-breakpoint
C edebug-Continue-fast-mode
C-M-i completion-at-point
C-M-q indent-pp-sexp
C-M-q indent-sexp
C-M-q prog-indent-sexp
C-M-x eval-defun
C-c C-b elisp-byte-compile-buffer
C-c C-c edebug-go-mode
C-c C-d edebug-unset-breakpoint
C-c C-e elisp-eval-region-or-buffer
C-c C-f elisp-byte-compile-file
C-c C-l edebug-where
C-c C-n edebug-next-mode
C-c C-s edebug-step-mode
C-c C-t #<anonymous-function>
C-x C-a C-c edebug-go-mode
C-x C-a C-l edebug-where
C-x C-a C-n edebug-next-mode
C-x C-a C-s edebug-step-mode
C-x C-a RET edebug-set-initial-mode
C-x C-e edebug-eval-last-sexp
C-x SPC edebug-set-breakpoint
D edebug-toggle-disable-breakpoint
DEL backward-delete-char-untabify
E edebug-visit-eval-list
G edebug-Go-nonstop-mode
I edebug-instrument-callee
M-q prog-fill-reindent-defun
P edebug-view-outside
Q edebug-top-level-nonstop
S edebug-stop
SPC edebug-step-mode
T edebug-Trace-fast-mode
U edebug-unset-breakpoints
W edebug-toggle-save-windows
X edebug-set-global-break-condition
a abort-recursive-edit
b edebug-set-breakpoint
c edebug-continue-mode
d edebug-pop-to-backtrace
e edebug-eval-expression
f edebug-forward-sexp
g edebug-go-mode
h edebug-goto-here
i edebug-step-in
n edebug-next-mode
o edebug-step-out
p edebug-bounce-point
q top-level(var)/top-level(fun)
r edebug-previous-result(var)/edebug-previous-result(fun)
t edebug-trace-mode
u edebug-unset-breakpoint
v edebug-view-outside
w edebug-where
x edebug-set-conditional-breakpoint

Global commands prefixed by edebug-global-prefix:
= edebug-display-freq-count
C edebug-Continue-fast-mode
D edebug-toggle-disable-breakpoint
G edebug-Go-nonstop-mode
Q edebug-top-level-nonstop
SPC edebug-step-mode
T edebug-Trace-fast-mode
U edebug-unset-breakpoints
W edebug-toggle-save-windows
X edebug-set-global-break-condition
a abort-recursive-edit
b edebug-set-breakpoint
c edebug-continue-mode
g edebug-go-mode
q top-level(var)/top-level(fun)
t edebug-trace-mode
u edebug-unset-breakpoint
w edebug-where
x edebug-set-conditional-breakpoint

Options: edebug-setup-hook edebug-all-defs(var)/edebug-all-defs(fun) edebug-all-forms(var)/edebug-all-forms(fun) edebug-save-windows edebug-save-displayed-buffer-points edebug-initial-mode edebug-trace(var)/edebug-trace(fun) edebug-test-coverage edebug-continue-kbd-macro edebug-print-length edebug-print-level edebug-print-circle edebug-on-error edebug-on-quit edebug-unwrap-results edebug-global-break-condition

This is a minor mode. If called interactively, toggle the Edebug mode mode. If the prefix argument is positive, enable the mode, and if it is zero or negative, disable the mode.

If called from Lisp, toggle the mode if ARG is toggle. Enable the mode if ARG is nil, omitted, or is a positive number. Disable the mode if ARG is a negative number.

To check whether the minor mode is enabled in the current buffer, evaluate the variable edebug-mode(var)/edebug-mode(fun).

The mode's hook is called both when the mode is enabled and when it is disabled.

Probably introduced at or before Emacs version 27.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
(define-minor-mode edebug-mode
  "Mode for Emacs Lisp buffers while in Edebug.

In addition to all Emacs Lisp commands (except those that modify the
buffer) there are local and global key bindings to several Edebug
specific commands.  E.g. `edebug-step-mode' is bound to \\[edebug-step-mode]
in the Edebug buffer and \\<global-map>\\[edebug-step-mode] in any buffer.

Also see bindings for the eval list buffer *edebug* in `edebug-eval-mode'.

The edebug buffer commands:
\\{edebug-mode-map}

Global commands prefixed by `edebug-global-prefix':
\\{edebug-global-map}

Options:
`edebug-setup-hook'
`edebug-all-defs'
`edebug-all-forms'
`edebug-save-windows'
`edebug-save-displayed-buffer-points'
`edebug-initial-mode'
`edebug-trace'
`edebug-test-coverage'
`edebug-continue-kbd-macro'
`edebug-print-length'
`edebug-print-level'
`edebug-print-circle'
`edebug-on-error'
`edebug-on-quit'
`edebug-unwrap-results'
`edebug-global-break-condition'"
  :lighter " *Debugging*"
  :keymap edebug-mode-map
  ;; If the user kills the buffer in which edebug is currently active,
  ;; exit to top level, because the edebug command loop can't usefully
  ;; continue running in such a case.
  ;;
  (if (not edebug-mode)
      (progn
        (while edebug--mode-saved-vars
          (let ((setting (pop edebug--mode-saved-vars)))
            (if (consp setting)
                (set (car setting) (cdr setting))
              (kill-local-variable setting))))
        (remove-hook 'kill-buffer-hook #'edebug-kill-buffer t))
    (pcase-dolist (`(,var . ,val) '((buffer-read-only . t)))
      (push
       (if (local-variable-p var) (cons var (symbol-value var)) var)
       edebug--mode-saved-vars)
      (set (make-local-variable var) val))
    ;; Append `edebug-kill-buffer' to the hook to avoid interfering with
    ;; other entries that are unguarded against deleted buffer.
    (add-hook 'kill-buffer-hook #'edebug-kill-buffer t t)))