(Re)generate: (find-rcirc-intro) Source code: (find-efunction 'find-rcirc-intro) More intros: (find-eev-quick-intro) (find-eev-intro) (find-eval-intro) (find-eepitch-intro) This buffer is _temporary_ and _editable_. Is is meant as both a tutorial and a sandbox. Recent versions with Emacs come with two IRC clients built-in: Rcirc and ERC. I never understood ERC well enough, and I found rcirc quite easy to understand and to hack, so eev has some support for rcirc (and no support for ERC). (find-node "(rcirc)Top") (find-node "(erc)Top") The eev support for rcirc consists mainly of three high-level functions that connect to Freenode (the IRC server where most discussion of free software projects happen), called `find-freenode', `find-freenode-2a' and `find-freenode-3a'.
1. The example that I use in workshopsLet's start with an example. In (setq rcirc-default-nick "hakuryo") (setq ee-freenode-ichannels "#eev") (find-freenode-3a "#eev") the first sexp tells rcirc to use the nickname "hakuryo" when connecting to an IRC server; the second sets the set of "initial channels" on Freenode to just one channel, #eev - a channel that is usually empty, but that doesn't require authentication; the third sexp is a "sexp hyperlink to the Freenode channel #eev". The third sexp: 1) creates a window setting like this, _________________________ | | | | | Freenode | | | server | | | messages | | current |_____________| | buffer | | | | #eev | | | channel | | | | |___________|_____________| 2) tells rcirc to connect to Freenode and to the channel #eev in it, 3) makes the window at the left - window "A" in the terminology of eev-multiwindow.el - the active window. See: (find-multiwindow-intro "3. High-level words") (find-multiwindow-intro "3. High-level words" "find-3a") The connection process takes time - about 20 seconds at my machine - but you will be able to see in window "B" the server messages as they appear, and in window "C" the messages of the #eev channel. You can then use the window "C" to interact with the other users in #eev, and to experiment with commands. See: (find-rcircnode "Internet Relay Chat" "Once you have joined a channel") (find-rcircnode "Getting started with rcirc" "To talk in a channel") (find-rcircnode "rcirc commands" "/join #emacs")
2. The two-window settingTry this: (find-freenode-2a "#eev") It creates a window setting like _________ ________ | | | | | | | current | irc | | buffer | buffer | | | | |_________|________| which is nice for when you don't want to follow the irc server messages.
3. Tracking activityTODO: explain this: (find-rcircnode "Channels" "M-x rcirc-track-minor-mode") and how to use it as a one-window setting. Also: (find-efunctiondescr 'rcirc-track-minor-mode) (find-efunction 'rcirc-track-minor-mode) (find-evariable 'rcirc-track-minor-mode-map) (find-ekeymapdescr rcirc-track-minor-mode-map) (find-efunctiondescr 'rcirc-next-active-buffer) (find-efunction 'rcirc-next-active-buffer) (global-set-key [f2] 'rcirc-next-active-buffer)
4. Commands with very short namesWe can apply this idea (find-eev-quick-intro "7.4. Commands with very short names") (find-eev-quick-intro "7.4. Commands with very short names" "(defun c ()") to rcirc. If you connect occasionaly to the channels #eev, #emacs, #git and #ruby, you can run this, or put these lines in your .emacs: (setq rcirc-default-nick "hakuryo") (defun e2 () (interactive) (find-freenode-2a "#eev")) (defun e3 () (interactive) (find-freenode-3a "#eev")) (defun m2 () (interactive) (find-freenode-2a "#emacs")) (defun m3 () (interactive) (find-freenode-3a "#emacs")) (defun g2 () (interactive) (find-freenode-2a "#git")) (defun g3 () (interactive) (find-freenode-3a "#git")) (defun r2 () (interactive) (find-freenode-2a "#ruby")) (defun r3 () (interactive) (find-freenode-3a "#ruby"))
5. `find-freenode-links'You can generate lines like the ones above by running `find-freenode-links'. For example: (find-freenode-links "e" "#eev") (find-freenode-links "r" "#ruby")
6. Other serversTODO: explain how to use find-rcirc-buffer and how to adapt find-freenode-* to other servers. Example: (find-rcirc-buffer-2a "irc.debian.org" "#debian-live" nil "#debian-live") (find-rcirc-buffer-3a "irc.debian.org" "#debian-live" nil "#debian-live") See: (find-eev "eev-rcirc.el" "find-freenode")