Function: erc--merge-local-modes

erc--merge-local-modes is a byte-compiled function defined in erc.el.gz.

Signature

(erc--merge-local-modes NEW-MODES OLD-VARS)

Documentation

Return a cons of two lists, each containing local-module modes.

In the first, put modes to be enabled in a new ERC buffer by calling their associated functions. In the second, put modes to be marked as disabled by setting their associated variables to nil.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc.el.gz
(defun erc--merge-local-modes (new-modes old-vars)
  "Return a cons of two lists, each containing local-module modes.
In the first, put modes to be enabled in a new ERC buffer by
calling their associated functions.  In the second, put modes to
be marked as disabled by setting their associated variables to
nil."
  (if old-vars
      (let ((out (list (reverse new-modes))))
        (pcase-dolist (`(,k . ,v) old-vars)
          (when (and (string-prefix-p "erc-" (symbol-name k))
                     (string-suffix-p "-mode" (symbol-name k))
                     (get k 'erc-module))
            (if v
                (cl-pushnew k (car out))
              (setf (car out) (delq k (car out)))
              (cl-pushnew k (cdr out)))))
        (cons (nreverse (car out)) (nreverse (cdr out))))
    (list new-modes)))