# HG changeset patch # User Gerd Moellmann # Date 947682412 0 # Node ID 1cb6c18c316344086198371620eeb0a6e6fbeac8 # Parent 8c79b30d8475f66ebdee2563457720cae08fe4f8 (eval-expression): Don't bind debug-on-error if eval-expression-debug-on-error is nil. Detect changed debug-on-error, and propagate new value to global binding, if eval-expression-debug-on-error is non-nil, (eval-expression-debug-on-error): Change doc string. diff -r 8c79b30d8475 -r 1cb6c18c3163 lisp/simple.el --- a/lisp/simple.el Wed Jan 12 05:22:30 2000 +0000 +++ b/lisp/simple.el Wed Jan 12 13:06:52 2000 +0000 @@ -554,7 +554,8 @@ :version "21.1") (defcustom eval-expression-debug-on-error t - "*Value to use for `debug-on-error' when evaluating in `eval-expression'." + "*Non-nil means set `debug-on-error' when evaluating in `eval-expression'. +If nil, don't change the value of `debug-on-error'." :group 'lisp :type 'boolean :version "21.1") @@ -570,8 +571,20 @@ nil read-expression-map t 'read-expression-history) current-prefix-arg)) - (let ((debug-on-error eval-expression-debug-on-error)) - (setq values (cons (eval eval-expression-arg) values))) + + (if (null eval-expression-debug-on-error) + (setq values (cons (eval eval-expression-arg) values)) + (let ((old-value (make-symbol "t")) new-value) + ;; Bind debug-on-error to something unique so that we can + ;; detect when evaled code changes it. + (let ((debug-on-error old-value)) + (setq values (cons (eval eval-expression-arg) values)) + (setq new-value debug-on-error)) + ;; If evaled code has changed the value of debug-on-error, + ;; propagate that change to the global binding. + (unless (eq old-value new-value) + (setq debug-on-error new-value)))) + (let ((print-length eval-expression-print-length) (print-level eval-expression-print-level)) (prin1 (car values)