Function: cider-stacktrace-render-cause
cider-stacktrace-render-cause is a byte-compiled function defined in
cider-stacktrace.el.
Signature
(cider-stacktrace-render-cause BUFFER CAUSE NUM NOTE &optional INSPECT-INDEX)
Documentation
Emit into BUFFER the CAUSE NUM, exception class, message, data, and NOTE, make INSPECT-INDEX actionable if present.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20260414.1619/cider-stacktrace.el
(defun cider-stacktrace-render-cause (buffer cause num note &optional inspect-index)
"Emit into BUFFER the CAUSE NUM, exception class, message, data, and NOTE,
make INSPECT-INDEX actionable if present."
(with-current-buffer buffer
(nrepl-dbind-response cause (class message data spec triage stacktrace)
(let ((indent " ")
(class-face 'cider-stacktrace-error-class-face)
(message-face 'cider-stacktrace-error-message-face))
(cider-propertize-region `(cause ,num)
;; Detail level 0: exception class
(cider-propertize-region `(detail
0
inspect-index
,inspect-index
keymap
,cider-stacktrace-exception-map)
(insert (format "%d. " num)
(propertize note 'font-lock-face 'font-lock-comment-face) " "
(propertize class 'font-lock-face class-face 'mouse-face 'highlight)
"\n"))
;; Detail level 1: message + ex-data
(cider-propertize-region '(detail 1)
(if (equal class "clojure.lang.Compiler$CompilerException")
(cider-stacktrace-render-compile-error buffer cause)
(cider-stacktrace-emit-indented
(propertize (or message "(No message)")
'font-lock-face message-face)
indent t))
(when triage
(insert "\n")
(cider-stacktrace-emit-indented
(propertize (string-trim triage) 'font-lock-face message-face)
indent nil))
(when spec
(insert "\n")
(cider-stacktrace--emit-spec-problems spec (concat indent " ")))
(when data
(insert "\n")
(cider-propertize-region `(inspect-index
,inspect-index
keymap
,cider-stacktrace-ex-data-map
mouse-face
highlight)
(cider-stacktrace-emit-indented data indent nil t)))
(insert "\n"))
;; Detail level 2: stacktrace
(cider-propertize-region '(detail 2)
(let ((beg (point))
(bg `(:background ,cider-stacktrace-frames-background-color :extend t)))
(dolist (frame stacktrace)
(cider-stacktrace-render-frame buffer frame)
(insert "\n"))
(overlay-put (make-overlay beg (point)) 'font-lock-face bg)))
;; Add line break between causes, even when collapsed.
(cider-propertize-region '(detail 0)
(insert "\n")))))))