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