Function: rcirc-connect
rcirc-connect is an autoloaded and byte-compiled function defined in
rcirc.el.gz.
Signature
(rcirc-connect SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD ENCRYPTION SERVER-ALIAS CERTFP)
Documentation
Connect to SERVER.
The arguments PORT, NICK, USER-NAME, FULL-NAME, PASSWORD,
ENCRYPTION, CERTFP, SERVER-ALIAS are interpreted as in
rcirc-server-alist. STARTUP-CHANNELS is a list of channels
that are joined after authentication.
Source Code
;; Defined in /usr/src/emacs/lisp/net/rcirc.el.gz
;;;###autoload
(defun rcirc-connect (server &optional port nick user-name
full-name startup-channels password encryption
server-alias certfp)
"Connect to SERVER.
The arguments PORT, NICK, USER-NAME, FULL-NAME, PASSWORD,
ENCRYPTION, CERTFP, SERVER-ALIAS are interpreted as in
`rcirc-server-alist'. STARTUP-CHANNELS is a list of channels
that are joined after authentication."
(save-excursion
(message "Connecting to %s..." (or server-alias server))
(let* ((inhibit-eol-conversion)
(port-number (if port
(if (stringp port)
(string-to-number port)
port)
rcirc-default-port))
(nick (or nick rcirc-default-nick))
(user-name (or user-name rcirc-default-user-name))
(full-name (or full-name rcirc-default-full-name))
(startup-channels startup-channels)
process)
;; Ensure any previous process is killed
(when-let* ((old-process (get-process (or server-alias server))))
(set-process-sentinel old-process #'ignore)
(delete-process process))
;; Set up process
(setq process (open-network-stream
(or server-alias server) nil server port-number
:type (or encryption 'plain)
:client-certificate certfp
:nowait t))
(set-process-coding-system process 'raw-text 'raw-text)
(with-current-buffer (get-buffer-create (rcirc-generate-new-buffer-name process nil))
(set-process-buffer process (current-buffer))
(unless (eq major-mode 'rcirc-mode)
(rcirc-mode process nil))
(set-process-sentinel process #'rcirc-sentinel)
(set-process-filter process #'rcirc-filter)
(setq rcirc-connection-info
(list server port nick user-name full-name startup-channels
password encryption server-alias))
(setq rcirc-process process)
(setq rcirc-server server)
(setq rcirc-server-name (or server-alias server)) ; Update when we get 001 response.
(setq rcirc-nick-table (make-hash-table :test 'equal))
(setq rcirc-nick nick)
(setq rcirc-startup-channels startup-channels)
(setq rcirc-last-connect-time (current-time))
(setq rcirc-last-server-message-time rcirc-last-connect-time)
;; Check if the immediate process state
(sit-for .1)
(cond
((eq (process-status process) 'failed)
(setq mode-line-process ":disconnected")
(setq rcirc-connecting nil))
((eq (process-status process) 'connect)
(setq mode-line-process ":connecting")
(setq rcirc-connecting t)))
(add-hook 'auto-save-hook #'rcirc-log-write)
;; return process object
process))))