changeset 64222:ceb9ed49f7bb

(edebug-slow-after, edebug-slow-before): Do nothing if edebug-active. (edebug-enter): Don't do with-timeout-suspend here. (edebug-display): Do it here instead.
author Richard M. Stallman <rms@gnu.org>
date Mon, 11 Jul 2005 04:05:07 +0000
parents fab4526842b1
children 12e95a3f6745
files lisp/emacs-lisp/edebug.el
diffstat 1 files changed, 32 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/edebug.el	Mon Jul 11 01:05:17 2005 +0000
+++ b/lisp/emacs-lisp/edebug.el	Mon Jul 11 04:05:07 2005 +0000
@@ -2244,7 +2244,6 @@
 	    (max-specpdl-size (+ 200 max-specpdl-size))
 
 	    (debugger edebug-debugger)  ; only while edebug is active.
-	    (edebug-with-timeout-suspend (with-timeout-suspend))
 	    (edebug-outside-debug-on-error debug-on-error)
 	    (edebug-outside-debug-on-quit debug-on-quit)
 	    ;; Binding these may not be the right thing to do.
@@ -2290,7 +2289,6 @@
 	      (edebug-enter edebug-function edebug-args edebug-body))
 	  ;; Reset global variables in case outside value was changed.
 	  (setq executing-kbd-macro edebug-outside-executing-macro)
-	  (with-timeout-unsuspend edebug-with-timeout-suspend)
 	  (edebug-restore-status
 	   'post-command-hook edebug-outside-post-command-hook)
 	  (edebug-restore-status
@@ -2376,18 +2374,19 @@
 
 
 (defun edebug-slow-before (edebug-before-index)
-  ;; Debug current function given BEFORE position.
-  ;; Called from functions compiled with edebug-eval-top-level-form.
-  ;; Return the before index.
-  (setcar edebug-offset-indices edebug-before-index)
-
-  ;; Increment frequency count
-  (aset edebug-freq-count edebug-before-index
-	(1+ (aref edebug-freq-count edebug-before-index)))
-
-  (if (or (not (memq edebug-execution-mode '(Go-nonstop next)))
-	  (edebug-input-pending-p))
-      (edebug-debugger edebug-before-index 'before nil))
+  (unless edebug-active
+    ;; Debug current function given BEFORE position.
+    ;; Called from functions compiled with edebug-eval-top-level-form.
+    ;; Return the before index.
+    (setcar edebug-offset-indices edebug-before-index)
+
+    ;; Increment frequency count
+    (aset edebug-freq-count edebug-before-index
+	  (1+ (aref edebug-freq-count edebug-before-index)))
+
+    (if (or (not (memq edebug-execution-mode '(Go-nonstop next)))
+	    (edebug-input-pending-p))
+	(edebug-debugger edebug-before-index 'before nil)))
   edebug-before-index)
 
 (defun edebug-fast-before (edebug-before-index)
@@ -2395,22 +2394,24 @@
   )
 
 (defun edebug-slow-after (edebug-before-index edebug-after-index edebug-value)
-  ;; Debug current function given AFTER position and VALUE.
-  ;; Called from functions compiled with edebug-eval-top-level-form.
-  ;; Return VALUE.
-  (setcar edebug-offset-indices edebug-after-index)
-
-  ;; Increment frequency count
-  (aset edebug-freq-count edebug-after-index
-	(1+ (aref edebug-freq-count edebug-after-index)))
-  (if edebug-test-coverage (edebug-update-coverage))
-
-  (if (and (eq edebug-execution-mode 'Go-nonstop)
-	   (not (edebug-input-pending-p)))
-      ;; Just return result.
+  (if edebug-active
       edebug-value
-    (edebug-debugger edebug-after-index 'after edebug-value)
-    ))
+    ;; Debug current function given AFTER position and VALUE.
+    ;; Called from functions compiled with edebug-eval-top-level-form.
+    ;; Return VALUE.
+    (setcar edebug-offset-indices edebug-after-index)
+
+    ;; Increment frequency count
+    (aset edebug-freq-count edebug-after-index
+	  (1+ (aref edebug-freq-count edebug-after-index)))
+    (if edebug-test-coverage (edebug-update-coverage))
+
+    (if (and (eq edebug-execution-mode 'Go-nonstop)
+	     (not (edebug-input-pending-p)))
+	;; Just return result.
+	edebug-value
+      (edebug-debugger edebug-after-index 'after edebug-value)
+      )))
 
 (defun edebug-fast-after (edebug-before-index edebug-after-index edebug-value)
   ;; Do nothing but return the value.
@@ -2535,6 +2536,7 @@
   ;; Uses local variables of edebug-enter, edebug-before, edebug-after
   ;; and edebug-debugger.
   (let ((edebug-active t)		; for minor mode alist
+	(edebug-with-timeout-suspend (with-timeout-suspend))
 	edebug-stop			; should we enter recursive-edit
 	(edebug-point (+ edebug-def-mark
 			 (aref (nth 2 edebug-data) edebug-offset-index)))
@@ -2761,6 +2763,7 @@
 	    (set-buffer current-buffer))
 	  ;; ... nothing more.
 	  )
+      (with-timeout-unsuspend edebug-with-timeout-suspend)
       ;; Reset global variables to outside values in case they were changed.
       (setq
        overlay-arrow-position edebug-outside-o-a-p