Edebug Recursive Edit

When Edebug is entered and actually reads commands from the user, it saves (and later restores) these additional data:

  • The current match data. See Match Data.
  • The variables last-command, this-command, last-command-event, last-input-event, last-event-frame, last-nonmenu-event, and track-mouse. Commands in Edebug do not affect these variables outside of Edebug.

    Executing commands within Edebug can change the key sequence that would be returned by this-command-keys, and there is no way to reset the key sequence from Lisp.

    Edebug cannot save and restore the value of unread-command-events. Entering Edebug while this variable has a nontrivial value can interfere with execution of the program you are debugging.

  • Complex commands executed while in Edebug are added to the variable command-history. In rare cases this can alter execution.
  • Within Edebug, the recursion depth appears one deeper than the recursion depth outside Edebug. This is not true of the automatically updated evaluation list window.
  • standard-output and standard-input are bound to nil by the recursive-edit, but Edebug temporarily restores them during evaluations.
  • The state of keyboard macro definition is saved and restored. While Edebug is active, defining-kbd-macro is bound to edebug-continue-kbd-macro.

Copyright © 1990-1996, 1998-2021 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug-Recursive-Edit.html