Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca
[bpt/emacs.git] / doc / misc / rcirc.texi
index f6d807f..3bce0c7 100644 (file)
@@ -5,31 +5,24 @@
 @c %**end of header
 
 @copying
-Copyright @copyright{} 2006, 2007 Free Software Foundation, Inc.
+Copyright @copyright{} 2006--2013 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.2 or
+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'' in
-the Emacs manual.
+included in the section entitled ``GNU Free Documentation License''.
 
-(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
-this GNU Manual, like GNU software.  Copies published by the Free
-Software Foundation raise funds for GNU development.''
-
-This document is part of a collection distributed under the GNU Free
-Documentation License.  If you want to distribute this document
-separately from the collection, you can do so by adding a copy of the
-license to the document, as described in section 6 of the license.
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.''
 @end quotation
 @end copying
 
-@dircategory Emacs
+@dircategory Emacs network features
 @direntry
-* Rcirc: (rcirc).       Internet Relay Chat (IRC) client.
+* Rcirc: (rcirc).               Internet Relay Chat (IRC) client.
 @end direntry
 
 @titlepage
@@ -39,10 +32,11 @@ license to the document, as described in section 6 of the license.
 @insertcopying
 @end titlepage
 
+@contents
+
 @ifnottex
-@node Top, Basics, (dir), (dir)
+@node Top
 @top rcirc Manual
-@end ifnottex
 
 @code{rcirc} is an Emacs IRC client.
 
@@ -51,9 +45,14 @@ communicate with each other in real-time.  Communication occurs both in
 topic channels which are collections of many users, or privately, with
 just one other user.
 
+@insertcopying
+
+@end ifnottex
+
 @menu
 * Basics::
 * Reference::
+* Fighting Information Overload::
 * Hacking and Tweaking::
 * GNU Free Documentation License::
 * Key Index::
@@ -74,6 +73,13 @@ Reference
 * Useful IRC commands::
 * Configuration::
 
+Fighting Information Overload
+
+* Channels::
+* People::
+* Keywords::
+* Notices::
+
 Hacking and Tweaking
 
 * Skipping /away messages using handlers::
@@ -86,7 +92,7 @@ Hacking and Tweaking
 @end detailmenu
 @end menu
 
-@node Basics, Reference, Top, Top
+@node Basics
 @chapter Basics
 
 This chapter contains a brief introduction to IRC (Internet Relay Chat),
@@ -97,7 +103,7 @@ and a quick tutorial on @code{rcirc}.
 * Getting started with rcirc::
 @end menu
 
-@node Internet Relay Chat, Getting started with rcirc, Basics, Basics
+@node Internet Relay Chat
 @section Internet Relay Chat
 @cindex internet relay chat
 @cindex irc
@@ -112,8 +118,8 @@ communication.
 @cindex server
 @cindex network
 Contrary to most Instant Messenger (IM) systems, users usually don't
-connect to a central server.  Instead, users connect to a random server
-in a network, and the servers share information between them.
+connect to a central server.  Instead, users connect to a random
+server in a network, and servers relay messages from one to the next.
 
 Here's a typical example:
 
@@ -150,7 +156,7 @@ deego: fsbot rules!
 @kindex TAB
 Since this is so common, you can use @key{TAB} to do nick completion.
 
-@node Getting started with rcirc, , Internet Relay Chat, Basics
+@node Getting started with rcirc
 @section Getting started with rcirc
 @cindex getting started
 @cindex connecting to a server
@@ -159,25 +165,25 @@ Since this is so common, you can use @key{TAB} to do nick completion.
 Use the command @kbd{M-x irc} to connect using the defaults.
 @xref{Configuration}, if you want to change the defaults.
 
-Use @kbd{C-u M-x irc} if you don't want to use the defaults, eg. if you
+Use @kbd{C-u M-x irc} if you don't want to use the defaults, e.g., if you
 want to connect to a different network, or connect to the same network
 using a different nick.  This will prompt you for four things:
 
 @table @asis
 @cindex server, connecting
 @cindex Freenode network
-@item IRC server
+@item IRC Server
 What server do you want to connect to? All the servers in a particular
 network are equivalent.  Some networks use a round-robin system where a
 single server redirects new connections to a random server in the
 network.  @code{irc.freenode.net} is such a server for the Freenode
 network.  Freenode provides the network ``for the Free and Open Source
-Software communities, for not-for-profit organisations and for related
+Software communities, for not-for-profit organizations and for related
 communities and organizations.''
 
 @cindex port, connecting
 @cindex 6667, default IRC port
-@item IRC port
+@item IRC Port
 All network connections require a port.  Just as web servers and clients
 use port 80 per default, IRC uses port 6667 per default.  You rarely
 have to use a different port.
@@ -185,7 +191,7 @@ have to use a different port.
 @cindex nick, connecting
 @cindex changing nick
 @cindex name changes
-@item IRC nick
+@item IRC Nick
 @vindex user-login-name
 Every users needs a handle on-line.  You will automatically be assigned
 a slightly different nick if your chosen nick is already in use.  If
@@ -195,7 +201,7 @@ in use, you might for example get assigned the nick @code{alex`}.
 @cindex channels, connecting
 @cindex initial channels
 @cindex startup channels
-@item Channels
+@item IRC Channels
 A space separated list of channels you want to join when connecting.
 You don't need to join any channels, if you just want to have one-to-one
 conversations with friends on the same network.  If you're new to the
@@ -211,7 +217,7 @@ and a channel buffer for each of the channels you wanted to join.
 @kindex RET
 @cindex talking
 @cindex communicating
-To talk in a channel, just type in what you want to say in a channel
+To talk in a channel, just type what you want to say in a channel
 buffer, and press @key{RET}.
 
 @kindex C-c C-c
@@ -225,7 +231,21 @@ C-c} to finish editing.  You still need to press @key{RET} to send it,
 though.  Generally, IRC users don't like people pasting more than around
 four lines of code, so use with care.
 
-@node Reference, Hacking and Tweaking, Basics, Top
+@comment This section copied from the Channels section.
+@comment All index markers should point to the original!
+Once you are connected to multiple channels, or once you've turned you
+attention to other buffers in Emacs, you probably want to be notified
+of any activity in channels not currently visible.  All you need to do
+is switch channel tracking on using @kbd{M-x rcirc-track-minor-mode}.
+To make this permanent, add the following to your init file:
+
+@example
+(rcirc-track-minor-mode 1)
+@end example
+
+Use @kbd{C-c C-@key{SPC}} to switch to these buffers.
+
+@node Reference
 @chapter Reference
 @cindex reference
 
@@ -239,7 +259,7 @@ documentation.
 * Configuration::
 @end menu
 
-@node rcirc commands, Useful IRC commands, Reference, Reference
+@node rcirc commands
 @section rcirc commands
 @cindex rcirc commands
 @cindex commands
@@ -283,7 +303,7 @@ IRC.
 @end example
 
 This will try to change your nick to @code{"alex}.  Usually this will
-fail because the double quote character is not a legal character for
+fail because the double quote character is not a valid character for
 nicks.
 
 @cindex case insensitive commands
@@ -382,25 +402,7 @@ buffer, you automatically quit the server and part all channels.  (Also
 @code{/quit ZZZzzz...}.)
 @end table
 
-Some commands may not have a key binding, but only be available as typed
-commands, such as:
-
-@table @code
-@item /ignore
-@cindex /ignore
-@cindex ignoring other people
-@cindex trolls, ignoring
-@cindex hide some posts
-@cindex idiots online
-This command toggles the ignore status of a nick, if you provide one.
-If you don't provide a nick, the command lists all the nicks you are
-ignoring.  All messages by ignored nicks are---you guessed it---ignored.
-Since only ``operators'' can kick people from channels, the
-ignore command is often the only way to deal with some of the more
-obnoxious fellows online.  Example: @code{/ignore xah}.
-@end table
-
-@node Useful IRC commands, Configuration, rcirc commands, Reference
+@node Useful IRC commands
 @section Useful IRC commands
 @cindex irc commands
 @cindex commands
@@ -428,7 +430,7 @@ about the fantastic world of IRC online at
 @uref{http://www.irchelp.org/, the Internet Relay Chat (IRC) help
 archive}.
 
-@node Configuration, , Useful IRC commands, Reference
+@node Configuration
 @section Configuration
 @cindex configuring rcirc
 
@@ -436,68 +438,99 @@ These are some variables you can change to configure @code{rcirc} to your
 liking.
 
 @table @code
-@item rcirc-default-server
-@vindex rcirc-default-server
-the default server to connect to.
+@item rcirc-server-alist
+@vindex rcirc-server-alist
+@cindex channels, configuration
+@cindex initial channels, configuration
+@cindex startup channels, configuration
+@cindex servers, configuration
+@cindex initial servers, configuration
+@cindex startup servers, configuration
+This variable contains an alist of servers to connect to by default
+and the keywords parameters to use.  The keyword parameters are
+optional.  If you don't provide any, the defaults as documented below
+will be used.
 
-@item rcirc-default-port
-@vindex rcirc-default-port
-the default port to connect to.
+The most important parameter is the @code{:channels} parameter.  It
+controls which channels you will join by default as soon as you are
+connected to the server.
+
+Here's an example of how to set it:
+
+@example
+(add-to-list 'rcirc-server-alist
+             '("otherworlders.org"
+               :channels ("#FUDGE" "#game-design")))
+@end example
+
+By default you will be connected to the @code{rcirc} support channel:
+@code{#rcirc} on @code{irc.freenode.net}.
+
+@table @code
+@item :nick
+This overrides @code{rcirc-default-nick}.
+
+@item :port
+This overrides @code{rcirc-default-port}.
+
+@item :user-name
+This overrides @code{rcirc-default-user-name}.
+
+@item :full-name
+This overrides @code{rcirc-default-full-name}.
+
+@item :channels
+This describes which channels to join when connecting to the server.
+If absent, no channels will be connected to automatically.
+
+@end table
 
 @item rcirc-default-nick
 @vindex rcirc-default-nick
-the default nick to use.
-@end table
+This variable is used for the default nick.  It defaults to the login
+name returned by @code{user-login-name}.
 
 @example
-(setq rcirc-default-server "irc.mozilla.org"
-      rcirc-default-port 6666
-      rcirc-default-nick "alx")
+(setq rcirc-default-nick "kensanata")
 @end example
 
-@vindex rcirc-default-user-full-name
+@item rcirc-default-port
+@vindex rcirc-default-port
+@cindex port
+This variable contains the default port to connect to.  It is 6667 by
+default and rarely needs changing.
+
+@item rcirc-default-user-name
+@vindex rcirc-default-user-name
+@cindex user name
+This variable contains the default user name to report to the server.
+It defaults to the login name returned by @code{user-login-name}, just
+like @code{rcirc-default-nick}.
+
+@item rcirc-default-full-name
+@vindex rcirc-default-full-name
 @cindex full name
 @cindex real name
 @cindex surname
-@code{rcirc-default-user-full-name} is used to set your ``real name'' on
-IRC.  It defaults to @code{user-full-name}.  If you want to hide your
-full name, you might want to set it to some pseudonym.
-
-@example
-(setq rcirc-default-user-full-name "Curious Minds Want To Know")
-@end example
-
-@vindex rcirc-startup-channels-alist
-@cindex channels, configuration
-@cindex initial channels, configuration
-@cindex startup channels, configuration
-@code{rcirc-startup-channels-alist} is the alist of channels to join
-when connecting to a particular network.  An alist is a list of lists.
-Each sublist starts with a regular expression that is compared to the
-server address you're connecting to.  The remaining sublist items are
-the channels to join.
+This variable is used to set your ``real name'' on IRC@.  It defaults
+to the name returned by @code{user-full-name}.  If you want to hide
+your full name, you might want to set it to some pseudonym.
 
 @example
-(setq rcirc-startup-channels-alist
-      '(("\\.freenode\\.net$" "#emacs" "#rcirc" "#wiki")))
+(setq rcirc-default-full-name "Curious Minds Want To Know")
 @end example
 
-Note the subtle problem, here --- IRC clients connect to servers, and
-there is no way of knowing which servers belong to a particular network.
-In the example above we're exploiting a naming convention used by within
-the Freenode network --- all servers within the network have a host in
-the @code{freenode.net} domain.
-
+@item rcirc-authinfo
 @vindex rcirc-authinfo
-@cindex authentification
+@cindex authentication
 @cindex identification
 @cindex nickserv
 @cindex login
-@code{rcirc-authinfo} is an alist used to automatically identify
-yourself on networks.  Each sublist starts with a regular expression
-that is compared to the server address you're connecting to.  The second
-element in the list is a symbol representing the method to use, followed
-by the arguments this method requires.
+This variable is an alist used to automatically identify yourself on
+networks.  Each sublist starts with a regular expression that is
+compared to the server address you're connecting to.  The second
+element in the list is a symbol representing the method to use,
+followed by the arguments this method requires.
 
 Here is an example to illustrate how you would set it:
 
@@ -512,7 +545,7 @@ And here are the valid method symbols and the arguments they require:
 
 @table @code
 @item nickserv
-@cindex nickserv authentification
+@cindex nickserv authentication
 Use this symbol if you need to identify yourself as follows when
 connecting to a network: @code{/msg nickserv identify secret}.  The
 necessary arguments are the nickname you want to use this for, and the
@@ -523,7 +556,7 @@ pick a password for it.  Contact @code{nickserv} and check out the
 details.  (Using @code{/msg nickserv help}, for example.)
 
 @item chanserv
-@cindex chanserv authentification
+@cindex chanserv authentication
 Use this symbol if you need to identify yourself as follows if you want
 to join a particular channel: @code{/msg chanserv identify #underground
 secret}.  The necessary arguments are the nickname and channel you want
@@ -534,7 +567,7 @@ the password to use.  Contact @code{chanserv} and check out the details.
 (Using @code{/msg chanserv help}, for example.)
 
 @item bitlbee
-@cindex bitlbee authentification
+@cindex bitlbee authentication
 Use this symbol if you need to identify yourself in the Bitlbee channel
 as follows: @code{identify secret}.  The necessary arguments are the
 nickname you want to use this for, and the password to use.
@@ -550,14 +583,39 @@ Bitlbee acts like an IRC server, but in fact it is a gateway to a lot of
 other instant messaging services.  You can either install Bitlbee
 locally or use a public Bitlbee server.  There, you need to create an
 account with a password.  This is the nick and password you need to
-provide for the bitlbee authentification method.
+provide for the bitlbee authentication method.
 
 Later, you will tell Bitlbee about your accounts and passwords on all
 the other instant messaging services, and Bitlbee will log you in.  All
 @code{rcirc} needs to know, is the login to your Bitlbee account.  Don't
 confuse the Bitlbee account with all the other accounts.
+
+@end table
+
 @end table
 
+@node Fighting Information Overload
+@chapter Fighting Information Overload
+@cindex information overload
+
+This is the section of the manual that caters to the busy person
+online.  There are support channels with several hundred people in
+them.  Trying to follow a conversation in these channels can be a
+daunting task.  This chapters tells you how @code{rcirc} can help.
+
+@menu
+* Channels::
+* People::
+* Keywords::
+* Notices::
+@end menu
+
+@node Channels
+@section Channels
+@cindex channels
+@cindex modeline
+
+@comment This section copied to the Getting started with rcirc section
 @kindex C-c C-SPC
 @vindex rcirc-track-minor-mode
 @cindex switching channels
@@ -590,7 +648,133 @@ activation of this mode:
             (rcirc-track-minor-mode 1)))
 @end example
 
-@node Hacking and Tweaking, GNU Free Documentation License, Reference, Top
+@cindex busy channels
+If you've joined a very active support channel, tracking activity is
+no longer useful.  The channel will be always active.  Switching to
+active channels using @kbd{C-c C-@key{SPC}} no longer works as
+expected.
+
+@kindex C-c C-l
+@cindex low priority channels
+The solution is to mark this channel as a low priority channel.
+Use @kbd{C-c C-l} to make the current channel a low-priority channel.
+Low priority channels have the modeline indicator ``LowPri''.
+@kbd{C-c C-@key{SPC}} will not switch to low priority channels unless
+you use the @kbd{C-u} prefix.
+
+@kindex C-c TAB
+@cindex ignored channels
+If you prefer a channel to never show up in the modeline, then you
+have to ignore it.  Use @kbd{C-c @key{TAB}} to ignore the current
+channel.
+
+@node People
+@section People
+@cindex people, how to ignore
+@cindex nicks, how to ignore
+@cindex friends
+@cindex buddies
+@cindex trolls
+
+The most important command available to the discerning IRC user is
+@code{/ignore}.  It's the big equalizer online: If people aggravate
+you, just ignore them.
+
+This is of course a crude all-or-nothing solution.  Fear not,
+@code{rcirc} offers alternatives: You can ``brighten'' your buddies
+and ``dim'' certain other nicks that you don't want to ignore
+altogether.
+
+@table @code
+@item /ignore
+@cindex /ignore
+@cindex ignoring other people
+@cindex trolls, ignoring
+@cindex hide some posts
+@cindex idiots online
+This command toggles the ignore status of a nick, if you provide one.
+If you don't provide a nick, the command lists all the nicks you are
+ignoring.  All messages by ignored nicks are---you guessed it---ignored.
+Since only ``operators'' can kick people from channels, the
+ignore command is often the only way to deal with some of the more
+obnoxious fellows online.  Example: @code{/ignore rudybot}.
+
+@item /bright
+@cindex /bright
+@cindex highlight other people
+@cindex friends, highlight
+@cindex buddies, highlight
+@cindex nicks, highlight
+@cindex brighten nicks
+This command toggles the bright status of a nick, if you provide one.
+If you don't provide a nick, the command lists all the ``brightened''
+nicks.  All messages by brightened nicks are---you guessed
+it---brightened.  Use this for your friends.  Example: @code{/bright
+rcy}.
+
+@item /dim
+@cindex /dim
+@cindex soft-ignore other people
+@cindex obnoxious people online
+@cindex rabble online
+This command toggles the dim status of a nick, if you provide one.  If
+you don't provide a nick, the command lists all the ``dimmed'' nicks.
+All messages by dimmed nicks are---you guessed it---dimmed.  Use this
+for boring people and bots.  If you are tracking channel activity,
+messages by dimmed nicks will not register as activity.  Example:
+@code{/dim fsbot}.
+@end table
+
+
+@node Keywords
+@section Keywords
+@cindex keywords
+
+On a busy channel, you might want to ignore all activity (using
+@kbd{C-c @key{TAB}}) and just watch for certain keywords.  The
+following command allows you to highlight certain keywords:
+
+@table @code
+@item /keyword
+@cindex /keyword
+This command toggles the highlighting of a keyword, if you provide
+one.  If you don't provide a keyword, the current keywords are
+listed.  Example: @code{/keyword manual}.
+@end table
+
+@node Notices
+@section Notices
+@cindex part notices, how to omit
+@cindex join notices, how to omit
+@cindex quit notices, how to omit
+@cindex nick notices, how to omit
+
+@kindex C-c C-o
+@cindex low priority channels
+In busy channels you might not be interested in all the joining,
+parting, quitting, and renaming that goes on.  You can omit those
+notices using @kbd{C-c C-o}.
+
+@vindex rcirc-omit-responses
+@cindex away notices, how to omit
+You can control which notices get omitted via the
+@code{rcirc-omit-responses} variable.  Here's an example of how to
+omit away messages:
+
+@example
+(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY"))
+@end example
+
+@vindex rcirc-omit-threshold
+Notice that these messages will not be omitted if the nick in question
+has recently been active.  After all, you don't want to continue a
+conversation with somebody who just left.  That's why @code{rcirc}
+checks recent lines in the buffer to figure out if a nick has been
+active and only omits a message if the nick has not been active.  The
+window @code{rcirc} considers is controlled by the
+@code{rcirc-omit-threshold} variable.
+
+@node Hacking and Tweaking
 @chapter Hacking and Tweaking
 @cindex hacking and tweaking
 
@@ -605,7 +789,7 @@ Here are some examples of stuff you can do to configure @code{rcirc}.
 * Reconnecting after you have lost the connection::
 @end menu
 
-@node Skipping /away messages using handlers, Using fly spell mode, Hacking and Tweaking, Hacking and Tweaking
+@node Skipping /away messages using handlers
 @section Skipping @code{/away} messages using handlers
 @cindex /away messages
 
@@ -625,7 +809,7 @@ require @code{rcirc} before defining the handler:
   "/away message handler.")
 @end example
 
-@node Using fly spell mode, Scrolling conservatively, Skipping /away messages using handlers, Hacking and Tweaking
+@node Using fly spell mode
 @section Using fly spell mode
 @cindex fly spell
 @cindex spelling
@@ -644,7 +828,7 @@ for @code{rcirc} buffers:
 @xref{Spelling, , Flyspell mode, emacs, The GNU Emacs Manual},
 for details.
 
-@node Scrolling conservatively, Changing the time stamp format, Using fly spell mode, Hacking and Tweaking
+@node Scrolling conservatively
 @section Scrolling conservatively
 @cindex input line
 @cindex scrolling
@@ -666,7 +850,7 @@ window when possible.  The following snippet uses a local value for
 @xref{Scrolling, , Scrolling conservatively, emacs, The GNU Emacs
 Manual}, for details.
 
-@node Changing the time stamp format, Defining a new command, Scrolling conservatively, Hacking and Tweaking
+@node Changing the time stamp format
 @section Changing the time stamp format
 @cindex time stamp
 @cindex date time
@@ -680,7 +864,7 @@ how to include the date in the time stamp:
 (setq rcirc-time-format "%Y-%m-%d %H:%M ")
 @end example
 
-@node Defining a new command, Reconnecting after you have lost the connection, Changing the time stamp format, Hacking and Tweaking
+@node Defining a new command
 @section Defining a new command
 @cindex defining commands
 @cindex commands, defining
@@ -703,18 +887,18 @@ because @code{defun-rcirc-command} is not yet available, and without
                          (concat "I use " rcirc-id-string))))
 @end smallexample
 
-@node Reconnecting after you have lost the connection, , Defining a new command, Hacking and Tweaking
+@node Reconnecting after you have lost the connection
 @section Reconnecting after you have lost the connection
 @cindex reconnecting
 @cindex disconnecting servers, reconnecting
 
 If you're chatting from a laptop, then you might be familiar with this
 problem: When your laptop falls asleep and wakes up later, your IRC
-client doesn't realise that it has been disconnected.  It takes several
+client doesn't realize that it has been disconnected.  It takes several
 minutes until the client decides that the connection has in fact been
 lost.  The simple solution is to use @kbd{M-x rcirc}.  The problem is
 that this opens an @emph{additional} connection, so you'll have two
-copies of every channel buffer --- one dead and one live.
+copies of every channel buffer, one dead and one live.
 
 The real answer, therefore, is a @code{/reconnect} command:
 
@@ -740,29 +924,25 @@ The real answer, therefore, is a @code{/reconnect} command:
        (delete-process process)
        (rcirc-connect server port nick
                       rcirc-default-user-name
-                      rcirc-default-user-full-name
+                      rcirc-default-full-name
                       channels))))
 @end smallexample
 
-@node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top
+@node GNU Free Documentation License
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
 
-@node Key Index, Variable Index, GNU Free Documentation License, Top
+@node Key Index
 @unnumbered Key Index
 @printindex ky
 
-@node Variable Index, Index, Key Index, Top
+@node Variable Index
 @unnumbered Variable Index
 @printindex vr
 
-@node Index, , Variable Index, Top
+@node Index
 @unnumbered Index
 @printindex cp
 
 @bye
-
-@ignore
-   arch-tag: 2589e562-3843-4ffc-8c2f-477cbad57c01
-@end ignore