(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_.
It 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 workshops

Let'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 setting

Try 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 activity

TODO: 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 names

We 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 servers

TODO: 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")