Mercurial > emacs
comparison lisp/emacs-lisp/lisp-mode.el @ 38572:107f826252d2
(last-sexp-print): New function.
(eval-last-sexp-1): Give printed text a `keymap' property and bind
<mouse-2> and <RET> in that map to a function printing the
unabbreviated value.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 26 Jul 2001 12:31:38 +0000 |
parents | 795feb9422e4 |
children | c6a3a3a3c0de |
comparison
equal
deleted
inserted
replaced
38571:a404db64bdb2 | 38572:107f826252d2 |
---|---|
317 (let ((standard-output (current-buffer))) | 317 (let ((standard-output (current-buffer))) |
318 (terpri) | 318 (terpri) |
319 (eval-last-sexp t) | 319 (eval-last-sexp t) |
320 (terpri))) | 320 (terpri))) |
321 | 321 |
322 | |
323 (defun last-sexp-print () | |
324 (interactive) | |
325 (let ((value (get-text-property (point) 'printed-value))) | |
326 (when value | |
327 (let ((beg (previous-single-property-change (point) 'printed-value)) | |
328 (end (next-single-char-property-change (point) 'printed-value)) | |
329 (standard-output (current-buffer))) | |
330 (delete-region beg end) | |
331 (prin1 value))))) | |
332 | |
333 | |
322 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal) | 334 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal) |
323 "Evaluate sexp before point; print value in minibuffer. | 335 "Evaluate sexp before point; print value in minibuffer. |
324 With argument, print output into current buffer." | 336 With argument, print output into current buffer." |
325 (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))) | 337 (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))) |
326 (let ((value | 338 (let ((value |
376 'args))))) | 388 'args))))) |
377 expr)) | 389 expr)) |
378 (set-syntax-table stab)))))) | 390 (set-syntax-table stab)))))) |
379 (let ((print-length eval-expression-print-length) | 391 (let ((print-length eval-expression-print-length) |
380 (print-level eval-expression-print-level) | 392 (print-level eval-expression-print-level) |
381 (start (point))) | 393 (beg (point))) |
382 (prin1 value) | 394 (prin1 value) |
383 (when (bufferp standard-output) | 395 (when (and (bufferp standard-output) |
384 (put-text-property start (point) 'printed-value value)))))) | 396 (or (not (null print-length)) |
397 (not (null print-level)))) | |
398 (let ((map (make-sparse-keymap)) | |
399 (end (point))) | |
400 (define-key map "\C-m" 'last-sexp-print) | |
401 (define-key map [down-mouse-2] 'mouse-set-point) | |
402 (define-key map [mouse-2] 'last-sexp-print) | |
403 (add-text-properties | |
404 beg end | |
405 `(printed-value ,value | |
406 mouse-face highlight | |
407 keymap ,map | |
408 help-echo "RET, mouse-2: print unabbreviated")))))))) | |
409 | |
385 | 410 |
386 (defun eval-last-sexp (eval-last-sexp-arg-internal) | 411 (defun eval-last-sexp (eval-last-sexp-arg-internal) |
387 "Evaluate sexp before point; print value in minibuffer. | 412 "Evaluate sexp before point; print value in minibuffer. |
388 Interactively, with prefix argument, print output into current buffer." | 413 Interactively, with prefix argument, print output into current buffer." |
389 (interactive "P") | 414 (interactive "P") |