Function: erc-autojoin--mutate

erc-autojoin--mutate is a byte-compiled function defined in erc-join.el.gz.

Signature

(erc-autojoin--mutate PROC PARSED REMOVE)

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-join.el.gz
(defun erc-autojoin--mutate (proc parsed remove)
  (when-let* ((nick (car (erc-parse-user (erc-response.sender parsed))))
              ((erc-current-nick-p nick))
              (chnl (car (erc-response.command-args parsed)))
              (elem (or (and (erc--valid-local-channel-p chnl)
                             (regexp-quote erc-server-announced-name))
                        (erc-networks--id-given erc-networks--id)
                        (erc-network)
                        (with-current-buffer (process-buffer proc)
                          (erc-autojoin-current-server))))
              (test (if (symbolp elem) #'eq #'equal)))
    (if remove
        (let ((cs (delete chnl (assoc-default elem erc-autojoin-channels-alist
                                              test))))
          (setf (alist-get elem erc-autojoin-channels-alist nil (null cs) test)
                cs))
      (cl-pushnew chnl
                  (alist-get elem erc-autojoin-channels-alist nil nil test)
                  :test #'equal))))