Mercurial > emacs
comparison lisp/simple.el @ 27302:1cb6c18c3163
(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.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Wed, 12 Jan 2000 13:06:52 +0000 |
parents | dbaaa90ea0eb |
children | 8a7e3bcab064 |
comparison
equal
deleted
inserted
replaced
27301:8c79b30d8475 | 27302:1cb6c18c3163 |
---|---|
552 :group 'lisp | 552 :group 'lisp |
553 :type 'integer | 553 :type 'integer |
554 :version "21.1") | 554 :version "21.1") |
555 | 555 |
556 (defcustom eval-expression-debug-on-error t | 556 (defcustom eval-expression-debug-on-error t |
557 "*Value to use for `debug-on-error' when evaluating in `eval-expression'." | 557 "*Non-nil means set `debug-on-error' when evaluating in `eval-expression'. |
558 If nil, don't change the value of `debug-on-error'." | |
558 :group 'lisp | 559 :group 'lisp |
559 :type 'boolean | 560 :type 'boolean |
560 :version "21.1") | 561 :version "21.1") |
561 | 562 |
562 ;; We define this, rather than making `eval' interactive, | 563 ;; We define this, rather than making `eval' interactive, |
568 (interactive | 569 (interactive |
569 (list (read-from-minibuffer "Eval: " | 570 (list (read-from-minibuffer "Eval: " |
570 nil read-expression-map t | 571 nil read-expression-map t |
571 'read-expression-history) | 572 'read-expression-history) |
572 current-prefix-arg)) | 573 current-prefix-arg)) |
573 (let ((debug-on-error eval-expression-debug-on-error)) | 574 |
574 (setq values (cons (eval eval-expression-arg) values))) | 575 (if (null eval-expression-debug-on-error) |
576 (setq values (cons (eval eval-expression-arg) values)) | |
577 (let ((old-value (make-symbol "t")) new-value) | |
578 ;; Bind debug-on-error to something unique so that we can | |
579 ;; detect when evaled code changes it. | |
580 (let ((debug-on-error old-value)) | |
581 (setq values (cons (eval eval-expression-arg) values)) | |
582 (setq new-value debug-on-error)) | |
583 ;; If evaled code has changed the value of debug-on-error, | |
584 ;; propagate that change to the global binding. | |
585 (unless (eq old-value new-value) | |
586 (setq debug-on-error new-value)))) | |
587 | |
575 (let ((print-length eval-expression-print-length) | 588 (let ((print-length eval-expression-print-length) |
576 (print-level eval-expression-print-level)) | 589 (print-level eval-expression-print-level)) |
577 (prin1 (car values) | 590 (prin1 (car values) |
578 (if eval-expression-insert-value (current-buffer) t)))) | 591 (if eval-expression-insert-value (current-buffer) t)))) |
579 | 592 |