Function: cider-ns-edit--add-import

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

Signature

(cider-ns-edit--add-import NS-START CLASS)

Documentation

Import CLASS, a fully qualified class name, in the ns form at NS-START.

When the ns form already imports from CLASS's package with a list or a vector, CLASS joins it. Return (CHANGED . CLASS).

Source Code

;; Defined in ~/.emacs.d/elpa/cider-20261106.1225/cider-ns.el
(defun cider-ns-edit--add-import (ns-start class)
  "Import CLASS, a fully qualified class name, in the ns form at NS-START.
When the ns form already imports from CLASS's package with a list or a
vector, CLASS joins it.  Return (CHANGED . CLASS)."
  (let* ((dot (or (string-match-p "\\.[^.]+\\'" class)
                  (user-error "%s isn't a fully qualified class name" class)))
         (package (substring class 0 dot))
         (name (substring class (1+ dot)))
         (clause (cider-ns-edit--clause ns-start ":import"))
         (entries (and clause (cdr (cider-ns-edit--elements clause))))
         (group (seq-find (lambda (pos)
                            (and (cider-ns-edit--seq-p pos)
                                 (equal (cider-ns-edit--libspec-ns pos) package)))
                          entries)))
    (cond
     ((or (seq-find (lambda (pos) (equal (cider-ns-edit--text pos) class)) entries)
          (and group
               (member name (mapcar #'cider-ns-edit--text
                                    (cdr (cider-ns-edit--elements group))))))
      (cons nil class))
     (group
      (goto-char (1- (scan-sexps group 1)))
      (insert " " name)
      (cons t class))
     (clause
      (cider-ns-edit--append clause class)
      (cons t class))
     (t
      (cider-ns-edit--add-clause ns-start ":import" class)
      (cons t class)))))