Як скасувати `edebug-defun`?


13

Як скасувати наслідки edebug-defun? Іншими словами, як я скасовую директиву, яка викликає edebugвведення режиму налагодження, коли викликається певна функція?

Також я дуже хотів би знати, де відповідь на це питання знаходиться в документації. Я шукав це набагато довше, ніж хтось міг би вважати необхідним ...

Відповіді:


16

Від (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, найпростішим способом є використання C-M-xбез аргументу префікса (або з аргументом префікса, якщо ви edebug-all-defsвстановили).


Спасибі! Побачивши відповідь, я тепер абсолютно впевнений, що єдиним способом, який би я знайшов відповідь, був би лінійний пошук у всій документації Emacs та Elisp.
кьо

FWIW Я хотів би, щоб був простий спосіб видалити інструментарій з усіх визначень (навіть якщо вони розкидані по декількох файлах) одночасно, але я не знаю жодного.
YoungFrog

@kjo Я знайшов це, відкривши розділ edebug в посібнику elisp і переглянувши розділи. Знання, що "вплив edebug-defun" називається "інструментальним", безумовно, допомогло.
YoungFrog

2
@kjo Крім того, якщо ви повідомляєте про помилку ( M-x report-emacs-bug), сказавши, що ви насправді намагалися шукати відповідь, документацію можна потім вдосконалити.
YoungFrog

9

Іншими словами, як я скасувати директиву, яка змушує edebug перейти в режим налагодження, коли викликається певна функція?

Цей ефект можна отримати, не виймаючи приладів, встановивши edebug-initial-modeна go. Таким чином, ви зупинитесь у edebug, лише якщо буде встановлено точку перерви. З Emacs 25.1 ви можете це швидко зробити за допомогою 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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.