From: Richard M. Stallman Date: Mon, 29 Jul 2002 01:51:09 +0000 (+0000) Subject: (edebug-debugger): If inside redisplay, just return. X-Git-Tag: ttn-vms-21-2-B4~13837 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3795fe529dbf2f8f7abd37c03aef3fad61a0c2af;p=emacs.git (edebug-debugger): If inside redisplay, just return. --- diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 66e40ea3b0a..420b3c9093d 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -2423,45 +2423,48 @@ MSG is printed after `::::} '." (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.