changeset 46716:f9f0026b4c12

(edebug-debugger): If inside redisplay, just return.
author Richard M. Stallman <rms@gnu.org>
date Mon, 29 Jul 2002 01:51:09 +0000
parents 1320a274ce28
children 505956923015
files lisp/emacs-lisp/edebug.el
diffstat 1 files changed, 39 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/edebug.el	Mon Jul 29 01:49:45 2002 +0000
+++ b/lisp/emacs-lisp/edebug.el	Mon Jul 29 01:51:09 2002 +0000
@@ -2423,45 +2423,48 @@
 
 
 (defun edebug-debugger (edebug-offset-index edebug-arg-mode edebug-value)
-  ;; Check breakpoints and pending input.
-  ;; If edebug display should be updated, call edebug-display.
-  ;; Return edebug-value.
-  (let* (;; This needs to be here since breakpoints may be changed.
-	 (edebug-breakpoints (car (cdr edebug-data))) ; list of breakpoints
-	 (edebug-break-data (assq edebug-offset-index edebug-breakpoints))
-	 (edebug-break-condition (car (cdr edebug-break-data)))
-	 (edebug-global-break
-	  (if edebug-global-break-condition
-	      (condition-case nil
-		  (setq edebug-global-break-result
-			(eval edebug-global-break-condition))
-		(error nil))))
-	 (edebug-break))
+  (if inhibit-redisplay
+      ;; Don't really try to enter edebug within an eval from redisplay.
+      edebug-value
+    ;; Check breakpoints and pending input.
+    ;; If edebug display should be updated, call edebug-display.
+    ;; Return edebug-value.
+    (let* ( ;; This needs to be here since breakpoints may be changed.
+	   (edebug-breakpoints (car (cdr edebug-data)))	; list of breakpoints
+	   (edebug-break-data (assq edebug-offset-index edebug-breakpoints))
+	   (edebug-break-condition (car (cdr edebug-break-data)))
+	   (edebug-global-break
+	    (if edebug-global-break-condition
+		(condition-case nil
+		    (setq edebug-global-break-result
+			  (eval edebug-global-break-condition))
+		  (error nil))))
+	   (edebug-break))
 
 ;;;    (edebug-trace "exp: %s" edebug-value)
-    ;; Test whether we should break.
-    (setq edebug-break 
-	  (or edebug-global-break
-	      (and edebug-break-data
-		   (or (not edebug-break-condition)
-		       (setq edebug-break-result
-			     (eval edebug-break-condition))))))
-    (if (and edebug-break
-	     (nth 2 edebug-break-data)) ; is it temporary?
-	;; Delete the breakpoint.
-	(setcdr edebug-data
-		(cons (delq edebug-break-data edebug-breakpoints)
-		      (cdr (cdr edebug-data)))))
-
-    ;; Display if mode is not go, continue, or Continue-fast
-    ;; or break, or input is pending, 
-    (if (or (not (memq edebug-execution-mode '(go continue Continue-fast)))
-	    edebug-break
-	    (edebug-input-pending-p))
-	(edebug-display))   ; <--------------- display
+      ;; Test whether we should break.
+      (setq edebug-break 
+	    (or edebug-global-break
+		(and edebug-break-data
+		     (or (not edebug-break-condition)
+			 (setq edebug-break-result
+			       (eval edebug-break-condition))))))
+      (if (and edebug-break
+	       (nth 2 edebug-break-data)) ; is it temporary?
+	  ;; Delete the breakpoint.
+	  (setcdr edebug-data
+		  (cons (delq edebug-break-data edebug-breakpoints)
+			(cdr (cdr edebug-data)))))
+
+      ;; Display if mode is not go, continue, or Continue-fast
+      ;; or break, or input is pending, 
+      (if (or (not (memq edebug-execution-mode '(go continue Continue-fast)))
+	      edebug-break
+	      (edebug-input-pending-p))
+	  (edebug-display))		; <--------------- display
     
-    edebug-value
-    ))
+      edebug-value
+      )))
 
 
 ;; window-start now stored with each function.