Mercurial > emacs
comparison lisp/emacs-lisp/lisp-mode.el @ 38585:f2c0f6df43ab
(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.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Fri, 27 Jul 2001 15:26:53 +0000 |
parents | 4dce109d0aa3 |
children | 0e059993ad95 |
comparison
equal
deleted
inserted
replaced
38584:9987609b0554 | 38585:f2c0f6df43ab |
---|---|
318 (terpri) | 318 (terpri) |
319 (eval-last-sexp t) | 319 (eval-last-sexp t) |
320 (terpri))) | 320 (terpri))) |
321 | 321 |
322 | 322 |
323 (defun last-sexp-print () | 323 (defun last-sexp-setup-props (beg end value alt1 alt2) |
324 "Set up text properties for the output of `eval-last-sexp-1'. | |
325 BEG and END are the start and end of the output in current-buffer. | |
326 VALUE is the Lisp value printed, ALT1 and ALT2 are strings for the | |
327 alternative printed representations that can be displayed." | |
328 (let ((map (make-sparse-keymap))) | |
329 (define-key map "\C-m" 'last-sexp-toggle-display) | |
330 (define-key map [down-mouse-2] 'mouse-set-point) | |
331 (define-key map [mouse-2] 'last-sexp-toggle-display) | |
332 (add-text-properties | |
333 beg end | |
334 `(printed-value (,value ,alt1 ,alt2) | |
335 mouse-face highlight | |
336 keymap ,map | |
337 help-echo "RET, mouse-2: toggle abbreviated display" | |
338 rear-nonsticky (mouse-face keymap help-echo | |
339 printed-value))))) | |
340 | |
341 | |
342 (defun last-sexp-toggle-display () | |
343 "Toggle between abbreviated and unabbreviated printed representations." | |
324 (interactive) | 344 (interactive) |
325 (let ((value (get-text-property (point) 'printed-value))) | 345 (let ((value (get-text-property (point) 'printed-value))) |
326 (when value | 346 (when value |
327 (let ((beg (previous-single-property-change (point) 'printed-value)) | 347 (let ((beg (previous-single-property-change (point) 'printed-value)) |
328 (end (next-single-char-property-change (point) 'printed-value)) | 348 (end (next-single-char-property-change (point) 'printed-value)) |
329 (standard-output (current-buffer)) | 349 (standard-output (current-buffer)) |
330 (print-length nil) | 350 (point (point))) |
331 (print-level nil)) | |
332 (delete-region beg end) | 351 (delete-region beg end) |
333 (prin1 value))))) | 352 (insert (nth 1 value)) |
353 (last-sexp-setup-props beg (point) | |
354 (nth 0 value) | |
355 (nth 2 value) | |
356 (nth 1 value)) | |
357 (goto-char (min (point-max) point)))))) | |
334 | 358 |
335 | 359 |
336 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal) | 360 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal) |
337 "Evaluate sexp before point; print value in minibuffer. | 361 "Evaluate sexp before point; print value in minibuffer. |
338 With argument, print output into current buffer." | 362 With argument, print output into current buffer." |
399 (prin1 value) | 423 (prin1 value) |
400 (setq end (point)) | 424 (setq end (point)) |
401 (when (and (bufferp standard-output) | 425 (when (and (bufferp standard-output) |
402 (or (not (null print-length)) | 426 (or (not (null print-length)) |
403 (not (null print-level))) | 427 (not (null print-level))) |
404 (not (string= unabbreviated (buffer-substring beg end)))) | 428 (not (string= unabbreviated |
405 (let ((map (make-sparse-keymap))) | 429 (buffer-substring-no-properties beg end)))) |
406 (define-key map "\C-m" 'last-sexp-print) | 430 (last-sexp-setup-props beg end value |
407 (define-key map [down-mouse-2] 'mouse-set-point) | 431 unabbreviated |
408 (define-key map [mouse-2] 'last-sexp-print) | 432 (buffer-substring-no-properties beg end)) |
409 (add-text-properties | 433 ))))) |
410 beg end | |
411 `(printed-value ,value | |
412 mouse-face highlight | |
413 keymap ,map | |
414 help-echo "RET, mouse-2: print unabbreviated" | |
415 read-nonsticky (mouse-face keymap help-echo | |
416 printed-value) | |
417 )))))))) | |
418 | 434 |
419 | 435 |
420 (defun eval-last-sexp (eval-last-sexp-arg-internal) | 436 (defun eval-last-sexp (eval-last-sexp-arg-internal) |
421 "Evaluate sexp before point; print value in minibuffer. | 437 "Evaluate sexp before point; print value in minibuffer. |
422 Interactively, with prefix argument, print output into current buffer." | 438 Interactively, with prefix argument, print output into current buffer." |