Include GFDL.
[bpt/emacs.git] / man / erc.texi
1 \input texinfo
2 @c %**start of header
3 @setfilename ../info/erc
4 @settitle ERC Manual
5 @c %**end of header
6
7 @dircategory Emacs
8 @direntry
9 * ERC: (erc). Powerful, modular, and extensible IRC client for Emacs.
10 @end direntry
11
12 @syncodeindex fn cp
13
14 @copying
15 This manual is for ERC version 5.2.
16
17 Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
18
19 @quotation
20 Permission is granted to copy, distribute and/or modify this document
21 under the terms of the GNU Free Documentation License, Version 1.2 or
22 any later version published by the Free Software Foundation; with no
23 Invariant Sections, Front-Cover texts, or Back-Cover Texts.
24
25 All Emacs Lisp code contained in this document may be used, distributed,
26 and modified without restriction.
27 @end quotation
28 @end copying
29
30 @titlepage
31 @title ERC manual
32 @subtitle a full-featured IRC client
33 @subtitle for GNU Emacs and XEmacs
34
35 @c The following two commands
36 @c start the copyright page.
37 @page
38 @vskip 0pt plus 1filll
39 @insertcopying
40 @end titlepage
41
42 @c So the toc is printed at the start
43 @contents
44
45 @ifnottex
46 @node Top, Introduction, (dir), (dir)
47 @comment node-name, next, previous, up
48 @top ERC
49
50 @insertcopying
51 @end ifnottex
52
53 @menu
54 * Introduction:: What is ERC?
55 * Obtaining ERC:: How to get ERC releases and development
56 versions.
57 * Installation:: Compiling and installing ERC.
58 * Getting Started:: Quick Start guide to using ERC.
59 * Keystroke Summary:: Keystrokes used in ERC buffers.
60 * Modules:: Available modules for ERC.
61 * Advanced Usage:: Cool ways of using ERC.
62 * Getting Help and Reporting Bugs::
63 * History:: The history of ERC.
64 * GNU Free Documentation License:: The license for this documentation.
65 * Concept Index:: Search for terms.
66
67 @detailmenu
68 --- The Detailed Node Listing ---
69
70 Obtaining ERC
71
72 * Releases:: Released versions of ERC.
73 * Development:: Latest unreleased development changes.
74
75 Getting Started
76
77 * Sample Session:: Example of connecting to the #emacs channel
78 * Special Features:: Differences from standalone IRC clients
79
80 Advanced Usage
81
82 * Connecting:: Ways of connecting to an IRC server.
83 * Sample Configuration:: An example configuration file.
84 * Options:: Options that are available for ERC.
85
86 @end detailmenu
87 @end menu
88
89 @node Introduction, Obtaining ERC, Top, Top
90 @comment node-name, next, previous, up
91 @chapter Introduction
92
93 ERC is a powerful, modular, and extensible IRC client for Emacs.
94
95 It comes with the following capabilities enabled by default.
96
97 @itemize @bullet
98 @item Flood control
99 @item Timestamps
100 @item Join channels automatically
101 @item Buttonize URLs, nicknames, and other text
102 @item Wrap long lines
103 @item Highlight or remove IRC control characters
104 @item Highlight pals, fools, and other keywords
105 @item Detect netsplits
106 @item Complete nicknames and commands in a programmable fashion
107 @item Make displayed lines read-only
108 @item Input history
109 @item Track channel activity in the mode-line
110
111 @end itemize
112
113 @node Obtaining ERC, Installation, Introduction, Top
114 @comment node-name, next, previous, up
115 @chapter Obtaining ERC
116
117 @menu
118 * Releases:: Released versions of ERC.
119 * Development:: Latest unreleased development changes.
120 @end menu
121
122 Note that some ERC files are not included with Emacs due to copyright or
123 dependency issues. If desired, they may be found at the following
124 locations, or from your local GNU mirror.
125
126 @itemize @bullet
127 @item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz}
128 @item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip}
129 @end itemize
130
131 The rest of this chapter may be skipped if you are using the version of
132 ERC that comes with Emacs.
133
134 @node Releases, Development, Obtaining ERC, Obtaining ERC
135 @comment node-name, next, previous, up
136 @section Releases
137
138 Choose to install a release if you want to minimize risk.
139
140 Errors are corrected in development first. User-visible changes will be
141 announced on the @email{erc-discuss@@gnu.org} mailing list.
142 @pxref{Getting Help and Reporting Bugs}.
143
144 @cindex releases, Debian package
145 @cindex Debian package for ERC
146 Debian users can get ERC via apt-get. The @file{erc} package is
147 available in the official Debian repository.
148
149 @cindex releases, from source
150 Alternatively, you can download the latest release from
151 @uref{http://ftp.gnu.org/gnu/erc}, or your local GNU mirror.
152
153 @node Development, , Releases, Obtaining ERC
154 @comment node-name, next, previous, up
155 @section Development
156 @cindex development
157
158 Choose the development version if you want to live on the bleeding edge
159 of ERC development or try out new features before release.
160
161 @subheading GNU Arch
162
163 ERC is developed using GNU Arch. Downloading ERC with Arch and staying
164 up-to-date involves the following steps.
165
166 @enumerate
167 @cindex GNU Arch, installing
168 @item Install arch
169
170 @itemize @bullet
171 @item Debian: @kbd{apt-get install tla}.
172 @item Other distributions: see @uref{ftp://ftp.gnu.org/gnu/gnu-arch/}.
173 @end itemize
174
175 @cindex GNU Arch, downloading ERC
176 @item Register the archive.
177 @example
178 tla register-archive -f http://arch.sv.gnu.org/archives/erc/erc
179 @end example
180
181 @item Download the ERC source code.
182 @example
183 # Download ERC into the @file{erc} directory.
184 tla get erc@@sv.gnu.org/erc--main--0 erc
185 @end example
186
187 @item List upstream changes that are missing from your local copy.
188 Do this whenever you want to see whether new changes have been committed
189 to ERC.
190
191 @example
192 # Change to the source directory you are interested in.
193 cd erc/
194
195 # Display the summary of changes
196 tla missing --summary
197 @end example
198
199 @cindex GNU Arch, updating ERC
200 @item Update to the latest version by replaying missing changes.
201 @example
202 cd erc
203 tla update
204 @end example
205
206 @end enumerate
207
208 If you are new to Arch and want to learn more about developing ERC with
209 it, visit @uref{http://emacswiki.org/cgi-bin/wiki/ErcDevelopment} for
210 full instructions.
211
212 @subheading Development snapshots
213
214 @cindex development snapshot
215 Alternatively, the latest development snapshot may be downloaded in both
216 ``.tar.gz'' and ``.zip'' forms.
217
218 @itemize @bullet
219 @item @uref{http://www.mwolson.org/static/dist/erc-latest.tar.gz}
220 @item @uref{http://www.mwolson.org/static/dist/erc-latest.zip}
221 @end itemize
222
223
224 @node Installation, Getting Started, Obtaining ERC, Top
225 @comment node-name, next, previous, up
226 @chapter Installation
227
228 ERC may be compiled and installed on your machine.
229
230 This section may be skipped if you are using the version of ERC that
231 comes with Emacs.
232
233 @subsubheading Compilation
234
235 This is an optional step, since Emacs Lisp source code does not
236 necessarily have to be byte-compiled. It will yield a speed increase,
237 though.
238
239 A working copy of Emacs or XEmacs is needed in order to compile ERC. By
240 default, the program that is installed with the name @command{emacs}
241 will be used.
242
243 If you want to use the @command{xemacs} binary to perform the
244 compilation, you would need to edit @file{Makefile} in the top-level
245 directory as follows. You can put either a full path to an Emacs or
246 XEmacs binary or just the command name, as long as it is in the
247 @env{PATH}.
248
249 @example
250 EMACS = xemacs
251 SITEFLAG = -no-site-file
252 @end example
253
254 Running @code{make} should compile the ERC source files in the
255 @file{lisp} directory.
256
257 @subsubheading Installation
258
259 ERC may be installed into your file hierarchy by doing the following.
260
261 Edit the @file{Makefile} file so that @env{ELISPDIR} points to where you
262 want the source and compiled ERC files to be installed and
263 @env{INFODIR} indicates where to put the ERC manual. Of course, you
264 will want to edit @env{EMACS} and @env{SITEFLAG} as shown in the
265 Compilation section if you are using XEmacs.
266
267 If you are installing ERC on a Debian system, you might want to change
268 the value of @env{INSTALLINFO} as specified in @file{Makefile}.
269
270 Run @code{make} as a normal user.
271
272 Run @code{make install} as the root user if you have chosen installation
273 locations that require this.
274
275
276 @node Getting Started, Keystroke Summary, Installation, Top
277 @comment node-name, next, previous, up
278 @chapter Getting Started
279 @cindex settings
280
281 To use ERC, add the directory containing its files to your
282 @code{load-path} variable, in your @file{.emacs} file. Then, load ERC
283 itself. An example follows.
284
285 @lisp
286 (require 'erc)
287 @end lisp
288
289 Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
290 prompt for the server to connect to.
291
292 If you want to place ERC settings in their own file, you can place them
293 in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
294
295 If you would rather use the Customize interface to change how ERC works,
296 do @kbd{M-x customize-group RET erc RET}. In particular, ERC comes with
297 lots of modules that may be enabled or disabled; to select which ones
298 you want, do @kbd{M-x customize-variable RET erc-modules RET}.
299
300 @menu
301 * Sample Session:: Example of connecting to the #emacs channel
302 * Special Features:: Differences from standalone IRC clients
303 @end menu
304
305 @node Sample Session, Special Features, Getting Started, Getting Started
306 @comment node-name, next, previous, up
307 @section Sample Session
308
309 This is an example ERC session which shows how to connect to the #emacs
310 channel on Freenode. Another IRC channel on Freenode that may be of
311 interest is #erc, which is a channel where ERC users and developers hang
312 out.
313
314 @itemize @bullet
315
316 @item Connect to Freenode
317
318 Run @kbd{M-x erc}. Use ``irc.freenode.net'' as the IRC server, ``6667''
319 as the port, and choose a nickname.
320
321 @item Get used to the interface
322
323 Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
324 there. You will see first some messages about checking for ident, and
325 then a bunch of other messages that describe the current IRC server.
326
327 @item Join the #emacs channel
328
329 In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}. Depending
330 on how you've set up ERC, either a new buffer for ``#emacs'' will be
331 displayed, or a new buffer called ``#emacs'' will be created in the
332 background. If the latter, switch to the ``#emacs'' buffer. You will
333 see the channel topic and a list of the people who are currently on the
334 channel.
335
336 @item Register your nickname with Freenode
337
338 If you would like to be able to talk with people privately on the
339 Freenode network, you will have to ``register'' your nickname. To do
340 so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
341 NickServ register <password>'', replacing ``<password>'' with your
342 desired password. It should tell you that the operation was successful.
343
344 @item Talk to people in the channel
345
346 If you switch back to the ``#emacs'' buffer, you can type a message, and
347 everyone on the channel will see it.
348
349 @item Open a query buffer to talk to someone
350
351 If you want to talk with someone in private (this should usually not be
352 done for technical help, only for personal questions), type ``/query
353 <nick>'', replacing ``<nick>'' with the nickname of the person you would
354 like to talk to. Depending on how ERC is set up, you will either see a
355 new buffer with the name of the person, or such a buffer will be created
356 in the background and you will have to switch to it. Begin typing
357 messages, and you will be able to have a conversation.
358
359 Note that if the other person is not registered, you will not be able to
360 talk with them.
361
362 @end itemize
363
364 @node Special Features, , Sample Session, Getting Started
365 @comment node-name, next, previous, up
366 @section Special Features
367
368 ERC has some features that distinguish it from some IRC clients.
369
370 @itemize @bullet
371
372 @item multiple channels and multiple servers
373
374 Every channel is put in a separate buffer. Several IRC servers may be
375 connected to at the same time.
376
377 @cindex query buffers
378 @item private message separation
379
380 Private conversations are treated as channels, and are put into separate
381 buffers in Emacs. We call these ``query buffers''.
382
383 @item highlighting
384
385 Some occurences of words can be highlighted, which makes it easier to
386 track different kinds of conversations.
387
388 @item notification
389
390 ERC can notify you that certain users are online.
391
392 @item channel tracking
393
394 Channels can be hidden and conversation continue in the background. You
395 are notified when something is said in such a channel that is not
396 currently visible. This makes it easy to get Real Work done while still
397 maintaining an IRC presence.
398
399 @item nick completion
400
401 ERC can complete words upon hitting @kbd{TAB}, which eases the writing
402 of nicknames in messages.
403
404 @cindex history ring
405 @item history
406
407 Past actions are kept in history rings for future use. To navigate a
408 history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
409 forwards.
410
411 @item multiple languages
412
413 Different channels and servers may have different language encodings.
414
415 In addition, it is possible to translate the messages that ERC uses into
416 multiple languages. Please contact the developers of ERC at
417 @email{erc-discuss@@gnu.org} if you are interested in helping with the
418 translation effort.
419
420 @item user scripting
421
422 Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
423
424 It is also possible to make custom IRC commands, if you know a little
425 Emacs Lisp. Just make an Emacs Lisp function and call it
426 @code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
427 new command in capital letters.
428
429 @item auto reconnect
430
431 If the connection goes away at some point, ERC will try to reconnect
432 automatically. If it fails to reconnect, and you want to try to
433 manually reestablish the connection at some later point, switch to an
434 ERC buffer and run the @code{/RECONNECT} command.
435
436 @end itemize
437
438
439 @node Keystroke Summary, Modules, Getting Started, Top
440 @comment node-name, next, previous, up
441 @chapter Keys Used in ERC
442 @cindex keystrokes
443
444 This is a summary of keystrokes available in every ERC buffer.
445
446 @table @kbd
447
448 @item C-a or <home> (`erc-bol')
449 Go to beginning of line or end of prompt.
450
451 @item RET (`erc-send-current-line')
452 Send the current line
453
454 @item TAB (`erc-complete-word')
455 If at prompt, complete the current word.
456 Otherwise, move to the next link or button.
457
458 @item M-TAB (`ispell-complete-word')
459 Complete the given word, using ispell.
460
461 @item C-c C-a (`erc-bol')
462 Go to beginning of line or end of prompt.
463
464 @item C-c C-b (`erc-iswitchb')
465 Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
466
467 @item C-c C-c (`erc-toggle-interpret-controls')
468 Toggle interpretation of control sequences in messages.
469
470 @item C-c C-d (`erc-input-action')
471 Interactively input a user action and send it to IRC.
472
473 @item C-c C-e (`erc-toggle-ctcp-autoresponse')
474 Toggle automatic CTCP replies (like VERSION and PING).
475
476 @item C-c C-f (`erc-toggle-flood-control')
477 Toggle use of flood control on sent messages.
478
479 @item C-c TAB (`erc-invite-only-mode')
480 Turn on the invite only mode (+i) for the current channel.
481
482 @item C-c C-j (`erc-join-channel')
483 Join channel. If point is at the beginning of a channel name, use that
484 as default.
485
486 @item C-c C-k (`erc-go-to-log-matches-buffer')
487 Interactively open an erc-log-matches buffer
488
489 @item C-c C-l (`erc-save-buffer-in-logs')
490 Append buffer contents to the log file, if logging is enabled.
491
492 @item C-c C-n (`erc-channel-names')
493 Run "/names #channel" in the current channel.
494
495 @item C-c C-o (`erc-get-channel-mode-from-keypress')
496 Read a key sequence and call the corresponding channel mode function.
497 After doing @kbd{C-c C-o}, type in a channel mode letter.
498
499 @kbd{C-g} means quit.
500 @kbd{RET} lets you type more than one mode at a time.
501 If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
502 If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
503 Anything else will be sent to `erc-toggle-channel-mode'.
504
505 @item C-c C-p (`erc-part-from-channel')
506 Part from the current channel and prompt for a reason.
507
508 @item C-c C-q (`erc-quit-server')
509 Disconnect from current server after prompting for reason.
510
511 @item C-c C-r (`erc-remove-text-properties-region')
512 Clears the region (start,end) in object from all colors, etc.
513
514 @item C-c C-t (`erc-set-topic')
515 Prompt for a topic for the current channel.
516
517 @item C-c C-u (`erc-kill-input')
518 Kill current input line using `erc-bol' followed by `kill-line'.
519
520 @end table
521
522
523 @node Modules, Advanced Usage, Keystroke Summary, Top
524 @comment node-name, next, previous, up
525 @chapter Modules
526 @cindex modules
527
528 One way to add functionality to ERC is to customize which of its many
529 modules are loaded.
530
531 There is a spiffy customize interface, which may be reached by typing
532 @kbd{M-x customize-option erc-modules RET}. Alternatively, set
533 @code{erc-modules} manually and then call @code{erc-update-modules}.
534
535 The following is a list of available modules.
536
537 @table @code
538
539 @cindex modules, autoaway
540 @item autoaway
541 Set away status automatically
542
543 @cindex modules, autojoin
544 @item autojoin
545 Join channels automatically
546
547 @cindex modules, bbdb
548 @item bbdb
549 Integrate with the Big Brother Database
550
551 @cindex modules, button
552 @item button
553 Buttonize URLs, nicknames, and other text
554
555 @cindex modules, capab-identify
556 @item capab-identify
557 Mark unidentified users on freenode and other servers supporting CAPAB.
558
559 @cindex modules, completion
560 @item pcomplete
561 Complete nicknames and commands (programmable)
562
563 @cindex modules, fill
564 @item fill
565 Wrap long lines
566
567 @cindex modules, hecomplete
568 @item completion
569 Complete nicknames and commands (old). This is the old module---you
570 might prefer the ``completion'' module instead.
571
572 @cindex modules, identd
573 @item identd
574 Launch an identd server on port 8113
575
576 @cindex modules, irccontrols
577 @item irccontrols
578 Highlight or remove IRC control characters
579
580 @cindex modules, log
581 @item log
582 Save buffers in logs
583
584 @cindex modules, match
585 @item match
586 Highlight pals, fools, and other keywords
587
588 @cindex modules, menu
589 @item menu
590 Display a menu in ERC buffers
591
592 @cindex modules, netsplit
593 @item netsplit
594 Detect netsplits
595
596 @cindex modules, noncommands
597 @item noncommands
598 Don't display non-IRC commands after evaluation
599
600 @cindex modules, notify
601 @item notify
602 Notify when the online status of certain users changes
603
604 @cindex modules, page
605 @item page
606 Process CTCP PAGE requests from IRC
607
608 @cindex modules, readonly
609 @item readonly
610 Make displayed lines read-only
611
612 @cindex modules, replace
613 @item replace
614 Replace text in messages
615
616 @cindex modules, ring
617 @item ring
618 Enable an input history
619
620 @cindex modules, scrolltobottom
621 @item scrolltobottom
622 Scroll to the bottom of the buffer
623
624 @cindex modules, services
625 @item services
626 Identify to Nickserv (IRC Services) automatically
627
628 @cindex modules, smiley
629 @item smiley
630 Convert smileys to pretty icons
631
632 @cindex modules, sound
633 @item sound
634 Play sounds when you receive CTCP SOUND requests
635
636 @cindex modules, spelling
637 @item spelling
638 Check spelling of messages
639
640 @cindex modules, stamp
641 @item stamp
642 Add timestamps to messages
643
644 @cindex modules, track
645 @item track
646 Track channel activity in the mode-line
647
648 @cindex modules, truncate
649 @item truncate
650 Truncate buffers to a certain size
651
652 @cindex modules, unmorse
653 @item unmorse
654 Translate morse code in messages
655
656 @end table
657
658 @c PRE5_3: Document every option of every module in its own subnode
659
660
661 @node Advanced Usage, Getting Help and Reporting Bugs, Modules, Top
662 @comment node-name, next, previous, up
663 @chapter Advanced Usage
664 @cindex advanced topics
665
666 @menu
667 * Connecting:: Ways of connecting to an IRC server.
668 * Sample Configuration:: An example configuration file.
669 * Options:: Options that are available for ERC.
670 @end menu
671
672 @node Connecting, Sample Configuration, Advanced Usage, Advanced Usage
673 @comment node-name, next, previous, up
674 @section Connecting to an IRC Server
675 @cindex connecting
676
677 The easiest way to connect to an IRC server is to call @kbd{M-x erc}.
678 If you want to assign this function to a keystroke, the following will
679 help you figure out its parameters.
680
681 @defun erc
682 Select connection parameters and run ERC.
683 Non-interactively, it takes the following keyword arguments.
684
685 @itemize @bullet
686 @item @var{server}
687 @item @var{port}
688 @item @var{nick}
689 @item @var{password}
690 @item @var{full-name}
691 @end itemize
692
693 That is, if called with the following arguments, @var{server} and
694 @var{full-name} will be set to those values, whereas
695 @code{erc-compute-port}, @code{erc-compute-nick} and
696 @code{erc-compute-full-name} will be invoked for the values of the other
697 parameters.
698
699 @example
700 (erc :server "irc.freenode.net" :full-name "Harry S Truman")
701 @end example
702 @end defun
703
704 @subheading Server
705
706 @defun erc-compute-server &optional server
707 Return an IRC server name.
708
709 This tries a number of increasingly more default methods until a non-nil
710 value is found.
711
712 @itemize @bullet
713 @item @var{server} (the argument passed to this function)
714 @item The @code{erc-server} option
715 @item The value of the IRCSERVER environment variable
716 @item The @code{erc-default-server} variable
717 @end itemize
718
719 @end defun
720
721 @defopt erc-server nil
722 IRC server to use if one is not provided.
723 @end defopt
724
725 @subheading Port
726
727 @defun erc-compute-port &optional port
728 Return a port for an IRC server.
729
730 This tries a number of increasingly more default methods until a non-nil
731 value is found.
732
733 @itemize @bullet
734 @item @var{port} (the argument passed to this function)
735 @item The @code{erc-port} option
736 @item The @code{erc-default-port} variable
737 @end itemize
738
739 @end defun
740
741 @defopt erc-port
742 IRC port to use if not specified.
743
744 This can be either a string or a number.
745 @end defopt
746
747 @subheading Nick
748
749 @defun erc-compute-nick &optional nick
750 Return user's IRC nick.
751
752 This tries a number of increasingly more default methods until a
753 non-nil value is found.
754
755 @itemize
756 @item @var{nick} (the argument passed to this function)
757 @item The @code{erc-nick} option
758 @item The value of the IRCNICK environment variable
759 @item The result from the @code{user-login-name} function
760 @end itemize
761
762 @end defun
763
764 @defopt erc-nick
765 Nickname to use if one is not provided.
766
767 This can be either a string, or a list of strings.
768 In the latter case, if the first nick in the list is already in use,
769 other nicks are tried in the list order.
770 @end defopt
771
772 @defopt erc-nick-uniquifier
773 The string to append to the nick if it is already in use.
774 @end defopt
775
776 @defopt erc-try-new-nick-p
777 If the nickname you chose isn't available, and this option is non-nil,
778 ERC should automatically attempt to connect with another nickname.
779
780 You can manually set another nickname with the /NICK command.
781 @end defopt
782
783 @subheading Full name
784
785 @defun erc-compute-full-name &optional full-name
786 Return user's full name.
787
788 This tries a number of increasingly more default methods until a
789 non-nil value is found.
790
791 @itemize @bullet
792 @item @var{full-name} (the argument passed to this function)
793 @item The @code{erc-user-full-name} option
794 @item The value of the IRCNAME environment variable
795 @item The result from the @code{user-full-name} function
796 @end itemize
797
798 @end defun
799
800 @defopt erc-user-full-name
801 User full name.
802
803 This can be either a string or a function to call.
804 @end defopt
805
806 @node Sample Configuration, Options, Connecting, Advanced Usage
807 @comment node-name, next, previous, up
808 @section Sample Configuration
809 @cindex configuration, sample
810
811 Here is an example of configuration settings for ERC. This can go into
812 your Emacs configuration file. Everything after the @code{(require
813 'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
814
815 @lisp
816 ;;; Sample ERC configuration
817
818 ;; Add the ERC directory to load path -- you don't need this if you are
819 ;; using the version of ERC that comes with Emacs
820 (add-to-list 'load-path "~/elisp/erc")
821
822 ;; Load ERC
823 (require 'erc)
824
825 ;; Load authentication info from an external source. Put sensitive
826 ;; passwords and the like in here.
827 (load "~/.emacs.d/.erc-auth")
828
829 ;; This is an example of how to make a new command. Type "/uptime" to
830 ;; use it.
831 (defun erc-cmd-UPTIME (&rest ignore)
832 "Display the uptime of the system, as well as some load-related
833 stuff, to the current ERC buffer."
834 (let ((uname-output
835 (replace-regexp-in-string
836 ", load average: " "] @{Load average@} ["
837 ;; Collapse spaces, remove
838 (replace-regexp-in-string
839 " +" " "
840 ;; Remove beginning and trailing whitespace
841 (replace-regexp-in-string
842 "^ +\\|[ \n]+$" ""
843 (shell-command-to-string "uptime"))))))
844 (erc-send-message
845 (concat "@{Uptime@} [" uname-output "]"))))
846
847 ;; This causes ERC to connect to the Freenode network upon hitting
848 ;; C-c e f. Replace MYNICK with your IRC nick.
849 (global-set-key "\C-cef" (lambda () (interactive)
850 (erc :server "irc.freenode.net" :port "6667"
851 :nick "MYNICK")))
852
853 ;; This causes ERC to connect to the IRC server on your own machine (if
854 ;; you have one) upon hitting C-c e b. Replace MYNICK with your IRC
855 ;; nick. Often, people like to run bitlbee (http://bitlbee.org/) as an
856 ;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
857 ;; people on those networks.
858 (global-set-key "\C-ceb" (lambda () (interactive)
859 (erc :server "localhost" :port "6667"
860 :nick "MYNICK")))
861
862 ;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
863 ;; been commented out to avoid confusing new users.
864 ;; (define-key erc-mode-map (kbd "RET") nil)
865 ;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
866 ;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
867
868 ;;; Options
869
870 ;; Join the #emacs and #erc channels whenever connecting to Freenode.
871 (setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
872
873 ;; Interpret mIRC-style color commands in IRC chats
874 (setq erc-interpret-mirc-color t)
875
876 ;; The following are commented out by default, but users of other
877 ;; non-Emacs IRC clients might find them useful.
878 ;; Kill buffers for channels after /part
879 ;; (setq erc-kill-buffer-on-part t)
880 ;; Kill buffers for private queries after quitting the server
881 ;; (setq erc-kill-queries-on-quit t)
882 ;; Kill buffers for server messages after quitting the server
883 ;; (setq erc-kill-server-buffer-on-quit t)
884 @end lisp
885
886 @node Options, , Sample Configuration, Advanced Usage
887 @comment node-name, next, previous, up
888 @section Options
889 @cindex options
890
891 @c PRE5_3: (Node) Document every ERC option (module options go in
892 @c previous chapter)
893
894 This section has not yet been written. For now, the easiest way to
895 check out the available option for ERC is to do
896 @kbd{M-x customize-group erc RET}.
897
898
899 @node Getting Help and Reporting Bugs, History, Advanced Usage, Top
900 @comment node-name, next, previous, up
901 @chapter Getting Help and Reporting Bugs
902 @cindex help, getting
903 @cindex bugs, reporting
904
905 After you have read this guide, if you still have questions about ERC,
906 or if you have bugs to report, there are several places you can go.
907
908 @itemize @bullet
909
910 @item
911 @uref{http://www.emacswiki.org/cgi-bin/wiki/EmacsIRCClient} is the
912 emacswiki.org page for ERC. Anyone may add tips, hints, or bug
913 descriptions to it.
914
915 @item
916 There are several mailing lists for ERC. To subscribe, visit
917 @uref{http://savannah.gnu.org/mail/?group=erc}.
918
919 The mailing lists are also available on Gmane.
920 (@url{http://gmane.org/}). Gmane provides additional methods for
921 accessing the mailing lists, adding content to them, and searching them.
922
923 @enumerate
924 @item gmane.emacs.erc.announce
925 Announcements
926
927 @item gmane.emacs.erc.discuss
928 General discussion
929
930 @item gmane.emacs.erc.cvs
931 Log messages for changes to the ERC source code
932
933 @end enumerate
934
935 @item
936 You can visit the IRC Freenode channel @samp{#emacs}. Many of the
937 contributors are frequently around and willing to answer your
938 questions.
939
940 @end itemize
941
942
943 @node History, GNU Free Documentation License, Getting Help and Reporting Bugs, Top
944 @comment node-name, next, previous, up
945 @chapter History
946 @cindex history, of ERC
947
948 ERC was originally written by Alexander L. Belikoff
949 @email{abel@@bfr.co.il} and Sergey Berezin
950 @email{sergey.berezin@@cs.cmu.edu}. They stopped development around
951 December 1999. Their last released version was ERC 2.0.
952
953 P.S.: If one of the original developers of ERC reads this, we'd like to
954 receive additional information for this file and hear comments in
955 general.
956
957 @itemize
958 @item 2001
959
960 In June 2001, Mario Lang @email{mlang@@delysid.org} and Alex Schroeder
961 @email{alex@@gnu.org} took over development and created a ERC Project at
962 @uref{http://sourceforge.net/projects/erc}.
963
964 In reaction to a mail about the new ERC development effort, Sergey
965 Berezin said, ``First of all, I'm glad that my version of ERC is being
966 used out there. The thing is, I do not have free time and enough
967 incentive anymore to work on ERC, so I would be happy if you guys take
968 over the project entirely.''
969
970 So we happily hacked away on ERC, and soon after (September 2001)
971 released the next "stable" version, 2.1.
972
973 Most of the development of the new ERC happened on #emacs on
974 irc.openprojects.net. Over time, many people contributed code, ideas,
975 bugfixes, and a lot of alpha/beta/gamma testing.
976
977 See the @file{CREDITS} file for a list of contributors.
978
979 @item 2003
980
981 ERC 3.0 was released.
982
983 @item 2004
984
985 ERC 4.0 was released.
986
987 @item 2005
988
989 ERC 5.0 was released. Michael Olson @email{mwolson@@gnu.org} became
990 the release manager and eventually the maintainer.
991
992 After some discussion between him and the Emacs developers, it was
993 decided to include ERC in Emacs.
994
995 @item 2006
996
997 ERC 5.1 was released. It was subsequently included in Emacs 22.
998
999 ERC became an official GNU project, and development moved to
1000 @uref{http://sv.gnu.org/projects/erc}. We switched to using GNU Arch as
1001 our revision control system. Our mailing list address changed as well.
1002
1003 @end itemize
1004
1005 @node GNU Free Documentation License, Concept Index, History, Top
1006 @appendix GNU Free Documentation License
1007 @include doclicense.texi
1008
1009 @node Concept Index, , GNU Free Documentation License, Top
1010 @comment node-name, next, previous, up
1011 @unnumbered Index
1012
1013 @printindex cp
1014
1015 @bye
1016
1017 @ignore
1018 arch-tag: cf9cfaff-fc12-4297-ad15-ec2493002b1e
1019 @end ignore