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. Note:Match Data.
* `last-command', `this-command', `last-command-char',
`last-input-char', `last-input-event', `last-command-event',
`last-event-frame', `last-nonmenu-event', and `track-mouse'.
Commands used within Edebug do not affect these variables outside
of Edebug.
The key sequence returned by `this-command-keys' is changed by
executing commands within Edebug 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'.