Variable: erc-server-JOIN-functions
erc-server-JOIN-functions is a variable defined in erc-backend.el.gz.
Value
(erc-server-JOIN)
Documentation
Hook called upon receiving a JOIN server response.
Each function is called with two arguments, the process associated with the response and the parsed response. If the function returns non-nil, stop processing the hook. Otherwise, continue.
See also erc-server-JOIN.
Source Code
;; Defined in /usr/src/emacs/lisp/erc/erc-backend.el.gz
(define-erc-response-handler (JOIN)
"Handle join messages."
nil
(let ((chnl (erc-response.contents parsed))
(buffer nil))
(pcase-let ((`(,nick ,login ,host)
(erc-parse-user (erc-response.sender parsed))))
;; strip the stupid combined JOIN facility (IRC 2.9)
(if (string-match "^\\(.*\\)\^g.*$" chnl)
(setq chnl (match-string 1 chnl)))
(save-excursion
(let ((args (cond
;; If I have joined a channel
((erc-current-nick-p nick)
(let ((erc--display-context
(erc--server-determine-join-display-context
chnl erc--display-context)))
(setq buffer (erc--open-target chnl)))
(when buffer
(set-buffer buffer)
(with-suppressed-warnings
((obsolete erc-add-default-channel))
(erc-add-default-channel chnl))
(setf (erc--target-channel-joined-p erc--target) t)
(erc-server-send (format "MODE %s" chnl)))
(erc-with-buffer (chnl proc)
(erc-channel-begin-receiving-names))
(erc-update-mode-line)
(run-hooks 'erc-join-hook)
(list 'JOIN-you ?c chnl))
(t
(setq buffer (erc-get-buffer chnl proc))
(list 'JOIN ?n nick ?u login ?h host ?c chnl)))))
(when buffer (set-buffer buffer))
(erc-update-channel-member chnl nick nick t nil nil nil nil nil host login)
(unless (erc-current-nick-p nick)
(erc--ensure-query-member nick))
;; on join, we want to stay in the new channel buffer
;;(set-buffer ob)
(apply #'erc-display-message parsed 'notice buffer args))))))