Mercurial > emacs
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. |