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)