Function: cl-print-expand-ellipsis

cl-print-expand-ellipsis is an interactive and byte-compiled function defined in cl-print.el.gz.

Signature

(cl-print-expand-ellipsis &optional BUTTON)

Documentation

Expand display of the elided form at BUTTON.

BUTTON can also be a buffer position or nil (to mean point).

View in manual

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-print.el.gz
(defun cl-print-expand-ellipsis (&optional button)
  "Expand display of the elided form at BUTTON.
BUTTON can also be a buffer position or nil (to mean point)."
  (interactive)
  (goto-char (cond
              ((null button) (point))
              (t (button-start button))))
  (unless (get-text-property (point) 'cl-print-ellipsis)
    (if (and (> (point) (point-min))
             (get-text-property (1- (point)) 'cl-print-ellipsis))
        (backward-char)
      (user-error "No ellipsis to expand here")))
  (let* ((end (next-single-property-change (point) 'cl-print-ellipsis))
         (begin (previous-single-property-change end 'cl-print-ellipsis))
         (value (get-text-property begin 'cl-print-ellipsis))
         ;; Ensure clicking the button works even in read only buffers.
         (inhibit-read-only t))
    ;; FIXME: Rather than `t' (i.e. reuse the print-length/level unchanged),
    ;; I think it would make sense to increase the level by 1 and to
    ;; double the length at each expansion step.
    (funcall cl-print-expand-ellipsis-function
             begin end value t)
    (goto-char begin)))