Bagaimana cara membatalkan `edebug-defun`?

12

Bagaimana cara membatalkan efek edebug-defun? Dengan kata lain, bagaimana cara saya membatalkan arahan yang menyebabkan edebugmasuk ke mode debugging ketika fungsi tertentu dipanggil?

Juga, saya benar-benar ingin tahu di mana jawaban untuk pertanyaan ini ada dalam dokumentasi. Saya sudah mencarinya jauh lebih lama daripada yang orang pikir perlu ...

kjo
sumber

Jawaban:

15

Dari (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-:').

TKI, cara mudahnya adalah menggunakan C-M-xtanpa argumen awalan (atau dengan argumen awalan, jika sudah Anda edebug-all-defsatur).

YoungFrog
sumber
Terima kasih! Setelah melihat jawabannya, saya sekarang benar-benar yakin bahwa satu-satunya cara saya akan menemukan jawabannya adalah pencarian linear melalui semua dokumentasi Emacs dan Elisp.
kjo
FWIW Saya berharap ada cara mudah untuk menghapus instrumentasi dari semua definisi (bahkan jika tersebar di beberapa file sekaligus), tetapi saya tidak tahu satu.
YoungFrog
@ kjo Saya menemukannya dengan membuka bagian edebug di manual elisp, dan menelusuri bagian-bagian tersebut. Mengetahui bahwa "efek dari edebug-defun" disebut "menginstruksikan" tentu membantu.
YoungFrog
2
@ kjo Juga, jika Anda melaporkan bug ( M-x report-emacs-bug) dengan mengatakan apa yang sebenarnya Anda coba saat mencari jawaban Anda, dokumentasi kemudian dapat ditingkatkan.
YoungFrog
8

Dengan kata lain, bagaimana cara saya membatalkan arahan yang menyebabkan edebug untuk masuk ke mode debugging ketika fungsi tertentu dipanggil?

Anda bisa mendapatkan efek ini tanpa menghapus instrumentasi dengan mengatur edebug-initial-modeke go. Dengan cara ini, Anda hanya akan berhenti di edebug jika ada set breakpoint. Pada Emacs 25.1, Anda dapat melakukan ini dengan cepat dengan 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
sumber