Function: erc-autojoin-channels

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

Signature

(erc-autojoin-channels SERVER NICK)

Documentation

Autojoin channels in erc-autojoin-channels-alist.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-join.el.gz
(defun erc-autojoin-channels (server nick)
  "Autojoin channels in `erc-autojoin-channels-alist'."
  (if (eq erc-autojoin-timing 'ident)
      ;; Prepare the delayed autojoin timer, in case ident doesn't
      ;; happen within the allotted time limit:
      (when (> erc-autojoin-delay 0)
	(setq erc--autojoin-timer
	      (run-with-timer erc-autojoin-delay nil
			      #'erc-autojoin-channels-delayed
			      server nick (current-buffer))))
    ;; `erc-autojoin-timing' is `connect':
    (let ((server (or erc-session-server erc-server-announced-name)))
      (dolist (l erc-autojoin-channels-alist)
        (when (erc-autojoin-server-match (car l))
	  (dolist (chan (cdr l))
	    (let ((buffer
                   (car (erc-buffer-filter
                         (lambda ()
                           (let ((current (erc-default-target)))
                             (and (stringp current)
                                  (erc-autojoin-server-match (car l))
                                  (string-equal (erc-downcase chan)
                                                (erc-downcase current)))))))))
	      (when (or (not buffer)
			(not (with-current-buffer buffer
			       (erc-server-process-alive))))
		(erc-server-join-channel server chan))))))))
  ;; Return nil to avoid stomping on any other hook funcs.
  nil)