Function: cider-ns-edit--clean

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

Signature

(cider-ns-edit--clean NS-START UNUSED)

Documentation

Remove from the ns form at NS-START what UNUSED says it can do without.

UNUSED is what cider-sync-request:clean-ns returns. A clause left empty goes too. Return (REMOVED . REMOVED), REMOVED being descriptions of what got removed, for cider-ns-edit--edit.

Source Code

;; Defined in ~/.emacs.d/elpa/cider-20261106.1225/cider-ns.el
(defun cider-ns-edit--clean (ns-start unused)
  "Remove from the ns form at NS-START what UNUSED says it can do without.
UNUSED is what `cider-sync-request:clean-ns' returns.  A clause left
empty goes too.  Return (REMOVED . REMOVED), REMOVED being descriptions
of what got removed, for `cider-ns-edit--edit'."
  (let* (clauses
         removed
         (record (lambda (result)
                   (when result
                     ;; The edits that follow move the clauses after them.
                     (push (copy-marker (car result)) clauses)
                     (setq removed (append removed (cdr result)))))))
    (dolist (libspec (nrepl-dict-get unused "libspecs"))
      (funcall record (cider-ns-edit--clean-libspec ns-start libspec)))
    (dolist (class (nrepl-dict-get unused "imports"))
      (funcall record (cider-ns-edit--clean-import ns-start class)))
    (let* ((elements (cider-ns-edit--elements ns-start))
           (touched (mapcar #'marker-position clauses))
           (empty (seq-filter (lambda (i)
                                (let ((pos (nth i elements)))
                                  (and (memql pos touched)
                                       (cider-ns-edit--empty-clause-p pos))))
                              (number-sequence 0 (1- (length elements))))))
      (when empty
        (cider-ns-edit--delete-elements ns-start empty)))
    (dolist (marker clauses)
      (set-marker marker nil))
    (cons removed removed)))