Function: rcirc
rcirc is an autoloaded, interactive and byte-compiled function defined
in rcirc.el.gz.
Signature
(rcirc ARG)
Documentation
Connect to all servers in rcirc-server-alist.
Do not connect to a server if it is already connected.
If ARG is non-nil, instead prompt for connection parameters.
Key Bindings
Aliases
Source Code
;; Defined in /usr/src/emacs/lisp/net/rcirc.el.gz
;;;###autoload
(defun rcirc (arg)
"Connect to all servers in `rcirc-server-alist'.
Do not connect to a server if it is already connected.
If ARG is non-nil, instead prompt for connection parameters."
(interactive "P")
(if arg
(let* ((server (completing-read "IRC Server: "
rcirc-server-alist
nil nil
(caar rcirc-server-alist)
'rcirc-server-name-history))
(server-plist (cdr (assoc-string server rcirc-server-alist)))
(port (read-string "IRC Port: "
(number-to-string
(or (plist-get server-plist :port)
rcirc-default-port))
'rcirc-server-port-history))
(nick (read-string "IRC Nick: "
(or (plist-get server-plist :nick)
rcirc-default-nick)
'rcirc-nick-name-history))
(user-name (read-string "IRC Username: "
(or (plist-get server-plist :user-name)
rcirc-default-user-name)
'rcirc-user-name-history))
(password (read-passwd "IRC Password: " nil
(plist-get server-plist :password)))
(channels (split-string
(read-string "IRC Channels: "
(mapconcat 'identity
(plist-get server-plist
:channels)
" "))
"[, ]+" t))
(encryption (rcirc-prompt-for-encryption server-plist))
(process (rcirc-connect server port nick user-name
rcirc-default-full-name
channels password encryption)))
(when rcirc-display-server-buffer
(pop-to-buffer-same-window (process-buffer process))))
;; connect to servers in `rcirc-server-alist'
(let (connected-servers)
(dolist (c rcirc-server-alist)
(let ((server (car c))
(nick (or (plist-get (cdr c) :nick) rcirc-default-nick))
(port (or (plist-get (cdr c) :port) rcirc-default-port))
(user-name (or (plist-get (cdr c) :user-name)
rcirc-default-user-name))
(full-name (or (plist-get (cdr c) :full-name)
rcirc-default-full-name))
(channels (plist-get (cdr c) :channels))
(password (plist-get (cdr c) :password))
(encryption (plist-get (cdr c) :encryption))
(server-alias (plist-get (cdr c) :server-alias))
(client-cert (when (eq (rcirc-get-server-method (car c))
'certfp)
(rcirc-get-server-cert (car c))))
contact)
(when-let* (((not password))
(auth (auth-source-search :host server
:user user-name
:port port))
(pwd (auth-info-password (car auth))))
(setq password pwd))
(when server
(let (connected)
(dolist (p (rcirc-process-list))
(when (string= (or server-alias server) (process-name p))
(setq connected p)))
(if (not connected)
(condition-case nil
(let ((process (rcirc-connect server port nick user-name
full-name channels password encryption
server-alias client-cert)))
(when rcirc-display-server-buffer
(pop-to-buffer-same-window (process-buffer process))))
(quit (message "Quit connecting to %s"
(or server-alias server))))
(with-current-buffer (process-buffer connected)
(setq contact (process-contact
(get-buffer-process (current-buffer)) :name))
(setq connected-servers
(cons (if (stringp contact)
contact (or server-alias server))
connected-servers))))))))
(when connected-servers
(message "Already connected to %s"
(if (cdr connected-servers)
(concat (mapconcat 'identity (butlast connected-servers) ", ")
", and "
(car (last connected-servers)))
(car connected-servers)))))))