Function: erc--update-current-channel-member

erc--update-current-channel-member is a byte-compiled function defined in erc.el.gz.

Signature

(erc--update-current-channel-member CMEM STATUS TIMEP &rest USER-ARGS)

Documentation

Update existing erc-channel-member entry.

Set the status slot of the entry's erc-channel-user side to STATUS and, with TIMEP, update its last-message-time. When actual changes are made, run erc-channel-members-changed-hook, and return non-nil.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc.el.gz
(defun erc--update-current-channel-member (cmem status timep &rest user-args)
  "Update existing `erc-channel-member' entry.
Set the `status' slot of the entry's `erc-channel-user' side to
STATUS and, with TIMEP, update its `last-message-time'.  When
actual changes are made, run `erc-channel-members-changed-hook',
and return non-nil."
  (cl-assert cmem)
  (let ((cusr (cdr cmem))
        (user (car cmem))
        cusr-changed-p user-changed-p)
    (when (and status (/= status (erc-channel-user-status cusr)))
      (setf (erc-channel-user-status cusr) status
            cusr-changed-p t))
    (when timep
      (setf (erc-channel-user-last-message-time cusr)
            (erc-compat--current-lisp-time)))
    ;; Ensure `erc-channel-members-changed-hook' runs on change.
    (cl-assert (memq (current-buffer) (erc-server-user-buffers user)))
    (setq user-changed-p (apply #'erc-update-user user user-args))
    ;; An existing `cusr' was changed or a new one was added, and
    ;; `user' was not updated, though possibly just created (since
    ;; `erc-update-user' runs this same hook in all a user's buffers).
    (when (and cusr-changed-p (null user-changed-p))
      (run-hooks 'erc-channel-members-changed-hook))
    (erc-log (format "update-member: user = %S, cusr = %S" user cusr))
    (or cusr-changed-p user-changed-p)))