Function: clojure--sort-following-sexps
clojure--sort-following-sexps is a byte-compiled function defined in
clojure-mode.el.
Signature
(clojure--sort-following-sexps)
Documentation
Sort sexps between point and end of current sexp.
Comments at the start of a line are considered part of the following sexp. Comments at the end of a line (after some other content) are considered part of the preceding sexp.
Source Code
;; Defined in ~/.emacs.d/elpa/clojure-mode-20260325.811/clojure-mode.el
(defun clojure--sort-following-sexps ()
"Sort sexps between point and end of current sexp.
Comments at the start of a line are considered part of the
following sexp. Comments at the end of a line (after some other
content) are considered part of the preceding sexp."
;; Here we're after the :require/:import symbol.
(save-restriction
(narrow-to-region (point) (save-excursion
(up-list)
;; Ignore any comments in the end before sorting
(backward-char)
(forward-sexp -1)
(clojure-forward-logical-sexp)
(unless (looking-at-p ")")
(search-forward-regexp "$"))
(point)))
(skip-chars-forward "\r\n[:blank:]")
(sort-subr nil
(lambda () (skip-chars-forward "\r\n[:blank:]"))
;; Move to end of current top-level thing.
(lambda ()
(condition-case nil
(while t (up-list))
(scan-error nil))
;; We could be inside a symbol instead of a sexp.
(unless (looking-at "\\s-\\|$")
(clojure-forward-logical-sexp))
;; move past comments at the end of the line.
(search-forward-regexp "$"))
;; Move to start of ns name.
(lambda ()
(comment-forward)
(skip-chars-forward "[:blank:]\n\r[(")
(clojure-forward-logical-sexp)
(forward-sexp -1)
nil)
;; Move to end of ns name.
(lambda ()
(clojure-forward-logical-sexp)))
(goto-char (point-max))
;; Does the last line now end in a comment?
(when (nth 4 (parse-partial-sexp (point-min) (point)))
(insert "\n"))))