¿Cómo cancelar `edebug-defun`?


12

¿Cómo deshago los efectos de edebug-defun? En otras palabras, ¿cómo rescindir la directiva que hace edebugque entre en modo de depuración cuando se invoca una función en particular?

Además, me gustaría saber dónde está la respuesta a esta pregunta en la documentación. Lo he buscado mucho más de lo que uno pensaría que sería necesario ...

Respuestas:


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, la manera fácil es usar C-M-xsin argumento de prefijo (o con un argumento de prefijo, si lo ha edebug-all-defsconfigurado).


¡Gracias! Después de ver la respuesta, ahora estoy absolutamente seguro de que la única forma en que habría encontrado la respuesta habría sido una búsqueda lineal en toda la documentación de Emacs y Elisp.
kjo

FWIW Desearía que hubiera una manera fácil de eliminar la instrumentación de todas las definiciones (incluso si están dispersas en varios archivos) a la vez, pero no sé cuál.
YoungFrog

@kjo Lo encontré abriendo la sección edebug en el manual de elisp y navegando por las secciones. Saber que los "efectos de edebug-defun" se llama "instrumentación" ciertamente ayudó.
YoungFrog

2
@kjo Además, si informa un error ( M-x report-emacs-bug) diciendo lo que realmente intentó al buscar su respuesta, la documentación se puede mejorar.
YoungFrog

8

En otras palabras, ¿cómo rescindir la directiva que hace que edebug entre en modo de depuración cuando se invoca una función en particular?

Puede obtener este efecto sin quitar la instrumentación estableciendo edebug-initial-modeen go. De esta manera, solo se detendrá en edebug si hay un punto de interrupción establecido. A partir de Emacs 25.1, puede hacer esto rápidamente 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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.