Function: cider-docview-render-info
cider-docview-render-info is a byte-compiled function defined in
cider-doc.el.
Signature
(cider-docview-render-info BUFFER INFO &optional COMPACT FOR-TOOLTIP)
Documentation
Emit into BUFFER formatted INFO for the Clojure or Java symbol, in a COMPACT format is specified, FOR-TOOLTIP if specified.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20260414.1619/cider-doc.el
(defun cider-docview-render-info (buffer info &optional compact for-tooltip)
"Emit into BUFFER formatted INFO for the Clojure or Java symbol,
in a COMPACT format is specified, FOR-TOOLTIP if specified."
(let* ((ns (nrepl-dict-get info "ns"))
(name (nrepl-dict-get info "name"))
(added (nrepl-dict-get info "added"))
(depr (nrepl-dict-get info "deprecated"))
(macro (nrepl-dict-get info "macro"))
(special (nrepl-dict-get info "special-form"))
(builtin (nrepl-dict-get info "built-in")) ;; babashka specific
(forms (when-let* ((str (nrepl-dict-get info "forms-str")))
(split-string str "\n")))
(args (or (nrepl-dict-get info "annotated-arglists")
(when-let* ((str (nrepl-dict-get info "arglists-str")))
(split-string str "\n"))))
(rendered-fragments (cider--render-docstring (list "doc-fragments" (unless compact
(nrepl-dict-get info "doc-fragments"))
"doc-block-tags-fragments" (nrepl-dict-get info "doc-block-tags-fragments")
"doc-first-sentence-fragments" (nrepl-dict-get info "doc-first-sentence-fragments"))))
(fetched-doc (nrepl-dict-get info "doc"))
(doc (or rendered-fragments
(when fetched-doc
(if compact
(cider-docstring--trim
(cider-docstring--format fetched-doc))
fetched-doc))
(unless compact
"Not documented.")))
(url (nrepl-dict-get info "url"))
(class (nrepl-dict-get info "class"))
(member (nrepl-dict-get info "member"))
(javadoc (nrepl-dict-get info "javadoc"))
(super (nrepl-dict-get info "super"))
(ifaces (nrepl-dict-get info "interfaces"))
(spec (nrepl-dict-get info "spec"))
(clj-name (if ns (concat ns "/" name) name))
(java-name (if member (concat class "/" member) class))
(see-also (nrepl-dict-get info "see-also")))
(cider--help-setup-xref (list #'cider-doc-lookup (format "%s/%s" ns name)) nil buffer)
(with-current-buffer buffer
(cl-flet ((emit (text &optional face sep)
(insert (if face
(propertize text 'font-lock-face face)
text)
(or sep "\n"))))
(emit (if class java-name clj-name) 'font-lock-function-name-face)
(when super
(emit (concat "Extends: " (cider-font-lock-as 'java-mode super))))
(when ifaces
(emit (concat "Implements: " (cider-font-lock-as 'java-mode (car ifaces))))
;; choose a separator that will produce correct alignment on monospace and regular fonts:
(let ((sep (if for-tooltip
" "
" ")))
(dolist (iface (cdr ifaces))
(emit (concat sep (cider-font-lock-as 'java-mode iface))))))
(when (or super ifaces)
(insert "\n"))
(when-let* ((forms (or forms args))
(forms (delq nil (mapcar (lambda (f)
(unless (equal f "nil")
f))
forms))))
(dolist (form forms)
(emit (cider-font-lock-as-clojure form)
nil))
(when compact
;; Compensate for the newlines not `emit`ted in the previous call:
(insert "\n")))
(when special
(emit "Special Form" 'font-lock-keyword-face))
(when macro
(emit "Macro" 'font-lock-variable-name-face))
(when builtin
(emit "Built-in" 'font-lock-keyword-face))
(when added
(emit (concat "Added in " added) 'font-lock-comment-face))
(when depr
(emit (concat "Deprecated in " depr) 'font-lock-keyword-face))
(if (and doc class (not rendered-fragments))
(cider-docview-render-java-doc (current-buffer) doc)
(when doc
(emit (if rendered-fragments
doc
(concat " " doc)))))
(when url
(insert "\n Please see ")
(insert-text-button url
'url url
'follow-link t
'action (lambda (x)
(browse-url (button-get x 'url))))
(insert "\n"))
(when (and (not compact) javadoc)
(insert "\n\nFor additional documentation, see the ")
(insert-text-button "Javadoc"
'url javadoc
'follow-link t
'action (lambda (x)
(browse-url (button-get x 'url))))
(insert ".\n"))
(insert "\n")
(when spec
(emit "Spec:" 'font-lock-function-name-face)
(insert (cider-browse-spec--pprint-indented spec))
(insert "\n\n")
(insert-text-button "Browse spec"
'follow-link t
'action (lambda (_)
(cider-browse-spec (format "%s/%s" ns name))))
(insert "\n\n"))
(unless compact
(if (and cider-docview-file (not (string= cider-docview-file "")))
(progn
(insert (propertize (if class java-name clj-name)
'font-lock-face 'font-lock-function-name-face)
" is defined in ")
(insert-text-button (cider--abbreviate-file-protocol cider-docview-file)
'follow-link t
'action (lambda (_x)
(cider-docview-source)))
(insert "."))
(insert "Definition location unavailable.")))
(when (and (not compact)
see-also)
(insert "\n\n Also see: ")
(mapc (lambda (ns-sym)
(let* ((ns-sym-split (split-string ns-sym "/"))
(see-also-ns (car ns-sym-split))
(see-also-sym (cadr ns-sym-split))
;; if the var belongs to the same namespace,
;; we omit the namespace to save some screen space
(symbol (if (equal ns see-also-ns) see-also-sym ns-sym)))
(insert-text-button symbol
'type 'help-xref
'help-function (apply-partially #'cider-doc-lookup symbol)))
(insert " "))
see-also))
(unless compact
(cider--doc-make-xrefs))
(let ((beg (point-min))
(end (point-max)))
(nrepl-dict-map (lambda (k v)
(put-text-property beg end k v))
info)))
(current-buffer))))