diff options
| -rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 252e35d33cb..093357c5b43 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el | |||
| @@ -319,6 +319,18 @@ which see." | |||
| 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." |
| @@ -378,10 +390,23 @@ With argument, print output into current buffer." | |||
| 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. |