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)))