]> git.eshelyaron.com Git - emacs.git/commitdiff
New command to clear all breakpoints in a function
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 11:40:03 +0000 (13:40 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 11:40:03 +0000 (13:40 +0200)
* doc/lispref/edebug.texi (Breakpoints): Mention it.

* lisp/emacs-lisp/edebug.el (edebug-unset-breakpoints): New
command and keystroke.

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

index efbba40916ef8e8aa38aae4988311cbbb2c8d4af..e081833e24283c5205c116170c42b2d18ad58a8e 100644 (file)
@@ -503,6 +503,10 @@ program.
 Unset the breakpoint (if any) at the stop point at or after
 point (@code{edebug-unset-breakpoint}).
 
+@item U
+Unset any breakpoints in the current form
+(@code{edebug-unset-breakpoints}).
+
 @item x @var{condition} @key{RET}
 Set a conditional breakpoint which stops the program only if
 evaluating @var{condition} produces a non-@code{nil} value
index b8c2c5a329cc38045ecd002dbe350ff0ceead06c..aec27b9361328ed9af219311c071d5f9afe65eb1 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-unset-breakpoints'
+To clear all breakpoints in the current form, the 'U' command in
+'edebug-mode', or 'M-x edebug-unset-breakpoints' can be used.
+
 ---
 *** Re-instrumenting a function with Edebug will now try to preserve
 previously-set breakpoints.  If the code has changed substantially,
index 68b2126345f6f55e4f3fd6fb7562400a3a210a35..f59123094ac16a751a4e968e85682a6e6cc0c525 100644 (file)
@@ -3249,6 +3249,17 @@ With prefix argument, make it a temporary breakpoint."
   (interactive)
   (edebug-modify-breakpoint nil))
 
+(defun edebug-unset-breakpoints ()
+  "Unset all the breakpoints in the current form."
+  (interactive)
+  (let* ((name (edebug-form-data-symbol))
+         (breakpoints (nth 1 (get name 'edebug))))
+    (unless breakpoints
+      (user-error "There are no breakpoints in %s" name))
+    (save-excursion
+      (dolist (breakpoint breakpoints)
+        (goto-char (nth 3 breakpoint))
+        (edebug-modify-breakpoint nil)))))
 
 (defun edebug-set-global-break-condition (expression)
   "Set `edebug-global-break-condition' to EXPRESSION."
@@ -3756,6 +3767,7 @@ be installed in `emacs-lisp-mode-map'.")
     ;; breakpoints
     (define-key map "b" 'edebug-set-breakpoint)
     (define-key map "u" 'edebug-unset-breakpoint)
+    (define-key map "U" 'edebug-unset-breakpoints)
     (define-key map "B" 'edebug-next-breakpoint)
     (define-key map "x" 'edebug-set-conditional-breakpoint)
     (define-key map "X" 'edebug-set-global-break-condition)