Function: cider-ns-edit--merge-libspec
cider-ns-edit--merge-libspec is a byte-compiled function defined in
cider-ns.el.
Signature
(cider-ns-edit--merge-libspec POS ALIAS REFER)
Documentation
Give the libspec at POS the ALIAS and REFER it lacks.
Return non-nil if that changed it. Signal an error when the libspec has another alias, since a libspec can't have two.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20261106.1225/cider-ns.el
(defun cider-ns-edit--merge-libspec (pos alias refer)
"Give the libspec at POS the ALIAS and REFER it lacks.
Return non-nil if that changed it. Signal an error when the libspec has
another alias, since a libspec can't have two."
(if (not (cider-ns-edit--seq-p pos))
;; a bare namespace name
(when (or alias refer)
(let ((ns (cider-ns-edit--text pos)))
(delete-region pos (scan-sexps pos 1))
(goto-char pos)
(insert (cider-ns-edit--libspec ns alias refer))
t))
(let* ((as (cider-ns-edit--libspec-option pos ":as"))
(referred (cider-ns-edit--libspec-option pos ":refer"))
(add-as (and alias (not as)))
(add-refer (and refer
(cond
((null referred) t)
((cider-ns-edit--seq-p referred)
(not (member refer (cider-ns-edit--referred pos))))))))
(when (and alias as (not (equal alias (cider-ns-edit--text as))))
(user-error "%s is already required as %s"
(cider-ns-edit--libspec-ns pos) (cider-ns-edit--text as)))
(when (or add-as add-refer)
;; Back to front, so that the positions in front stay valid.
(when add-refer
(if-let* ((last-referred (car (last (and referred
(cider-ns-edit--elements referred))))))
(progn
(goto-char (scan-sexps last-referred 1))
(insert " " refer))
(if referred
(progn
(goto-char (1+ referred))
(delete-region (point) (progn (skip-chars-forward " \t,") (point)))
(insert refer))
(goto-char (scan-sexps (car (last (cider-ns-edit--elements pos))) 1))
(insert " :refer [" refer "]"))))
(when add-as
(goto-char (scan-sexps (car (cider-ns-edit--elements pos)) 1))
(insert " :as " alias))
t))))