Como cancelar o `edebug-defun`?

12

Como desfazer os efeitos de edebug-defun? Em outras palavras, como rescindir a diretiva que faz edebugcom que entre no modo de depuração quando uma função específica é invocada?

Além disso, eu realmente gostaria de saber onde está a resposta para essa pergunta na documentação. Eu procurei por muito mais tempo do que se poderia pensar que seria necessário ...

kjo
fonte

Respostas:

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, a maneira mais fácil é usar C-M-xsem argumento de prefixo (ou com um argumento de prefixo, se você tiver edebug-all-defsdefinido).

YoungFrog
fonte
Obrigado! Depois de ver a resposta, agora estou absolutamente certo de que a única maneira de encontrar a resposta seria uma pesquisa linear em toda a documentação do Emacs e Elisp.
KJo
Queria que houvesse uma maneira fácil de remover a instrumentação de todas as definições (mesmo se espalhadas por vários arquivos) de uma só vez, mas não conheço uma.
YoungFrog
@kjo Encontrei isso abrindo a seção edebug no manual elisp e navegando pelas seções. Saber que "efeitos do edebug-defun" é chamado de "instrumentação" certamente ajudou.
YoungFrog 04/04
2
@kjo Além disso, se você reportar um bug ( M-x report-emacs-bug) dizendo o que realmente tentou ao procurar sua resposta, a documentação poderá ser melhorada.
YoungFrog
8

Em outras palavras, como rescindir a diretiva que faz com que o edebug entre no modo de depuração quando uma função específica é invocada?

Você pode obter esse efeito sem remover a instrumentação configurando edebug-initial-modepara go. Dessa forma, você só será interrompido no edebug se houver um conjunto de pontos de interrupção. No Emacs 25.1, você pode fazer isso rapidamente com 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
fonte