Mercurial > emacs
changeset 27303:6af9b684a1a0
(eval-last-sexp-1): Renamed from
eval-last-sexp. Don't bind debug-on-error here.
(eval-last-sexp): New function. Bind debug-on-error if
eval-expression-debug-on-error is non-nil.
(eval-defun-2, eval-defun): Likewise.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Wed, 12 Jan 2000 13:10:17 +0000 |
parents | 1cb6c18c3163 |
children | 56086275e18d |
files | lisp/emacs-lisp/lisp-mode.el |
diffstat | 1 files changed, 40 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el Wed Jan 12 13:06:52 2000 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Wed Jan 12 13:10:17 2000 +0000 @@ -332,12 +332,10 @@ (eval-last-sexp t) (terpri))) -(defun eval-last-sexp (eval-last-sexp-arg-internal) +(defun eval-last-sexp-1 (eval-last-sexp-arg-internal) "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)) - (debug-on-error eval-expression-debug-on-error)) + (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))) (let ((value (eval (let ((stab (syntax-table)) (opoint (point)) @@ -385,6 +383,20 @@ (print-level eval-expression-print-level)) (prin1 value))))) +(defun eval-last-sexp (eval-last-sexp-arg-internal) + "Evaluate sexp before point; print value in minibuffer. +With argument, print output into current buffer." + (interactive "P") + (if (null eval-expression-debug-on-error) + (eval-last-sexp-1 eval-last-sexp-arg-internal) + (let ((old-value (make-symbol "t")) 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))) + ;; Change defvar into defconst within FORM, ;; and likewise for other constructs as necessary. (defun eval-defun-1 (form) @@ -401,7 +413,7 @@ (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) (t form))) -(defun eval-defun (eval-defun-arg-internal) +(defun eval-defun-2 (eval-defun-arg-internal) "Evaluate defun that point is in or before. The value is displayed in the minibuffer. If the current defun is actually a call to `defvar', @@ -442,6 +454,29 @@ ',form)))))) ;; The result of evaluation has been put onto VALUES. So return it. (car values)) + +(defun eval-defun (eval-defun-arg-internal) + "Evaluate defun that point is in or before. +The value is displayed in the minibuffer. +If the current defun is actually a call to `defvar', +then reset the variable using the initial value expression +even if the variable already has some other value. +\(Normally `defvar' does not change the variable's value +if it already has a value.\) + +With argument, insert value in current buffer after the defun. +Return the result of evaluation." + (interactive "P") + (if (null eval-expression-debug-on-error) + (eval-defun-2 eval-defun-arg-internal) + (let ((old-value (make-symbol "t")) new-value value) + (let ((debug-on-error old-value)) + (setq value (eval-defun-2 eval-defun-arg-internal)) + (setq new-value debug-on-error)) + (unless (eq old-value new-value) + (setq debug-on-error new-value)) + value))) + (defun lisp-comment-indent () (if (looking-at "\\s<\\s<\\s<")