elisp: Edebug Recursive Edit

 
 17.2.14.3 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.  SeeMatch 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’.