Skip to content

Commit 78cff16

Browse files
committed
Split cider-docstring--dumb-trim into two single-purpose functions
1 parent 09d3dd4 commit 78cff16

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

cider-doc.el

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,8 @@ in a COMPACT format is specified, FOR-TOOLTIP if specified."
429429
(fetched-doc (nrepl-dict-get info "doc"))
430430
(doc (or rendered-fragments
431431
(if compact
432-
(cider-docstring--dumb-trim fetched-doc)
432+
(cider-docstring--trim
433+
(cider-docstring--format fetched-doc))
433434
fetched-doc)
434435
(unless compact
435436
"Not documented.")))

cider-docstring.el

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
(require 'cl-lib)
3030
(require 'shr)
31+
(require 'subr-x)
3132

3233
(defsubst cider--render-pre* (dom)
3334
"Render DOM nodes, formatting them them as Java if they are strings."
@@ -139,27 +140,32 @@ Prioritize rendering as much as possible while staying within `cider-docstring-m
139140
second-attempt
140141
first-attempt)))
141142

142-
(defun cider-docstring--dumb-trim (s &optional n)
143+
(defun cider-docstring--trim (s &optional n)
143144
"Returns up to the first N lines of string S,
144145
adding \"...\" if trimming was necessary.
145146
146-
N defaults to `cider-docstring-max-lines'.
147-
148-
Also performs some bare-bones formatting, cleaning up some common whitespace issues."
147+
N defaults to `cider-docstring-max-lines'."
149148
(when s
150-
(let* ((s (replace-regexp-in-string "\\. " ".\n\n" s)) ;; improve the formatting of e.g. clojure.core/reduce
151-
(n (or n cider-docstring-max-lines))
149+
(let* ((n (or n cider-docstring-max-lines))
152150
(lines (split-string s "\n"))
153151
(lines-length (length lines))
154152
(selected-lines (cl-subseq lines 0 (min n lines-length)))
153+
(result (string-join selected-lines "\n")))
154+
(if (> lines-length n)
155+
(concat result "...")
156+
result))))
157+
158+
(defun cider-docstring--format (s)
159+
"Performs formatting of S, cleaning up some common whitespace issues."
160+
(when s
161+
(let* ((s (replace-regexp-in-string "\\. " ".\n\n" s)) ;; improve the formatting of e.g. clojure.core/reduce
162+
(lines (split-string s "\n"))
155163
(result (mapconcat (lambda (f)
156164
;; Remove spaces at the beginning of each line, as it is common in many clojure.core defns:
157165
(replace-regexp-in-string "\\`[ ]+" "" f))
158-
selected-lines
166+
lines
159167
"\n")))
160-
(if (> lines-length n)
161-
(concat result "...")
162-
result))))
168+
result)))
163169

164170
(provide 'cider-docstring)
165171
;;; cider-docstring.el ends here

cider-eldoc.el

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ information."
218218
(symbol (lax-plist-get eldoc-info "symbol"))
219219
(docstring (or (cider--render-docstring-first-sentence eldoc-info)
220220
(cider--render-docstring eldoc-info)
221-
(cider-docstring--dumb-trim (lax-plist-get eldoc-info "docstring"))))
221+
(cider-docstring--trim
222+
(cider-docstring--format
223+
(lax-plist-get eldoc-info "docstring")))))
222224
;; if it's a single class (and not multiple class candidates), that's it
223225
(maybe-class (car (lax-plist-get eldoc-info "class")))
224226
(formatted-var (or (when maybe-class

0 commit comments

Comments
 (0)