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