Mercurial > emacs
changeset 17066:852e90e67fff
(eval-last-sexp): Allow let-bindings to terminate
before doing the eval.
Handle (interactive ...) form specially.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Sun, 23 Feb 1997 07:52:35 +0000 |
parents | 01cba1834368 |
children | 15b18d794b75 |
files | lisp/emacs-lisp/lisp-mode.el |
diffstat | 1 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el Sun Feb 23 07:09:01 1997 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Sun Feb 23 07:52:35 1997 +0000 @@ -293,16 +293,30 @@ "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)) - (opoint (point))) - (prin1 (let ((stab (syntax-table))) - (eval (unwind-protect + (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))) + (prin1 (eval (let ((stab (syntax-table)) + (opoint (point)) + expr) + (unwind-protect (save-excursion (set-syntax-table emacs-lisp-mode-syntax-table) (forward-sexp -1) (save-restriction (narrow-to-region (point-min) opoint) - (read (current-buffer)))) + (setq expr (read (current-buffer))) + ;; If it's an (interactive ...) form, it's more + ;; useful to show how an interactive call would + ;; use it. + (and (consp expr) + (eq (car expr) 'interactive) + (setq expr + (list 'call-interactively + (list 'quote + (list 'lambda + '(&rest args) + expr + 'args))))) + expr)) (set-syntax-table stab))))))) (defun eval-defun (eval-defun-arg-internal)