# HG changeset patch # User Richard M. Stallman # Date 937292436 0 # Node ID 00b4eac00979057393a678b82151b12fd92d9647 # Parent 2b96c6e05f232782822ec33777d7cec9b5a7702a (eval-defun, eval-last-sexp): Bind print-level, print-length and debug-on-error. diff -r 2b96c6e05f23 -r 00b4eac00979 lisp/emacs-lisp/lisp-mode.el --- a/lisp/emacs-lisp/lisp-mode.el Tue Sep 14 07:00:04 1999 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Tue Sep 14 07:00:36 1999 +0000 @@ -326,8 +326,10 @@ "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 @@ 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 @@ 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))