Fix entries.
[bpt/emacs.git] / doc / misc / erc.texi
CommitLineData
4009494e
GM
1\input texinfo
2@c %**start of header
db78a8cb 3@setfilename ../../info/erc
4009494e 4@settitle ERC Manual
4009494e 5@syncodeindex fn cp
5dc584b5 6@c %**end of header
4009494e
GM
7
8@copying
15db4a13 9This manual is for ERC version 5.3.
4009494e 10
6ed161e1 11Copyright @copyright{} 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
4009494e
GM
12
13@quotation
14Permission is granted to copy, distribute and/or modify this document
6a2c4aec 15under the terms of the GNU Free Documentation License, Version 1.3 or
4009494e 16any later version published by the Free Software Foundation; with no
cd5c05d2
GM
17Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
18and with the Back-Cover Texts as in (a) below. A copy of the license
19is 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
22modify this GNU manual. Buying copies from the FSF supports it in
23developing GNU and promoting software freedom.''
4009494e
GM
24
25All Emacs Lisp code contained in this document may be used, distributed,
26and modified without restriction.
27@end quotation
28@end copying
29
5dc584b5
KB
30@dircategory Emacs
31@direntry
32* ERC: (erc). Powerful, modular, and extensible IRC client for Emacs.
33@end direntry
34
4009494e
GM
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
4009494e
GM
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.
526dc846
MO
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.
15db4a13 72* GNU Free Documentation License:: The license for this documentation.
4009494e
GM
73* Concept Index:: Search for terms.
74
75@detailmenu
76 --- The Detailed Node Listing ---
77
78Obtaining ERC
79
80* Releases:: Released versions of ERC.
81* Development:: Latest unreleased development changes.
82
83Getting Started
84
85* Sample Session:: Example of connecting to the #emacs channel
86* Special Features:: Differences from standalone IRC clients
87
88Advanced 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
101ERC is a powerful, modular, and extensible IRC client for Emacs.
102
103It 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
130Note that some ERC files are not included with Emacs due to copyright or
131dependency issues. If desired, they may be found at the following
132locations, or from your local GNU mirror.
133
134@itemize @bullet
15db4a13
MO
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}
4009494e
GM
137@end itemize
138
139The rest of this chapter may be skipped if you are using the version of
140ERC that comes with Emacs.
141
142@node Releases, Development, Obtaining ERC, Obtaining ERC
143@comment node-name, next, previous, up
144@section Releases
145
146Choose to install a release if you want to minimize risk.
147
148Errors are corrected in development first. User-visible changes will be
149announced 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
154Debian users can get ERC via apt-get. The @file{erc} package is
155available in the official Debian repository.
156
157@cindex releases, from source
158Alternatively, 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
166Choose the development version if you want to live on the bleeding edge
167of ERC development or try out new features before release.
168
15db4a13
MO
169@cindex git version control system, using
170The git version control system allows you to keep up-to-date with the
171latest changes to the development version of ERC. It also allows you
172to contribute changes (via commits, if you are have developer access to
173the repository, or via patches, otherwise). If you would like to
174contribute to ERC development, it is highly recommended that you use
175git.
4009494e 176
15db4a13 177If you are new to git, you might find this tutorial helpful:
c6d47315 178@uref{http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html}.
15db4a13
MO
179
180Downloading ERC with git and staying up-to-date involves the following
181steps.
4009494e
GM
182
183@enumerate
15db4a13 184@item Install git.
4009494e
GM
185
186@itemize @bullet
15db4a13
MO
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
190from @uref{http://www.kernel.org/pub/software/scm/git/}, or find a git
191package for your operating system.
4009494e
GM
192@end itemize
193
15db4a13
MO
194@item Download the ERC development branch.
195
196If you have developer access to ERC, do:
197
198@example
199git clone ssh://loginname@@git.sv.gnu.org/srv/git/erc.git
200@end example
201
202otherwise, do:
203
4009494e 204@example
15db4a13 205git clone git://git.sv.gnu.org/erc.git
4009494e
GM
206@end example
207
15db4a13
MO
208If you are behind a restrictive firewall, and do not have developer
209access, then do the following instead:
210
4009494e 211@example
15db4a13 212git clone http://git.sv.gnu.org/r/erc.git
4009494e
GM
213@end example
214
215@item List upstream changes that are missing from your local copy.
216Do this whenever you want to see whether new changes have been committed
15db4a13
MO
217to ERC. If you wish, you may skip this step and proceed directly to
218the ``update'' step.
4009494e
GM
219
220@example
221# Change to the source directory you are interested in.
15db4a13
MO
222cd erc
223
224# Fetch new changes from the repository, but don't apply them yet
225git fetch origin
4009494e 226
15db4a13
MO
227# Display log messages for the new changes
228git log HEAD..origin
4009494e
GM
229@end example
230
15db4a13
MO
231``origin'' is git's name for the location where you originally got ERC
232from. You can change this location at any time by editing the
233@file{.git/config} file in the directory where the ERC source was
234placed.
235
236@cindex updating ERC with git
237@item Update to the latest version by pulling in any missing changes.
238
4009494e
GM
239@example
240cd erc
15db4a13 241git pull origin
4009494e
GM
242@end example
243
15db4a13
MO
244git will show how many files changed, and will provide a visual display
245for how many lines were changed in each file.
246
4009494e
GM
247@end enumerate
248
15db4a13 249There are other ways to interact with the ERC repository.
4009494e 250
15db4a13
MO
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
4009494e 256
15db4a13
MO
257The latest development snapshot can lag behind the git repo by as much
258as 20 minutes, but never more than that.
4009494e 259
15db4a13
MO
260For further information on committing changes to ERC and performing
261development, please consult
262@uref{http://emacswiki.org/cgi-bin/wiki/ErcDevelopment}.
4009494e
GM
263
264
265@node Installation, Getting Started, Obtaining ERC, Top
266@comment node-name, next, previous, up
267@chapter Installation
268
269ERC may be compiled and installed on your machine.
270
271This section may be skipped if you are using the version of ERC that
272comes with Emacs.
273
274@subsubheading Compilation
275
276This is an optional step, since Emacs Lisp source code does not
277necessarily have to be byte-compiled. It will yield a speed increase,
278though.
279
280A working copy of Emacs or XEmacs is needed in order to compile ERC. By
281default, the program that is installed with the name @command{emacs}
282will be used.
283
284If you want to use the @command{xemacs} binary to perform the
285compilation, you would need to edit @file{Makefile} in the top-level
286directory as follows. You can put either a full path to an Emacs or
287XEmacs binary or just the command name, as long as it is in the
288@env{PATH}.
289
290@example
291EMACS = xemacs
292SITEFLAG = -no-site-file
293@end example
294
295Running @code{make} should compile the ERC source files in the
296@file{lisp} directory.
297
298@subsubheading Installation
299
300ERC may be installed into your file hierarchy by doing the following.
301
302Edit the @file{Makefile} file so that @env{ELISPDIR} points to where you
303want the source and compiled ERC files to be installed and
304@env{INFODIR} indicates where to put the ERC manual. Of course, you
305will want to edit @env{EMACS} and @env{SITEFLAG} as shown in the
306Compilation section if you are using XEmacs.
307
308If you are installing ERC on a Debian system, you might want to change
309the value of @env{INSTALLINFO} as specified in @file{Makefile}.
310
311Run @code{make} as a normal user.
312
313Run @code{make install} as the root user if you have chosen installation
314locations 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
322To use ERC, add the directory containing its files to your
323@code{load-path} variable, in your @file{.emacs} file. Then, load ERC
324itself. An example follows.
325
326@lisp
327(require 'erc)
328@end lisp
329
330Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
331prompt for the server to connect to.
332
333If you want to place ERC settings in their own file, you can place them
334in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
335
336If you would rather use the Customize interface to change how ERC works,
337do @kbd{M-x customize-group RET erc RET}. In particular, ERC comes with
338lots of modules that may be enabled or disabled; to select which ones
339you 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
350This is an example ERC session which shows how to connect to the #emacs
351channel on Freenode. Another IRC channel on Freenode that may be of
352interest is #erc, which is a channel where ERC users and developers hang
353out.
354
355@itemize @bullet
356
357@item Connect to Freenode
358
359Run @kbd{M-x erc}. Use ``irc.freenode.net'' as the IRC server, ``6667''
360as the port, and choose a nickname.
361
362@item Get used to the interface
363
364Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
365there. You will see first some messages about checking for ident, and
366then a bunch of other messages that describe the current IRC server.
367
368@item Join the #emacs channel
369
370In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}. Depending
371on how you've set up ERC, either a new buffer for ``#emacs'' will be
372displayed, or a new buffer called ``#emacs'' will be created in the
373background. If the latter, switch to the ``#emacs'' buffer. You will
374see the channel topic and a list of the people who are currently on the
375channel.
376
377@item Register your nickname with Freenode
378
379If you would like to be able to talk with people privately on the
380Freenode network, you will have to ``register'' your nickname. To do
381so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
382NickServ register <password>'', replacing ``<password>'' with your
383desired password. It should tell you that the operation was successful.
384
385@item Talk to people in the channel
386
387If you switch back to the ``#emacs'' buffer, you can type a message, and
388everyone on the channel will see it.
389
390@item Open a query buffer to talk to someone
391
392If you want to talk with someone in private (this should usually not be
393done for technical help, only for personal questions), type ``/query
394<nick>'', replacing ``<nick>'' with the nickname of the person you would
395like to talk to. Depending on how ERC is set up, you will either see a
396new buffer with the name of the person, or such a buffer will be created
397in the background and you will have to switch to it. Begin typing
398messages, and you will be able to have a conversation.
399
400Note that if the other person is not registered, you will not be able to
401talk 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
409ERC has some features that distinguish it from some IRC clients.
410
411@itemize @bullet
412
413@item multiple channels and multiple servers
414
415Every channel is put in a separate buffer. Several IRC servers may be
416connected to at the same time.
417
418@cindex query buffers
419@item private message separation
420
421Private conversations are treated as channels, and are put into separate
422buffers in Emacs. We call these ``query buffers''.
423
424@item highlighting
425
d20cf916 426Some occurrences of words can be highlighted, which makes it easier to
4009494e
GM
427track different kinds of conversations.
428
429@item notification
430
431ERC can notify you that certain users are online.
432
433@item channel tracking
434
435Channels can be hidden and conversation continue in the background. You
436are notified when something is said in such a channel that is not
437currently visible. This makes it easy to get Real Work done while still
438maintaining an IRC presence.
439
440@item nick completion
441
442ERC can complete words upon hitting @kbd{TAB}, which eases the writing
443of nicknames in messages.
444
445@cindex history ring
446@item history
447
448Past actions are kept in history rings for future use. To navigate a
449history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
450forwards.
451
452@item multiple languages
453
454Different channels and servers may have different language encodings.
455
456In addition, it is possible to translate the messages that ERC uses into
457multiple languages. Please contact the developers of ERC at
458@email{erc-discuss@@gnu.org} if you are interested in helping with the
459translation effort.
460
461@item user scripting
462
463Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
464
465It is also possible to make custom IRC commands, if you know a little
466Emacs Lisp. Just make an Emacs Lisp function and call it
467@code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
468new command in capital letters.
469
470@item auto reconnect
471
472If the connection goes away at some point, ERC will try to reconnect
473automatically. If it fails to reconnect, and you want to try to
474manually reestablish the connection at some later point, switch to an
475ERC 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
485This is a summary of keystrokes available in every ERC buffer.
486
487@table @kbd
488
489@item C-a or <home> (`erc-bol')
490Go to beginning of line or end of prompt.
491
492@item RET (`erc-send-current-line')
493Send the current line
494
495@item TAB (`erc-complete-word')
496If at prompt, complete the current word.
497Otherwise, move to the next link or button.
498
499@item M-TAB (`ispell-complete-word')
500Complete the given word, using ispell.
501
502@item C-c C-a (`erc-bol')
503Go to beginning of line or end of prompt.
504
505@item C-c C-b (`erc-iswitchb')
506Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
507
508@item C-c C-c (`erc-toggle-interpret-controls')
509Toggle interpretation of control sequences in messages.
510
511@item C-c C-d (`erc-input-action')
512Interactively input a user action and send it to IRC.
513
514@item C-c C-e (`erc-toggle-ctcp-autoresponse')
515Toggle automatic CTCP replies (like VERSION and PING).
516
517@item C-c C-f (`erc-toggle-flood-control')
518Toggle use of flood control on sent messages.
519
520@item C-c TAB (`erc-invite-only-mode')
521Turn on the invite only mode (+i) for the current channel.
522
523@item C-c C-j (`erc-join-channel')
524Join channel. If point is at the beginning of a channel name, use that
525as default.
526
527@item C-c C-k (`erc-go-to-log-matches-buffer')
528Interactively open an erc-log-matches buffer
529
530@item C-c C-l (`erc-save-buffer-in-logs')
531Append buffer contents to the log file, if logging is enabled.
532
533@item C-c C-n (`erc-channel-names')
534Run "/names #channel" in the current channel.
535
536@item C-c C-o (`erc-get-channel-mode-from-keypress')
537Read a key sequence and call the corresponding channel mode function.
538After 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.
542If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
543If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
544Anything else will be sent to `erc-toggle-channel-mode'.
545
546@item C-c C-p (`erc-part-from-channel')
547Part from the current channel and prompt for a reason.
548
549@item C-c C-q (`erc-quit-server')
550Disconnect from current server after prompting for reason.
551
552@item C-c C-r (`erc-remove-text-properties-region')
553Clears the region (start,end) in object from all colors, etc.
554
555@item C-c C-t (`erc-set-topic')
556Prompt for a topic for the current channel.
557
558@item C-c C-u (`erc-kill-input')
559Kill 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
569One way to add functionality to ERC is to customize which of its many
570modules are loaded.
571
572There 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
576The following is a list of available modules.
577
578@table @code
579
580@cindex modules, autoaway
581@item autoaway
582Set away status automatically
583
584@cindex modules, autojoin
585@item autojoin
586Join channels automatically
587
588@cindex modules, bbdb
589@item bbdb
590Integrate with the Big Brother Database
591
592@cindex modules, button
593@item button
594Buttonize URLs, nicknames, and other text
595
596@cindex modules, capab-identify
597@item capab-identify
598Mark unidentified users on freenode and other servers supporting CAPAB.
599
600@cindex modules, completion
601@cindex modules, pcomplete
602@item completion (aka pcomplete)
603Complete nicknames and commands (programmable)
604
605@cindex modules, fill
606@item fill
607Wrap long lines
608
609@cindex modules, hecomplete
610@item hecomplete
611Complete nicknames and commands (old). This is the old module---you
612might prefer the ``completion'' module instead.
613
614@cindex modules, identd
615@item identd
616Launch an identd server on port 8113
617
618@cindex modules, irccontrols
619@item irccontrols
620Highlight or remove IRC control characters
621
622@cindex modules, log
623@item log
624Save buffers in logs
625
626@cindex modules, match
627@item match
628Highlight pals, fools, and other keywords
629
630@cindex modules, menu
631@item menu
632Display a menu in ERC buffers
633
634@cindex modules, netsplit
635@item netsplit
636Detect netsplits
637
638@cindex modules, noncommands
639@item noncommands
640Don't display non-IRC commands after evaluation
641
642@cindex modules, notify
643@item notify
644Notify when the online status of certain users changes
645
646@cindex modules, page
647@item page
648Process CTCP PAGE requests from IRC
649
650@cindex modules, readonly
651@item readonly
652Make displayed lines read-only
653
654@cindex modules, replace
655@item replace
656Replace text in messages
657
658@cindex modules, ring
659@item ring
660Enable an input history
661
662@cindex modules, scrolltobottom
663@item scrolltobottom
664Scroll to the bottom of the buffer
665
666@cindex modules, services
667@item services
668Identify to Nickserv (IRC Services) automatically
669
670@cindex modules, smiley
671@item smiley
672Convert smileys to pretty icons
673
674@cindex modules, sound
675@item sound
676Play sounds when you receive CTCP SOUND requests
677
678@cindex modules, spelling
679@item spelling
680Check spelling of messages
681
682@cindex modules, stamp
683@item stamp
684Add timestamps to messages
685
686@cindex modules, track
687@item track
688Track channel activity in the mode-line
689
690@cindex modules, truncate
691@item truncate
692Truncate buffers to a certain size
693
694@cindex modules, unmorse
695@item unmorse
696Translate morse code in messages
697
698@end table
699
a83df153 700@c PRE5_4: Document every option of every module in its own subnode
4009494e
GM
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
719The easiest way to connect to an IRC server is to call @kbd{M-x erc}.
720If you want to assign this function to a keystroke, the following will
721help you figure out its parameters.
722
723@defun erc
724Select connection parameters and run ERC.
725Non-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
735That 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
739parameters.
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
749Return an IRC server name.
750
751This tries a number of increasingly more default methods until a non-nil
752value 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
764IRC server to use if one is not provided.
765@end defopt
766
767@subheading Port
768
769@defun erc-compute-port &optional port
770Return a port for an IRC server.
771
772This tries a number of increasingly more default methods until a non-nil
773value 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
784IRC port to use if not specified.
785
786This can be either a string or a number.
787@end defopt
788
789@subheading Nick
790
791@defun erc-compute-nick &optional nick
792Return user's IRC nick.
793
794This tries a number of increasingly more default methods until a
795non-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
807Nickname to use if one is not provided.
808
809This can be either a string, or a list of strings.
810In the latter case, if the first nick in the list is already in use,
811other nicks are tried in the list order.
812@end defopt
813
814@defopt erc-nick-uniquifier
815The string to append to the nick if it is already in use.
816@end defopt
817
818@defopt erc-try-new-nick-p
819If the nickname you chose isn't available, and this option is non-nil,
820ERC should automatically attempt to connect with another nickname.
821
822You 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
828Return user's full name.
829
830This tries a number of increasingly more default methods until a
831non-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
843User full name.
844
845This 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
853Here is an example of configuration settings for ERC. This can go into
854your 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
875stuff, 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
a83df153 933@c PRE5_4: (Node) Document every ERC option (module options go in
4009494e
GM
934@c previous chapter)
935
936This section has not yet been written. For now, the easiest way to
526dc846 937check out the available options for ERC is to do
4009494e
GM
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
947After you have read this guide, if you still have questions about ERC,
948or if you have bugs to report, there are several places you can go.
949
950@itemize @bullet
951
952@item
526dc846 953@uref{http://www.emacswiki.org/cgi-bin/wiki/ERC} is the
4009494e
GM
954emacswiki.org page for ERC. Anyone may add tips, hints, or bug
955descriptions to it.
956
957@item
958There are several mailing lists for ERC. To subscribe, visit
959@uref{http://savannah.gnu.org/mail/?group=erc}.
960
961The mailing lists are also available on Gmane.
962(@url{http://gmane.org/}). Gmane provides additional methods for
963accessing the mailing lists, adding content to them, and searching them.
964
965@enumerate
526dc846 966@item gmane.emacs.erc.announce: Announcements
4009494e 967
526dc846 968@item gmane.emacs.erc.discuss: General discussion
4009494e 969
526dc846 970@item gmane.emacs.erc.cvs: Log messages for changes to the ERC source code
4009494e
GM
971
972@end enumerate
973
974@item
975You can visit the IRC Freenode channel @samp{#emacs}. Many of the
976contributors are frequently around and willing to answer your
977questions.
978
979@end itemize
980
981
526dc846 982@node History, Copying, Getting Help and Reporting Bugs, Top
4009494e
GM
983@comment node-name, next, previous, up
984@chapter History
985@cindex history, of ERC
986
987ERC 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
990December 1999. Their last released version was ERC 2.0.
991
992P.S.: If one of the original developers of ERC reads this, we'd like to
993receive additional information for this file and hear comments in
994general.
995
996@itemize
997@item 2001
998
999In 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
1003In reaction to a mail about the new ERC development effort, Sergey
1004Berezin said, ``First of all, I'm glad that my version of ERC is being
1005used out there. The thing is, I do not have free time and enough
1006incentive anymore to work on ERC, so I would be happy if you guys take
1007over the project entirely.''
1008
1009So we happily hacked away on ERC, and soon after (September 2001)
1010released the next "stable" version, 2.1.
1011
1012Most of the development of the new ERC happened on #emacs on
1013irc.openprojects.net. Over time, many people contributed code, ideas,
1014bugfixes, and a lot of alpha/beta/gamma testing.
1015
1016See the @file{CREDITS} file for a list of contributors.
1017
1018@item 2003
1019
1020ERC 3.0 was released.
1021
1022@item 2004
1023
1024ERC 4.0 was released.
1025
1026@item 2005
1027
1028ERC 5.0 was released. Michael Olson @email{mwolson@@gnu.org} became
1029the release manager and eventually the maintainer.
1030
1031After some discussion between him and the Emacs developers, it was
1032decided to include ERC in Emacs.
1033
1034@item 2006
1035
1036ERC 5.1 was released. It was subsequently included in Emacs 22.
1037
1038ERC became an official GNU project, and development moved to
1039@uref{http://sv.gnu.org/projects/erc}. We switched to using GNU Arch as
1040our revision control system. Our mailing list address changed as well.
1041
15db4a13
MO
1042@item 2007
1043
1044We switched to using git for our version control system.
1045
4009494e
GM
1046@end itemize
1047
526dc846
MO
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
4009494e
GM
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