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)))