comparison lisp/emacs-lisp/lisp-mode.el @ 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 049c87a96dca
children 1b3723c744f5
comparison
equal deleted inserted replaced
17065:01cba1834368 17066:852e90e67fff
291 291
292 (defun eval-last-sexp (eval-last-sexp-arg-internal) 292 (defun eval-last-sexp (eval-last-sexp-arg-internal)
293 "Evaluate sexp before point; print value in minibuffer. 293 "Evaluate sexp before point; print value in minibuffer.
294 With argument, print output into current buffer." 294 With argument, print output into current buffer."
295 (interactive "P") 295 (interactive "P")
296 (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t)) 296 (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t)))
297 (opoint (point))) 297 (prin1 (eval (let ((stab (syntax-table))
298 (prin1 (let ((stab (syntax-table))) 298 (opoint (point))
299 (eval (unwind-protect 299 expr)
300 (unwind-protect
300 (save-excursion 301 (save-excursion
301 (set-syntax-table emacs-lisp-mode-syntax-table) 302 (set-syntax-table emacs-lisp-mode-syntax-table)
302 (forward-sexp -1) 303 (forward-sexp -1)
303 (save-restriction 304 (save-restriction
304 (narrow-to-region (point-min) opoint) 305 (narrow-to-region (point-min) opoint)
305 (read (current-buffer)))) 306 (setq expr (read (current-buffer)))
307 ;; If it's an (interactive ...) form, it's more
308 ;; useful to show how an interactive call would
309 ;; use it.
310 (and (consp expr)
311 (eq (car expr) 'interactive)
312 (setq expr
313 (list 'call-interactively
314 (list 'quote
315 (list 'lambda
316 '(&rest args)
317 expr
318 'args)))))
319 expr))
306 (set-syntax-table stab))))))) 320 (set-syntax-table stab)))))))
307 321
308 (defun eval-defun (eval-defun-arg-internal) 322 (defun eval-defun (eval-defun-arg-internal)
309 "Evaluate defun that point is in or before. 323 "Evaluate defun that point is in or before.
310 Print value in minibuffer. 324 Print value in minibuffer.