# HG changeset patch # User Karl Heuer # Date 856684355 0 # Node ID 852e90e67fffe89c2152de68206ca287fe76d1de # Parent 01cba1834368e14cbd05e36f52cbdaf9803b1504 (eval-last-sexp): Allow let-bindings to terminate before doing the eval. Handle (interactive ...) form specially. diff -r 01cba1834368 -r 852e90e67fff lisp/emacs-lisp/lisp-mode.el --- 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)