Skip to content

Commit 05e7570

Browse files
authored
Merge pull request #3708 from katomuso/docstring-trim-format
Split `cider-docstring--dumb-trim` into two single-purpose functions
2 parents 09d3dd4 + fd84fad commit 05e7570

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

Diff for: cider-doc.el

+2-1
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.")))

Diff for: cider-docstring.el

+17-21
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
;;; Code:
2828

2929
(require 'cl-lib)
30+
(require 'seq)
3031
(require 'shr)
32+
(require 'subr-x)
3133

3234
(defsubst cider--render-pre* (dom)
3335
"Render DOM nodes, formatting them them as Java if they are strings."
@@ -139,27 +141,21 @@ Prioritize rendering as much as possible while staying within `cider-docstring-m
139141
second-attempt
140142
first-attempt)))
141143

142-
(defun cider-docstring--dumb-trim (s &optional n)
143-
"Returns up to the first N lines of string S,
144-
adding \"...\" if trimming was necessary.
145-
146-
N defaults to `cider-docstring-max-lines'.
147-
148-
Also performs some bare-bones formatting, cleaning up some common whitespace issues."
149-
(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))
152-
(lines (split-string s "\n"))
153-
(lines-length (length lines))
154-
(selected-lines (cl-subseq lines 0 (min n lines-length)))
155-
(result (mapconcat (lambda (f)
156-
;; Remove spaces at the beginning of each line, as it is common in many clojure.core defns:
157-
(replace-regexp-in-string "\\`[ ]+" "" f))
158-
selected-lines
159-
"\n")))
160-
(if (> lines-length n)
161-
(concat result "...")
162-
result))))
144+
(cl-defun cider-docstring--trim (string &optional (max-lines cider-docstring-max-lines))
145+
"Return MAX-LINES of STRING, adding \"...\" if trimming was necessary."
146+
(let* ((lines (split-string string "\n"))
147+
(string (string-join (seq-take lines max-lines) "\n")))
148+
(concat string (when (> (length lines) max-lines) "..."))))
149+
150+
(defun cider-docstring--format (string)
151+
"Return a nicely formatted STRING to be displayed to the user."
152+
(let* ((string (replace-regexp-in-string "\\. " ".\n\n" string)) ;; improve the formatting of e.g. clojure.core/reduce
153+
(string (mapconcat (lambda (line)
154+
;; Remove spaces at the beginning of each line, as it is common in many clojure.core defns:
155+
(replace-regexp-in-string "\\`[ ]+" "" line))
156+
(split-string string "\n")
157+
"\n")))
158+
string))
163159

164160
(provide 'cider-docstring)
165161
;;; cider-docstring.el ends here

Diff for: cider-eldoc.el

+3-1
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)