Function: clojure--indent-spec-to-modern
clojure--indent-spec-to-modern is a byte-compiled function defined in
clojure-mode.el.
Signature
(clojure--indent-spec-to-modern SPEC)
Documentation
Convert a legacy indent SPEC to modern tuple format.
Returns SPEC unchanged if it is already in modern format or is a function.
Integer N becomes ((:block N)).
:defn becomes ((:inner 0)).
A positional list is converted element by element.
The legacy format will be removed in clojure-mode 6.
Source Code
;; Defined in ~/.emacs.d/elpa/clojure-mode-20260325.811/clojure-mode.el
(defun clojure--indent-spec-to-modern (spec)
"Convert a legacy indent SPEC to modern tuple format.
Returns SPEC unchanged if it is already in modern format or is a
function.
Integer N becomes ((:block N)).
:defn becomes ((:inner 0)).
A positional list is converted element by element.
The legacy format will be removed in clojure-mode 6."
(cond
((clojure--modern-indent-spec-p spec) spec)
((functionp spec) spec)
((integerp spec) (list (list :block spec)))
((eq spec :defn) '((:inner 0)))
((listp spec)
(let (rules)
(dolist (el spec)
(cond
((integerp el) (push (list :block el) rules))
((eq el :defn) (push (list :inner 0) rules))
((consp el)
(let ((rule (clojure--unwrap-legacy-spec el 0)))
(when rule (push rule rules))))
;; nil elements are positional padding — skip
(t nil)))
;; Put :block rules first, matching clojure-ts-mode convention
(sort (nreverse rules)
(lambda (a _b) (eq (car a) :block)))))
(t spec)))