Function: cider-ns-edit--add-missing

cider-ns-edit--add-missing is a byte-compiled function defined in cider-ns.el.

Signature

(cider-ns-edit--add-missing NS-START SYMBOL CANDIDATE)

Documentation

Add CANDIDATE, which provides SYMBOL, to the ns form at NS-START.

CANDIDATE is one of the dicts cider-sync-request:resolve-missing returns. Return (CHANGED . TEXTS), where TEXTS are the libspecs and classes in the ns form that provide SYMBOL.

Source Code

;; Defined in ~/.emacs.d/elpa/cider-20261106.1225/cider-ns.el
(defun cider-ns-edit--add-missing (ns-start symbol candidate)
  "Add CANDIDATE, which provides SYMBOL, to the ns form at NS-START.
CANDIDATE is one of the dicts `cider-sync-request:resolve-missing'
returns.  Return (CHANGED . TEXTS), where TEXTS are the libspecs and
classes in the ns form that provide SYMBOL."
  (let ((name (nrepl-dict-get candidate "name"))
        (qualifier (cider-ns-edit--qualifier symbol)))
    (pcase (nrepl-dict-get candidate "type")
      ((or "ns" "macro")
       (let ((required (cond
                        ((null qualifier)
                         (cider-ns-edit--add-require ns-start name nil symbol))
                        ((equal qualifier name)
                         (cider-ns-edit--add-require ns-start name nil))
                        (t
                         (cider-ns-edit--add-require ns-start name qualifier)))))
         (list (car required) (cdr required))))
      ("type"
       ;; The class exists only once the namespace defining it is loaded.
       (let ((required (cider-ns-edit--add-require
                        ns-start (nrepl-dict-get candidate "ns") nil))
             (imported (cider-ns-edit--add-import ns-start name)))
         (list (or (car required) (car imported)) (cdr required) (cdr imported))))
      (_
       (let ((imported (cider-ns-edit--add-import ns-start name)))
         (list (car imported) (cdr imported)))))))