]> git.eshelyaron.com Git - emacs.git/commitdiff
New command edebug-remove-instrumentation
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 09:29:34 +0000 (11:29 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 09:29:34 +0000 (11:29 +0200)
* doc/lispref/edebug.texi (Instrumenting): Document it.

* lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): New
command (bug#15843).

doc/lispref/edebug.texi
etc/NEWS
lisp/emacs-lisp/edebug.el

index 2c0ee3969b9588d7aa85a2b37ba419db49968365..efbba40916ef8e8aa38aae4988311cbbb2c8d4af 100644 (file)
@@ -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.
 
index e49dc0c99824c66623b5eb73e7f2a4586a289b43..21fbdb90af7f273c37d71ae75d4aaffefc258917 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1462,6 +1462,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',
index 85c56f43486a7118363f7cb40edfa728324d0594..e0a4eb3db5ae0b755fae7c97bff8bbd253f6b873 100644 (file)
@@ -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