1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00

(last-sexp-setup-props): New function.

(last-sexp-toggle-display): Renamed from last-sexp-print.
(last-sexp-toggle-display, eval-last-sexp-1): Use
last-sexp-setup-props.
This commit is contained in:
Gerd Moellmann 2001-07-27 15:26:53 +00:00
parent f936978f84
commit cb79ea6486

View File

@ -320,17 +320,41 @@ which see."
(terpri)))
(defun last-sexp-print ()
(defun last-sexp-setup-props (beg end value alt1 alt2)
"Set up text properties for the output of `eval-last-sexp-1'.
BEG and END are the start and end of the output in current-buffer.
VALUE is the Lisp value printed, ALT1 and ALT2 are strings for the
alternative printed representations that can be displayed."
(let ((map (make-sparse-keymap)))
(define-key map "\C-m" 'last-sexp-toggle-display)
(define-key map [down-mouse-2] 'mouse-set-point)
(define-key map [mouse-2] 'last-sexp-toggle-display)
(add-text-properties
beg end
`(printed-value (,value ,alt1 ,alt2)
mouse-face highlight
keymap ,map
help-echo "RET, mouse-2: toggle abbreviated display"
rear-nonsticky (mouse-face keymap help-echo
printed-value)))))
(defun last-sexp-toggle-display ()
"Toggle between abbreviated and unabbreviated printed representations."
(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))
(print-length nil)
(print-level nil))
(point (point)))
(delete-region beg end)
(prin1 value)))))
(insert (nth 1 value))
(last-sexp-setup-props beg (point)
(nth 0 value)
(nth 2 value)
(nth 1 value))
(goto-char (min (point-max) point))))))
(defun eval-last-sexp-1 (eval-last-sexp-arg-internal)
@ -401,20 +425,12 @@ With argument, print output into current buffer."
(when (and (bufferp standard-output)
(or (not (null print-length))
(not (null print-level)))
(not (string= unabbreviated (buffer-substring beg end))))
(let ((map (make-sparse-keymap)))
(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"
read-nonsticky (mouse-face keymap help-echo
printed-value)
))))))))
(not (string= unabbreviated
(buffer-substring-no-properties beg end))))
(last-sexp-setup-props beg end value
unabbreviated
(buffer-substring-no-properties beg end))
)))))
(defun eval-last-sexp (eval-last-sexp-arg-internal)