Function: cider-ns-edit--add-require
cider-ns-edit--add-require is a byte-compiled function defined in
cider-ns.el.
Signature
(cider-ns-edit--add-require NS-START NS ALIAS &optional REFER)
Documentation
Require NS as ALIAS, referring REFER, in the ns form at NS-START.
ALIAS and REFER can be nil. When NS is already required, its libspec
gets the ALIAS and REFER it lacks. Return (STATUS . LIBSPEC), where
STATUS is added for a new LIBSPEC, updated for a changed one, and
nil when NS is already required by LIBSPEC as asked. Signal an error
when NS has another alias, or another namespace has ALIAS or REFER.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20261106.1225/cider-ns.el
(defun cider-ns-edit--add-require (ns-start ns alias &optional refer)
"Require NS as ALIAS, referring REFER, in the ns form at NS-START.
ALIAS and REFER can be nil. When NS is already required, its libspec
gets the ALIAS and REFER it lacks. Return (STATUS . LIBSPEC), where
STATUS is `added' for a new LIBSPEC, `updated' for a changed one, and
nil when NS is already required by LIBSPEC as asked. Signal an error
when NS has another alias, or another namespace has ALIAS or REFER."
(let* ((clause (cider-ns-edit--clause ns-start ":require"))
(libspecs (and clause (cdr (cider-ns-edit--elements clause))))
(others (seq-remove (lambda (pos) (equal (cider-ns-edit--libspec-ns pos) ns))
libspecs))
(existing (seq-find (lambda (pos)
(and (equal (cider-ns-edit--libspec-ns pos) ns)
(cider-ns-edit--loads-p pos)))
libspecs)))
(when-let* ((owner (and alias
(seq-find (lambda (pos) (member alias (cider-ns-edit--aliases pos)))
others))))
(user-error "%s is already the alias of %s"
alias (cider-ns-edit--libspec-ns owner)))
(when-let* ((owner (and refer
(seq-find (lambda (pos) (member refer (cider-ns-edit--refers pos)))
others))))
(user-error "%s is already referred from %s"
refer (cider-ns-edit--libspec-ns owner)))
(if existing
(cons (and (cider-ns-edit--merge-libspec existing alias refer) 'updated)
(cider-ns-edit--text existing))
(let ((libspec (cider-ns-edit--libspec ns alias refer)))
(if clause
(cider-ns-edit--append clause libspec)
(cider-ns-edit--add-clause ns-start ":require" libspec))
(cons 'added libspec)))))