Jak anulować `edebug-defun`?

13

Jak mogę cofnąć efekty edebug-defun? Innymi słowy, jak odwołać dyrektywę, która powoduje edebugprzejście do trybu debugowania po wywołaniu określonej funkcji?

Chciałbym również wiedzieć, gdzie w dokumentacji znajduje się odpowiedź na to pytanie. Szukałem tego znacznie dłużej, niż mogłoby się wydawać, że byłoby konieczne ...

kjo
źródło

Odpowiedzi:

16

Od (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, najprostszym sposobem jest użycie C-M-xbez argumentu przedrostka (lub z argumentem przedrostka, jeśli został edebug-all-defsustawiony).

YoungFrog
źródło
Dzięki! Po zobaczeniu odpowiedzi jestem teraz absolutnie pewien, że jedynym sposobem na znalezienie odpowiedzi byłoby liniowe przeszukanie całej dokumentacji Emacsa i Elispa.
kjo
FWIW Chciałbym, aby istniał łatwy sposób na usunięcie instrumentacji ze wszystkich definicji (nawet jeśli są one rozproszone na wielu plikach) jednocześnie, ale nie znam żadnej z nich.
YoungFrog,
@ kjo Znalazłem go, otwierając sekcję edebug w podręczniku Elisp i przeglądając sekcje. Wiedza, że ​​„skutki defebe edebug” nazywa się „oprzyrządowaniem” z pewnością pomogła.
YoungFrog,
2
@ kjo Ponadto, jeśli zgłosisz błąd ( M-x report-emacs-bug), mówiąc, co rzeczywiście próbowałeś, szukając odpowiedzi, dokumentację można ulepszyć.
YoungFrog,
9

Innymi słowy, jak odwołać dyrektywę, która powoduje, że edebug wchodzi w tryb debugowania po wywołaniu określonej funkcji?

Możesz uzyskać ten efekt bez usuwania oprzyrządowania, ustawiając edebug-initial-modena go. W ten sposób zatrzymasz się w edebug tylko wtedy, gdy jest ustawiony punkt przerwania. Począwszy od Emacsa 25.1, możesz to zrobić szybko za pomocą 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
źródło