Function: org-irc-visit-erc
org-irc-visit-erc is a byte-compiled function defined in ol-irc.el.gz.
Signature
(org-irc-visit-erc LINK)
Documentation
Visit an ERC buffer based on criteria found in LINK.
Source Code
;; Defined in /usr/src/emacs/lisp/org/ol-irc.el.gz
(defun org-irc-visit-erc (link)
"Visit an ERC buffer based on criteria found in LINK."
(require 'erc)
(require 'erc-log)
(let* ((server (car (car link)))
(port (let ((p (cadr (pop link))))
(if p (string-to-number p) erc-default-port)))
(server-buffer)
(buffer-list
(erc-buffer-filter
(lambda nil
(let ((tmp-server-buf (erc-server-buffer)))
(and tmp-server-buf
(with-current-buffer tmp-server-buf
(and
(eq (org-irc-get-current-erc-port) port)
(string= erc-session-server server)
(setq server-buffer tmp-server-buf)))))))))
(if buffer-list
(let ((chan-name (pop link)))
;; if we got a channel name then switch to it or join it
(if chan-name
(let ((chan-buf (catch 'found
(dolist (x buffer-list)
(if (string= (buffer-name x) chan-name)
(throw 'found x))))))
(if chan-buf
(progn
(pop-to-buffer-same-window chan-buf)
;; if we got a nick, and they're in the chan,
;; then start a chat with them
(let ((nick (pop link)))
(when nick
(if (member nick (erc-get-server-nickname-list))
(progn
(goto-char (point-max))
(insert (concat nick ": ")))
(error "%s not found in %s" nick chan-name)))))
(progn
(pop-to-buffer-same-window server-buffer)
(erc-cmd-JOIN chan-name))))
(pop-to-buffer-same-window server-buffer)))
;; no server match, make new connection
(erc-select :server server :port port))))