Come cancellare `edebug-defun`?


12

Come posso annullare gli effetti di edebug-defun? In altre parole, come posso annullare la direttiva che fa edebugentrare la modalità di debug quando viene invocata una particolare funzione?

Inoltre, vorrei davvero sapere dove si trova la risposta a questa domanda nella documentazione. L'ho cercato molto più a lungo di quanto si pensi sarebbe necessario ...

Risposte:


15

Da (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, il modo più semplice è usare C-M-xsenza argomento prefisso (o con un argomento prefisso, se è stato edebug-all-defsimpostato).


Grazie! Dopo aver visto la risposta, ora sono assolutamente certo che l'unico modo in cui avrei trovato la risposta sarebbe stata una ricerca lineare in tutta la documentazione di Emacs ed Elisp.
kjo,

FWIW Vorrei che ci fosse un modo semplice per rimuovere la strumentazione da tutte le definizioni (anche se sparse su più file) contemporaneamente, ma non ne conosco una.
YoungFrog,

@kjo L'ho trovato aprendo la sezione edebug nel manuale di elisp e sfogliando le sezioni. Sapere che "effetti di edebug-defun" è chiamato "strumentazione" è sicuramente di aiuto.
YoungFrog

2
@kjo Inoltre, se si segnala un bug ( M-x report-emacs-bug) dicendo ciò che si è effettivamente provato durante la ricerca della risposta, la documentazione può essere migliorata.
YoungFrog,

8

In altre parole, come posso annullare la direttiva che fa entrare edebug in modalità debug quando viene invocata una particolare funzione?

È possibile ottenere questo effetto senza rimuovere la strumentazione impostando edebug-initial-modesu go. In questo modo, verrai arrestato in edebug solo se è stato impostato un punto di interruzione. A partire da Emacs 25.1, puoi farlo rapidamente con 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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.