Function: cider--format-region
cider--format-region is a byte-compiled function defined in
cider-format.el.
Signature
(cider--format-region START END FORMATTER)
Documentation
Format the contents of the given region.
START and END represent the region's boundaries.
FORMATTER is a function of one argument which is used to convert the string contents of the region into a formatted string.
Uses the following heuristic to try to maintain point position:
- Take a snippet of text starting at current position, up to 64 chars.
- Search for the snippet, with lax whitespace, in the formatted text.
- If snippet is less than 64 chars (point was near end of buffer), search
from end instead of beginning.
- Place point at match beginning, or point-min if no match.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20260414.1619/cider-format.el
;;; Format region
(defun cider--format-region (start end formatter)
"Format the contents of the given region.
START and END represent the region's boundaries.
FORMATTER is a function of one argument which is used to convert
the string contents of the region into a formatted string.
Uses the following heuristic to try to maintain point position:
- Take a snippet of text starting at current position, up to 64 chars.
- Search for the snippet, with lax whitespace, in the formatted text.
- If snippet is less than 64 chars (point was near end of buffer), search
from end instead of beginning.
- Place point at match beginning, or `point-min' if no match."
(let* ((original (buffer-substring-no-properties start end))
(formatted (funcall formatter original))
(indented (cider--format-reindent formatted start)))
(unless (equal original indented)
(let* ((pos (point))
(pos-max (1+ (buffer-size)))
(l 64)
(endp (> (+ pos l) pos-max))
(snippet (thread-last
(buffer-substring-no-properties
pos (min (+ pos l) pos-max))
(regexp-quote)
(replace-regexp-in-string "[[:space:]\t\n\r]+" "[[:space:]\t\n\r]*"))))
(delete-region start end)
(insert indented)
(goto-char (if endp (point-max) (point-min)))
(funcall (if endp #'re-search-backward #'re-search-forward) snippet nil t)
(goto-char (or (match-beginning 0) start))
(when (looking-at-p "\n") (forward-char))))))