aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Moellmann2001-07-26 12:31:38 +0000
committerGerd Moellmann2001-07-26 12:31:38 +0000
commit5f0962558df85aeae85511bf2abf85e6a035544d (patch)
tree9cb3280673329ff58bcdc503c47375ecf3cc6726
parent8c3b00cbc782478efd4682ef12542937d7d59228 (diff)
downloademacs-5f0962558df85aeae85511bf2abf85e6a035544d.tar.gz
emacs-5f0962558df85aeae85511bf2abf85e6a035544d.zip
(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.
-rw-r--r--lisp/emacs-lisp/lisp-mode.el31
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.
324With argument, print output into current buffer." 336With 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.