(eval-last-sexp): Avoid introducing any

dynamic bindings around the evaluation of the expression.
This commit is contained in:
Andreas Schwab 2007-07-06 17:30:06 +00:00
parent 325ba04613
commit 01d4effe81
2 changed files with 13 additions and 7 deletions

View file

@ -628,13 +628,13 @@ this command arranges for all errors to enter the debugger."
(interactive "P")
(if (null eval-expression-debug-on-error)
(eval-last-sexp-1 eval-last-sexp-arg-internal)
(let ((old-value eval-last-sexp-fake-value) new-value value)
(let ((debug-on-error old-value))
(setq value (eval-last-sexp-1 eval-last-sexp-arg-internal))
(setq new-value debug-on-error))
(unless (eq old-value new-value)
(setq debug-on-error new-value))
value)))
(let ((value
(let ((debug-on-error eval-last-sexp-fake-value))
(cons (eval-last-sexp-1 eval-last-sexp-arg-internal)
debug-on-error))))
(unless (eq (cdr value) eval-last-sexp-fake-value)
(setq debug-on-error (cdr value)))
(car value))))
(defun eval-defun-1 (form)
"Treat some expressions specially.