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