Function: clojure--add-arity-internal
clojure--add-arity-internal is a byte-compiled function defined in
clojure-mode.el.
Signature
(clojure--add-arity-internal)
Documentation
Add an arity to a function.
Assumes cursor is at beginning of function.
Source Code
;; Defined in ~/.emacs.d/elpa/clojure-mode-20260325.811/clojure-mode.el
(defun clojure--add-arity-internal ()
"Add an arity to a function.
Assumes cursor is at beginning of function."
(let ((beg-line (line-number-at-pos))
(end (save-excursion (forward-sexp)
(point))))
(down-list 2)
(when (looking-back "{" 1) ;; skip metadata if present
(up-list)
(down-list))
(cond
((looking-back "(" 1) ;; multi-arity fn
(insert "[")
(save-excursion (insert "])\n(")))
((looking-back "\\[" 1) ;; single-arity fn
(let* ((same-line (= beg-line (line-number-at-pos)))
(bracket-pos (1- (point)))
(meta-start (clojure--find-arglist-metadata-start bracket-pos)))
(save-excursion
(goto-char end)
(insert ")"))
(if (< meta-start bracket-pos)
;; Has metadata before arglist — move it inside the arity
;; wrapper so it stays associated with the original arglist.
;; E.g. (defn foo ^String [x] ...) becomes:
;; (defn foo ([]) (^String [x] ...))
(let ((meta-text (replace-regexp-in-string
"[ \t\n\r]+" " "
(string-trim
(buffer-substring meta-start bracket-pos)))))
(goto-char meta-start)
(skip-chars-backward " \t\n")
(delete-region (point) (1+ bracket-pos))
(insert "\n([")
(save-excursion
(insert "])\n(" meta-text " [")))
;; No metadata — original behavior
(let ((new-arity-text (concat (when same-line "\n") "([")))
(re-search-backward " +\\[")
(replace-match new-arity-text)
(save-excursion (insert "])\n([")))))))))