mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
365e01cc9f
Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
904 lines
25 KiB
Plaintext
904 lines
25 KiB
Plaintext
\input texinfo
|
|
@c %**start of header
|
|
@setfilename ../../info/erc.info
|
|
@settitle ERC Manual
|
|
@include docstyle.texi
|
|
@syncodeindex fn cp
|
|
@include emacsver.texi
|
|
@c %**end of header
|
|
|
|
@copying
|
|
This manual is for ERC as distributed with Emacs @value{EMACSVER}.
|
|
|
|
Copyright @copyright{} 2005--2020 Free Software Foundation, Inc.
|
|
|
|
@quotation
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
|
and with the Back-Cover Texts as in (a) below. A copy of the license
|
|
is included in the section entitled ``GNU Free Documentation License''.
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
|
|
modify this GNU manual.''
|
|
|
|
All Emacs Lisp code contained in this document may be used, distributed,
|
|
and modified without restriction.
|
|
@end quotation
|
|
@end copying
|
|
|
|
@dircategory Emacs network features
|
|
@direntry
|
|
* ERC: (erc). Powerful and extensible IRC client for Emacs.
|
|
@end direntry
|
|
|
|
@titlepage
|
|
@title ERC manual
|
|
@subtitle a full-featured IRC client
|
|
@subtitle for Emacs
|
|
|
|
@c The following two commands
|
|
@c start the copyright page.
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
@insertcopying
|
|
@end titlepage
|
|
|
|
@contents
|
|
|
|
@ifnottex
|
|
@node Top
|
|
@top ERC
|
|
|
|
@insertcopying
|
|
@end ifnottex
|
|
|
|
@menu
|
|
* Introduction:: What is ERC?
|
|
* Getting Started:: Quick Start guide to using ERC.
|
|
* Keystroke Summary:: Keystrokes used in ERC buffers.
|
|
* Modules:: Available modules for ERC.
|
|
* Advanced Usage:: Cool ways of using ERC.
|
|
* Getting Help and Reporting Bugs::
|
|
* History:: The history of ERC.
|
|
* GNU Free Documentation License:: The license for this documentation.
|
|
* Concept Index:: Search for terms.
|
|
|
|
@detailmenu
|
|
--- The Detailed Node Listing ---
|
|
|
|
Getting Started
|
|
|
|
* Sample Session:: Example of connecting to the #emacs channel
|
|
* Special Features:: Differences from standalone IRC clients
|
|
|
|
Advanced Usage
|
|
|
|
* Connecting:: Ways of connecting to an IRC server.
|
|
* Sample Configuration:: An example configuration file.
|
|
* Options:: Options that are available for ERC.
|
|
|
|
@end detailmenu
|
|
@end menu
|
|
|
|
@node Introduction
|
|
@chapter Introduction
|
|
|
|
ERC is a powerful, modular, and extensible IRC client for Emacs.
|
|
It is distributed with Emacs since version 22.1.
|
|
|
|
It comes with the following capabilities enabled by default.
|
|
|
|
@itemize @bullet
|
|
@item Flood control
|
|
@item Timestamps
|
|
@item Join channels automatically
|
|
@item Buttonize URLs, nicknames, and other text
|
|
@item Wrap long lines
|
|
@item Highlight or remove IRC control characters
|
|
@item Highlight pals, fools, and other keywords
|
|
@item Detect netsplits
|
|
@item Complete nicknames and commands in a programmable fashion
|
|
@item Make displayed lines read-only
|
|
@item Input history
|
|
@item Track channel activity in the mode-line
|
|
|
|
@end itemize
|
|
|
|
|
|
@node Getting Started
|
|
@chapter Getting Started
|
|
@cindex settings
|
|
|
|
The command @kbd{M-x erc} will start ERC and prompt for the server to
|
|
connect to.
|
|
|
|
If you want to place ERC settings in their own file, you can place them
|
|
in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
|
|
|
|
If you would rather use the Customize interface to change how ERC
|
|
works, do @kbd{M-x customize-group @key{RET} erc @key{RET}}. In
|
|
particular, ERC comes with lots of modules that may be enabled or
|
|
disabled; to select which ones you want, do @kbd{M-x
|
|
customize-variable @key{RET} erc-modules @key{RET}}.
|
|
|
|
@menu
|
|
* Sample Session:: Example of connecting to the #emacs channel
|
|
* Special Features:: Differences from standalone IRC clients
|
|
@end menu
|
|
|
|
@node Sample Session
|
|
@section Sample Session
|
|
|
|
This is an example ERC session which shows how to connect to the #emacs
|
|
channel on Freenode. Another IRC channel on Freenode that may be of
|
|
interest is #erc, which is a channel where ERC users and developers hang
|
|
out.
|
|
|
|
@itemize @bullet
|
|
|
|
@item Connect to Freenode
|
|
|
|
Run @kbd{M-x erc}. Use ``irc.freenode.net'' as the IRC server, ``6667''
|
|
as the port, and choose a nickname.
|
|
|
|
@item Get used to the interface
|
|
|
|
Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
|
|
there. You will see first some messages about checking for ident, and
|
|
then a bunch of other messages that describe the current IRC server.
|
|
|
|
@item Join the #emacs channel
|
|
|
|
In that buffer, type ``/join @key{SPC} #emacs'' and hit @kbd{RET}. Depending
|
|
on how you've set up ERC, either a new buffer for ``#emacs'' will be
|
|
displayed, or a new buffer called ``#emacs'' will be created in the
|
|
background. If the latter, switch to the ``#emacs'' buffer. You will
|
|
see the channel topic and a list of the people who are currently on the
|
|
channel.
|
|
|
|
@item Register your nickname with Freenode
|
|
|
|
If you would like to be able to talk with people privately on the
|
|
Freenode network, you will have to ``register'' your nickname. To do
|
|
so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
|
|
NickServ register <password>'', replacing ``<password>'' with your
|
|
desired password. It should tell you that the operation was successful.
|
|
|
|
@item Talk to people in the channel
|
|
|
|
If you switch back to the ``#emacs'' buffer, you can type a message, and
|
|
everyone on the channel will see it.
|
|
|
|
@item Open a query buffer to talk to someone
|
|
|
|
If you want to talk with someone in private (this should usually not be
|
|
done for technical help, only for personal questions), type ``/query
|
|
<nick>'', replacing ``<nick>'' with the nickname of the person you would
|
|
like to talk to. Depending on how ERC is set up, you will either see a
|
|
new buffer with the name of the person, or such a buffer will be created
|
|
in the background and you will have to switch to it. Begin typing
|
|
messages, and you will be able to have a conversation.
|
|
|
|
Note that if the other person is not registered, you will not be able to
|
|
talk with them.
|
|
|
|
@end itemize
|
|
|
|
@node Special Features
|
|
@section Special Features
|
|
|
|
ERC has some features that distinguish it from some IRC clients.
|
|
|
|
@itemize @bullet
|
|
|
|
@item multiple channels and multiple servers
|
|
|
|
Every channel is put in a separate buffer. Several IRC servers may be
|
|
connected to at the same time.
|
|
|
|
@cindex query buffers
|
|
@item private message separation
|
|
|
|
Private conversations are treated as channels, and are put into separate
|
|
buffers in Emacs. We call these ``query buffers''.
|
|
|
|
@item highlighting
|
|
|
|
Some occurrences of words can be highlighted, which makes it easier to
|
|
track different kinds of conversations.
|
|
|
|
@item notification
|
|
|
|
ERC can notify you that certain users are online.
|
|
|
|
@item channel tracking
|
|
|
|
Channels can be hidden and conversation continue in the background. You
|
|
are notified when something is said in such a channel that is not
|
|
currently visible. This makes it easy to get Real Work done while still
|
|
maintaining an IRC presence.
|
|
|
|
@item nick completion
|
|
|
|
ERC can complete words upon hitting @kbd{TAB}, which eases the writing
|
|
of nicknames in messages.
|
|
|
|
@cindex history ring
|
|
@item history
|
|
|
|
Past actions are kept in history rings for future use. To navigate a
|
|
history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
|
|
forwards.
|
|
|
|
@item multiple languages
|
|
|
|
Different channels and servers may have different language encodings.
|
|
|
|
multiple languages. Please contact the Emacs developers
|
|
if you are interested in helping with the
|
|
translation effort.
|
|
|
|
@item user scripting
|
|
|
|
Users can load scripts (e.g., auto greeting scripts) when ERC starts up.
|
|
|
|
It is also possible to make custom IRC commands, if you know a little
|
|
Emacs Lisp. Just make an Emacs Lisp function and call it
|
|
@code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
|
|
new command in capital letters.
|
|
|
|
@item auto reconnect
|
|
|
|
If the connection goes away at some point, ERC will try to reconnect
|
|
automatically. If it fails to reconnect, and you want to try to
|
|
manually reestablish the connection at some later point, switch to an
|
|
ERC buffer and run the @code{/RECONNECT} command.
|
|
|
|
@end itemize
|
|
|
|
|
|
@node Keystroke Summary
|
|
@chapter Keys Used in ERC
|
|
@cindex keystrokes
|
|
|
|
This is a summary of keystrokes available in every ERC buffer.
|
|
|
|
@table @kbd
|
|
|
|
@item C-a or <home> (@code{erc-bol})
|
|
Go to beginning of line or end of prompt.
|
|
|
|
@item @key{RET} (@code{erc-send-current-line})
|
|
Send the current line
|
|
|
|
@item @key{TAB} (@code{erc-complete-word})
|
|
If at prompt, complete the current word.
|
|
Otherwise, move to the next link or button.
|
|
|
|
@item M-@key{TAB} (@code{ispell-complete-word})
|
|
Complete the given word, using ispell.
|
|
|
|
@item C-c C-a (@code{erc-bol})
|
|
Go to beginning of line or end of prompt.
|
|
|
|
@item C-c C-b (@code{erc-iswitchb})
|
|
Use @code{iswitchb-read-buffer} to prompt for a ERC buffer to switch to.
|
|
|
|
@item C-c C-c (@code{erc-toggle-interpret-controls})
|
|
Toggle interpretation of control sequences in messages.
|
|
|
|
@item C-c C-d (@code{erc-input-action})
|
|
Interactively input a user action and send it to IRC.
|
|
|
|
@item C-c C-e (@code{erc-toggle-ctcp-autoresponse})
|
|
Toggle automatic CTCP replies (like VERSION and PING).
|
|
|
|
@item C-c C-f (@code{erc-toggle-flood-control})
|
|
Toggle use of flood control on sent messages.
|
|
|
|
@item C-c @key{TAB} (@code{erc-invite-only-mode})
|
|
Turn on the invite only mode (+i) for the current channel.
|
|
|
|
@item C-c C-j (@code{erc-join-channel})
|
|
Join channel. If point is at the beginning of a channel name, use that
|
|
as default.
|
|
|
|
@item C-c C-k (@code{erc-go-to-log-matches-buffer})
|
|
Interactively open an erc-log-matches buffer
|
|
|
|
@item C-c C-l (@code{erc-save-buffer-in-logs})
|
|
Append buffer contents to the log file, if logging is enabled.
|
|
|
|
@item C-c C-n (@code{erc-channel-names})
|
|
Run "/names #channel" in the current channel.
|
|
|
|
@item C-c C-o (@code{erc-get-channel-mode-from-keypress})
|
|
Read a key sequence and call the corresponding channel mode function.
|
|
After doing @kbd{C-c C-o}, type in a channel mode letter.
|
|
|
|
@kbd{C-g} means quit.
|
|
@kbd{RET} lets you type more than one mode at a time.
|
|
If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
|
|
If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
|
|
Anything else will be sent to @code{erc-toggle-channel-mode}.
|
|
|
|
@item C-c C-p (@code{erc-part-from-channel})
|
|
Part from the current channel and prompt for a reason.
|
|
|
|
@item C-c C-q (@code{erc-quit-server})
|
|
Disconnect from current server after prompting for reason.
|
|
|
|
@item C-c C-r (@code{erc-remove-text-properties-region})
|
|
Clears the region (start,end) in object from all colors, etc.
|
|
|
|
@item C-c C-t (@code{erc-set-topic})
|
|
Prompt for a topic for the current channel.
|
|
|
|
@item C-c C-u (@code{erc-kill-input})
|
|
Kill current input line using @code{erc-bol} followed by @code{kill-line}.
|
|
|
|
@end table
|
|
|
|
|
|
@node Modules
|
|
@chapter Modules
|
|
@cindex modules
|
|
|
|
One way to add functionality to ERC is to customize which of its many
|
|
modules are loaded.
|
|
|
|
There is a spiffy customize interface, which may be reached by typing
|
|
@kbd{M-x customize-option @key{RET} erc-modules @key{RET}}.
|
|
Alternatively, set @code{erc-modules} manually and then call
|
|
@code{erc-update-modules}.
|
|
|
|
The following is a list of available modules.
|
|
|
|
@table @code
|
|
|
|
@cindex modules, autoaway
|
|
@item autoaway
|
|
Set away status automatically
|
|
|
|
@cindex modules, autojoin
|
|
@item autojoin
|
|
Join channels automatically
|
|
|
|
@cindex modules, bbdb
|
|
@item bbdb
|
|
Integrate with the Big Brother Database
|
|
|
|
@cindex modules, button
|
|
@item button
|
|
Buttonize URLs, nicknames, and other text
|
|
|
|
@cindex modules, capab-identify
|
|
@item capab-identify
|
|
Mark unidentified users on freenode and other servers supporting CAPAB.
|
|
|
|
@cindex modules, completion
|
|
@cindex modules, pcomplete
|
|
@item completion (aka pcomplete)
|
|
Complete nicknames and commands (programmable)
|
|
|
|
@cindex modules, fill
|
|
@item fill
|
|
Wrap long lines
|
|
|
|
@cindex modules, identd
|
|
@item identd
|
|
Launch an identd server on port 8113
|
|
|
|
@cindex modules, irccontrols
|
|
@item irccontrols
|
|
Highlight or remove IRC control characters
|
|
|
|
@cindex modules, log
|
|
@item log
|
|
Save buffers in logs
|
|
|
|
@cindex modules, match
|
|
@item match
|
|
Highlight pals, fools, and other keywords
|
|
|
|
@cindex modules, menu
|
|
@item menu
|
|
Display a menu in ERC buffers
|
|
|
|
@cindex modules, netsplit
|
|
@item netsplit
|
|
Detect netsplits
|
|
|
|
@cindex modules, noncommands
|
|
@item noncommands
|
|
Don't display non-IRC commands after evaluation
|
|
|
|
@cindex modules, notify
|
|
@item notify
|
|
Notify when the online status of certain users changes
|
|
|
|
@cindex modules, notifications
|
|
@item notifications
|
|
Send you a notification when you get a private message,
|
|
or your nickname is mentioned
|
|
|
|
@cindex modules, page
|
|
@item page
|
|
Process CTCP PAGE requests from IRC
|
|
|
|
@cindex modules, readonly
|
|
@item readonly
|
|
Make displayed lines read-only
|
|
|
|
@cindex modules, replace
|
|
@item replace
|
|
Replace text in messages
|
|
|
|
@cindex modules, ring
|
|
@item ring
|
|
Enable an input history
|
|
|
|
@cindex modules, scrolltobottom
|
|
@item scrolltobottom
|
|
Scroll to the bottom of the buffer
|
|
|
|
@cindex modules, services
|
|
@item services
|
|
Identify to Nickserv (IRC Services) automatically
|
|
|
|
@cindex modules, smiley
|
|
@item smiley
|
|
Convert smileys to pretty icons
|
|
|
|
@cindex modules, sound
|
|
@item sound
|
|
Play sounds when you receive CTCP SOUND requests
|
|
|
|
@cindex modules, spelling
|
|
@item spelling
|
|
Check spelling of messages
|
|
|
|
@cindex modules, stamp
|
|
@item stamp
|
|
Add timestamps to messages
|
|
|
|
@cindex modules, track
|
|
@item track
|
|
Track channel activity in the mode-line
|
|
|
|
@cindex modules, truncate
|
|
@item truncate
|
|
Truncate buffers to a certain size
|
|
|
|
@cindex modules, unmorse
|
|
@item unmorse
|
|
Translate morse code in messages
|
|
|
|
@end table
|
|
|
|
@c PRE5_4: Document every option of every module in its own subnode
|
|
|
|
|
|
@node Advanced Usage
|
|
@chapter Advanced Usage
|
|
@cindex advanced topics
|
|
|
|
@menu
|
|
* Connecting:: Ways of connecting to an IRC server.
|
|
* Sample Configuration:: An example configuration file.
|
|
* Options:: Options that are available for ERC.
|
|
@end menu
|
|
|
|
@node Connecting
|
|
@section Connecting to an IRC Server
|
|
@cindex connecting
|
|
|
|
The easiest way to connect to an IRC server is to call @kbd{M-x erc}.
|
|
If you want to assign this function to a keystroke, the following will
|
|
help you figure out its parameters.
|
|
|
|
@defun erc
|
|
Select connection parameters and run ERC@.
|
|
Non-interactively, it takes the following keyword arguments.
|
|
|
|
@itemize @bullet
|
|
@item @var{server}
|
|
@item @var{port}
|
|
@item @var{nick}
|
|
@item @var{password}
|
|
@item @var{full-name}
|
|
@end itemize
|
|
|
|
That is, if called with the following arguments, @var{server} and
|
|
@var{full-name} will be set to those values, whereas
|
|
@code{erc-compute-port}, @code{erc-compute-nick} and
|
|
@code{erc-compute-full-name} will be invoked for the values of the other
|
|
parameters.
|
|
|
|
@example
|
|
(erc :server "irc.freenode.net" :full-name "Harry S Truman")
|
|
@end example
|
|
@end defun
|
|
|
|
@subheading Server
|
|
|
|
@defun erc-compute-server &optional server
|
|
Return an IRC server name.
|
|
|
|
This tries a number of increasingly more default methods until a non-@code{nil}
|
|
value is found.
|
|
|
|
@itemize @bullet
|
|
@item @var{server} (the argument passed to this function)
|
|
@item The @code{erc-server} option
|
|
@item The value of the IRCSERVER environment variable
|
|
@item The @code{erc-default-server} variable
|
|
@end itemize
|
|
|
|
@end defun
|
|
|
|
@defopt erc-server
|
|
IRC server to use if one is not provided.
|
|
@end defopt
|
|
|
|
@subheading Port
|
|
|
|
@defun erc-compute-port &optional port
|
|
Return a port for an IRC server.
|
|
|
|
This tries a number of increasingly more default methods until a non-@code{nil}
|
|
value is found.
|
|
|
|
@itemize @bullet
|
|
@item @var{port} (the argument passed to this function)
|
|
@item The @code{erc-port} option
|
|
@item The @code{erc-default-port} variable
|
|
@end itemize
|
|
|
|
@end defun
|
|
|
|
@defopt erc-port
|
|
IRC port to use if not specified.
|
|
|
|
This can be either a string or a number.
|
|
@end defopt
|
|
|
|
@subheading Nick
|
|
|
|
@defun erc-compute-nick &optional nick
|
|
Return user's IRC nick.
|
|
|
|
This tries a number of increasingly more default methods until a
|
|
non-@code{nil} value is found.
|
|
|
|
@itemize
|
|
@item @var{nick} (the argument passed to this function)
|
|
@item The @code{erc-nick} option
|
|
@item The value of the IRCNICK environment variable
|
|
@item The result from the @code{user-login-name} function
|
|
@end itemize
|
|
|
|
@end defun
|
|
|
|
@defopt erc-nick
|
|
Nickname to use if one is not provided.
|
|
|
|
This can be either a string, or a list of strings.
|
|
In the latter case, if the first nick in the list is already in use,
|
|
other nicks are tried in the list order.
|
|
@end defopt
|
|
|
|
@defopt erc-format-nick-function
|
|
A function to format a nickname for message display
|
|
|
|
You can set this to @code{erc-format-@@nick} to display user mode prefix
|
|
@end defopt
|
|
|
|
@example
|
|
(setq erc-format-nick-function 'erc-format-@@nick)
|
|
@end example
|
|
|
|
@defopt erc-nick-uniquifier
|
|
The string to append to the nick if it is already in use.
|
|
@end defopt
|
|
|
|
@defopt erc-try-new-nick-p
|
|
If the nickname you chose isn't available, and this option is non-@code{nil},
|
|
ERC should automatically attempt to connect with another nickname.
|
|
|
|
You can manually set another nickname with the /NICK command.
|
|
@end defopt
|
|
|
|
@subheading Password
|
|
@cindex password
|
|
|
|
@defopt erc-prompt-for-password
|
|
If non-@code{nil} (the default), @kbd{M-x erc} prompts for a password.
|
|
@end defopt
|
|
|
|
If you prefer, you can set this option to @code{nil} and use the
|
|
@code{auth-source} mechanism to store your password. For instance, if
|
|
you use @file{~/.authinfo} as your auth-source backend, then put
|
|
something like the following in that file:
|
|
|
|
@example
|
|
machine irc.example.net login "#fsf" password sEcReT
|
|
@end example
|
|
|
|
@noindent
|
|
ERC also consults @code{auth-source} to find any channel keys required
|
|
for the channels that you wish to autojoin, as specified by the
|
|
variable @code{erc-autojoin-channels-alist}.
|
|
|
|
For more details, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
|
|
|
|
|
|
@subheading Full name
|
|
|
|
@defun erc-compute-full-name &optional full-name
|
|
Return user's full name.
|
|
|
|
This tries a number of increasingly more default methods until a
|
|
non-@code{nil} value is found.
|
|
|
|
@itemize @bullet
|
|
@item @var{full-name} (the argument passed to this function)
|
|
@item The @code{erc-user-full-name} option
|
|
@item The value of the IRCNAME environment variable
|
|
@item The result from the @code{user-full-name} function
|
|
@end itemize
|
|
|
|
@end defun
|
|
|
|
@defopt erc-user-full-name
|
|
User full name.
|
|
|
|
This can be either a string or a function to call.
|
|
@end defopt
|
|
|
|
@node Sample Configuration
|
|
@section Sample Configuration
|
|
@cindex configuration, sample
|
|
|
|
Here is an example of configuration settings for ERC@. This can go into
|
|
your Emacs configuration file. Everything after the @code{(require
|
|
'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
|
|
|
|
@lisp
|
|
;;; Sample ERC configuration
|
|
|
|
;; Load authentication info from an external source. Put sensitive
|
|
;; passwords and the like in here.
|
|
(load "~/.emacs.d/.erc-auth")
|
|
|
|
;; This is an example of how to make a new command. Type "/uptime" to
|
|
;; use it.
|
|
(defun erc-cmd-UPTIME (&rest ignore)
|
|
"Display the uptime of the system, as well as some load-related
|
|
stuff, to the current ERC buffer."
|
|
(let ((uname-output
|
|
(replace-regexp-in-string
|
|
", load average: " "] @{Load average@} ["
|
|
;; Collapse spaces, remove
|
|
(replace-regexp-in-string
|
|
" +" " "
|
|
;; Remove beginning and trailing whitespace
|
|
(replace-regexp-in-string
|
|
"^ +\\|[ \n]+$" ""
|
|
(shell-command-to-string "uptime"))))))
|
|
(erc-send-message
|
|
(concat "@{Uptime@} [" uname-output "]"))))
|
|
|
|
;; This causes ERC to connect to the Freenode network upon hitting
|
|
;; C-c e f. Replace MYNICK with your IRC nick.
|
|
(global-set-key "\C-cef" (lambda () (interactive)
|
|
(erc :server "irc.freenode.net" :port "6667"
|
|
:nick "MYNICK")))
|
|
|
|
;; This causes ERC to connect to the IRC server on your own machine (if
|
|
;; you have one) upon hitting C-c e b. Replace MYNICK with your IRC
|
|
;; nick. Often, people like to run bitlbee (https://bitlbee.org/) as an
|
|
;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
|
|
;; people on those networks.
|
|
(global-set-key "\C-ceb" (lambda () (interactive)
|
|
(erc :server "localhost" :port "6667"
|
|
:nick "MYNICK")))
|
|
|
|
;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
|
|
;; been commented out to avoid confusing new users.
|
|
;; (define-key erc-mode-map (kbd "RET") nil)
|
|
;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
|
|
;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
|
|
|
|
;;; Options
|
|
|
|
;; Join the #emacs and #erc channels whenever connecting to Freenode.
|
|
(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
|
|
|
|
;; Rename server buffers to reflect the current network name instead
|
|
;; of SERVER:PORT (e.g., "freenode" instead of "irc.freenode.net:6667").
|
|
;; This is useful when using a bouncer like ZNC where you have multiple
|
|
;; connections to the same server.
|
|
(setq erc-rename-buffers t)
|
|
|
|
;; Interpret mIRC-style color commands in IRC chats
|
|
(setq erc-interpret-mirc-color t)
|
|
|
|
;; The following are commented out by default, but users of other
|
|
;; non-Emacs IRC clients might find them useful.
|
|
;; Kill buffers for channels after /part
|
|
;; (setq erc-kill-buffer-on-part t)
|
|
;; Kill buffers for private queries after quitting the server
|
|
;; (setq erc-kill-queries-on-quit t)
|
|
;; Kill buffers for server messages after quitting the server
|
|
;; (setq erc-kill-server-buffer-on-quit t)
|
|
@end lisp
|
|
|
|
@node Options
|
|
@section Options
|
|
@cindex options
|
|
|
|
@c PRE5_4: (Node) Document every ERC option (module options go in
|
|
@c previous chapter)
|
|
|
|
This section is extremely incomplete. For now, the easiest way to
|
|
check out all the available options for ERC is to do
|
|
@kbd{M-x customize-group @key{RET} erc @key{RET}}.
|
|
|
|
@defopt erc-hide-list
|
|
If non, @code{nil}, this is a list of IRC message types to hide, e.g.:
|
|
|
|
@example
|
|
(setq erc-hide-list '("JOIN" "PART" "QUIT"))
|
|
@end example
|
|
@end defopt
|
|
|
|
@defopt erc-network-hide-list
|
|
If non, @code{nil}, this is a list of IRC networks and message types
|
|
to hide, e.g.:
|
|
|
|
@example
|
|
(setq erc-network-hide-list (("freenode" "JOIN" "PART" "QUIT")
|
|
("OFTC" "JOIN" "PART""))
|
|
@end example
|
|
@end defopt
|
|
|
|
@defopt erc-channel-hide-list
|
|
If non, @code{nil}, this is a list of IRC channels and message types
|
|
to hide, e.g.:
|
|
|
|
@example
|
|
(setq erc-channel-hide-list (("#erc" "JOIN" "PART" "QUIT")
|
|
("#emacs" "NICK"))
|
|
@end example
|
|
@end defopt
|
|
|
|
@defopt erc-lurker-hide-list
|
|
Like @code{erc-hide-list}, but only applies to messages sent by
|
|
lurkers. The function @code{erc-lurker-p} determines whether a given
|
|
nickname is considered a lurker.
|
|
@end defopt
|
|
|
|
@defopt erc-rename-buffers
|
|
If non, @code{nil}, this will rename server buffers to reflect the
|
|
current network name instead of IP:PORT
|
|
|
|
@example
|
|
(setq erc-rename-buffers t)
|
|
@end example
|
|
@end defopt
|
|
|
|
@node Getting Help and Reporting Bugs
|
|
@chapter Getting Help and Reporting Bugs
|
|
@cindex help, getting
|
|
@cindex bugs, reporting
|
|
|
|
After you have read this guide, if you still have questions about ERC,
|
|
or if you have bugs to report, there are several places you can go.
|
|
|
|
@itemize @bullet
|
|
|
|
@item
|
|
@uref{https://www.emacswiki.org/emacs/ERC} is the
|
|
emacswiki.org page for ERC@. Anyone may add tips, hints, etc.@: to it.
|
|
|
|
@item
|
|
You can ask questions about using ERC on the Emacs mailing list,
|
|
@uref{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
|
|
|
|
@item
|
|
You can visit the IRC Freenode channel @samp{#emacs}. Many of the
|
|
contributors are frequently around and willing to answer your
|
|
questions.
|
|
|
|
@item
|
|
To report a bug in ERC, use @kbd{M-x report-emacs-bug}.
|
|
|
|
@end itemize
|
|
|
|
|
|
@node History
|
|
@chapter History
|
|
@cindex history, of ERC
|
|
|
|
@c abel@@bfr.co.il, sergey.berezin@@cs.cmu.edu
|
|
ERC was originally written by Alexander L. Belikoff and Sergey Berezin.
|
|
They stopped development around
|
|
December 1999. Their last released version was ERC 2.0.
|
|
|
|
P.S.: If one of the original developers of ERC reads this, we'd like to
|
|
receive additional information for this file and hear comments in
|
|
general.
|
|
|
|
@itemize
|
|
@item 2001
|
|
|
|
@c mlang@@delysid.org, alex@@gnu.org
|
|
In June 2001, Mario Lang and Alex Schroeder
|
|
took over development and created a ERC Project at
|
|
@uref{https://sourceforge.net/projects/erc}.
|
|
|
|
In reaction to a mail about the new ERC development effort, Sergey
|
|
Berezin said, ``First of all, I'm glad that my version of ERC is being
|
|
used out there. The thing is, I do not have free time and enough
|
|
incentive anymore to work on ERC, so I would be happy if you guys take
|
|
over the project entirely.''
|
|
|
|
So we happily hacked away on ERC, and soon after (September 2001)
|
|
released the next "stable" version, 2.1.
|
|
|
|
Most of the development of the new ERC happened on #emacs on
|
|
irc.openprojects.net. Over time, many people contributed code, ideas,
|
|
bugfixes, and a lot of alpha/beta/gamma testing.
|
|
|
|
See the @file{CREDITS} file for a list of contributors.
|
|
|
|
@item 2003
|
|
|
|
ERC 3.0 was released.
|
|
|
|
@item 2004
|
|
|
|
ERC 4.0 was released.
|
|
|
|
@item 2005
|
|
|
|
@c mwolson@@gnu.org
|
|
ERC 5.0 was released. Michael Olson became
|
|
the release manager and eventually the maintainer.
|
|
|
|
After some discussion between him and the Emacs developers, it was
|
|
decided to include ERC in Emacs.
|
|
|
|
@item 2006
|
|
|
|
ERC 5.1 was released. It was subsequently included in Emacs 22.
|
|
|
|
ERC became an official GNU project, and development moved to
|
|
@uref{https://sv.gnu.org/projects/erc}. We switched to using GNU Arch as
|
|
our revision control system. Our mailing list address changed as well.
|
|
|
|
@item 2007
|
|
|
|
We switched to using git for our version control system.
|
|
|
|
@item 2009+
|
|
|
|
Since about 2009, ERC is no longer developed as a separate project, but
|
|
is maintained as part of Emacs.
|
|
|
|
@end itemize
|
|
|
|
@node GNU Free Documentation License
|
|
@appendix GNU Free Documentation License
|
|
@include doclicense.texi
|
|
|
|
@node Concept Index
|
|
@unnumbered Index
|
|
|
|
@printindex cp
|
|
|
|
@bye
|