Function: shortdoc--display-function
shortdoc--display-function is a byte-compiled function defined in
shortdoc.el.gz.
Signature
(shortdoc--display-function DATA)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/shortdoc.el.gz
(defun shortdoc--display-function (data)
(let ((function (pop data))
(start-section (point))
arglist-start)
;; Function calling convention.
(insert (propertize "(" 'shortdoc-function function 'outline-level 2))
(if (plist-get data :no-manual)
(insert-text-button
(symbol-name function)
'face 'button
'action (lambda (_)
(describe-function function))
'follow-link t
'help-echo "mouse-1, RET: describe function")
(insert-text-button
(symbol-name function)
'face 'button
'action (lambda (_)
(info-lookup-symbol function 'emacs-lisp-mode))
'follow-link t
'help-echo "mouse-1, RET: show \
function's documentation in the Info manual"))
(setq arglist-start (point))
(insert ")\n")
;; Doc string.
(insert " "
(or (plist-get data :doc)
(car (split-string (documentation function) "\n"))))
(insert "\n")
(add-face-text-property start-section (point) 'shortdoc-section t)
(let ((print-escape-newlines t)
(double-arrow (if (char-displayable-p ?⇒)
"⇒"
"=>"))
(single-arrow (if (char-displayable-p ?→)
"→"
"->"))
(start-example (point)))
(cl-loop for (type value) on data by #'cddr
do
(cl-case type
(:eval
(insert " ")
(if (stringp value)
(insert value)
(prin1 value (current-buffer)))
(insert "\n " double-arrow " ")
(let ((expr (if (stringp value)
(car (read-from-string value))
value)))
(prin1 (eval expr) (current-buffer)))
(insert "\n"))
(:no-eval*
(if (stringp value)
(insert " " value "\n")
(insert " ")
(prin1 value (current-buffer)))
(insert "\n " single-arrow " "
(propertize "[it depends]"
'face 'shortdoc-section)
"\n"))
(:no-value
(if (stringp value)
(insert " " value)
(insert " ")
(prin1 value (current-buffer)))
(insert "\n"))
(:no-eval
(if (stringp value)
(insert " " value)
(insert " ")
(prin1 value (current-buffer)))
(insert "\n"))
(:result
(insert " " double-arrow " ")
(prin1 value (current-buffer))
(insert "\n"))
(:result-string
(insert " " double-arrow " ")
(princ value (current-buffer))
(insert "\n"))
(:eg-result
(insert " e.g. " double-arrow " ")
(prin1 value (current-buffer))
(insert "\n"))
(:eg-result-string
(insert " e.g. " double-arrow " ")
(princ value (current-buffer))
(insert "\n"))))
(add-text-properties start-example (point) `(shortdoc-example ,function)))
;; Insert the arglist after doing the evals, in case that's pulled
;; in the function definition.
(save-excursion
(goto-char arglist-start)
(dolist (param (or (plist-get data :args)
(help-function-arglist function t)))
(insert " " (symbol-name param)))
(add-face-text-property arglist-start (point) 'shortdoc-section t))))