Comment annuler `edebug-defun`?

12

Comment annuler les effets de edebug-defun? En d'autres termes, comment annuler la directive qui fait passer edebugen mode débogage lorsqu'une fonction particulière est invoquée?

Aussi, j'aimerais vraiment savoir où se trouve la réponse à cette question dans la documentation. Je l'ai cherché bien plus longtemps qu'on ne le penserait nécessaire ...

kjo
la source

Réponses:

15

De (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, le moyen le plus simple est d'utiliser C-M-xsans argument préfixe (ou avec un argument préfixe, si vous l'avez edebug-all-defsdéfini).

YoungFrog
la source
Merci! Après avoir vu la réponse, je suis maintenant absolument certain que la seule façon dont j'aurais trouvé la réponse aurait été une recherche linéaire dans toute la documentation d'Emacs et d'Elisp.
kjo
FWIW Je souhaite qu'il y ait un moyen facile de supprimer l'instrumentation de toutes les définitions (même si elles sont dispersées sur plusieurs fichiers) à la fois, mais je n'en connais pas une.
YoungFrog
@kjo Je l'ai trouvé en ouvrant la section edebug dans le manuel elisp et en parcourant les sections. Savoir que les «effets de edebug-defun» sont appelés «instrumentation» a certainement aidé.
YoungFrog
2
@kjo De plus, si vous signalez un bug ( M-x report-emacs-bug) en disant ce que vous avez réellement essayé lors de la recherche de votre réponse, la documentation peut alors être améliorée.
YoungFrog
8

En d'autres termes, comment annuler la directive qui fait passer edebug en mode de débogage lorsqu'une fonction particulière est invoquée?

Vous pouvez obtenir cet effet sans supprimer l'instrumentation en définissant edebug-initial-modesur go. De cette façon, vous ne serez arrêté dans edebug que si un point d'arrêt est défini. Depuis Emacs 25.1, vous pouvez le faire rapidement avec 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
la source