Wie kann man "edebug-defun" abbrechen?

12

Wie mache ich die Effekte von rückgängig edebug-defun? Mit anderen Worten, wie kann ich die Anweisung aufheben, die edebugden Debugging-Modus aktiviert, wenn eine bestimmte Funktion aufgerufen wird?

Außerdem würde ich gerne wissen, wo die Antwort auf diese Frage in der Dokumentation ist. Ich habe es viel länger gesucht, als man denken würde ...

kjo
quelle

Antworten:

15

Von (info "(elisp) Instrumenting"):

   To remove instrumentation from a definition, simply re-evaluate its
definition in a way that does not instrument.  There are two ways of
evaluating forms that never instrument them: from a file with `load',
and from the minibuffer with `eval-expression' (`M-:').

IOW ist die einfache Möglichkeit, C-M-xohne Präfixargument zu verwenden (oder mit einem Präfixargument, wenn Sie es edebug-all-defsfestgelegt haben).

Jungfrosch
quelle
Vielen Dank! Nachdem ich die Antwort gesehen habe, bin ich mir jetzt absolut sicher, dass der einzige Weg, auf dem ich die Antwort gefunden hätte, eine lineare Suche in allen Emacs- und Elisp-Dokumenten gewesen wäre.
Kjo
FWIW Ich wünschte, es gäbe eine einfache Möglichkeit, die Instrumentierung aus allen Definitionen zu entfernen (auch wenn sie über mehrere Dateien verteilt sind), aber ich kenne keine.
YoungFrog
@kjo Ich habe es gefunden, indem ich den Abschnitt edebug im elisp-Handbuch geöffnet und die Abschnitte durchgeblättert habe. Zu wissen, dass "Effekte von Edebug-Defun" als "Instrumentierung" bezeichnet werden, hat sicherlich geholfen.
YoungFrog
2
@kjo Wenn Sie einen Bug ( M-x report-emacs-bug) melden, indem Sie sagen, was Sie tatsächlich versucht haben, als Sie nach Ihrer Antwort gesucht haben, kann die Dokumentation verbessert werden.
YoungFrog
8

Mit anderen Worten, wie kann ich die Direktive aufheben, die dazu führt, dass edebug in den Debugging-Modus wechselt, wenn eine bestimmte Funktion aufgerufen wird?

Sie können diesen Effekt erzielen , ohne Instrumentierung zu entfernen , indem Sie edebug-initial-modeauf go. Auf diese Weise werden Sie im Fehlerfall nur angehalten, wenn ein Haltepunkt festgelegt ist. Ab Emacs 25.1 können Sie dies schnell tun mit edebug-set-initial-mode:C-x C-a C-m g

(info "(elisp) Edebug Execution Modes")

‘g’
     Go: run until the next breakpoint (‘edebug-go-mode’).  *Note
     Breakpoints::.

[...]

When you enter a new Edebug level, the initial execution mode comes
from the value of the variable ‘edebug-initial-mode’ (*note Edebug
Options::).  By default, this specifies step mode.

[...]

Command: edebug-set-initial-mode

This command, bound to C-x C-a C-m, sets edebug-initial-mode. It
prompts you for a key to indicate the mode. You should enter one of
the eight keys listed above, which sets the corresponding mode.
npostavs
quelle