Làm thế nào để hủy bỏ `edebug-defun`?


12

Làm thế nào để tôi hoàn tác các tác động của edebug-defun? Nói cách khác, làm cách nào để hủy bỏ lệnh khiến edebugcho chế độ gỡ lỗi khi một chức năng cụ thể được gọi?

Ngoài ra, tôi thực sự muốn biết câu trả lời cho câu hỏi này nằm ở đâu trong phần thuyết minh. Tôi đã tìm kiếm nó lâu hơn mọi người nghĩ sẽ cần thiết ...

Câu trả lời:


15

Từ (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ách dễ dàng là sử dụng C-M-xmà không cần đối số tiền tố (hoặc với đối số tiền tố, nếu bạn đã edebug-all-defsđặt).


Cảm ơn! Sau khi nhìn thấy câu trả lời, bây giờ tôi hoàn toàn chắc chắn rằng cách duy nhất tôi tìm thấy câu trả lời sẽ là tìm kiếm tuyến tính thông qua tất cả các tài liệu của Emacs và Elisp.
kjo

FWIW Tôi muốn có một cách dễ dàng để xóa thiết bị khỏi tất cả các định nghĩa (ngay cả khi nằm rải rác trên nhiều tệp) cùng một lúc, nhưng tôi không biết về một định nghĩa.
YoungFrog

@kjo Tôi đã tìm thấy nó bằng cách mở phần edebug trong hướng dẫn elisp và duyệt qua các phần. Biết rằng "hiệu ứng của edebug-defun" được gọi là "thiết bị" chắc chắn có ích.
YoungFrog

2
@kjo Ngoài ra, nếu bạn báo cáo lỗi ( M-x report-emacs-bug) bằng cách nói những gì bạn thực sự đã cố gắng khi tìm câu trả lời của mình, thì tài liệu có thể được cải thiện.
YoungFrog

8

Nói cách khác, làm cách nào để hủy bỏ lệnh khiến edebug chuyển sang chế độ gỡ lỗi khi một chức năng cụ thể được gọi?

Bạn có thể có được hiệu ứng này mà không cần xóa thiết bị bằng cách cài đặt edebug-initial-modethành go. Bằng cách này, bạn sẽ chỉ bị dừng trong edebug nếu có một bộ điểm dừng. Kể từ Emacs 25.1, bạn có thể thực hiện việc này nhanh chóng với 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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.