1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-15 09:47:20 +00:00

(eval-defun, eval-last-sexp):

Bind print-level, print-length and debug-on-error.
This commit is contained in:
Richard M. Stallman 1999-09-14 07:00:36 +00:00
parent b49df39ddc
commit efb195f0ca

View File

@ -326,8 +326,10 @@ if that value is non-nil."
"Evaluate sexp before point; print value in minibuffer.
With argument, print output into current buffer."
(interactive "P")
(let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t)))
(prin1 (eval (let ((stab (syntax-table))
(let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))
(debug-on-error eval-expression-debug-on-error))
(let ((value
(eval (let ((stab (syntax-table))
(opoint (point))
ignore-quotes
expr)
@ -368,7 +370,10 @@ With argument, print output into current buffer."
expr
'args)))))
expr))
(set-syntax-table stab)))))))
(set-syntax-table stab))))))
(let ((print-length eval-expression-print-length)
(print-level eval-expression-print-level))
(print value)))))
;; Change defvar into defconst within FORM,
;; and likewise for other constructs as necessary.
@ -398,30 +403,33 @@ if it already has a value.\)
With argument, insert value in current buffer after the defun.
Return the result of evaluation."
(interactive "P")
(save-excursion
;; Arrange for eval-region to "read" the (possibly) altered form.
;; eval-region handles recording which file defines a function or
;; variable. Re-written using `apply' to avoid capturing
;; variables like `end'.
(apply
#'eval-region
(let ((standard-output (if eval-defun-arg-internal (current-buffer) t))
beg end form)
;; Read the form from the buffer, and record where it ends.
(save-excursion
(end-of-defun)
(beginning-of-defun)
(setq beg (point))
(setq form (read (current-buffer)))
(setq end (point)))
;; Alter the form if necessary, changing defvar into defconst, etc.
(setq form (eval-defun-1 (macroexpand form)))
(list beg end standard-output
`(lambda (ignore)
;; Skipping to the end of the specified region
;; will make eval-region return.
(goto-char ,end)
',form)))))
(let ((debug-on-error eval-expression-debug-on-error)
(print-length eval-expression-print-length)
(print-level eval-expression-print-level))
(save-excursion
;; Arrange for eval-region to "read" the (possibly) altered form.
;; eval-region handles recording which file defines a function or
;; variable. Re-written using `apply' to avoid capturing
;; variables like `end'.
(apply
#'eval-region
(let ((standard-output (if eval-defun-arg-internal (current-buffer) t))
beg end form)
;; Read the form from the buffer, and record where it ends.
(save-excursion
(end-of-defun)
(beginning-of-defun)
(setq beg (point))
(setq form (read (current-buffer)))
(setq end (point)))
;; Alter the form if necessary, changing defvar into defconst, etc.
(setq form (eval-defun-1 (macroexpand form)))
(list beg end standard-output
`(lambda (ignore)
;; Skipping to the end of the specified region
;; will make eval-region return.
(goto-char ,end)
',form))))))
;; The result of evaluation has been put onto VALUES. So return it.
(car values))