]> git.eshelyaron.com Git - emacs.git/commitdiff
(last-sexp-print): New function.
authorGerd Moellmann <gerd@gnu.org>
Thu, 26 Jul 2001 12:31:38 +0000 (12:31 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 26 Jul 2001 12:31:38 +0000 (12:31 +0000)
(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.

lisp/emacs-lisp/lisp-mode.el

index 252e35d33cb1589b87f4c6c35a839acc9a503e90..093357c5b4347cf0a1c5d58dc93db279fea9a824 100644 (file)
@@ -319,6 +319,18 @@ which see."
     (eval-last-sexp t)
     (terpri)))
 
+
+(defun last-sexp-print ()
+  (interactive)
+  (let ((value (get-text-property (point) 'printed-value)))
+    (when value
+      (let ((beg (previous-single-property-change (point) 'printed-value))
+           (end (next-single-char-property-change (point) 'printed-value))
+           (standard-output (current-buffer)))
+       (delete-region beg end)
+       (prin1 value)))))
+
+
 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal)
   "Evaluate sexp before point; print value in minibuffer.
 With argument, print output into current buffer."
@@ -378,10 +390,23 @@ With argument, print output into current buffer."
                     (set-syntax-table stab))))))
       (let ((print-length eval-expression-print-length)
            (print-level eval-expression-print-level)
-           (start (point)))
+           (beg (point)))
        (prin1 value)
-       (when (bufferp standard-output)
-         (put-text-property start (point) 'printed-value value))))))
+       (when (and (bufferp standard-output)
+                  (or (not (null print-length))
+                      (not (null print-level))))
+         (let ((map (make-sparse-keymap))
+               (end (point)))
+           (define-key map "\C-m" 'last-sexp-print)
+           (define-key map [down-mouse-2] 'mouse-set-point)
+           (define-key map [mouse-2] 'last-sexp-print)
+           (add-text-properties
+            beg end 
+            `(printed-value ,value 
+                            mouse-face highlight 
+                            keymap ,map
+                            help-echo "RET, mouse-2: print unabbreviated"))))))))
+
 
 (defun eval-last-sexp (eval-last-sexp-arg-internal)
   "Evaluate sexp before point; print value in minibuffer.