diff options
-rw-r--r-- | doc/lispref/edebug.texi | 4 | ||||
-rw-r--r-- | etc/NEWS | 5 | ||||
-rw-r--r-- | lisp/emacs-lisp/edebug.el | 18 |
3 files changed, 27 insertions, 0 deletions
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 2c0ee3969b9..efbba40916e 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -230,6 +230,10 @@ evaluating forms that never instrument them: from a file with @code{load}, and from the minibuffer with @code{eval-expression} (@kbd{M-:}). +@findex edebug-remove-instrumentation + If you want to remove Edebug instrumentation from all functions, you +can use the @code{edebug-remove-instrumentation} command. + @xref{Edebug Eval}, for other evaluation functions available inside of Edebug. @@ -1463,6 +1463,11 @@ the Elisp manual for documentation of the new mode and its commands. ** Edebug +++ +*** New command 'edebug-remove-instrumentation. +This command removes Edebug instrumentation from all functions that +have been instrumented. + ++++ *** The runtime behavior of Edebug's instrumentation can be changed using the new variables 'edebug-behavior-alist', 'edebug-after-instrumentation-function' and diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 85c56f43486..e0a4eb3db5a 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -4423,5 +4423,23 @@ With prefix argument, make it a temporary breakpoint." ;; Continue standard unloading. nil) +(defun edebug-remove-instrumentation () + "Remove Edebug instrumentation from all functions." + (interactive) + (let ((functions nil)) + (mapatoms + (lambda (symbol) + (when (and (functionp symbol) + (get symbol 'edebug)) + (let ((unwrapped (edebug-unwrap* (symbol-function symbol)))) + (unless (equal unwrapped (symbol-function symbol)) + (push symbol functions) + (setf (symbol-function symbol) unwrapped))))) + obarray) + (if (not functions) + (message "Found no functions to remove instrumentation from") + (message "Remove edebug instrumentation from %s" + (mapconcat #'symbol-name functions ", "))))) + (provide 'edebug) ;;; edebug.el ends here |