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