*** empty log message ***
[gnus] / texi / gnus.texi
index 105d086..cd692bb 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus 0.19 Manual
+@settitle Gnus 5.4.29 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @iflatex
 \documentclass[twoside,a4paper,openright]{book}
 \usepackage[latin1]{inputenc}
-% \usepackage{fontenc}
-% \usepackage{babel}
 \usepackage{pagestyle}
 \usepackage{epsfig}
-% \usepackage{ifitricks}
 \fontfamily{bembo}\selectfont
 
 \makeindex
@@ -57,6 +54,7 @@
 \newcommand{\gnushash}{\#}
 \newcommand{\gnushat}{\symbol{"5E}}
 \newcommand{\gnusunderline}{\symbol{"5F}}
+\newcommand{\gnusnot}{$\neg$}
 \newcommand{\gnustilde}{\symbol{"7E}}
 \newcommand{\gnusless}{{$<$}}
 \newcommand{\gnusgreater}{{$>$}}
 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead}
 }
 
-\newcommand{\gnuschapter}[1]{
+\newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
+
+\newcommand{\gnuspagechapter}[1]{
+{\mbox{}}
+}
+
+\newdimen{\gnusdimen}
+\gnusdimen 0pt
+
+\newcommand{\gnuschapter}[2]{
+\gnuscleardoublepage
+\ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
+\chapter{#2}
 \renewcommand{\gnussectionname}{}
-\chapter{#1}
-\renewcommand{\gnuschaptername}{#1}
+\renewcommand{\gnuschaptername}{#2}
 \thispagestyle{empty}
-% \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm}
+\hspace*{-2cm}
+\begin{picture}(500,500)(0,0)
+\put(0,0){\makebox(480,350)[tr]{#1}}
+\put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
+\end{picture}
 \clearpage
 }
 
-\newcommand{\gnusitemx}[1]{\vspace{-\itemsep}\item#1}
+\newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
 
 \newcommand{\gnussection}[1]{
 \renewcommand{\gnussectionname}{#1}
 }
 }{\end{list}}
 
+\newlength\gnusheadtextwidth
+\setlength{\gnusheadtextwidth}{\headtextwidth}
+\addtolength{\gnusheadtextwidth}{1cm}
+
+\newpagestyle{gnuspreamble}%
+{
+{
+\ifodd\count0
+{
+\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
+}
+\else
+{
+\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
+}
+}
+\fi
+}
+}
+{
+\ifodd\count0
+\mbox{} \hfill 
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\else
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\hfill \mbox{}
+\fi
+}
+
+\newpagestyle{gnusindex}%
+{
+{
+\ifodd\count0
+{
+\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
+}
+\else
+{
+\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
+}
+\fi
+}
+}
+{
+\ifodd\count0
+\mbox{} \hfill 
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\else
+\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\hfill \mbox{}
+\fi
+}
+
 \newpagestyle{gnus}%
 {
 {
 \ifodd\count0
 {
-\hspace*{-2ex}
-\underline{
-\makebox[\headtextwidth]{
-\hspace*{-2.3ex}
-\textbf{\arabic{chapter}.\arabic{section}}
-\textbf{\gnussectionname\hfill\arabic{page}}
-}}
+\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}
 }
 \else
 {
-\hspace*{-2.25cm}
-\underline{
-\hspace*{-2.3ex}
-\makebox[\headtextwidth]{
-\textbf{\arabic{page}\hfill\gnuschaptername}
-}}
+\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
 }
 \fi
 }
 \hfill \mbox{}
 \fi
 }
-\pagestyle{gnus}
+
+\pagenumbering{roman}
+\pagestyle{gnuspreamble}
 
 @end iflatex
 @end iftex
@@ -230,13 +287,13 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Red Gnus 0.19 Manual
+@title Gnus 5.4.29 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96 Free Software Foundation, Inc. 
+Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc. 
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -257,7 +314,7 @@ into another language, under the above conditions for modified versions.
 
 
 @node Top
-@top The Red Gnus Newsreader
+@top The Gnus Newsreader
 
 @ifinfo
 
@@ -266,12 +323,15 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
+This manual corresponds to Gnus 5.4.29
+
 @end ifinfo
 
 @iftex
 
 @iflatex
-\thispagestyle{empty}
+\tableofcontents
+\gnuscleardoublepage
 @end iflatex
 
 Gnus is the advanced, self-documenting, customizable, extensible
@@ -310,8 +370,6 @@ the program.
 * Key Index::             Key Index.
 @end menu
 
-
-
 @node Starting Up
 @chapter Starting Gnus
 @cindex starting up
@@ -334,7 +392,7 @@ variables.
 * Finding the News::    Choosing a method for getting news.
 * The First Time::      What does Gnus do the first time you start it?
 * The Server is Down::  How can I read my mail then?
-* Slave Gnusii::        You can have more than one Gnus active at a time.
+* Slave Gnusae::        You can have more than one Gnus active at a time.
 * Fetching a Group::    Starting Gnus just to read a group.
 * New Groups::          What is Gnus supposed to do with new groups?
 * Startup Files::       Those pesky startup files---@file{.newsrc}.
@@ -347,6 +405,7 @@ variables.
 
 @node Finding the News
 @section Finding the News
+@cindex finding news
 
 @vindex gnus-select-method
 @c @head
@@ -380,7 +439,7 @@ If this variable is not set, Gnus will take a look at the
 Gnus will see whether @code{gnus-nntpserver-file}
 (@file{/etc/nntpserver} by default) has any opinions on the matter.  If
 that fails as well, Gnus will will try to use the machine that is
-running Emacs as an @sc{nntp} server.  That's a long-shot, though.
+running Emacs as an @sc{nntp} server.  That's a long shot, though.
 
 @vindex gnus-nntp-server
 If @code{gnus-nntp-server} is set, this variable will override
@@ -470,48 +529,49 @@ your mail without bothering with the server at all, you can use the
 @code{gnus-no-server} command to start Gnus.  That might come in handy
 if you're in a hurry as well.  This command will not attempt to contact
 your primary server---instead, it will just activate all groups on level
-1 and 2.  (You should preferrably keep no native groups on those two
-levels.) 
+1 and 2.  (You should preferably keep no native groups on those two
+levels.)
 
 
-@node Slave Gnusii
-@section Slave Gnus
+@node Slave Gnusae
+@section Slave Gnusae
 @cindex slave
 
 You might want to run more than one Emacs with more than one Gnus at the
-same time.  If you are using different @file{.newsrc} files (eg., if you
-are using the two different Gnus to read from two different servers),
+same time.  If you are using different @file{.newsrc} files (e.g., if you
+are using the two different Gnusae to read from two different servers),
 that is no problem whatsoever.  You just do it.
 
-The problem appears when you want to run two Gnus that use the same
+The problem appears when you want to run two Gnusae that use the same
 @code{.newsrc} file.
 
 To work around that problem some, we here at the Think-Tank at the Gnus
 Towers have come up with a new concept: @dfn{Masters} and
-@dfn{servants}.  (We have applied for a patent on this concept, and have
+@dfn{slaves}.  (We have applied for a patent on this concept, and have
 taken out a copyright on those words.  If you wish to use those words in
 conjunction with each other, you have to send $1 per usage instance to
 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
 Applications}) will be much more expensive, of course.)
 
 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
-however you do it).  Each subsequent slave Gnus should be started with
+however you do it).  Each subsequent slave Gnusae should be started with
 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
-files, but instead save @dfn{slave files} that contains information only
+files, but instead save @dfn{slave files} that contain information only
 on what groups have been read in the slave session.  When a master Gnus
 starts, it will read (and delete) these slave files, incorporating all
 information from them.  (The slave files will be read in the sequence
 they were created, so the latest changes will have precedence.)
 
 Information from the slave files has, of course, precedence over the
-information in the normal (i. e., master) @code{.newsrc} file.
+information in the normal (i.e., master) @code{.newsrc} file.
 
 
 @node Fetching a Group
 @section Fetching a Group
+@cindex fetching a group
 
 @findex gnus-fetch-group
-It it sometime convenient to be able to just say ``I want to read this
+It it sometimes convenient to be able to just say ``I want to read this
 group and I don't care whether Gnus has been started or not''.  This is
 perhaps more useful for people who write code than for users, but the
 command @code{gnus-fetch-group} provides this functionality in any case.
@@ -521,6 +581,61 @@ It takes the group name as a parameter.
 @node New Groups
 @section New Groups
 @cindex new groups
+@cindex subscription
+
+@vindex gnus-check-new-newsgroups
+If you are satisfied that you really never want to see any new groups,
+you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
+also save you some time at startup.  Even if this variable is
+@code{nil}, you can always subscribe to the new groups just by pressing
+@kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
+is @code{t} by default.  If you set this variable to @code{always}, then
+Gnus will query the backends for new groups even when you do the @kbd{g}
+command (@pxref{Scanning New Messages}).
+
+@menu
+* Checking New Groups::      Determining what groups are new.
+* Subscription Methods::     What Gnus should do with new groups.
+* Filtering New Groups::     Making Gnus ignore certain new groups.
+@end menu
+
+
+@node Checking New Groups
+@subsection Checking New Groups
+
+Gnus normally determines whether a group is new or not by comparing the
+list of groups from the active file(s) with the lists of subscribed and
+dead groups.  This isn't a particularly fast method.  If
+@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
+server for new groups since the last time.  This is both faster and
+cheaper.  This also means that you can get rid of the list of killed
+groups altogether, so you may set @code{gnus-save-killed-list} to
+@code{nil}, which will save time both at startup, at exit, and all over.
+Saves disk space, too.  Why isn't this the default, then?
+Unfortunately, not all servers support this command. 
+
+I bet I know what you're thinking now: How do I find out whether my
+server supports @code{ask-server}?  No?  Good, because I don't have a
+fail-safe answer.  I would suggest just setting this variable to
+@code{ask-server} and see whether any new groups appear within the next
+few days.  If any do, then it works.  If none do, then it doesn't
+work.  I could write a function to make Gnus guess whether the server
+supports @code{ask-server}, but it would just be a guess.  So I won't.
+You could @code{telnet} to the server and say @code{HELP} and see
+whether it lists @samp{NEWGROUPS} among the commands it understands.  If
+it does, then it might work.  (But there are servers that lists
+@samp{NEWGROUPS} without supporting the function properly.)
+
+This variable can also be a list of select methods.  If so, Gnus will
+issue an @code{ask-server} command to each of the select methods, and
+subscribe them (or not) using the normal methods.  This might be handy
+if you are monitoring a few servers for new groups.  A side effect is
+that startup will take much longer, so you can meditate while waiting.
+Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
+
+
+@node Subscription Methods
+@subsection Subscription Methods
 
 @vindex gnus-subscribe-newsgroup-method
 What Gnus does when it encounters a new group is determined by the
@@ -533,9 +648,9 @@ are:
 
 @item gnus-subscribe-zombies
 @vindex gnus-subscribe-zombies
-Make all new groups zombies.  You can browse the zombies later (with
-@kbd{A z}) and either kill them all off properly, or subscribe to them.
-This is the default.
+Make all new groups zombies.  This is the default.  You can browse the
+zombies later (with @kbd{A z}) and either kill them all off properly
+(with @kbd{S z}), or subscribe to them (with @kbd{u}).
 
 @item gnus-subscribe-randomly
 @vindex gnus-subscribe-randomly
@@ -578,6 +693,10 @@ One common mistake is to set the variable a few paragraphs above to
 @code{gnus-subscribe-hierarchical-interactive}.  This is an error.  This
 will not work.  This is ga-ga.  So don't do it.
 
+
+@node Filtering New Groups
+@subsection Filtering New Groups
+
 A nice and portable way to control which new newsgroups should be
 subscribed (or ignored) is to put an @dfn{options} line at the start of
 the @file{.newsrc} file.  Here's an example:
@@ -616,51 +735,17 @@ that come from mail backends (@code{nnml}, @code{nnbabyl},
 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed.  If you
 don't like that, just set this variable to @code{nil}.
 
-@vindex gnus-check-new-newsgroups
-If you are satisfied that you really never want to see any new groups,
-you could set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
-also save you some time at startup.  Even if this variable is
-@code{nil}, you can always subscribe to the new groups just by pressing
-@kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
-is @code{t} by default.
-
-Gnus normally determines whether a group is new or not by comparing the
-list of groups from the active file(s) with the lists of subscribed and
-dead groups.  This isn't a particularly fast method.  If
-@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
-server for new groups since the last time.  This is both faster &
-cheaper.  This also means that you can get rid of the list of killed
-groups altogether, so you may set @code{gnus-save-killed-list} to
-@code{nil}, which will save time both at startup, at exit, and all over.
-Saves disk space, too.  Why isn't this the default, then?
-Unfortunately, not all servers support this command. 
-
-I bet I know what you're thinking now: How do I find out whether my
-server supports @code{ask-server}?  No?  Good, because I don't have a
-fail-safe answer.  I would suggest just setting this variable to
-@code{ask-server} and see whether any new groups appear within the next
-few days.  If any do, then it works.  If any don't, then it doesn't
-work.  I could write a function to make Gnus guess whether the server
-supports @code{ask-server}, but it would just be a guess.  So I won't.
-You could @code{telnet} to the server and say @code{HELP} and see
-whether it lists @samp{NEWGROUPS} among the commands it understands.  If
-it does, then it might work.  (But there are servers that lists
-@samp{NEWGROUPS} without supporting the function properly.)
-
-This variable can also be a list of select methods.  If so, Gnus will
-issue an @code{ask-server} command to each of the select methods, and
-subscribe them (or not) using the normal methods.  This might be handy
-if you are monitoring a few servers for new groups.  A side effect is
-that startup will take much longer, so you can meditate while waiting.
-Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
+New groups that match this regexp are subscribed using
+@code{gnus-subscribe-options-newsgroup-method}.
 
 
 @node Changing Servers
 @section Changing Servers
+@cindex changing servers
 
 Sometimes it is necessary to move from one @sc{nntp} server to another.
 This happens very rarely, but perhaps you change jobs, or one server is
-very flake and you want to use another.  
+very flaky and you want to use another.  
 
 Changing the server is pretty easy, right?  You just change
 @code{gnus-select-method} to point to the new server?  
@@ -681,10 +766,10 @@ functions more than absolutely necessary.
 @kindex M-x gnus-change-server
 @findex gnus-change-server
 If you have access to both servers, Gnus can request the headers for all
-the articles you have read and compare @code{Message-ID}s and map
-reads and article marks.  The @kbd{M-x gnus-change-server} command will
-do this for all your native groups.  It will prompt for the method you
-want to move to.
+the articles you have read and compare @code{Message-ID}s and map the
+article numbers of the read articles and article marks.  The @kbd{M-x
+gnus-change-server} command will do this for all your native groups.  It
+will prompt for the method you want to move to.
 
 @kindex M-x gnus-group-move-group-to-server
 @findex gnus-group-move-group-to-server
@@ -704,6 +789,8 @@ that you have on your native groups.  Use with caution.
 @section Startup Files
 @cindex startup files
 @cindex .newsrc
+@cindex .newsrc.el
+@cindex .newsrc.eld
 
 Now, you all know about the @file{.newsrc} file.  All subscription
 information is traditionally stored in this file.
@@ -732,7 +819,7 @@ Gnus.  But hey, who would want to, right?
 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
 will not save the list of killed groups to the startup file.  This will
 save both time (when starting and quitting) and space (on disk).  It
-will also means that Gnus has no record of what groups are new or old,
+will also mean that Gnus has no record of what groups are new or old,
 so the automatic new groups subscription methods become meaningless.
 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
@@ -754,15 +841,28 @@ files, while @code{gnus-save-quick-newsrc-hook} is called just before
 saving the @file{.newsrc.eld} file, and
 @code{gnus-save-standard-newsrc-hook} is called just before saving the
 @file{.newsrc} file.  The latter two are commonly used to turn version
-control on or off.  Version control is off by default when saving the
-startup files.
+control on or off.  Version control is on by default when saving the
+startup files.  If you want to turn backup creation off, say something like: 
+
+@lisp
+(defun turn-off-backup ()
+  (set (make-local-variable 'backup-inhibited) t))
+
+(add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
+(add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
+@end lisp
 
 @vindex gnus-init-file
-When Gnus starts, it will read the @code{gnus-site-init-file} (default
-@file{.../site-lisp/gnus.el}) and @code{gnus-init-file} (default
-@file{~/.gnus.el}) files.  These are normal Emacs Lisp files and can be
-used to avoid cluttering your @file{.emacs} and @file{site-init} files
-with Gnus stuff.
+When Gnus starts, it will read the @code{gnus-site-init-file}
+(@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
+(@file{~/.gnus} by default) files.  These are normal Emacs Lisp files
+and can be used to avoid cluttering your @file{~/.emacs} and
+@file{site-init} files with Gnus stuff.  Gnus will also check for files
+with the same names as these, but with @file{.elc} and @file{.el}
+suffixes.  In other words, if you have set @code{gnus-init-file} to
+@file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
+and finally @file{~/.gnus} (in this order).
+
 
 
 @node Auto Save
@@ -845,6 +945,9 @@ performance, but if the server does not support the aforementioned
 In any case, if you use @code{some} or @code{nil}, you should definitely
 kill all groups that you aren't interested in to speed things up.
 
+Note that this variable also affects active file retrieval from
+secondary select methods.
+
 
 @node Startup Variables
 @section Startup Variables
@@ -861,6 +964,11 @@ times you start Gnus.
 @vindex gnus-startup-hook
 A hook that is run after starting up Gnus successfully.
 
+@item gnus-started-hook
+@vindex gnus-started-hook
+A hook that is run as the very last thing after starting up Gnus
+successfully.
+
 @item gnus-check-bogus-newsgroups
 @vindex gnus-check-bogus-newsgroups
 If non-@code{nil}, Gnus will check for and delete all bogus groups at
@@ -873,12 +981,23 @@ in a while from the group buffer instead (@pxref{Group Maintenance}).
 @item gnus-inhibit-startup-message
 @vindex gnus-inhibit-startup-message
 If non-@code{nil}, the startup message won't be displayed.  That way,
-your boss might not notice that you are reading news instead of doing
-your job as easily.
+your boss might not notice as easily that you are reading news instead
+of doing your job.  Note that this variable is used before
+@file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
 
 @item gnus-no-groups-message
 @vindex gnus-no-groups-message
 Message displayed by Gnus when no groups are available.
+
+@item gnus-play-startup-jingle
+@vindex gnus-play-startup-jingle
+If non-@code{nil}, play the Gnus jingle at startup.
+
+@item gnus-startup-jingle
+@vindex gnus-startup-jingle
+Jingle to be played if the above variable is non-@code{nil}.  The
+default is @samp{Tuxedomoon.Jingle4.au}.
+
 @end table
 
 
@@ -894,6 +1013,7 @@ long as Gnus is active.
 * Group Buffer Format::    Information listed and how you can change it.
 * Group Maneuvering::      Commands for moving in the group buffer.
 * Selecting a Group::      Actually reading news.
+* Group Data::             Changing the info for a group.
 * Subscription Commands::  Unsubscribing, killing, subscribing.
 * Group Levels::           Levels? What are those, then?
 * Group Score::            A mechanism for finding out what groups you like.
@@ -912,7 +1032,6 @@ long as Gnus is active.
 
 @node Group Buffer Format
 @section Group Buffer Format
-@cindex group buffer format
 
 @menu 
 * Group Line Specification::       Deciding how the group buffer is to look.
@@ -923,6 +1042,7 @@ long as Gnus is active.
 
 @node Group Line Specification
 @subsection Group Line Specification
+@cindex group buffer format
 
 The default format of the group buffer is nice and dull, but you can
 make it as exciting and ugly as you feel like.
@@ -948,8 +1068,7 @@ lines of a @code{format} specification, which is pretty much the same as
 a @code{printf} specifications, for those of you who use (feh!) C.
 @xref{Formatting Variables}. 
 
-The default value that produced those lines above is 
-@samp{%M%S%5y: %(%g%)\n}.
+@samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
 
 There should always be a colon on the line; the cursor always moves to
 the colon after performing an operation.  Nothing else is required---not
@@ -966,7 +1085,7 @@ Here's a list of all available format characters:
 @table @samp
 
 @item M    
-Only marked articles.
+An asterisk if the group only has marked articles.
 
 @item S
 Whether the group is subscribed.
@@ -1028,25 +1147,38 @@ Indentation based on the level of the topic (@pxref{Group Topics}).
 @vindex gnus-group-uncollapsed-levels
 Short (collapsed) group name.  The @code{gnus-group-uncollapsed-levels}
 variable says how many levels to leave at the end of the group name.
-The default is @code{1}.
+The default is 1---this will mean that group names like
+@samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
+
+@item m
+@vindex gnus-new-mail-mark
+@cindex %
+@samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
+the group lately.
+
+@item d
+A string that says when you last read the group (@pxref{Group
+Timestamp}). 
 
 @item u
 User defined specifier.  The next character in the format string should
 be a letter.  @sc{gnus} will call the function
 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
-following @samp{%u}.  The function will be passed the current headers as
-argument.  The function should return a string, which will be inserted
-into the buffer just like information from any other specifier.
+following @samp{%u}.  The function will be passed a single dummy
+parameter as argument.  The function should return a string, which will
+be inserted into the buffer just like information from any other
+specifier.
 @end table
 
 @cindex *
 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
 if no info is available---for instance, if it is a non-activated foreign
-group, or a bogus (or semi-bogus) native group.
+group, or a bogus native group.
 
 
 @node Group Modeline Specification
 @subsection Group Modeline Specification
+@cindex group modeline
 
 @vindex gnus-group-mode-line-format
 The mode line can be changed by setting
@@ -1063,6 +1195,8 @@ The native select method.
 
 @node Group Highlighting
 @subsection Group Highlighting
+@cindex highlighting
+@cindex group highlighting
 
 @vindex gnus-group-highlight
 Highlighting in the group buffer is controlled by the
@@ -1075,17 +1209,16 @@ background is dark:
 
 @lisp
 (setq gnus-group-highlight
-    `(((> unread 200) . 
-       ,(custom-face-lookup "Red" nil nil t nil nil))
-      ((and (< level 3) (zerop unread)) . 
-       ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
-      ((< level 3) . 
-       ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
-      ((zerop unread) . 
-       ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
-      (t . 
-       ,(custom-face-lookup "SkyBlue" nil nil t nil nil))
-      ))
+      `(((> unread 200) . 
+         ,(custom-face-lookup "Red" nil nil t nil nil))
+        ((and (< level 3) (zerop unread)) . 
+         ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
+        ((< level 3) . 
+         ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
+        ((zerop unread) . 
+         ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
+        (t . 
+         ,(custom-face-lookup "SkyBlue" nil nil t nil nil))))
 @end lisp
 
 Variables that are dynamically bound when the forms are evaluated
@@ -1141,12 +1274,11 @@ Go to the next group that has unread articles
 (@code{gnus-group-next-unread-group}).
 
 @item p
-
 @itemx DEL
 @kindex DEL (Group)
 @kindex p (Group)
 @findex gnus-group-prev-unread-group
-Go to the previous group group that has unread articles
+Go to the previous group that has unread articles
 (@code{gnus-group-prev-unread-group}).
 
 @item N
@@ -1162,13 +1294,13 @@ Go to the previous group (@code{gnus-group-prev-group}).
 @item M-p
 @kindex M-p (Group)
 @findex gnus-group-next-unread-group-same-level
-Go to the next unread group on the same level (or lower)
+Go to the next unread group on the same (or lower) level
 (@code{gnus-group-next-unread-group-same-level}). 
 
 @item M-n
 @kindex M-n (Group)
 @findex gnus-group-prev-unread-group-same-level
-Go to the previous unread group on the same level (or lower)
+Go to the previous unread group on the same (or lower) level
 (@code{gnus-group-prev-unread-group-same-level}). 
 @end table
 
@@ -1216,10 +1348,10 @@ Select the current group, switch to the summary buffer and display the
 first unread article (@code{gnus-group-read-group}).  If there are no
 unread articles in the group, or if you give a non-numerical prefix to
 this command, Gnus will offer to fetch all the old articles in this
-group from the server.  If you give a numerical prefix @var{N}, Gnus
-will fetch @var{N} number of articles.  If @var{N} is positive, fetch
-the @var{N} newest articles, if @var{N} is negative, fetch the
-@var{abs(N)} oldest articles.
+group from the server.  If you give a numerical prefix @var{N}, @var{N}
+determines the number of articles Gnus will fetch.  If @var{N} is
+positive, Gnus fetches the @var{N} newest articles, if @var{N} is
+negative, Gnus fetches the @var{abs(N)} oldest articles.
 
 @item RET
 @kindex RET (Group)
@@ -1234,65 +1366,46 @@ entry.
 @kindex M-RET (Group)
 @findex gnus-group-quick-select-group
 This does the same as the command above, but tries to do it with the
-minimum amount off fuzz (@code{gnus-group-quick-select-group}).  No
+minimum amount of fuzz (@code{gnus-group-quick-select-group}).  No
 scoring/killing will be performed, there will be no highlights and no
 expunging.  This might be useful if you're in a real hurry and have to
 enter some humongous group.  If you give a 0 prefix to this command
-(i. e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer.
+(i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer.
 This might be useful if you want to toggle threading before entering the
 group.
 
 @item M-SPACE
 @kindex M-SPACE (Group)
 @findex gnus-group-visible-select-group
-This is yet one more command that does the same as the one above, but
-this one does it without expunging and hiding dormants
-(@code{gnus-group-visible-select-group}).  
-
-@item c
-@kindex c (Group)
-@findex gnus-group-catchup-current
-@vindex gnus-group-catchup-group-hook
-Mark all unticked articles in this group as read
-(@code{gnus-group-catchup-current}).
-@code{gnus-group-catchup-group-hook} is when catching up a group from
-the group buffer.
-
-@item C
-@kindex C (Group)
-@findex gnus-group-catchup-current-all
-Mark all articles in this group, even the ticked ones, as read
-(@code{gnus-group-catchup-current-all}).   
-
-@item M-c
-@kindex M-c (Group)
-@findex gnus-group-clear-data
-Clear the data from the current group---nix out marks and the list of
-read articles (@code{gnus-group-clear-data}).
+This is yet one more command that does the same as the @kbd{RET}
+command, but this one does it without expunging and hiding dormants
+(@code{gnus-group-visible-select-group}).
 
-@item M-x gnus-group-clear-data-on-native-groups
-@kindex M-x gnus-group-clear-data-on-native-groups
-@findex gnus-group-clear-data-on-native-groups
-If you have switced from one @sc{nntp} server to another, all your marks
-and read ranges have become worthless.  You can use this command to
-clear out all data that you have on your native groups.  Use with
-caution. 
+@item M-C-RET
+@kindex M-C-RET (Group)
+@findex gnus-group-select-group-ephemerally
+Finally, this command selects the current group ephemerally without
+doing any processing of its contents
+(@code{gnus-group-select-group-ephemerally}).  Even threading has been
+turned off.  Everything you do in the group after selecting it in this
+manner will have no permanent effects.
 
 @end table
 
 @vindex gnus-large-newsgroup
 The @code{gnus-large-newsgroup} variable says what Gnus should consider
 to be a big group.  This is 200 by default.  If the group has more
-unread articles than this, Gnus will query the user before entering the
-group.  The user can then specify how many articles should be fetched
-from the server.  If the user specifies a negative number (@code{-n}),
-the @code{n} oldest articles will be fetched.  If it is positive, the
-@code{n} articles that have arrived most recently will be fetched.
+(unread and/or ticked) articles than this, Gnus will query the user
+before entering the group.  The user can then specify how many articles
+should be fetched from the server.  If the user specifies a negative
+number (@code{-n}), the @code{n} oldest articles will be fetched.  If it
+is positive, the @code{n} articles that have arrived most recently will
+be fetched.
 
 @vindex gnus-select-group-hook
 @vindex gnus-auto-select-first
 @code{gnus-auto-select-first} control whether any articles are selected
-automatically when entering a group.  
+automatically when entering a group with the @kbd{SPACE} command.
 
 @table @code
 
@@ -1316,7 +1429,7 @@ selected.
 
 @node Subscription Commands
 @section Subscription Commands
-@cindex subscribing
+@cindex subscription
 
 @table @kbd
 
@@ -1375,9 +1488,9 @@ Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
 @findex gnus-group-kill-level
 Kill all groups on a certain level (@code{gnus-group-kill-level}).
 These groups can't be yanked back after killing, so this command should
-be used with some caution.  The only thing where this command comes in
+be used with some caution.  The only time where this command comes in
 really handy is when you have a @file{.newsrc} with lots of unsubscribed
-groups that you want to get rid off.  @kbd{S C-k} on level @code{7} will
+groups that you want to get rid off.  @kbd{S C-k} on level 7 will
 kill off all unsubscribed groups that do not have message numbers in the
 @file{.newsrc} file.  
 
@@ -1386,9 +1499,47 @@ kill off all unsubscribed groups that do not have message numbers in the
 Also @pxref{Group Levels}.
 
 
+@node Group Data
+@section Group Data
+
+@table @kbd
+
+@item c
+@kindex c (Group)
+@findex gnus-group-catchup-current
+@vindex gnus-group-catchup-group-hook
+Mark all unticked articles in this group as read
+(@code{gnus-group-catchup-current}).
+@code{gnus-group-catchup-group-hook} is called when catching up a group from
+the group buffer.
+
+@item C
+@kindex C (Group)
+@findex gnus-group-catchup-current-all
+Mark all articles in this group, even the ticked ones, as read
+(@code{gnus-group-catchup-current-all}).   
+
+@item M-c
+@kindex M-c (Group)
+@findex gnus-group-clear-data
+Clear the data from the current group---nix out marks and the list of
+read articles (@code{gnus-group-clear-data}).
+
+@item M-x gnus-group-clear-data-on-native-groups
+@kindex M-x gnus-group-clear-data-on-native-groups
+@findex gnus-group-clear-data-on-native-groups
+If you have switched from one @sc{nntp} server to another, all your marks
+and read ranges have become worthless.  You can use this command to
+clear out all data that you have on your native groups.  Use with
+caution. 
+
+@end table
+
+
 @node Group Levels
 @section Group Levels
 @cindex group level
+@cindex level
 
 All groups have a level of @dfn{subscribedness}.  For instance, if a
 group is on level 2, it is more subscribed than a group on level 5.  You
@@ -1425,7 +1576,7 @@ living groups isn't done because it is nice or clever, it is done purely
 for reasons of efficiency.
 
 It is recommended that you keep all your mail groups (if any) on quite
-low levels (eg. 1 or 2).
+low levels (e.g. 1 or 2).
 
 If you want to play with the level variables, you should show some care.
 Set them once, and don't touch them ever again.  Better yet, don't touch
@@ -1467,7 +1618,7 @@ use this level as the ``work'' level.
 Gnus will normally just activate groups that are on level
 @code{gnus-activate-level} or less.  If you don't want to activate
 unsubscribed groups, for instance, you might set this variable to
-@code{5}. 
+5.  The default is 6.
 
 
 @node Group Score
@@ -1485,7 +1636,7 @@ Alternatively, you can sort on score and then level.  (Taken together,
 the level and the score is called the @dfn{rank} of the group.  A group
 that is on level 4 and has a score of 1 has a higher rank than a group
 on level 5 that has a score of 300.  (The level is the most significant
-part and the score is the least significant part.)
+part and the score is the least significant part.))
 
 @findex gnus-summary-bubble-group
 If you want groups you read often to get higher scores than groups you
@@ -1561,6 +1712,7 @@ the command to be executed.
 
 @node Foreign Groups
 @section Foreign Groups
+@cindex foreign groups
 
 Below are some group mode commands for making and editing general foreign
 groups, as well as commands to ease the creation of a few
@@ -1573,6 +1725,7 @@ consulted.
 @item G m
 @kindex G m (Group)
 @findex gnus-group-make-group
+@cindex making groups
 Make a new group (@code{gnus-group-make-group}).  Gnus will prompt you
 for a name, a method and possibly an @dfn{address}.  For an easier way
 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
@@ -1580,14 +1733,22 @@ to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
 @item G r
 @kindex G r (Group)
 @findex gnus-group-rename-group
+@cindex renaming groups
 Rename the current group to something else
 (@code{gnus-group-rename-group}).  This is legal only on some
 groups---mail groups mostly.  This command might very well be quite slow
 on some backends.
 
+@item G c
+@kindex G c (Group)
+@cindex customizing
+@findex gnus-group-customize
+Customize the group parameters (@code{gnus-group-customize}).
+
 @item G e
 @kindex G e (Group)
 @findex gnus-group-edit-group-method
+@cindex renaming groups
 Enter a buffer where you can edit the select method of the current
 group (@code{gnus-group-edit-group-method}).
 
@@ -1606,16 +1767,20 @@ Enter a buffer where you can edit the group info
 @item G d
 @kindex G d (Group)
 @findex gnus-group-make-directory-group
+@cindex nndir
 Make a directory group (@pxref{Directory Groups}).  You will be prompted
 for a directory name (@code{gnus-group-make-directory-group}).
 
 @item G h 
 @kindex G h (Group)
+@cindex help group
 @findex gnus-group-make-help-group
 Make the Gnus help group (@code{gnus-group-make-help-group}).
 
 @item G a
 @kindex G a (Group)
+@cindex (ding) archive
+@cindex archive group
 @findex gnus-group-make-archive-group
 @vindex gnus-group-archive-directory
 @vindex gnus-group-recent-archive-directory
@@ -1627,14 +1792,16 @@ group will be created from @code{gnus-group-archive-directory}.
 @item G k
 @kindex G k (Group)
 @findex gnus-group-make-kiboze-group
+@cindex nnkiboze
 Make a kiboze group.  You will be prompted for a name, for a regexp to
 match groups to be ``included'' in the kiboze group, and a series of
 strings to match on headers (@code{gnus-group-make-kiboze-group}).
-@xref{Kibozed Groups}
+@xref{Kibozed Groups}.
 
 @item G D
 @kindex G D (Group)
 @findex gnus-group-enter-directory
+@cindex nneething
 Read an arbitrary directory as if with were a newsgroup with the
 @code{nneething} backend (@code{gnus-group-enter-directory}).
 @xref{Anything Groups}. 
@@ -1643,20 +1810,23 @@ Read an arbitrary directory as if with were a newsgroup with the
 @kindex G f (Group)
 @findex gnus-group-make-doc-group
 @cindex ClariNet Briefs
+@cindex nndoc
 Make a group based on some file or other
 (@code{gnus-group-make-doc-group}).  If you give a prefix to this
 command, you will be prompted for a file name and a file type.
 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
-@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and
-@code{forward}.  If you run this command without a prefix, Gnus will
-guess at the file type.  @xref{Document Groups}.
+@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
+@code{rfc934}, @code{rfc822-forward}, and @code{forward}.  If you run
+this command without a prefix, Gnus will guess at the file type.
+@xref{Document Groups}.
 
-@item G n
-@kindex G n (Group)
+@item G w
+@kindex G w (Group)
 @findex gnus-group-make-web-group
 @cindex DejaNews
 @cindex Alta Vista
 @cindex InReference
+@cindex nnweb
 Make an ephemeral group based on a web search
 (@code{gnus-group-make-web-group}).  If you give a prefix to this
 command, make a solid group instead.  You will be prompted for the
@@ -1690,7 +1860,7 @@ Add the current group to an @code{nnvirtual} group
 methods. 
 
 @vindex gnus-activate-foreign-newsgroups
-If the @code{gnus-activate-foreign-newsgroups} is a positive number,
+If @code{gnus-activate-foreign-newsgroups} is a positive number,
 Gnus will check all foreign groups with this level or lower at startup.
 This might take quite a while, especially if you subscribe to lots of
 groups from different @sc{nntp} servers.
@@ -1700,27 +1870,6 @@ groups from different @sc{nntp} servers.
 @section Group Parameters
 @cindex group parameters
 
-Gnus stores all information on a group in a list that is usually known
-as the @dfn{group info}.  This list has from three to six elements.
-Here's an example info.
-
-@lisp
-("nnml:mail.ding" 3 ((1 . 232) 244 (256 . 270)) ((tick 246 249))
-                  (nnml "private") ((to-address . "ding@@ifi.uio.no")))
-@end lisp
-
-The first element is the @dfn{group name}, as Gnus knows the group,
-anyway.  The second element is the @dfn{subscription level}, which
-normally is a small integer.  The third element is a list of ranges of
-read articles.  The fourth element is a list of lists of article marks
-of various kinds.  The fifth element is the select method (or virtual
-server, if you like).  The sixth element is a list of @dfn{group
-parameters}, which is what this section is about.
-
-Any of the last three elements may be missing if they are not required.
-In fact, the vast majority of groups will normally only have the first
-three elements, which saves quite a lot of cons cells.
-
 The group parameters store information local to a particular group:
 
 @table @code
@@ -1750,6 +1899,10 @@ doing a @kbd{a} in any group.  It is totally ignored when doing a
 followup---except that if it is present in a news group, you'll get mail
 group semantics when doing @kbd{f}.
 
+If you do an @kbd{a} command in a mail group and you don't have a
+@code{to-list} group parameter, one will be added automatically upon
+sending the message.
+
 @item broken-reply-to
 @cindex broken-reply-to
 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
@@ -1760,25 +1913,36 @@ broken behavior.  So there!
 
 @item to-group
 @cindex to-group
-If the group parameter list contains an element like @code{(to-group
-. "some.group.name")}, all posts will be sent to that group.
+Elements like @code{(to-group . "some.group.name")} means that all
+posts in that group will be sent to @code{some.group.name}.  
+
+@item newsgroup
+@cindex newsgroup
+If this symbol is present in the group parameter list, Gnus will treat
+all responses as if they were responses to news articles.  This can be
+useful if you have a mail group that's really a mirror of a news group. 
 
 @item gcc-self
 @cindex gcc-self
-If this symbol is present in the group parameter list, new composed
-messages will be @code{Gcc}'d to the current group.  
+If this symbol is present in the group parameter list and set to
+@code{t}, new composed messages will be @code{Gcc}'d to the current
+group. If it is present and set to @code{none}, no @code{Gcc:} header
+will be generated, if it is present and a string, this string will be
+inserted literally as a @code{gcc} header (this symbol takes precedence over
+any default @code{Gcc} rules as described later).
 
 @item auto-expire
 @cindex auto-expire
-If this symbol is present in the group parameter list, all articles that
-are read will be marked as expirable.  For an alternative approach,
-@pxref{Expiring Mail}.
+If the group parameter has an element that looks like @code{(auto-expire
+. t)}, , all articles that are read will be marked as expirable.  For an
+alternative approach, @pxref{Expiring Mail}.
 
 @item total-expire
 @cindex total-expire
-If this symbol is present, all read articles will be put through the
+If the group parameter has an element that looks like
+@code{(total-expire . t)}, all read articles will be put through the
 expiry process, even if they are not marked as expirable.  Use with
-caution. 
+caution.
 
 @item expiry-wait
 @cindex expiry-wait
@@ -1821,28 +1985,37 @@ ticked articles.
 @end table
 
 @item comment
-This parameter allows you to enter a arbitrary comment on the group.
+Elements that look like @code{(comment . "This is a comment")}
+are arbitrary comments on the group.  They are currently ignored by
+Gnus, but provide a place for you to store information on particular
+groups. 
 
 @item @var{(variable form)}
 You can use the group parameters to set variables local to the group you
-are entering.  Say you want to turn threading off in
-@samp{news.answers}.  You'd then put @code{(gnus-show-threads nil)} in
-the group parameters of that group.  @code{gnus-show-threads} will be
-made into a local variable in the summary buffer you enter, and the form
-@code{nil} will be @code{eval}ed there.  
+are entering.  If you want to turn threading off in @samp{news.answers},
+you could put @code{(gnus-show-threads nil)} in the group parameters of
+that group.  @code{gnus-show-threads} will be made into a local variable
+in the summary buffer you enter, and the form @code{nil} will be
+@code{eval}ed there.
 
 This can also be used as a group-specific hook function, if you'd like.
-If you want to hear a beep when you enter the group
-@samp{alt.binaries.pictures.furniture}, you could put something like
-@code{(dummy-variable (ding))} in the parameters of that group.
-@code{dummy-variable} will be set to the result of the @code{(ding)}
-form, but who cares?
+If you want to hear a beep when you enter a group, you could put
+something like @code{(dummy-variable (ding))} in the parameters of that
+group.  @code{dummy-variable} will be set to the result of the
+@code{(ding)} form, but who cares?
 
 @end table
 
 Use the @kbd{G p} command to edit group parameters of a group.
 
-Also @xref{Topic Parameters}.
+Also @pxref{Topic Parameters}.
+
+Here's an example group parameter list:
+
+@example
+((to-address . "ding@@ifi.uio.no")
+ (auto-expiry . t))
+@end example
 
 
 @node Listing Groups
@@ -1861,7 +2034,9 @@ These commands all list various slices of the groups that are available.
 List all groups that have unread articles
 (@code{gnus-group-list-groups}).  If the numeric prefix is used, this
 command will list only groups of level ARG and lower.  By default, it
-only lists groups of level five or lower (i.e., just subscribed groups).
+only lists groups of level five (i. e.,
+@code{gnus-group-default-list-level}) or lower (i.e., just subscribed
+groups).
 
 @item L
 @itemx A u
@@ -1911,7 +2086,7 @@ List groups that match a regexp (@code{gnus-group-list-all-matching}).
 List absolutely all groups that are in the active file(s) of the
 server(s) you are connected to (@code{gnus-group-list-active}).  This
 might very well take quite a while.  It might actually be a better idea
-to do a @kbd{A m} to list all matching, and just give @samp{.} as the
+to do a @kbd{A M} to list all matching, and just give @samp{.} as the
 thing to match on.  Also note that this command may list group that
 don't exist (yet)---these will be listed as if they are killed groups.
 Take the output with some grains of salt.
@@ -1985,7 +2160,7 @@ Sort by number of unread articles.
 
 @item gnus-group-sort-by-method
 @findex gnus-group-sort-by-method
-Sort by alphabetically on the select method.
+Sort alphabetically on the select method.
 
 
 @end table
@@ -2026,7 +2201,7 @@ Sort the group buffer by group score
 @item G S r
 @kindex G S r (Group)
 @findex gnus-group-sort-groups-by-rank
-Sort the group buffer by group level
+Sort the group buffer by group rank
 (@code{gnus-group-sort-groups-by-rank}). 
 
 @item G S m
@@ -2039,6 +2214,48 @@ Sort the group buffer alphabetically by backend name
 
 When given a prefix, all these commands will sort in reverse order. 
 
+You can also sort a subset of the groups:
+
+@table @kbd
+@item G P a
+@kindex G P a (Group)
+@findex gnus-group-sort-selected-groups-by-alphabet
+Sort the process/prefixed groups in the group buffer alphabetically by
+group name (@code{gnus-group-sort-selected-groups-by-alphabet}).
+
+@item G P u
+@kindex G P u (Group)
+@findex gnus-group-sort-selected-groups-by-unread
+Sort the process/prefixed groups in the group buffer by the number of
+unread articles (@code{gnus-group-sort-selected-groups-by-unread}).
+
+@item G P l
+@kindex G P l (Group)
+@findex gnus-group-sort-selected-groups-by-level
+Sort the process/prefixed groups in the group buffer by group level
+(@code{gnus-group-sort-selected-groups-by-level}).
+
+@item G P v
+@kindex G P v (Group)
+@findex gnus-group-sort-selected-groups-by-score
+Sort the process/prefixed groups in the group buffer by group score
+(@code{gnus-group-sort-selected-groups-by-score}).
+
+@item G P r
+@kindex G P r (Group)
+@findex gnus-group-sort-selected-groups-by-rank
+Sort the process/prefixed groups in the group buffer by group rank
+(@code{gnus-group-sort-selected-groups-by-rank}).
+
+@item G P m
+@kindex G P m (Group)
+@findex gnus-group-sort-selected-groups-by-method
+Sort the process/prefixed groups in the group buffer alphabetically by
+backend name (@code{gnus-group-sort-selected-groups-by-method}).
+
+@end table
+
+
 
 @node Group Maintenance
 @section Group Maintenance
@@ -2089,16 +2306,8 @@ then attempt to contact this server and let you browse the groups there
 
 @findex gnus-browse-mode
 A new buffer with a list of available groups will appear.  This buffer
-will be use the @code{gnus-browse-mode}.  This buffer looks a bit
-(well, a lot) like a normal group buffer, but with one major difference
-- you can't enter any of the groups.  If you want to read any of the
-news available on that server, you have to subscribe to the groups you
-think may be interesting, and then you have to exit this buffer.  The
-new groups will be added to the group buffer, and then you can read them
-as you would any other group.
-
-Future versions of Gnus may possibly permit reading groups straight from
-the browse buffer.
+will be use the @code{gnus-browse-mode}.  This buffer looks a bit (well,
+a lot) like a normal group buffer.
 
 Here's a list of keystrokes available in the browse mode:
 
@@ -2167,7 +2376,8 @@ Quit Gnus (@code{gnus-group-exit}).
 @item Q
 @kindex Q (Group)
 @findex gnus-group-quit
-Quit Gnus without saving any startup files (@code{gnus-group-quit}).
+Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
+The dribble file will be saved, though (@pxref{Auto Save}).
 @end table
 
 @vindex gnus-exit-gnus-hook
@@ -2186,7 +2396,7 @@ trying to customize meta-variables.
 Note:
 
 @quotation
-Miss Lisa Cannifax, while sitting in English class, feels her feet go
+Miss Lisa Cannifax, while sitting in English class, felt her feet go
 numbly heavy and herself fall into a hazy trance as the boy sitting
 behind her drew repeated lines with his pencil across the back of her
 plastic chair.
@@ -2204,8 +2414,23 @@ you put in some misc section that you never bother with anyway.  You can
 even group the Emacs sex groups as a sub-topic to either the Emacs
 groups or the sex groups---or both!  Go wild!
 
-@findex gnus-topic-mode
-@kindex t (Group)
+Here's an example:
+
+@example
+Gnus
+  Emacs -- I wuw it!
+     3: comp.emacs
+     2: alt.religion.emacs
+    Naughty Emacs
+     452: alt.sex.emacs
+       0: comp.talk.emacs.recovery
+  Misc
+     8: comp.binaries.fractals
+    13: comp.sources.unix
+@end example
+
+@findex gnus-topic-mode
+@kindex t (Group)
 To get this @emph{fab} functionality you simply turn on (ooh!) the
 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer.  (This
 is a toggling command.)
@@ -2226,6 +2451,7 @@ the hook for the group mode:
 @menu 
 * Topic Variables::    How to customize the topics the Lisp Way.
 * Topic Commands::     Interactive E-Z commands.
+* Topic Sorting::      Sorting each topic individually.
 * Topic Topology::     A map of the world.
 * Topic Parameters::   Parameters that apply to all groups in a topic.
 @end menu
@@ -2263,7 +2489,7 @@ Number of unread articles in the topic and all its subtopics.
 @vindex gnus-topic-indent-level
 Each sub-topic (and the groups in the sub-topics) will be indented with
 @code{gnus-topic-indent-level} times the topic level number of spaces.
-The default is @code{2}.
+The default is 2.
 
 @vindex gnus-topic-mode-hook
 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. 
@@ -2293,21 +2519,21 @@ Prompt for a new topic name and create it
 @kindex T m (Topic)
 @findex gnus-topic-move-group
 Move the current group to some other topic
-(@code{gnus-topic-move-group}).  This command understands the
-process/prefix convention (@pxref{Process/Prefix}).
+(@code{gnus-topic-move-group}).  This command uses the process/prefix
+convention (@pxref{Process/Prefix}).
 
 @item T c
 @kindex T c (Topic)
 @findex gnus-topic-copy-group
 Copy the current group to some other topic
-(@code{gnus-topic-copy-group}).  This command understands the
-process/prefix convention (@pxref{Process/Prefix}).
+(@code{gnus-topic-copy-group}).  This command uses the process/prefix
+convention (@pxref{Process/Prefix}).
 
 @item T D
 @kindex T D (Topic)
 @findex gnus-topic-remove-group
 Remove a group from the current topic (@code{gnus-topic-remove-group}).
-This command understands the process/prefix convention
+This command uses the process/prefix convention
 (@pxref{Process/Prefix}).
 
 @item T M
@@ -2355,13 +2581,15 @@ previous topic (@code{gnus-topic-indent}).  If given a prefix,
 @item C-k
 @kindex C-k (Topic)
 @findex gnus-topic-kill-group
-Kill a group or topic (@code{gnus-topic-kill-group}).  
+Kill a group or topic (@code{gnus-topic-kill-group}).  All groups in the
+topic will be removed along with the topic.
 
 @item C-y
 @kindex C-y (Topic)
 @findex gnus-topic-yank-group
-Yank the previously killed group or topic (@code{gnus-topic-yank-group}).
-Note that all topics will be yanked before all groups.
+Yank the previously killed group or topic
+(@code{gnus-topic-yank-group}).  Note that all topics will be yanked
+before all groups. 
 
 @item T r
 @kindex T r (Topic)
@@ -2391,6 +2619,56 @@ Edit the topic parameters (@code{gnus-topic-edit-parameters}).
 @end table
 
 
+@node Topic Sorting
+@subsection Topic Sorting
+@cindex topic sorting
+
+You can sort the groups in each topic individually with the following
+commands: 
+
+
+@table @kbd
+@item T S a
+@kindex T S a (Topic)
+@findex gnus-topic-sort-groups-by-alphabet
+Sort the current topic alphabetically by group name
+(@code{gnus-topic-sort-groups-by-alphabet}). 
+
+@item T S u
+@kindex T S u (Topic)
+@findex gnus-topic-sort-groups-by-unread
+Sort the current topic by the number of unread articles
+(@code{gnus-topic-sort-groups-by-unread}).
+
+@item T S l
+@kindex T S l (Topic)
+@findex gnus-topic-sort-groups-by-level
+Sort the current topic by group level
+(@code{gnus-topic-sort-groups-by-level}). 
+
+@item T S v
+@kindex T S v (Topic)
+@findex gnus-topic-sort-groups-by-score
+Sort the current topic by group score
+(@code{gnus-topic-sort-groups-by-score}). 
+
+@item T S r
+@kindex T S r (Topic)
+@findex gnus-topic-sort-groups-by-rank
+Sort the current topic by group rank
+(@code{gnus-topic-sort-groups-by-rank}). 
+
+@item T S m
+@kindex T S m (Topic)
+@findex gnus-topic-sort-groups-by-method
+Sort the current topic alphabetically by backend name
+(@code{gnus-topic-sort-groups-by-method}). 
+
+@end table
+
+@xref{Sorting Groups} for more information about group sorting. 
+
+
 @node Topic Topology
 @subsection Topic Topology
 @cindex topic topology
@@ -2411,9 +2689,10 @@ Gnus
     13: comp.sources.unix
 @end example
 
-So, here we have one top-level topic, two topics under that, and one
-sub-topic under one of the sub-topics.  (There is always just one (1)
-top-level topic).  This topology can be expressed as follows:
+So, here we have one top-level topic (@samp{Gnus}), two topics under
+that, and one sub-topic under one of the sub-topics.  (There is always
+just one (1) top-level topic).  This topology can be expressed as
+follows:
 
 @lisp
 (("Gnus" visible)
@@ -2436,6 +2715,7 @@ allowed---@code{visible} and @code{invisible}.
 
 @node Topic Parameters
 @subsection Topic Parameters
+@cindex topic parameters
 
 All groups in a topic will inherit group parameters from the parent (and
 ancestor) topic parameters.  All legal group parameters are legal topic
@@ -2443,7 +2723,7 @@ parameters (@pxref{Group Parameters}).
 
 Group parameters (of course) override topic parameters, and topic
 parameters in sub-topics override topic parameters in super-topics.  You
-know.  Normal inheretance rules.  (@dfn{Rules} is here a noun, not a
+know.  Normal inheritance rules.  (@dfn{Rules} is here a noun, not a
 verb, although you may feel free to disagree with me here.)
 
 @example
@@ -2461,18 +2741,18 @@ Gnus
    452: alt.sex.emacs
 @end example
 
-Now, the @samp{Emacs} topic has the topic parameter 
-@code{(score-file . "emacs.SCORE")}; the @samp{Relief} topic has the topic
-parameter @code{(score-file . "relief.SCORE")}; and the @samp{Misc}
-topic has the topic parameter @code{(score-file . "emacs.SCORE")}.  In
-addition, @samp{alt.religion.emacs} has the group parameter
-@code{(score-file . "religion.SCORE")}.
+The @samp{Emacs} topic has the topic parameter @code{(score-file
+. "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
+@code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
+topic parameter @code{(score-file . "emacs.SCORE")}.  In addition,
+@samp{alt.religion.emacs} has the group parameter @code{(score-file
+. "religion.SCORE")}.
 
 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
 will get the @file{relief.SCORE} home score file.  If you enter the same
 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
-score file.  If you enter @samp{alt.religion.emacs}, you'll get the
-@file{religion.SCORE} home score file.  
+score file.  If you enter the group @samp{alt.religion.emacs}, you'll
+get the @file{religion.SCORE} home score file.
 
 This seems rather simple and self-evident, doesn't it?  Well, yes.  But
 there are some problems, especially with the @code{total-expiry}
@@ -2490,6 +2770,7 @@ happens.  You just have to be careful if you do stuff like that.
 @menu
 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
 * Group Information::     Information and help on groups and Gnus.
+* Group Timestamp::       Making Gnus keep track of when you last read a group.
 * File Commands::         Reading and writing the Gnus files.
 @end menu
 
@@ -2498,8 +2779,8 @@ happens.  You just have to be careful if you do stuff like that.
 @item ^
 @kindex ^ (Group)
 @findex gnus-group-enter-server-mode
-Enter the server buffer (@code{gnus-group-enter-server-mode}). @xref{The
-Server Buffer}.
+Enter the server buffer (@code{gnus-group-enter-server-mode}).
+@xref{The Server Buffer}.
 
 @item a
 @kindex a (Group)
@@ -2558,10 +2839,9 @@ backend(s).
 @findex gnus-group-get-new-news-this-group
 @vindex gnus-goto-next-group-when-activating
 Check whether new articles have arrived in the current group
-(@code{gnus-group-get-new-news-this-group}).  The
-@code{gnus-goto-next-group-when-activating} variable controls whether
-this command is to move point to the next group or not.  It is @code{t}
-by default.
+(@code{gnus-group-get-new-news-this-group}).
+@code{gnus-goto-next-group-when-activating} says whether this command is
+to move point to the next group or not.  It is @code{t} by default.
 
 @findex gnus-activate-all-groups
 @cindex activating groups
@@ -2573,7 +2853,9 @@ Activate absolutely all groups (@code{gnus-activate-all-groups}).
 @kindex R (Group)
 @cindex restarting
 @findex gnus-group-restart
-Restart Gnus (@code{gnus-group-restart}).
+Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
+file(s), closes the connection to all servers, clears up all run-time
+Gnus variables, and then starts Gnus all over again.
 
 @end table
 
@@ -2592,8 +2874,9 @@ news.
 
 @table @kbd
 
-@item M-f
-@kindex M-f (Group)
+
+@item H f
+@kindex H f (Group)
 @findex gnus-group-fetch-faq
 @vindex gnus-group-faq-directory
 @cindex FAQ
@@ -2603,14 +2886,16 @@ Try to fetch the FAQ for the current group
 @code{gnus-group-faq-directory}, which is usually a directory on a
 remote machine.  This variable can also be a list of directories.  In
 that case, giving a prefix to this command will allow you to choose
-between the various sites.  @code{ange-ftp} will be used for fetching
-the file.  
+between the various sites.  @code{ange-ftp} (or @code{efs}) will be used
+for fetching the file.
 
 If fetching from the first site is unsuccessful, Gnus will attempt to go
 through @code{gnus-group-faq-directory} and try to open them one by one.
 
-@item D
-@kindex D (Group)
+@item H d
+@itemx C-c C-d
+@kindex H d (Group)
+@kindex C-c C-d (Group)
 @cindex describing groups
 @cindex group description
 @findex gnus-group-describe-group
@@ -2643,6 +2928,46 @@ Go to the Gnus info node (@code{gnus-info-find-node}).
 @end table
 
 
+@node Group Timestamp
+@subsection Group Timestamp
+@cindex timestamps
+@cindex group timestamps
+
+It can be convenient to let Gnus keep track of when you last read a
+group.  To set the ball rolling, you should add
+@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
+
+@lisp
+(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
+@end lisp
+
+After doing this, each time you enter a group, it'll be recorded.
+
+This information can be displayed in various ways---the easiest is to
+use the @samp{%d} spec in the group line format:
+
+@lisp
+(setq gnus-group-line-format 
+      "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
+@end lisp
+
+This will result in lines looking like:
+
+@example
+*        0: mail.ding                                19961002T012943
+         0: custom                                   19961002T012713
+@end example
+
+As you can see, the date is displayed in compact ISO 8601 format.  This
+may be a bit too much, so to just display the date, you could say
+something like:
+
+@lisp
+(setq gnus-group-line-format 
+      "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
+@end lisp
+
+
 @node File Commands
 @subsection File Commands
 @cindex file commands
@@ -2654,7 +2979,7 @@ Go to the Gnus info node (@code{gnus-info-find-node}).
 @findex gnus-group-read-init-file
 @vindex gnus-init-file
 @cindex reading init file
-Read the init file (@code{gnus-init-file}, which defaults to
+Re-read the init file (@code{gnus-init-file}, which defaults to
 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
 
 @item s
@@ -2680,6 +3005,11 @@ file(s) whether Gnus thinks it is necessary or not.
 A line for each article is displayed in the summary buffer.  You can
 move around, read articles, post articles and reply to articles.
 
+The most common way to a summary buffer is to select a group from the
+group buffer (@pxref{Selecting a Group}).  
+
+You can have as many summary buffers open as you wish.
+
 @menu
 * Summary Buffer Format::       Deciding how the summary buffer is to look.
 * Summary Maneuvering::         Moving around the summary buffer.
@@ -2698,6 +3028,7 @@ move around, read articles, post articles and reply to articles.
 * Saving Articles::             Ways of customizing article saving.
 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
 * Article Treatment::           The article buffer can be mangled at will.
+* Article Commands::            Doing various things with the article buffer.
 * Summary Sorting::             Sorting the summary buffer in various ways.
 * Finding the Parent::          No child support? Get the parent.
 * Alternative Approaches::      Reading using non-default summaries.
@@ -2766,8 +3097,9 @@ Full @code{From} header.
 The name (from the @code{From} header).
 @item a
 The name (from the @code{From} header).  This differs from the @code{n}
-spec in that it uses @code{gnus-extract-address-components}, which is
-slower, but may be more thorough.
+spec in that it uses the function designated by the
+@code{gnus-extract-address-components} variable, which is slower, but
+may be more thorough.
 @item A
 The address (from the @code{From} header).  This works the same way as
 the @code{a} spec.
@@ -2780,11 +3112,11 @@ Indentation based on thread level (@pxref{Customizing Threading}).
 @item T
 Nothing if the article is a root and lots of spaces if it isn't (it
 pushes everything after it off the screen).
-@item \[
-Opening bracket, which is normally @samp{\[}, but can also be @samp{<}
+@item [
+Opening bracket, which is normally @samp{[}, but can also be @samp{<}
 for adopted articles (@pxref{Customizing Threading}).
-@item \]
-Closing bracket, which is normally @samp{\]}, but can also be @samp{>}
+@item ]
+Closing bracket, which is normally @samp{]}, but can also be @samp{>}
 for adopted articles.
 @item >
 One space for each thread level.
@@ -2809,7 +3141,7 @@ Total thread score.
 @item D
 @code{Date}.
 @item d
-The @code{Date} in @code{YY-MMM} format.
+The @code{Date} in @code{DD-MMM} format.
 @item o
 The @code{Date} in @code{YYYYMMDDTHHMMSS} format.
 @item M
@@ -2820,7 +3152,8 @@ The @code{Date} in @code{YYYYMMDDTHHMMSS} format.
 Number of articles in the current sub-thread.  Using this spec will slow
 down summary buffer generation somewhat.
 @item e
-A single character will be displayed if the article has any children. 
+An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
+article has any children.
 @item P
 The line number.
 @item u
@@ -2850,8 +3183,10 @@ This restriction may disappear in later versions of Gnus.
 
 @vindex gnus-summary-mode-line-format
 You can also change the format of the summary mode bar.  Set
-@code{gnus-summary-mode-line-format} to whatever you like.  Here are the
-elements you can play with:
+@code{gnus-summary-mode-line-format} to whatever you like.  The default
+is @samp{Gnus: %%b [%A] %Z}.  
+
+Here are the elements you can play with:
 
 @table @samp
 @item G
@@ -2868,7 +3203,7 @@ Number of unread articles in this group.
 Number of unselected articles in this group.
 @item Z
 A string with the number of unread and unselected articles represented
-either as @samp{<%U(+%u) more>} if there are both unread and unselected
+either as @samp{<%U(+%e) more>} if there are both unread and unselected
 articles, and just as @samp{<%U more>} if there are just unread articles
 and no unselected ones.
 @item g
@@ -2877,7 +3212,7 @@ shortened to @samp{r.a.anime}.
 @item S
 Subject of the current article.
 @item u
-Used-defined spec.
+User-defined spec.
 @item s
 Name of the current score file.
 @item d
@@ -2915,7 +3250,7 @@ highlight the current article in the summary buffer.
 @item gnus-summary-highlight
 @vindex gnus-summary-highlight
 Summary lines are highlighted according to this variable, which is a
-list where the elements are on the format @code{(FORM . FACE)}.  If you
+list where the elements are on the format @var{(FORM . FACE)}.  If you
 would, for instance, like ticked articles to be italic and high-scored
 articles to be bold, you could set this variable to something like
 @lisp
@@ -2958,14 +3293,14 @@ Go to the previous summary line of an unread article
 @kindex j (Summary)
 @kindex G j (Summary)
 @findex gnus-summary-goto-article
-Ask for an article number and then go that article
+Ask for an article number and then go to that article
 (@code{gnus-summary-goto-article}). 
 
 @item G g
 @kindex G g (Summary)
 @findex gnus-summary-goto-subject
 Ask for an article number and then go the summary line of that article
-(@code{gnus-summary-goto-subject}).
+without displaying the article (@code{gnus-summary-goto-subject}).
 @end table
 
 If Gnus asks you to press a key to confirm going to the next group, you
@@ -2979,18 +3314,18 @@ Variables related to summary movement:
 
 @vindex gnus-auto-select-next
 @item gnus-auto-select-next
-If you are at the end of the group and issue one of the movement
-commands, Gnus will offer to go to the next group.  If this variable is
-@code{t} and the next group is empty, Gnus will exit summary mode and
-return to the group buffer.  If this variable is neither @code{t} nor
-@code{nil}, Gnus will select the next group, no matter whether it has
-any unread articles or not.  As a special case, if this variable is
-@code{quietly}, Gnus will select the next group without asking for
-confirmation.  If this variable is @code{almost-quietly}, the same will
-happen only if you are located on the last article in the group.
-Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
-command will go to the next group without confirmation.  Also
-@pxref{Group Levels}.
+If you issue one of the movement commands (like @kbd{n}) and there are
+no more unread articles after the current one, Gnus will offer to go to
+the next group.  If this variable is @code{t} and the next group is
+empty, Gnus will exit summary mode and return to the group buffer.  If
+this variable is neither @code{t} nor @code{nil}, Gnus will select the
+next group, no matter whether it has any unread articles or not.  As a
+special case, if this variable is @code{quietly}, Gnus will select the
+next group without asking for confirmation.  If this variable is
+@code{almost-quietly}, the same will happen only if you are located on
+the last article in the group.  Finally, if this variable is
+@code{slightly-quietly}, the @kbd{Z n} command will go to the next group
+without confirmation.  Also @pxref{Group Levels}.
 
 @item gnus-auto-select-same
 @vindex gnus-auto-select-same
@@ -3023,6 +3358,15 @@ threads.
 @section Choosing Articles
 @cindex selecting articles
 
+@menu
+* Choosing Commands::        Commands for choosing articles.
+* Choosing Variables::       Variables that influence these commands.
+@end menu
+
+
+@node Choosing Commands
+@subsection Choosing Commands
+
 None of the following movement commands understand the numeric prefix,
 and they all select and display an article.
 
@@ -3104,6 +3448,10 @@ command above in that you can pop as many previous articles off the
 history as you like.
 @end table
 
+
+@node Choosing Variables
+@subsection Choosing Variables
+
 Some variables that are relevant for moving and selecting articles:
 
 @table @code
@@ -3187,7 +3535,9 @@ Scroll to the beginning of the article
 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
 
 @item A s 
+@itemx s
 @kindex A s (Summary)
+@kindex s (Summary)
 @findex gnus-summary-isearch-article
 Perform an isearch in the article buffer
 (@code{gnus-summary-isearch-article}). 
@@ -3230,17 +3580,25 @@ Mail a reply to the author of the current article and include the
 original message (@code{gnus-summary-reply-with-original}).  This
 command uses the process/prefix convention.
 
+@item S w
+@kindex S w (Summary)
+@findex gnus-summary-wide-reply
+Mail a wide reply to the author of the current article
+(@code{gnus-summary-wide-reply}). 
+
+@item S W
+@kindex S W (Summary)
+@findex gnus-summary-wide-reply-with-original
+Mail a wide reply to the current article and include the original
+message (@code{gnus-summary-reply-with-original}).  This command uses
+the process/prefix convention.
+
 @item S o m
 @kindex S o m (Summary)
 @findex gnus-summary-mail-forward
 Forward the current article to some other person
-(@code{gnus-summary-mail-forward}). 
-
-@item S o p
-@kindex S o p (Summary)
-@findex gnus-summary-post-forward
-Forward the current article to a newsgroup
-(@code{gnus-summary-post-forward}).
+(@code{gnus-summary-mail-forward}).  If given a prefix, include the full
+headers of the forwarded article.
 
 @item S m
 @itemx m
@@ -3279,7 +3637,10 @@ This command is mainly used if you have several accounts and want to
 ship a mail to a different account of yours.  (If you're both
 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
 to the @code{root} account, you may want to resend it to
-@code{postmaster}.  Ordnung muss sein!
+@code{postmaster}.  Ordnung muß sein!
+
+This command understands the process/prefix convention
+(@pxref{Process/Prefix}). 
 
 @item S O m
 @kindex S O m (Summary)
@@ -3288,12 +3649,6 @@ Digest the current series and forward the result using mail
 (@code{gnus-uu-digest-mail-forward}).  This command uses the
 process/prefix convention (@pxref{Process/Prefix}). 
 
-@item S O p
-@kindex S O p (Summary)
-@findex gnus-uu-digest-post-forward
-Digest the current series and forward the result to a newsgroup
-(@code{gnus-uu-digest-mail-forward}).  
-
 @item S M-c
 @kindex S M-c (Summary)
 @findex gnus-summary-mail-crosspost-complaint
@@ -3317,7 +3672,7 @@ command understands the process/prefix convention
 @cindex post
 @cindex composing news
 
-Commands for posting an article:
+Commands for posting a news article:
 
 @table @kbd
 @item S p
@@ -3344,6 +3699,33 @@ Post a followup to the current article and include the original message
 (@code{gnus-summary-followup-with-original}).   This command uses the
 process/prefix convention.
 
+@item S n
+@kindex S n (Summary)
+@findex gnus-summary-followup-to-mail
+Post a followup to the current article via news, even if you got the
+message through mail (@code{gnus-summary-followup-to-mail}).
+
+@item S n
+@kindex S n (Summary)
+@findex gnus-summary-followup-to-mail
+Post a followup to the current article via news, even if you got the
+message through mail and include the original message
+(@code{gnus-summary-followup-to-mail-with-original}).  This command uses
+the process/prefix convention.
+
+@item S o p
+@kindex S o p (Summary)
+@findex gnus-summary-post-forward
+Forward the current article to a newsgroup
+(@code{gnus-summary-post-forward}).  If given a prefix, include the full
+headers of the forwarded article.
+
+@item S O p
+@kindex S O p (Summary)
+@findex gnus-uu-digest-post-forward
+Digest the current series and forward the result to a newsgroup
+(@code{gnus-uu-digest-mail-forward}).  
+
 @item S u
 @kindex S u (Summary)
 @findex gnus-uu-post-news
@@ -3391,12 +3773,13 @@ have posted almost the same article twice.
 If you have just posted the article, and change your mind right away,
 there is a trick you can use to cancel/supersede the article without
 waiting for the article to appear on your site first.  You simply return
-to the post buffer (which is called @code{*post-buf*}).  There you will
+to the post buffer (which is called @code{*sent ...*}).  There you will
 find the article you just posted, with all the headers intact.  Change
 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
-header by substituting one of those words for @code{Message-ID}.  Then
-just press @kbd{C-c C-c} to send the article as you would do normally.
-The previous article will be canceled/superseded.
+header by substituting one of those words for the word
+@code{Message-ID}.  Then just press @kbd{C-c C-c} to send the article as
+you would do normally.  The previous article will be
+canceled/superseded.
 
 Just remember, kids: There is no 'c' in 'supersede'.
 
@@ -3434,30 +3817,33 @@ There's a plethora of commands for manipulating these marks:
 @node Unread Articles
 @subsection Unread Articles
 
-The following marks mark articles as unread, in one form or other.
+The following marks mark articles as (kinda) unread, in one form or
+other.
 
-@vindex gnus-dormant-mark
-@vindex gnus-ticked-mark
 @table @samp
 @item !
+@vindex gnus-ticked-mark
+Marked as ticked (@code{gnus-ticked-mark}).
+
 @dfn{Ticked articles} are articles that will remain visible always.  If
 you see an article that you find interesting, or you want to put off
 reading it, or replying to it, until sometime later, you'd typically
 tick it.  However, articles can be expired, so if you want to keep an
-article forever, you'll have to save it.  Ticked articles have a
-@samp{!} (@code{gnus-ticked-mark}) in the first column.
+article forever, you'll have to make it persistent (@pxref{Persistent
+Articles}).  
 
 @item ?
 @vindex gnus-dormant-mark
-A @dfn{dormant} article is marked with a @samp{?}
-(@code{gnus-dormant-mark}), and will only appear in the summary buffer
-if there are followups to it.
+Marked as dormant (@code{gnus-dormant-mark}).  
+
+@dfn{Dormant articles} will only appear in the summary buffer if there
+are followups to it.
 
 @item SPACE
 @vindex gnus-unread-mark
-An @dfn{unread} article is marked with a @samp{SPACE}
-(@code{gnus-unread-mark}).  These are articles that haven't been read at
-all yet.
+Markes as unread (@code{gnus-unread-mark}).
+
+@dfn{Unread articles} are articles that haven't been read at all yet.
 @end table
 
 
@@ -3471,19 +3857,17 @@ All the following marks mark articles as read.
 
 @item r
 @vindex gnus-del-mark
-Articles that are marked as read.  They have a @samp{r}
-(@code{gnus-del-mark}) in the first column.  These are articles that the
-user has marked as read more or less manually.
+These are articles that the user has marked as read with the @kbd{d}
+command manually, more or less (@code{gnus-del-mark}).
 
 @item R
 @vindex gnus-read-mark
-Articles that are actually read are marked with @samp{R}
-(@code{gnus-read-mark}). 
+Articles that have actually been read (@code{gnus-read-mark}).
 
 @item O
 @vindex gnus-ancient-mark
-Articles that were marked as read in previous sessions are now
-@dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). 
+Articles that were marked as read in previous sessions and are now
+@dfn{old} (@code{gnus-ancient-mark}).
 
 @item K
 @vindex gnus-killed-mark
@@ -3507,35 +3891,35 @@ Canceled article (@code{gnus-canceled-mark})
 
 @item F
 @vindex gnus-souped-mark
-@sc{SOUP}ed article (@code{gnus-souped-mark}).  @xref{SOUP}
+@sc{SOUP}ed article (@code{gnus-souped-mark}).  @xref{SOUP}.
 
 @item Q
 @vindex gnus-sparse-mark
 Sparsely reffed article (@code{gnus-sparse-mark}).  @xref{Customizing
-Threading} 
+Threading}.
 
 @item M
 @vindex gnus-duplicate-mark
 Article marked as read by duplicate suppression
-(@code{gnus-duplicated-mark}).  @xref{Duplicate Suppression}
+(@code{gnus-duplicated-mark}).  @xref{Duplicate Suppression}.
 
 @end table
 
 All these marks just mean that the article is marked as read, really.
-They are interpreted differently by the adaptive scoring scheme,
-however.
+They are interpreted differently when doing adaptive scoring, though.
 
 One more special mark, though:
 
 @table @samp
 @item E
 @vindex gnus-expirable-mark
-You can also mark articles as @dfn{expirable} (or have them marked as
-such automatically).  That doesn't make much sense in normal groups,
-because a user does not control the expiring of news articles, but in
-mail groups, for instance, articles that are marked as @dfn{expirable}
-can be deleted by Gnus at any time.  Expirable articles are marked with
-@samp{E} (@code{gnus-expirable-mark}).
+Marked as expirable (@code{gnus-expirable-mark}).
+
+Marking articles as @dfn{expirable} (or have them marked as such
+automatically) doesn't make much sense in normal groups---a user doesn't
+control the expiring of news articles, but in mail groups, for instance,
+articles that are marked as @dfn{expirable} can be deleted by Gnus at
+any time.
 @end table
 
 
@@ -3554,7 +3938,7 @@ You can set a bookmark in the current article.  Say you are reading a
 long thesis on cats' urinary tracts, and have to go home for dinner
 before you've finished reading the thesis.  You can then set a bookmark
 in the article, and Gnus will jump to this bookmark the next time it
-encounters the article.
+encounters the article.  @xref{Setting Marks}
 
 @item
 @vindex gnus-replied-mark
@@ -3655,8 +4039,7 @@ Mark all articles that have the same subject as the current one as read
 @item M C
 @kindex M C (Summary)
 @findex gnus-summary-catchup
-Mark all unread articles in the group as read
-(@code{gnus-summary-catchup}).
+Mark all unread articles as read (@code{gnus-summary-catchup}).
 
 @item M C-c
 @kindex M C-c (Summary)
@@ -3768,6 +4151,12 @@ Remove the process mark, if any, from the current article
 Remove the process mark from all articles
 (@code{gnus-summary-unmark-all-processable}). 
 
+@item M P i
+@kindex M P i (Summary)
+@findex gnus-uu-invert-processable
+Invert the list of process marked articles
+(@code{gnus-uu-invert-processable}). 
+
 @item M P R
 @kindex M P R (Summary)
 @findex gnus-uu-mark-by-regexp
@@ -3879,6 +4268,14 @@ dormant articles will also be excluded.
 Ask for a mark and then limit to all articles that have not been marked
 with that mark (@code{gnus-summary-limit-to-marks}).
 
+@item / t
+@kindex / t (Summary)
+@findex gnus-summary-limit-to-age
+Ask for a number and then limit the summary buffer to articles that are
+older than (or equal to) that number of days
+(@code{gnus-summary-limit-to-marks}).  If given a prefix, limit to
+articles that are younger than that number of days.
+
 @item / n
 @kindex / n (Summary)
 @findex gnus-summary-limit-to-articles
@@ -3938,9 +4335,9 @@ also mark excluded ticked and dormant articles as read.
 @cindex threading
 @cindex article threading
 
-Gnus threads articles by default.  @dfn{To thread} is to put replies to
-articles directly after the articles they reply to---in a hierarchical
-fashion.
+Gnus threads articles by default.  @dfn{To thread} is to put responses
+to articles directly after the articles they respond to---in a
+hierarchical fashion.
 
 @menu
 * Customizing Threading::     Variables you can change to affect the threading.
@@ -4005,7 +4402,8 @@ everything in sight into one thread, which isn't very helpful.
 
 @cindex fuzzy article gathering
 If you set this variable to the special value @code{fuzzy}, Gnus will
-use a fuzzy string comparison algorithm on the subjects.
+use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
+Matching}). 
 
 @item gnus-simplify-subject-fuzzy-regexp
 @vindex gnus-simplify-subject-fuzzy-regexp
@@ -4023,20 +4421,21 @@ as 10, you might consider setting this variable to something sensible:
 (setq gnus-simplify-ignored-prefixes
       (concat 
        "\\`\\[?\\("
+       (mapconcat 
+        'identity
+        '("looking"
+          "wanted" "followup" "summary\\( of\\)?"
+          "help" "query" "problem" "question" 
+          "answer" "reference" "announce"
+          "How can I" "How to" "Comparison of"
+          ;; ...
+          )
+        "\\|")
+       "\\)\\s *\\("
        (mapconcat 'identity
-                  '("looking"
-                     "wanted" "followup" "summary\\( of\\)?"
-                     "help" "query" "problem" "question" 
-                     "answer" "reference" "announce"
-                     "How can I" "How to" "Comparison of"
-                     ;; ...
-                     )
+                  '("for" "for reference" "with" "about")
                   "\\|")
-                  "\\)\\s *\\("
-                  (mapconcat 'identity
-                             '("for" "for reference" "with" "about")
-                             "\\|")
-                  "\\)?\\]?:?[ \t]*"))
+       "\\)?\\]?:?[ \t]*"))
 @end lisp
 
 All words that match this regexp will be removed before comparing two
@@ -4130,6 +4529,13 @@ Don't gather loose threads.
 If non-@code{nil}, all threads will be hidden when the summary buffer is
 generated.
 
+@item gnus-thread-expunge-below
+@vindex gnus-thread-expunge-below
+All threads that have a total score (as defined by
+@code{gnus-thread-score-function}) less than this number will be
+expunged.  This variable is @code{nil} by default, which means that no
+threads are expunged.
+
 @item gnus-thread-hide-killed
 @vindex gnus-thread-hide-killed
 if you kill a thread and this variable is non-@code{nil}, the subtree
@@ -4145,7 +4551,15 @@ in a new thread.
 @item gnus-thread-indent-level
 @vindex gnus-thread-indent-level
 This is a number that says how much each sub-thread should be indented.
-The default is @code{4}.
+The default is 4.
+
+@item gnus-parse-headers-hook
+@vindex gnus-parse-headers-hook
+Hook run before parsing any headers.  The default value is
+@code{(gnus-decode-rfc1522)}, which means that QPized headers will be
+slightly decoded in a hackish way.  This is likely to change in the
+future when Gnus becomes @sc{MIME}ified.
+
 @end table
 
 
@@ -4160,7 +4574,7 @@ The default is @code{4}.
 @kindex T k (Summary)
 @kindex M-C-k (Summary)
 @findex gnus-summary-kill-thread
-Mark all articles in the current sub-thread as read
+Mark all articles in the current (sub-)thread as read
 (@code{gnus-summary-kill-thread}).  If the prefix argument is positive,
 remove all marks instead.  If the prefix argument is negative, tick
 articles instead.
@@ -4170,25 +4584,25 @@ articles instead.
 @kindex T l (Summary)
 @kindex M-C-l (Summary)
 @findex gnus-summary-lower-thread
-Lower the score of the current thread
+Lower the score of the current (sub-)thread
 (@code{gnus-summary-lower-thread}). 
 
 @item T i
 @kindex T i (Summary)
 @findex gnus-summary-raise-thread
-Increase the score of the current thread
+Increase the score of the current (sub-)thread
 (@code{gnus-summary-raise-thread}).
 
 @item T #
 @kindex T # (Summary)
 @findex gnus-uu-mark-thread
-Set the process mark on the current thread
+Set the process mark on the current (sub-)thread
 (@code{gnus-uu-mark-thread}).
 
 @item T M-#
 @kindex T M-# (Summary)
 @findex gnus-uu-unmark-thread
-Remove the process mark from the current thread
+Remove the process mark from the current (sub-)thread
 (@code{gnus-uu-unmark-thread}).
 
 @item T T
@@ -4199,13 +4613,13 @@ Toggle threading (@code{gnus-summary-toggle-threads}).
 @item T s
 @kindex T s (Summary)
 @findex gnus-summary-show-thread
-Expose the thread hidden under the current article, if any
+Expose the (sub-)thread hidden under the current article, if any
 (@code{gnus-summary-show-thread}).
 
 @item T h
 @kindex T h (Summary)
 @findex gnus-summary-hide-thread
-Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
+Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
 
 @item T S
 @kindex T S (Summary)
@@ -4274,7 +4688,8 @@ is non-@code{nil} (which it is by default), subjects will be ignored
 when doing thread commands.  If this variable is @code{nil}, articles in
 the same thread with different subjects will not be included in the
 operation in question.  If this variable is @code{fuzzy}, only articles
-that have subjects that are fuzzily equal will be included.
+that have subjects that are fuzzily equal will be included (@pxref{Fuzzy
+Matching}).
 
 
 @node Sorting
@@ -4365,6 +4780,8 @@ say something like:
 @node Asynchronous Fetching
 @section Asynchronous Article Fetching
 @cindex asynchronous article fetching
+@cindex article pre-fetch
+@cindex pre-fetch
 
 If you read your news from an @sc{nntp} server that's far away, the
 network latencies may make reading articles a chore.  You have to wait
@@ -4407,6 +4824,33 @@ the next 30 articles.  If this variable is @code{t}, the backend will
 pre-fetch all the articles that it can without bound.  If it is
 @code{nil}, no pre-fetching will be made.
 
+@vindex gnus-async-prefetch-article-p
+@findex gnus-async-read-p
+There are probably some articles that you don't want to pre-fetch---read
+articles, for instance.  Which articles to pre-fetch is controlled by
+the @code{gnus-async-prefetch-article-p} variable.  This function should
+return non-@code{nil} when the article in question is to be
+pre-fetched.  The default is @code{gnus-async-read-p}, which returns
+@code{nil} on read articles.  The function is called with an article
+data structure as the only parameter.
+
+If, for instance, you wish to pre-fetch only unread articles that are
+shorter than 100 lines, you could say something like:
+
+@lisp
+(defun my-async-short-unread-p (data)
+  "Return non-nil for short, unread articles."
+  (and (gnus-data-unread-p data)
+       (< (mail-header-lines (gnus-data-header data))
+          100)))
+
+(setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
+@end lisp
+
+These functions will be called many, many times, so they should
+preferrably be short and sweet to avoid slowing down Gnus too much.
+It's also probably a good idea to byte-compile things like this.
+
 @vindex gnus-prefetched-article-deletion-strategy
 Articles have to be removed from the asynch buffer sooner or later.  The
 @code{gnus-prefetched-article-deletion-strategy} says when to remove
@@ -4614,6 +5058,12 @@ Save the current article in rmail format
 Save the current article in plain file format
 (@code{gnus-summary-save-article-file}). 
 
+@item O F
+@kindex O F (Summary)
+@findex gnus-summary-write-article-file
+Write the current article in plain file format, overwriting any previous
+file contents (@code{gnus-summary-write-article-file}). 
+
 @item O b
 @kindex O b (Summary)
 @findex gnus-summary-save-article-body-file
@@ -4724,19 +5174,19 @@ available functions that generate names:
 
 @item gnus-Numeric-save-name
 @findex gnus-Numeric-save-name
-Generates file names that look like @file{~/News/Alt.andrea-dworkin/45}.
+File names like @file{~/News/Alt.andrea-dworkin/45}.
 
 @item gnus-numeric-save-name
 @findex gnus-numeric-save-name
-Generates file names that look like @file{~/News/alt.andrea-dworkin/45}.
+File names like @file{~/News/alt.andrea-dworkin/45}.
 
 @item gnus-Plain-save-name
 @findex gnus-Plain-save-name
-Generates file names that look like @file{~/News/Alt.andrea-dworkin}.
+File names like @file{~/News/Alt.andrea-dworkin}.
 
 @item gnus-plain-save-name
 @findex gnus-plain-save-name
-Generates file names that look like @file{~/News/alt.andrea-dworkin}.
+File names like @file{~/News/alt.andrea-dworkin}.
 @end table
 
 @vindex gnus-split-methods
@@ -4985,8 +5435,8 @@ This variable is consulted first when viewing files.  If you wish to use,
 for instance, @code{sox} to convert an @samp{.au} sound file, you could
 say something like:
 @lisp
-       (setq gnus-uu-user-view-rules
-         (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
+(setq gnus-uu-user-view-rules
+      (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
 @end lisp
 
 @item gnus-uu-user-view-rules-end
@@ -5024,6 +5474,13 @@ View the file.
 Move the file (if you're using a saving function.)
 @end table
 
+@item gnus-uu-be-dangerous
+@vindex gnus-uu-be-dangerous
+Specifies what to do if unusual situations arise during decoding.  If
+@code{nil}, be as conservative as possible.  If @code{t}, ignore things
+that didn't work, and overwrite existing files.  Otherwise, ask each
+time.
+
 @item gnus-uu-ignore-files-by-name
 @vindex gnus-uu-ignore-files-by-name
 Files with name matching this regular expression won't be viewed.
@@ -5184,6 +5641,7 @@ these articles easier.
 
 @menu
 * Article Highlighting::    You want to make the article look like fruit salad.
+* Article Fontisizing::     Making emphasized text look niced.
 * Article Hiding::          You also want to make certain info go away.
 * Article Washing::         Lots of way-neat functions to make life better.
 * Article Buttons::         Click on URLs, Message-IDs, addresses and the like.
@@ -5291,6 +5749,58 @@ default.
 @end table
 
 
+@node Article Fontisizing
+@subsection Article Fontisizing
+@cindex emphasis
+@cindex article emphasis
+
+@findex gnus-article-emphasize
+@kindex W e (Summary)
+People commonly add emphasis to words in news articles by writing things
+like @samp{_this_} or @samp{*this*}.  Gnus can make this look nicer by
+running the article through the @kbd{W e}
+(@code{gnus-article-emphasize}) command.
+
+@vindex gnus-article-emphasis
+How the emphasis is computed is controlled by the
+@code{gnus-article-emphasis} variable.  This is an alist where the first
+element is a regular expression to be matched.  The second is a number
+that says what regular expression grouping used to find the entire
+emphasized word.  The third is a number that says what regexp grouping
+should be displayed and highlighted.  (The text between these two
+groupings will be hidden.)  The fourth is the face used for
+highlighting.
+
+@lisp
+(setq gnus-article-emphasis
+      '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
+        ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
+@end lisp
+
+@vindex gnus-emphasis-underline
+@vindex gnus-emphasis-bold
+@vindex gnus-emphasis-italic
+@vindex gnus-emphasis-underline-bold
+@vindex gnus-emphasis-underline-italic
+@vindex gnus-emphasis-bold-italic
+@vindex gnus-emphasis-underline-bold-italic
+By default, there are seven rules, and they use the following faces:
+@code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
+@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
+@code{gnus-emphasis-underline-italic},
+@code{gnus-emphasis-undeline-bold}, and
+@code{gnus-emphasis-underline-bold-italic}.  
+
+If you want to change these faces, you can either use @kbd{M-x
+customize}, or you can use @code{copy-face}.  For instance, if you want
+to make @code{gnus-emphasis-italic} use a red face instead, you could
+say something like:
+
+@lisp
+(copy-face 'red 'gnus-emphasis-italic)
+@end lisp
+
+
 @node Article Hiding
 @subsection Article Hiding
 @cindex article hiding
@@ -5331,7 +5841,7 @@ Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}).
 @item W W P
 @kindex W W P (Summary)
 @findex gnus-article-hide-pem
-Hide @sc{pem} (privacy enhavnced hessages) gruft
+Hide @sc{pem} (privacy enhanced messages) gruft
 (@code{gnus-article-hide-pem}).
 
 @item W W c
@@ -5448,6 +5958,9 @@ Do word wrap (@code{gnus-article-fill-cited-article}).  If you use this
 function in @code{gnus-article-display-hook}, it should be run fairly
 late and certainly after any highlighting.
 
+You can give the command a numerical prefix to specify the width to use
+when filling.
+
 @item W c
 @kindex W c (Summary)
 @findex gnus-article-remove-cr
@@ -5517,6 +6030,12 @@ Remove all blank lines at the end of the article
 Do all the three commands above
 (@code{gnus-article-strip-blank-lines}).
 
+@item W E s
+@kindex W E s (Summary)
+@findex gnus-article-strip-leading-space
+Remove all white space from the beginning of all lines of the article
+body (@code{gnus-article-strip-leading-space}).
+
 @end table
 
 
@@ -5553,7 +6072,7 @@ external reference.  Here's a typical regexp that match embedded URLs:
 @item button-par
 Gnus has to know which parts of the match is to be highlighted.  This is
 a number that says what sub-expression of the regexp that is to be
-highlighted.  If you want it all highlighted, you use @code{0} here.
+highlighted.  If you want it all highlighted, you use 0 here.
 
 @item use-p
 This form will be @code{eval}ed, and if the result is non-@code{nil},
@@ -5594,7 +6113,7 @@ default values of the variables above.
 
 @item gnus-article-button-face
 @vindex gnus-article-button-face
-Face used on bottons.
+Face used on buttons.
 
 @item gnus-article-mouse-face
 @vindex gnus-article-mouse-face
@@ -5623,6 +6142,17 @@ Display the date in UT (aka. GMT, aka ZULU)
 @findex gnus-article-date-local
 Display the date in the local timezone (@code{gnus-article-date-local}).
 
+@item W T s
+@kindex W T s (Summary)
+@vindex gnus-article-time-format
+@findex gnus-article-date-user
+@findex format-time-string
+Display the date using a user-defined format
+(@code{gnus-article-date-user}).  The format is specified by the
+@code{gnus-article-time-format} variable, and is a string that's passed
+to @code{format-time-string}.  See the documentation of that variable
+for a list possible format specs.
+
 @item W T e
 @kindex W T e (Summary)
 @findex gnus-article-date-lapsed
@@ -5651,7 +6181,7 @@ Each article is divided into two parts---the head and the body.  The
 body can be divided into a signature part and a text part.  The variable
 that says what is to be considered a signature is
 @code{gnus-signature-separator}.  This is normally the standard
-@samp{"^-- $"} as mandated by son-of-RFC 1036.  However, many people use
+@samp{^-- $} as mandated by son-of-RFC 1036.  However, many people use
 non-standard signature separators, so this variable can also be a list
 of regular expressions to be tested, one by one.  (Searches are done
 from the end of the body towards the beginning.)  One likely value is:
@@ -5693,6 +6223,24 @@ This variable can also be a list where the elements may be of the types
 listed above.  
 
 
+@node Article Commands
+@section Article Commands
+
+@table @kbd
+
+@item A P
+@cindex PostScript
+@cindex printing
+@kindex A P (Summary)
+@vindex gnus-ps-print-hook
+@findex gnus-summary-print-article 
+Generate and print a PostScript image of the article buffer
+(@code{gnus-summary-print-article}).  @code{gnus-ps-print-hook} will be
+run just before printing the buffer.
+
+@end table
+
+
 @node Summary Sorting
 @section Summary Sorting
 @cindex summary sorting
@@ -5722,6 +6270,11 @@ Sort by subject (@code{gnus-summary-sort-by-subject}).
 @findex gnus-summary-sort-by-date
 Sort by date (@code{gnus-summary-sort-by-date}).
 
+@item C-c C-s C-l
+@kindex C-c C-s C-l (Summary)
+@findex gnus-summary-sort-by-lines
+Sort by lines (@code{gnus-summary-sort-by-lines}).
+
 @item C-c C-s C-i
 @kindex C-c C-s C-i (Summary)
 @findex gnus-summary-sort-by-score
@@ -5767,12 +6320,14 @@ header of the article by pushing @kbd{A R}
 
 @findex gnus-summary-refer-article
 @kindex M-^ (Summary)
+@cindex Message-ID
+@cindex fetching by Message-ID
 You can also ask the @sc{nntp} server for an arbitrary article, no
 matter what group it belongs to.  @kbd{M-^}
 (@code{gnus-summary-refer-article}) will ask you for a
-@code{Message-ID}, which is one of those long thingies that look
-something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}.  You have to get
-it all exactly right.  No fuzzy searches, I'm afraid.
+@code{Message-ID}, which is one of those long, hard-to-read thingies
+that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}.  You
+have to get it all exactly right.  No fuzzy searches, I'm afraid.
 
 @vindex gnus-refer-article-method
 If the group you are reading is located on a backend that does not
@@ -6033,10 +6588,10 @@ Here's and example from a horizontal tree buffer:
 
 @example
 @{***@}-(***)-[odd]-[Gun]
-     |     \[Jan]
-     |     \[odd]-[Eri]
-     |     \(***)-[Eri]
-     |           \[odd]-[Paa]
+     |      \[Jan]
+     |      \[odd]-[Eri]
+     |      \(***)-[Eri]
+     |            \[odd]-[Paa]
      \[Bjo]
      \[Gun]
      \[Gun]-[Jor]
@@ -6078,7 +6633,7 @@ Expire all expirable articles in the group
 @item B M-C-e
 @kindex B M-C-e (Summary)
 @findex gnus-summary-expire-articles-now
-Expunge all the expirable articles in the group
+Delete all the expirable articles in the group
 (@code{gnus-summary-expire-articles-now}).  This means that @strong{all}
 articles that are eligible for expiry in the current group will
 disappear forever into that big @file{/dev/null} in the sky.
@@ -6124,6 +6679,9 @@ name, a @code{From} header and a @code{Subject} header.
 @kindex B r (Summary)
 @findex gnus-summary-respool-article
 Respool the mail article (@code{gnus-summary-move-article}).
+@code{gnus-summary-respool-default-method} will be used as the default
+select method when respooling.  This variable is @code{nil} by default,
+which means that the current group select method will be used instead.
 
 @item B w
 @itemx e
@@ -6166,6 +6724,13 @@ variable that uses the same syntax as @code{gnus-split-methods}
 (@pxref{Saving Articles}).  You may customize that variable to create
 suggestions you find reasonable.
 
+@lisp
+(setq gnus-move-split-methods
+      '(("^From:.*Lars Magne" "nnml:junk")
+        ("^Subject:.*gnus" "nnfolder:important")
+        (".*" "nnml:misc")))
+@end lisp
+
 
 @node Various Summary Stuff
 @section Various Summary Stuff
@@ -6173,6 +6738,7 @@ suggestions you find reasonable.
 @menu
 * Summary Group Information::         Information oriented commands.
 * Searching for Articles::            Multiple article commands.
+* Summary Generation Commands::       (Re)generating the summary buffer.
 * Really Various Summary Commands::   Those pesky non-conformant commands.
 @end menu
 
@@ -6225,8 +6791,8 @@ rereading the description from the server.
 @item H h
 @kindex H h (Summary)
 @findex gnus-summary-describe-briefly
-Give a very brief description of the most important summary keystrokes
-(@code{gnus-summary-describe-briefly}). 
+Give an extremely brief description of the most important summary
+keystrokes (@code{gnus-summary-describe-briefly}).
 
 @item H i
 @kindex H i (Summary)
@@ -6266,6 +6832,24 @@ Perform any operation on all articles that have been marked with
 the process mark (@code{gnus-summary-universal-argument}).
 @end table
 
+@node Summary Generation Commands
+@subsection Summary Generation Commands
+
+@table @kbd
+
+@item Y g
+@kindex Y g (Summary)
+@findex gnus-summary-prepare
+Regenerate the current summary buffer (@code{gnus-summary-prepare}).
+
+@item Y c 
+@kindex Y c (Summary)
+@findex gnus-summary-insert-cached-articles
+Pull all cached articles (for the current group) into the summary buffer
+(@code{gnus-summary-insert-cached-articles}).
+
+@end table
+
 
 @node Really Various Summary Commands
 @subsection Really Various Summary Commands
@@ -6309,11 +6893,6 @@ to have truncation switched off while reading articles.
 Expand the summary buffer window (@code{gnus-summary-expand-window}).
 If given a prefix, force an @code{article} window configuration. 
 
-@item M-C-g
-@kindex M-C-g (Summary)
-@findex gnus-summary-prepare
-Regenerate the current summary buffer (@code{gnus-summary-prepare}).
-
 @end table
 
 
@@ -6339,7 +6918,8 @@ Exit the current group and update all information on the group
 called before doing much of the exiting, and calls
 @code{gnus-summary-expire-articles} by default.
 @code{gnus-summary-exit-hook} is called after finishing the exiting
-process. 
+process.  @code{gnus-group-no-more-groups-hook} is run when returning to
+group mode having no more (unread) groups.
 
 @item Z E
 @itemx Q
@@ -6396,6 +6976,14 @@ Exit the group and go to the next group
 @findex gnus-summary-prev-group
 Exit the group and go to the previous group
 (@code{gnus-summary-prev-group}). 
+
+@item Z s
+@kindex Z s (Summary)
+@findex gnus-summary-save-newsrc
+Save the current number of read/marked articles in the dribble buffer
+and then save the dribble buffer (@code{gnus-summary-save-newsrc}).  If
+given a prefix, also save the @file{.newsrc} file(s).  Using this
+command will make exit without updating (the @kbd{Q} command) worthless.
 @end table
 
 @vindex gnus-exit-group-hook
@@ -6478,14 +7066,14 @@ considerably.
 
 C'est la vie.
 
-For an alternative approach, @xref{Duplicate Suppression}.
+For an alternative approach, @pxref{Duplicate Suppression}.
 
 
 @node Duplicate Suppression
 @section Duplicate Suppression
 
 By default, Gnus tries to make sure that you don't have to read the same
-article more than once by utilizing the crossposing mechanism
+article more than once by utilizing the crossposting mechanism
 (@pxref{Crosspost Handling}).  However, that simple and efficient
 approach may not work satisfactorily for some users for various
 reasons.  
@@ -6516,7 +7104,7 @@ will remember the @code{Message-ID}s of all articles you have read or
 otherwise marked as read, and then, as if by magic, mark them as read
 all subsequent times you see them---in @emph{all} groups.  Using this
 mechanism is quite likely to be somewhat inefficient, but not overly
-so.  It's certainly preferrable to reading the same articles more than
+so.  It's certainly preferable to reading the same articles more than
 once.
 
 Duplicate suppression is not a very subtle instrument.  It's more like a
@@ -6570,7 +7158,7 @@ tell Gnus otherwise.
 * Hiding Headers::        Deciding what headers should be displayed.
 * Using MIME::            Pushing articles through @sc{mime} before reading them.
 * Customizing Articles::  Tailoring the look of the articles.
-* Article Keymap::        Keystrokes available in the article buffer
+* Article Keymap::        Keystrokes available in the article buffer.
 * Misc Article::          Other stuff.
 @end menu
 
@@ -6708,12 +7296,14 @@ other naughty stuff in innocent-looking articles.
 @vindex gnus-show-mime-method
 @vindex gnus-strict-mime
 @findex metamail-buffer
-Gnus handles @sc{mime} by shoving the articles through
+Gnus handles @sc{mime} by pushing the articles through
 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
 default.  Set @code{gnus-show-mime} to @code{t} if you want to use
 @sc{mime} all the time.  However, if @code{gnus-strict-mime} is
 non-@code{nil}, the @sc{mime} method will only be used if there are
-@sc{mime} headers in the article.
+@sc{mime} headers in the article.  If you have @code{gnus-show-mime}
+set, then you'll see some unfortunate display glitches in the article
+buffer.  These can't be avoided.
 
 It might be best to just use the toggling functions from the summary
 buffer to avoid getting nasty surprises. (For instance, you enter the
@@ -6738,13 +7328,14 @@ been inserted into the article buffer.  It is meant to handle all
 treatment of the article before it is displayed. 
 
 @findex gnus-article-maybe-highlight
-By default it contains @code{gnus-article-hide-headers},
+By default this hook just contains @code{gnus-article-hide-headers},
 @code{gnus-article-treat-overstrike}, and
 @code{gnus-article-maybe-highlight}, but there are thousands, nay
 millions, of functions you can put in this hook.  For an overview of
 functions @pxref{Article Highlighting}, @pxref{Article Hiding},
 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article
-Date}.
+Date}.  Note that the order of functions in this hook might affect
+things, so you may have to fiddle a bit to get the desired results. 
 
 You can, of course, write your own functions.  The functions are called
 from the article buffer, and you can do anything you like, pretty much.
@@ -6843,6 +7434,11 @@ hiding headers, and the like.
 @vindex gnus-article-mode-hook
 Hook called in article mode buffers.
 
+@item gnus-article-mode-syntax-table
+@vindex gnus-article-mode-syntax-table
+Syntax table used in article buffers.  It is initialized from
+@code{text-mode-syntax-table}. 
+
 @vindex gnus-article-mode-line-format
 @item gnus-article-mode-line-format
 This variable is a format string along the same lines as
@@ -6964,7 +7560,7 @@ this server is down, what do you do then?  To override this variable you
 can use a non-zero prefix to the @kbd{C-c C-c} command to force using
 the ``current'' server for posting.
 
-If you give a zero prefix (i. e., @kbd{C-u 0 C-c C-c}) to that command,
+If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command,
 Gnus will prompt you for what method to use for posting.  
 
 You can also set @code{gnus-post-method} to a list of select methods.
@@ -7011,19 +7607,25 @@ spell-checking via the @code{ispell} package:
 @cindex archived messages
 @cindex sent messages
 
-Gnus provides a few different methods for storing the mail you send.
-The default method is to use the @dfn{archive virtual server} to store
-the mail.  If you want to disable this completely, you should set
-@code{gnus-message-archive-group} to @code{nil}.
+Gnus provides a few different methods for storing the mail and news you
+send.  The default method is to use the @dfn{archive virtual server} to
+store the messages.  If you want to disable this completely, the
+@code{gnus-message-archive-group} variable should be @code{nil}, which
+is the default.
 
 @vindex gnus-message-archive-method
 @code{gnus-message-archive-method} says what virtual server Gnus is to
-use to store sent messages.  It is @code{(nnfolder "archive"
-(nnfolder-directory "~/Mail/archive/"))} by default, but you can use any
-mail select method (@code{nnml}, @code{nnmbox}, etc.).  However,
-@code{nnfolder} is a quite likeable select method for doing this sort of
-thing.  If you don't like the default directory chosen, you could say
-something like:
+use to store sent messages.  The default is:
+
+@lisp
+(nnfolder "archive"
+          (nnfolder-directory "~/Mail/archive/"))
+@end lisp
+
+You can, however, use any mail select method (@code{nnml},
+@code{nnmbox}, etc.).  @code{nnfolder} is a quite likeable select method
+for doing this sort of thing, though.  If you don't like the default
+directory chosen, you could say something like:
 
 @lisp
 (setq gnus-message-archive-method
@@ -7102,15 +7704,14 @@ if (using @kbd{G r} in the group buffer) to something
 nice---@samp{misc-mail-september-1995}, or whatever.  New messages will
 continue to be stored in the old (now empty) group.
 
-That's the default method of archiving sent mail.  Gnus also offers two
-other variables for the people who don't like the default method.  In
-that case you should set @code{gnus-message-archive-group} to
-@code{nil}; this will disable archiving.
+That's the default method of archiving sent messages.  Gnus also a
+different way for the people who don't like the default method.  In that
+case you should set @code{gnus-message-archive-group} to @code{nil};
+this will disable archiving.
 
 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
 use a different value for @code{gnus-message-archive-group} there.
 
-
 @table @code
 @item gnus-outgoing-message-group 
 @vindex gnus-outgoing-message-group 
@@ -7123,6 +7724,9 @@ If you want to have greater control over what group to put each
 message in, you can set this variable to a function that checks the
 current newsgroup name and then returns a suitable group name (or list
 of names).
+
+This variable can be used instead of @code{gnus-message-archive-group},
+but the latter is the preferred method.
 @end table
 
 
@@ -7301,7 +7905,7 @@ personal mail group.
 
 A foreign group (or any group, really) is specified by a @dfn{name} and
 a @dfn{select method}.  To take the latter first, a select method is a
-list where the first element says what backend to use (eg. @code{nntp},
+list where the first element says what backend to use (e.g. @code{nntp},
 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server
 name}.  There may be additional elements in the select method, where the
 value may have special meaning for the backend in question.
@@ -7314,9 +7918,9 @@ group as.
 
 For instance, the group @samp{soc.motss} on the @sc{nntp} server
 @samp{some.where.edu} will have the name @samp{soc.motss} and select
-method @code{(nntp "some.where.edu")}.  Gnus will call this group, in
-all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the
-@code{nntp} backend just knows this group as @samp{soc.motss}.
+method @code{(nntp "some.where.edu")}.  Gnus will call this group
+@samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp}
+backend just knows this group as @samp{soc.motss}.
 
 The different methods all have their peculiarities, of course.
 
@@ -7346,7 +7950,7 @@ use, and what parameters to set by specifying a @dfn{select method}.
 
 These select methods specifications can sometimes become quite
 complicated---say, for instance, that you want to read from the
-@sc{nntp} server @samp{news.funet.fi} on port number @code{13}, which
+@sc{nntp} server @samp{news.funet.fi} on port number 13, which
 hangs if queried for @sc{nov} headers and has a buggy select.  Ahem.
 Anyways, if you had to specify that for each group that used this
 server, that would be too much work, so Gnus offers a way of naming
@@ -7360,6 +7964,7 @@ To enter the server buffer, user the @kbd{^}
 * Server Commands::           Commands to manipulate servers.
 * Example Methods::           Examples server specifications.
 * Creating a Virtual Server:: An example session.
+* Server Variables::          Which variables to set.
 * Servers and Methods::       You can use server names as select methods.
 * Unavailable Servers::       Some servers you try to contact may be down.
 @end menu
@@ -7461,6 +8066,13 @@ Request that the server scan its sources for new articles
 (@code{gnus-server-scan-server}).  This is mainly sensible with mail
 servers. 
 
+@item g
+@kindex g (Server)
+@findex gnus-server-regenerate-server
+Request that the server regenerate all its data structures
+(@code{gnus-server-regenerate-server}).  This can be useful if you have
+a mail backend that has gotten out of synch.
+
 @end table
 
 
@@ -7487,7 +8099,7 @@ After these two elements, there may be a arbitrary number of
 @var{(variable form)} pairs.
 
 To go back to the first example---imagine that you want to read from
-port @code{15} from that machine.  This is what the select method should
+port 15 from that machine.  This is what the select method should
 look like then:
 
 @lisp
@@ -7517,6 +8129,22 @@ Here's the method for a public spool:
       (nnmh-get-new-mail nil))
 @end lisp
 
+If you are behind a firewall and only have access to the @sc{nntp}
+server from the firewall machine, you can instruct Gnus to @code{rlogin}
+on the firewall machine and telnet from there to the @sc{nntp} server.
+Doing this can be rather fiddly, but your virtual server definition
+should probably look something like this:
+
+@lisp
+(nntp "firewall"
+      (nntp-address "the.firewall.machine")
+      (nntp-open-connection-function nntp-open-rlogin)
+      (nntp-end-of-line "\n")
+      (nntp-rlogin-parameters
+       ("telnet" "the.real.nntp.host" "nntp")))
+@end lisp
+
+
 
 @node Creating a Virtual Server
 @subsection Creating a Virtual Server
@@ -7543,9 +8171,9 @@ Change that to:
 
 @lisp
 (nnspool "cache"
-        (nnspool-spool-directory "~/News/cache/")
-        (nnspool-nov-directory "~/News/cache/")
-        (nnspool-active-file "~/News/cache/active"))
+         (nnspool-spool-directory "~/News/cache/")
+         (nnspool-nov-directory "~/News/cache/")
+         (nnspool-active-file "~/News/cache/active"))
 @end lisp
 
 Type @kbd{C-c C-c} to return to the server buffer.  If you now press
@@ -7553,11 +8181,38 @@ Type @kbd{C-c C-c} to return to the server buffer.  If you now press
 buffer, and you should be able to enter any of the groups displayed.
 
 
+@node Server Variables
+@subsection Server Variables
+
+One sticky point when defining variables (both on backends and in Emacs
+in general) is that some variables are typically initialized from other
+variables when the definition of the variables is being loaded.  If you
+change the "base" variable after the variables have been loaded, you
+won't change the "derived" variables.
+
+This typically affects directory and file variables.  For instance,
+@code{nnml-directory} is @file{~/Mail/} by default, and all @code{nnml}
+directory variables are initialized from that variable, so
+@code{nnml-active-file} will be @file{~/Mail/active}.  If you define a
+new virtual @code{nnml} server, it will @emph{not} suffice to set just
+@code{nnml-directory}---you have to explicitly set all the file
+variables to be what you want them to be.  For a complete list of
+variables for each backend, see each backend's section later in this
+manual, but here's an example @code{nnml} definition:
+
+@lisp
+(nnml "public" 
+      (nnml-directory "~/my-mail/")
+      (nnml-active-file "~/my-mail/active")
+      (nnml-newsgroups-file "~/my-mail/newsgroups"))
+@end lisp
+
+
 @node Servers and Methods
 @subsection Servers and Methods
 
 Wherever you would normally use a select method
-(eg. @code{gnus-secondary-select-method}, in the group select method,
+(e.g. @code{gnus-secondary-select-method}, in the group select method,
 when browsing a foreign server) you can use a virtual server name
 instead.  This could potentially save lots of typing.  And it's nice all
 over.
@@ -7769,8 +8424,8 @@ server.
 
 @findex nntp-open-rlogin
 @findex nntp-open-network-stream
-@item nntp-open-server-function
-@vindex nntp-open-server-function
+@item nntp-open-connection-function
+@vindex nntp-open-connection-function
 This function is used to connect to the remote system.  Two pre-made
 functions are @code{nntp-open-network-stream}, which is the default, and
 simply connects to some port or other on the remote system.  The other
@@ -7780,7 +8435,7 @@ and then does a telnet to the @sc{nntp} server available there.
 @item nntp-rlogin-parameters
 @vindex nntp-rlogin-parameters
 If you use @code{nntp-open-rlogin} as the
-@code{nntp-open-server-function}, this list will be used as the
+@code{nntp-open-connection-function}, this list will be used as the
 parameter list given to @code{rsh}.
 
 @item nntp-end-of-line
@@ -7852,8 +8507,9 @@ server closes connection.
 @cindex news spool
 
 Subscribing to a foreign group from the local spool is extremely easy,
-and might be useful, for instance, to speed up reading groups like
-@samp{alt.binaries.pictures.furniture}.
+and might be useful, for instance, to speed up reading groups that
+contain very big articles---@samp{alt.binaries.pictures.furniture}, for
+instance. 
 
 Anyways, you just specify @code{nnspool} as the method and @samp{} (or
 anything else) as the address.
@@ -7934,6 +8590,7 @@ course.
 * Mail and Procmail::            Reading mail groups that procmail create.
 * Incorporating Old Mail::       What about the old mail you have?
 * Expiring Mail::                Getting rid of unwanted mail.
+* Washing Mail::                 Removing gruft from the mail you get.
 * Duplicates::                   Dealing with duplicated mail.
 * Not Reading Mail::             Using mail backends for reading other files.
 * Choosing a Mail Backend::      Gnus can read a variety of mail formats.
@@ -7965,12 +8622,12 @@ You will probably want to split the mail into several groups, though:
 
 @lisp
 (setq nnmail-split-methods
-  '(("junk" "^From:.*Lars Ingebrigtsen")
-    ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
-    ("other" "")))
+      '(("junk" "^From:.*Lars Ingebrigtsen")
+       ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
+       ("other" "")))
 @end lisp
 
-This will result in three new mail groups being created:
+This will result in three new @code{nnml} mail groups being created:
 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}.  All the
 mail that doesn't fit into the first two groups will be placed in the
 latter group.
@@ -8012,8 +8669,11 @@ argument.  It should return a non-@code{nil} value if it thinks that the
 mail belongs in that group.
 
 The last of these groups should always be a general one, and the regular
-expression should @emph{always} be @samp{} so that it matches any
-mails that haven't been matched by any of the other regexps.
+expression should @emph{always} be @samp{} so that it matches any mails
+that haven't been matched by any of the other regexps.  (These rules are
+processed from the beginning of the alist toward the end.  The first
+rule to make a match will "win", unless you have crossposting enabled.
+In that case, all matching rules will "win".)
 
 If you like to tinker with this yourself, you can set this variable to a
 function of your choice.  This function will be called without any
@@ -8041,6 +8701,11 @@ links.  If that's the case for you, set
 @code{nnmail-crosspost-link-function} to @code{copy-file}.  (This
 variable is @code{add-name-to-file} by default.)  
 
+@kindex M-x nnmail-split-history
+@kindex nnmail-split-history
+If you wish to see where the previous mail split put the messages, you
+can use the @kbd{M-x nnmail-split-history} command.
+
 Gnus gives you all the opportunity you could possibly want for shooting
 yourself in the foot.  Let's say you create a group that will contain
 all the mail you get from your boss.  And then you accidentally
@@ -8085,6 +8750,12 @@ password, you can either set @code{nnmail-pop-password-required} to
 @code{t} and be prompted for the password, or set
 @code{nnmail-pop-password} to the password itself.
 
+@code{nnmail-spool-file} can also be a list of mailboxes.
+
+Your Emacs has to have been configured with @samp{--with-pop} before
+compilation.  This is the default, but some installations have it
+switched off.
+
 When you use a mail backend, Gnus will slurp all your mail from your
 inbox and plonk it down in your home directory.  Gnus doesn't move any
 mail if you're not using a mail backend---you have to do a lot of magic
@@ -8121,7 +8792,7 @@ Hook run in the buffer where the mail headers of each message is kept
 just before the splitting based on these headers is done.  The hook is
 free to modify the buffer contents in any way it sees fit---the buffer
 is discarded after the splitting has been done, and no changes performed
-in the buffer will show up in any files.  @code{article-decode-rfc1522}
+in the buffer will show up in any files.  @code{gnus-article-decode-rfc1522}
 is one likely function to add to this hook.
 
 @vindex nnmail-pre-get-new-mail-hook
@@ -8155,19 +8826,27 @@ it will be used instead.
 This program is executed to move mail from the user's inbox to her home
 directory.  The default is @samp{movemail}.
 
+This can also be a function.  In that case, the function will be called
+with two parameters -- the name of the inbox, and the file to be moved
+to.
+
 @item nnmail-delete-incoming
 @vindex nnmail-delete-incoming
 @cindex incoming mail files
 @cindex deleting incoming files
 If non-@code{nil}, the mail backends will delete the temporary incoming
-file after splitting mail into the proper groups.  This is @code{nil} by
-default for reasons of security.
+file after splitting mail into the proper groups.  This is @code{t} by
+default.
 
-Since Red Gnus is an alpha release, it is to be expected to lose mail.
+@c This is @code{nil} by
+@c default for reasons of security.
+
+@c Since Red Gnus is an alpha release, it is to be expected to lose mail.
 (No Gnus release since (ding) Gnus 0.10 (or something like that) have
-lost mail, I think, but that's not the point.)  By not deleting the
-Incoming* files, one can be sure to not lose mail -- if Gnus totally
-whacks out, one can always recover what was lost.
+lost mail, I think, but that's not the point.  (Except certain versions
+of Red Gnus.))  By not deleting the Incoming* files, one can be sure to
+not lose mail -- if Gnus totally whacks out, one can always recover what
+was lost.
 
 Delete the @file{Incoming*} files at will.
 
@@ -8217,52 +8896,71 @@ Let's look at an example value of this variable first:
       ;; People...
       (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
    ;; Unmatched mail goes to the catch all group.
-   "misc.misc"))")
+   "misc.misc")
 @end lisp
 
 This variable has the format of a @dfn{split}.  A split is a (possibly)
 recursive structure where each split may contain other splits.  Here are
 the five possible split syntaxes:
 
-@table @dfn
+@enumerate
+
+@item 
+@samp{group}: If the split is a string, that will be taken as a group name. 
+
+@item
+@var{(FIELD VALUE SPLIT)}: If the split is a list, and the first
+element is a string, then that means that if header FIELD (a regexp)
+contains VALUE (also a regexp), then store the message as specified by
+SPLIT.
 
-@item GROUP 
-If the split is a string, that will be taken as a group name. 
+@item
+@var{(| SPLIT...)}: If the split is a list, and the first element is
+@code{|} (vertical bar), then process each SPLIT until one of them
+matches.  A SPLIT is said to match if it will cause the mail message to
+be stored in one or more groups.
 
-@item (FIELD VALUE SPLIT)
-If the split is a list, and the first element is a string, then that
-means that if header FIELD (a regexp) contains VALUE (also a regexp),
-then store the message as specified by SPLIT.
+@item
+@var{(& SPLIT...)}: If the split is a list, and the first element is
+@code{&}, then process all SPLITs in the list.
 
-@item (| SPLIT...)
-If the split is a list, and the first element is @code{|} (vertical
-bar), then process each SPLIT until one of them matches.  A SPLIT is
-said to match if it will cause the mail message to be stored in one or
-more groups.
+@item 
+@code{junk}: If the split is the symbol @code{junk}, then don't save
+this message anywhere.
 
-@item (& SPLIT...)
-If the split is a list, and the first element is @code{&}, then process
-all SPLITs in the list.
+@item
+@var{(: function arg1 arg2 ...)}:  If the split is a list, and the first
+element is @code{:}, then the second element will be called as a
+function with @var{args} given as arguments.  The function should return
+a SPLIT.
 
-@item junk
-Junk this article.
-@end table
+@end enumerate
 
-In these splits, FIELD must match a complete field name.  VALUE must
-match a complete word according to the fundamental mode syntax table.
-You can use @code{.*} in the regexps to match partial field names or
-words.
+In these splits, @var{FIELD} must match a complete field name.
+@var{VALUE} must match a complete word according to the fundamental mode
+syntax table.  You can use @code{.*} in the regexps to match partial
+field names or words.  In other words, all @var{VALUE}'s are wrapped in
+@samp{\<} and @samp{\>} pairs.
 
 @vindex nnmail-split-abbrev-alist
-FIELD and VALUE can also be lisp symbols, in that case they are expanded
-as specified by the variable @code{nnmail-split-abbrev-alist}.  This is
-an alist of cons cells, where the car of the cells contains the key, and
-the cdr contains a string.
+@var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they
+are expanded as specified by the variable
+@code{nnmail-split-abbrev-alist}.  This is an alist of cons cells, where
+the car of the cells contains the key, and the cdr contains a string.
 
 @vindex nnmail-split-fancy-syntax-table
 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect
 when all this splitting is performed.
 
+If you want to have Gnus create groups dynamically based on some
+information in the headers, you can say things like:
+
+@example
+(any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1")
+@end example
+
+That is, do @code{replace-match}-like substitions in the group names. 
+
 
 @node Mail and Procmail
 @subsection Mail and Procmail
@@ -8322,8 +9020,22 @@ Gnus to split the mail the normal way, you could set
 If you use @code{procmail} to split things directory into an @code{nnmh}
 directory (which you shouldn't do), you should set
 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from
-ever expiring the final article in a mail newsgroup.  This is quite,
-quite important.
+ever expiring the final article (i. e., the article with the highest
+article number) in a mail newsgroup.  This is quite, quite important.
+
+Here's an example setup:  The incoming spools are located in
+@file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming
+spool files have the same names as the equivalent groups).  The
+@code{nnfolder} backend is to be used as the mail interface, and the
+@code{nnfolder} directory is @file{~/fMail/}.
+
+@lisp
+(setq nnfolder-directory "~/fMail/")
+(setq nnmail-spool-file 'procmail)
+(setq nnmail-procmail-directory "~/incoming/")
+(setq gnus-secondary-select-methods '((nnfolder "")))
+(setq nnmail-procmail-suffix "")
+@end lisp
 
 
 @node Incorporating Old Mail
@@ -8407,6 +9119,12 @@ have all articles that you read marked as expirable automatically.  All
 articles that are marked as expirable have an @samp{E} in the first
 column in the summary buffer.
 
+Note that making a group auto-expirable don't mean that all read
+articles are expired---only the articles that are marked as expirable
+will be expired.  Also note the using the @kbd{d} command won't make
+groups expirable---only semi-automatic marking of articles as read will
+mark the articles as expirable in auto-expirable groups.
+
 Let's say you subscribe to a couple of mailing lists, and you want the
 articles you have read to disappear after a while:
 
@@ -8418,9 +9136,15 @@ articles you have read to disappear after a while:
 Another way to have auto-expiry happen is to have the element
 @code{auto-expire} in the group parameters of the group. 
 
+If you use adaptive scoring (@pxref{Adaptive Scoring}) and
+auto-expiring, you'll have problems.  Auto-expiring and adaptive scoring
+doesn't really mix very well.  
+
 @vindex nnmail-expiry-wait
 The @code{nnmail-expiry-wait} variable supplies the default time an
-expirable article has to live.  The default is seven days.  
+expirable article has to live.  Gnus starts counting days from when the
+message @emph{arrived}, not from when it was sent.  The default is seven
+days.
 
 Gnus also supplies a function that lets you fine-tune how long articles
 are to live, based on what group they are in.  Let's say you want to
@@ -8473,6 +9197,92 @@ wrong group and all your important mail has disappeared.  Be a
 @emph{man}!  Or a @emph{woman}!  Whatever you feel more comfortable
 with!  So there!
 
+Most people make most of their mail groups total-expirable, though. 
+
+
+@node Washing Mail
+@subsection Washing Mail
+@cindex mail washing
+@cindex list server brain damage
+@cindex incoming mail treatment
+
+Mailers and list servers are notorious for doing all sorts of really,
+really stupid things with mail.  ``Hey, RFC822 doesn't explicitly
+prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the
+end of all lines passing through our server, so let's do that!!!!1!''
+Yes, but RFC822 wasn't designed to be read by morons.  Things that were
+considered to be self-evident were not discussed.  So.  Here we are.
+
+Case in point:  The German version of Microsoft Exchange adds @samp{AW:
+} to the subjects of replies instead of @samp{Re: }.  I could pretend to
+be shocked and dismayed by this, but I haven't got the energy.  It is to
+laugh.
+
+Gnus provides a plethora of functions for washing articles while
+displaying them, but it might be nicer to do the filtering before
+storing the mail to disc.  For that purpose, we have three hooks and
+various functions that can be put in these hooks.
+
+@table @code
+@item nnmail-prepare-incoming-hook
+@vindex nnmail-prepare-incoming-hook
+This hook is called before doing anything with the mail and is meant for
+grand, sweeping gestures.  Functions to be used include:
+
+@table @code
+@item nnheader-ms-strip-cr
+@findex nnheader-ms-strip-cr
+Remove trailing carriage returns from each line.  This is default on
+Emacs running on MS machines.
+
+@end table
+
+@item nnmail-prepare-incoming-header-hook
+@vindex nnmail-prepare-incoming-header-hook
+This hook is called narrowed to each header.  It can be used when
+cleaning up the headers.  Functions that can be used include:
+
+@table @code
+@item nnmail-remove-leading-whitespace
+@findex nnmail-remove-leading-whitespace
+Clear leading white space that ``helpful'' listservs have added to the
+headers too make them look nice.  Aaah.  
+
+@item nnmail-remove-list-identifiers
+@findex nnmail-remove-list-identifiers
+Some list servers add an identifier---for example, @samp{(idm)}---to the
+beginning of all @code{Subject} headers.  I'm sure that's nice for
+people who use stone age mail readers.  This function will remove
+strings that match the @code{nnmail-list-identifiers} regexp, which can
+also be a list of regexp.
+
+For instance, if you want to remove the @samp{(idm)} and the
+@samp{nagnagnag} identifiers:
+
+@lisp
+(setq nnmail-list-identifiers
+      '("(idm)" "nagnagnag"))
+@end lisp
+
+@item nnmail-remove-tabs
+@findex nnmail-remove-tabs
+Translate all @samp{TAB} characters into @samp{SPACE} characters. 
+
+@end table
+
+@item nnmail-prepare-incoming-message-hook
+@vindex nnmail-prepare-incoming-message-hook
+This hook is called narrowed to each message.  Functions to be used
+include: 
+
+@table @code
+@item article-de-quoted-unreadable
+@findex article-de-quoted-unreadable
+Decode Quoted Readable encoding.
+
+@end table
+@end table
+
 
 @node Duplicates
 @subsection Duplicates
@@ -8484,7 +9294,7 @@ with!  So there!
 If you are a member of a couple of mailing list, you will sometime
 receive two copies of the same mail.  This can be quite annoying, so
 @code{nnmail} checks for and treats any duplicates it might find.  To do
-this, it keeps a cache of old @code{Message-ID}s -
+this, it keeps a cache of old @code{Message-ID}s---
 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by
 default.  The approximate maximum number of @code{Message-ID}s stored
 there is controlled by the @code{nnmail-message-id-cache-length}
@@ -8492,9 +9302,8 @@ variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be
 stored.) If all this sounds scary to you, you can set
 @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by
 default), and @code{nnmail} won't delete duplicate mails.  Instead it
-will generate a brand new @code{Message-ID} for the mail and insert a
-warning into the head of the mail saying that it thinks that this is a
-duplicate of a different message.  
+will insert a warning into the head of the mail saying that it thinks
+that this is a duplicate of a different message.
 
 This variable can also be a function.  If that's the case, the function
 will be called from a buffer narrowed to the message in question with
@@ -8703,7 +9512,9 @@ If your @code{nnml} groups and @sc{nov} files get totally out of whack,
 you can do a complete update by typing @kbd{M-x
 nnml-generate-nov-databases}.  This command will trawl through the
 entire @code{nnml} hierarchy, looking at each and every article, so it
-might take a while to complete.
+might take a while to complete.  A better interface to this
+functionality can be found in the server buffer (@pxref{Server
+Commands}). 
 
 
 @node MH Spool
@@ -8808,9 +9619,10 @@ wonderful of all wonderful Emacs packages.  When I wrote @code{nndir}, I
 didn't think much about it---a backend to read directories.  Big deal.
 
 @code{ange-ftp} changes that picture dramatically.  For instance, if you
-enter @file{"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"} as the the
-directory name, ange-ftp will actually allow you to read this directory
-over at @samp{sina} as a newsgroup.  Distributed news ahoy!
+enter the @code{ange-ftp} file name
+@file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the the directory name,
+@code{ange-ftp} will actually allow you to read this directory over at
+@samp{sina} as a newsgroup.  Distributed news ahoy!
 
 @code{nndir} will use @sc{nov} files if they are present.
 
@@ -8836,7 +9648,7 @@ After all, Gnus is a newsreader, in case you're
 forgetting. @code{nneething} does this in a two-step process.  First, it
 snoops each file in question.  If the file looks like an article (i.e.,
 the first few lines look like headers), it will use this as the head.
-If this is just some arbitrary file without a head (eg. a C source
+If this is just some arbitrary file without a head (e.g. a C source
 file), @code{nneething} will cobble up a header out of thin air.  It
 will use file ownership, name and date and do whatever it can with these
 elements.
@@ -8956,8 +9768,9 @@ Virtual server variables:
 @item nndoc-article-type
 @vindex nndoc-article-type
 This should be one of @code{mbox}, @code{babyl}, @code{digest},
-@code{mmdf}, @code{forward}, @code{news}, @code{rnews},
-@code{mime-digest}, @code{clari-briefs}, or @code{guess}.
+@code{mmdf}, @code{forward}, @code{rfc934}, @code{rfc822-forward},
+@code{news}, @code{rnews}, @code{mime-digest}, @code{clari-briefs}, or
+@code{guess}.
 
 @item nndoc-post-type
 @vindex nndoc-post-type
@@ -9012,7 +9825,7 @@ article.
 
 @item nndoc-head-end
 This should match the end of the head of the article.  It defaults to
-@samp{"^$"}---the empty line.
+@samp{^$}---the empty line.
 
 @item body-begin-function
 If present, this function should move point to the beginning of the body
@@ -9078,7 +9891,7 @@ digests:
 We see that all text before a 70-width line of dashes is ignored; all
 text after a line that starts with that @samp{^End of} is also ignored;
 each article begins with a 30-width line of dashes; the line separating
-the head from the body may contain a single spcae; and that the body is
+the head from the body may contain a single space; and that the body is
 run through @code{nndoc-unquote-dashes} before being delivered.
 
 To hook your own document definition into @code{nndoc}, use the
@@ -9116,25 +9929,59 @@ A file format called @sc{soup} has been developed for transporting news
 and mail from servers to home machines and back again.  It can be a bit
 fiddly.
 
-@enumerate
+First some terminology:
 
-@item
-You log in on the server and create a @sc{soup} packet.  You can either
-use a dedicated @sc{soup} thingie, or you can use Gnus to create the
-packet with the @kbd{O s} command.
+@table @dfn
 
-@item 
-You transfer the packet home.  Rail, boat, car or modem will do fine.
+@item server
+This is the machine that is connected to the outside world and where you
+get news and/or mail from.
+
+@item home machine
+This is the machine that you want to do the actual reading and responding
+on.  It is typically not connected to the rest of the world in any way.
+
+@item packet
+Something that contains messages and/or commands.  There are two kinds
+of packets:
+
+@table @dfn
+@item message packets
+These are packets made at the server, and typically contains lots of
+messages for you to read.  These are called @file{SoupoutX.tgz} by
+default, where @var{X} is a number.
+
+@item response packets
+These are packets made at the home machine, and typically contains
+replies that you've written.  These are called @file{SoupinX.tgz} by
+default, where @var{X} is a number.
+
+@end table
+
+@end table
+
+
+@enumerate
+
+@item
+You log in on the server and create a @sc{soup} packet.  You can either
+use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
+can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
+s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
+
+@item 
+You transfer the packet home.  Rail, boat, car or modem will do fine.
 
 @item
 You put the packet in your home directory.
 
 @item
-You fire up Gnus using the @code{nnsoup} backend as the native server.
+You fire up Gnus on your home machine using the @code{nnsoup} backend as
+the native or secondary server.
 
 @item
 You read articles and mail and answer and followup to the things you
-want.
+want (@pxref{SOUP Replies}).
 
 @item 
 You do the @kbd{G s r} command to pack these replies into a @sc{soup}
@@ -9164,6 +10011,8 @@ reading and Gnus for packing/sending these @sc{soup} packets.
 @node SOUP Commands
 @subsubsection SOUP Commands
 
+These are commands for creating and manipulating @sc{soup} packets.
+
 @table @kbd
 @item G s b
 @kindex G s b (Group)
@@ -9175,7 +10024,7 @@ process/prefix convention.
 @item G s w
 @kindex G s w (Group)
 @findex gnus-soup-save-areas
-Save all data files (@code{gnus-soup-save-areas}).
+Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
 
 @item G s s
 @kindex G s s (Group)
@@ -9198,7 +10047,7 @@ Pack all replies into a replies packet (@code{nnsoup-pack-replies}).
 @findex gnus-soup-add-article
 This summary-mode command adds the current article to a @sc{soup} packet
 (@code{gnus-soup-add-article}).  It understands the process/prefix
-convention. 
+convention (@pxref{Process/Prefix})
 
 @end table
 
@@ -9216,7 +10065,7 @@ Directory where Gnus will save intermediate files while composing
 @item gnus-soup-replies-directory
 @vindex gnus-soup-replies-directory
 This is what Gnus will use as a temporary directory while sending our
-reply packets.  The default is @file{~/SoupBrew/SoupReplies/}. 
+reply packets.  @file{~/SoupBrew/SoupReplies/} is the default.
 
 @item gnus-soup-prefix-file
 @vindex gnus-soup-prefix-file
@@ -9355,7 +10204,7 @@ searches without having to use a browser.
 The @code{nnweb} backend allows an easy interface to the mighty search
 engine.  You create an @code{nnweb} group, enter a search pattern, and
 then enter the group and read the articles like you would any normal
-group.  The @kbd{G n} command in the group buffer (@pxref{Foreign
+group.  The @kbd{G w} command in the group buffer (@pxref{Foreign
 Groups}) will do this in an easy-to-use fashion.
 
 @code{nnweb} groups don't really lend themselves to being solid
@@ -9637,13 +10486,14 @@ silently to help keep the sizes of the score files down.
 * Score Variables::          Customize your scoring.  (My, what terminology).
 * Score File Format::        What a score file may contain.
 * Score File Editing::       You can edit score files by hand as well.
-* Adaptive Scoring::         Big Sister Gnus @emph{knows} what you read.
+* Adaptive Scoring::         Big Sister Gnus knows what you read.
 * Home Score File::          How to say where new score entries are to go.
 * Followups To Yourself::    Having Gnus notice when people answer you.
 * Scoring Tips::             How to score effectively.
 * Reverse Scoring::          That problem child of old is not problem.
 * Global Score Files::       Earth-spanning, ear-splitting score files.
 * Kill Files::               They are still here, but they can be ignored.
+* Converting Kill Files::    Translating kill files to score files.
 * GroupLens::                Getting predictions on what you like to read.
 * Advanced Scoring::         Using logical expressions to build score rules.
 * Score Decays::             It can be useful to let scores wither away.
@@ -9662,7 +10512,7 @@ entries into this list, and upon group exit, this list is saved.
 
 The current score file is by default the group's local score file, even
 if no such score file actually exists.  To insert score commands into
-some other score file (eg. @file{all.SCORE}), you must first make this
+some other score file (e.g. @file{all.SCORE}), you must first make this
 score file the current one.
 
 General score commands that don't actually change the score file:
@@ -9687,7 +10537,7 @@ Display all score rules that have been used on the current article
 (@code{gnus-score-find-trace}).   
 
 @item V R
-@cindex V R (Summary)
+@kindex V R (Summary)
 @findex gnus-summary-rescore
 Run the current summary through the scoring process
 (@code{gnus-summary-rescore}).  This might be useful if you're playing
@@ -9722,7 +10572,7 @@ Edit a score file and make this score file the current one
 @item V F
 @kindex V F (Summary)
 @findex gnus-score-flush-cache
-Flush the score cahe (@code{gnus-score-flush-cache}).  This is useful
+Flush the score cache (@code{gnus-score-flush-cache}).  This is useful
 after editing score files.
 
 @item V C
@@ -9823,7 +10673,7 @@ Exact matching.
 Substring matching.
 
 @item f
-Fuzzy matching.
+Fuzzy matching (@pxref{Fuzzy Matching}).
 
 @item r
 Regexp matching
@@ -9969,6 +10819,12 @@ manually entered data.
 @vindex gnus-summary-default-score
 Default score of an article, which is 0 by default.
 
+@item gnus-summary-expunge-below
+@vindex gnus-summary-expunge-below
+Don't display the summary lines of articles that have scores lower than
+this variable.  This is @code{nil} by default, which means that no
+articles will be hidden.
+
 @item gnus-score-over-mark
 @vindex gnus-score-over-mark
 Mark (in the third column) used for articles with a score over the
@@ -9994,7 +10850,7 @@ Only apply the group's own score file.
 @item gnus-score-find-bnews
 @findex gnus-score-find-bnews
 Apply all score files that match, using bnews syntax.  This is the
-default.  For instance, if the current group is @samp{gnu.emacs.gnus},
+default.  If the current group is @samp{gnu.emacs.gnus}, for instance, 
 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and
 @file{gnu.all.SCORE} would all apply.  In short, the instances of
 @samp{all} in the score file names are translated into @samp{.*}, and
@@ -10003,12 +10859,16 @@ then a regexp match is done.
 This means that if you have some score entries that you want to apply to
 all groups, then you put those entries in the @file{all.SCORE} file. 
 
+The score files are applied in a semi-random order, although Gnus will
+try to apply the more general score files before the more specific score
+files.  It does this by looking at the number of elements in the score
+file names---discarding the @samp{all} elements.
+
 @item gnus-score-find-hierarchical
 @findex gnus-score-find-hierarchical
 Apply all score files from all the parent groups.  This means that you
-can't have score files like @file{all.SCORE} or @file{all.emacs.SCORE},
-but you can have @file{SCORE},  @file{comp.SCORE} and
-@file{comp.emacs.SCORE}. 
+can't have score files like @file{all.SCORE}, but you can have
+@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}.
 
 @end table
 This variable can also be a list of functions.  In that case, all these
@@ -10122,7 +10982,7 @@ If the third element is present, it should be a number---the @dfn{date
 element}.  This date says when the last time this score entry matched,
 which provides a mechanism for expiring the score entries.  It this
 element is not present, the score entry is permanent.  The date is
-represented by the number of days since December 31, 1 ce.
+represented by the number of days since December 31, 1 BCE.
 
 @item 
 If the fourth element is present, it should be a symbol---the @dfn{type
@@ -10144,7 +11004,11 @@ instead, if you feel like.
 
 @item Lines, Chars
 These two headers use different match types: @code{<}, @code{>},
-@code{=}, @code{>=} and @code{<=}.
+@code{=}, @code{>=} and @code{<=}.  When matching on @code{Lines}, be
+careful because some backends (like @code{nndir}) do not generate
+@code{Lines} header, so every article ends up being marked as having 0
+lines.  This can lead to strange results if you happen to lower score of
+the articles with few lines.
 
 @item Date
 For the Date header we have three kinda silly match types:
@@ -10155,28 +11019,42 @@ Once burnt, twice shy.  Don't judge a book by its cover.  Never not have
 sex on a first date.  (I have been told that at least one person, and I
 quote, ``found this function indispensable'', however.)
 
+@cindex ISO8601
+@cindex date
 A more useful match type is @code{regexp}.  With it, you can match the
 date string using a regular expression.  The date is normalized to
-ISO8601 compact format first, which looks like @samp{YYYYMMDDTHHMMSS}.
-If you want to match all articles that have been posted on April 1st in
-every year, you could use @samp{....0401.........} as a match string,
-for instance.  (Note that the date is kept in its original time zone, so
-this will match articles that were posted when it was April 1st where
-the article was posted from.  Time zones are such wholesome fun for the
-whole family, eh?)
+ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}.  If you want to
+match all articles that have been posted on April 1st in every year, you
+could use @samp{....0401.........} as a match string, for instance.
+(Note that the date is kept in its original time zone, so this will
+match articles that were posted when it was April 1st where the article
+was posted from.  Time zones are such wholesome fun for the whole
+family, eh?)
 
 @item Head, Body, All
 These three match keys use the same match types as the @code{From} (etc)
 header uses.
 
 @item Followup
-This match key will add a score entry on all articles that followup to
-some author.  Uses the same match types as the @code{From} header uses.
+This match key is somewhat special, in that it will match the
+@code{From} header, and affect the score of not only the matching
+articles, but also all followups to the matching articles.  This allows
+you e.g. increase the score of followups to your own articles, or
+decrease the score of followups to the articles of some known
+trouble-maker.  Uses the same match types as the @code{From} header
+uses.
 
 @item Thread
-This match key will add a score entry on all articles that are part of
-a thread.  Uses the same match types as the @code{References} header
-uses.
+This match key works along the same lines as the @code{Followup} match
+key.  If you say that you want to score on a (sub-)thread that is
+started by an article with a @code{Message-ID} @var{X}, then you add a
+@samp{thread} match.  This will add a new @samp{thread} match for each
+article that has @var{X} in its @code{References} header.  (These new
+@samp{thread} matches will use the @code{Message-ID}s of these matching
+articles.)  This will ensure that you can raise/lower the score of an
+entire thread, even though some articles in the thread may not have
+complete @code{References} headers.  Note that using this may lead to
+undeterministic scores of the articles in the thread.
 @end table
 @end enumerate
 
@@ -10205,7 +11083,7 @@ are assumed to be score files as well, and will be loaded the same way
 this one was.
 
 @item exclude-files
-The clue of this entry should be any number of files.  This files will
+The clue of this entry should be any number of files.  These files will
 not be loaded, even though they would normally be so, for some reason or
 other. 
 
@@ -10226,8 +11104,8 @@ will only follow a few of the threads, also want to see any new threads.
 You can do this with the following two score file entries:
 
 @example
-       (orphan -500)
-       (mark-and-expunge -100)
+        (orphan -500)
+        (mark-and-expunge -100)
 @end example
 
 When you enter the group the first time, you will only see the new
@@ -10373,6 +11251,11 @@ If you have marked 10 articles with the same subject with
 That means that that subject will get a score of ten times -1, which
 should be, unless I'm much mistaken, -10.
 
+If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all
+the read articles will be marked with the @samp{E} mark.  This'll
+probably make adaptive scoring slightly impossible, so auto-expiring and
+adaptive scoring doesn't really mix very well.
+
 The headers you can score on are @code{from}, @code{subject},
 @code{message-id}, @code{references}, @code{xref}, @code{lines},
 @code{chars} and @code{date}.  In addition, you can score on
@@ -10441,12 +11324,17 @@ will be ignored.  If you wish to add more words to be ignored, use the
 @vindex gnus-adaptive-word-syntax-table
 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
 syntax table in effect.  It is similar to the standard syntax table, but
-it considers numbers to be non-word-consituant characters.
+it considers numbers to be non-word-constituent characters.
 
 After using this scheme for a while, it might be nice to write a
 @code{gnus-psychoanalyze-user} command to go through the rules and see
 what words you like and what words you don't like.  Or perhaps not.
 
+Note that the adaptive word scoring thing is highly experimental and is
+likely to change in the future.  Initial impressions seem to indicate
+that it's totally useless as it stands.  Some more work (involving more
+rigorous statistical methods) will have to be done to make this useful. 
+
 
 @node Home Score File
 @section Home Score File
@@ -10534,7 +11422,7 @@ In addition to using @code{gnus-home-score-file} and
 @code{gnus-home-adapt-file}, you can also use group parameters
 (@pxref{Group Parameters}) and topic parameters (@pxref{Topic
 Parameters}) to achieve much the same.  Group and topic parameters take
-presedence over this variable.
+precedence over this variable.
 
 
 @node Followups To Yourself
@@ -10578,8 +11466,8 @@ exploited---the following rule will raise the score on all followups to
 myself: 
 
 @lisp
-("references" 
"<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r)
+("references"
("<x6[0-9a-z]+\\.fsf@@.*eyesore.no>" 1000 nil r))
 @end lisp
 
 Whether it's the first two or first three characters that are ``yours''
@@ -10671,9 +11559,9 @@ All you have to do to use other people's score files is to set the
 or each score file directory.  Gnus will decide by itself what score
 files are applicable to which group.
 
-Say you want to use all score files in the
-@file{/ftp@@ftp.some-where:/pub/score} directory and the single score
-file @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE}:
+Say you want to use the score file
+@file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and
+all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
 
 @lisp
 (setq gnus-global-score-files
@@ -10744,7 +11632,7 @@ forms into this file, which means that you can use kill files as some
 sort of primitive hook function to be run on group entry, even though
 that isn't a very good idea.
 
-XCNormal kill files look like this:
+Normal kill files look like this:
 
 @lisp
 (gnus-kill "From" "Lars Ingebrigtsen")
@@ -10823,6 +11711,26 @@ A hook called in kill-file mode buffers.
 @end table
 
 
+@node Converting Kill Files
+@section Converting Kill Files
+@cindex kill files
+@cindex converting kill files
+
+If you have loads of old kill files, you may want to convert them into
+score files.  If they are ``regular'', you can use
+the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
+by hand.
+
+The kill to score conversion package isn't included in Gnus by default.
+You can fetch it from
+@file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}.  
+
+If your old kill files are very complex---if they contain more
+non-@code{gnus-kill} forms than not, you'll have to convert them by
+hand.  Or just let them be as they are.  Gnus will still use them as
+before. 
+
+
 @node GroupLens
 @section GroupLens
 @cindex GroupLens
@@ -10853,8 +11761,9 @@ article.
 @subsection Using GroupLens
 
 To use GroupLens you must register a pseudonym with your local Better
-Bit Bureau (BBB).  At the moment the only better bit in town is at
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html}.
+Bit Bureau (BBB).
+@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
+better bit in town is at the moment.
 
 Once you have registered you'll need to set a couple of variables.
 
@@ -10867,7 +11776,7 @@ all the relevant GroupLens functions.
 
 @item grouplens-pseudonym
 @vindex grouplens-pseudonym
-This variable should be set to the pseudonum you got when registering
+This variable should be set to the pseudonym you got when registering
 with the Better Bit Bureau.
 
 @item grouplens-newsgroups
@@ -11000,8 +11909,8 @@ enhanced.  It accepts the same specs as the normal summary line format
 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}.
 
 @item grouplens-bbb-host
-Host running the bbbd server.  The default is
-@samp{grouplens.cs.umn.edu}. 
+Host running the bbbd server.  @samp{grouplens.cs.umn.edu} is the
+default.
 
 @item grouplens-bbb-port
 Port of the host running the bbbd server.  The default is 9000.
@@ -11073,7 +11982,7 @@ inverse of the value of its argument.
 @end table
 
 There is an @dfn{indirection operator} that will make its arguments
-apply to the ancenstors of the current article being scored.  For
+apply to the ancestors of the current article being scored.  For
 instance, @code{1-} will make score rules apply to the parent of the
 current article.  @code{2-} will make score fules apply to the
 grandparent of the current article.  Alternatively, you can write
@@ -11210,10 +12119,10 @@ definition of that function:
   (floor
    (- score
       (* (if (< score 0) 1 -1)
-        (min score
-             (max gnus-score-decay-constant
-                  (* (abs score)
-                     gnus-score-decay-scale)))))))
+         (min score
+              (max gnus-score-decay-constant
+                   (* (abs score)
+                      gnus-score-decay-scale)))))))
 @end lisp
 
 @vindex gnus-score-decay-scale
@@ -11229,7 +12138,7 @@ Scores between -3 and 3 will be set to 0 when this function is called.
 Scores with magnitudes between 3 and 60 will be shrunk by 3.
 
 @item
-Scores with magnutudes greater than 60 will be shrunk by 5% of the
+Scores with magnitudes greater than 60 will be shrunk by 5% of the
 score.
 @end enumerate
 
@@ -11256,7 +12165,10 @@ four days, Gnus will decay the scores four times, for instance.
 * Daemons::                    Gnus can do things behind your back.
 * NoCeM::                      How to avoid spam and other fatty foods.
 * Picons::                     How to display pictures of what your reading.
+* Undo::                       Some actions can be undone.
 * Moderation::                 What to do if you're a moderator.
+* XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
+* Fuzzy Matching::             What's the big fuzz?
 * Various Various::            Things that are really various.
 @end menu
 
@@ -11457,8 +12369,8 @@ Ignoring is done first; then cutting; then maxing; and then as the very
 last operation, padding.  
 
 If you use lots of these advanced thingies, you'll find that Gnus gets
-quite slow.  This can be helped enourmously by running @kbd{M-x
-gnus-compile} when you are setisfied with the look of your lines.
+quite slow.  This can be helped enormously by running @kbd{M-x
+gnus-compile} when you are satisfied with the look of your lines.
 @xref{Compilation}. 
 
 
@@ -11552,7 +12464,7 @@ other.  For instance, when displaying the group buffer, the window
 configuration function will use @code{group} as the key.  A full list of
 possible names is listed below.
 
-The @dfn{value} (i. e., the @dfn{split}) says how much space each buffer
+The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer
 should occupy.  To take the @code{article} split as an example -
 
 @lisp
@@ -11708,21 +12620,21 @@ Here's a list of all possible keys for
 @code{browse}, @code{message}, @code{pick}, @code{info},
 @code{summary-faq}, @code{edit-group}, @code{edit-server},
 @code{edit-score}, @code{post}, @code{reply}, @code{forward},
-@code{reply-yank}, @code{mail-bounce}, @code{draft},
-@code{pipe}, @code{bug}, @code{compose-bounce}.  
+@code{reply-yank}, @code{mail-bounce}, @code{draft}, @code{pipe},
+@code{bug}, @code{compose-bounce}.
 
 Note that the @code{message} key is used for both
 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}.  If
-it is desireable to distinguish between the two, something like this
+it is desirable to distinguish between the two, something like this
 might be used:
 
 @lisp
 (message (horizontal 1.0
-                    (vertical 1.0 (message 1.0 point))
-                    (vertical 0.24
-                              (if (buffer-live-p gnus-summary-buffer)
-                                  '(summary 0.5))
-                              (group 1.0)))))
+                     (vertical 1.0 (message 1.0 point))
+                     (vertical 0.24
+                               (if (buffer-live-p gnus-summary-buffer)
+                                   '(summary 0.5))
+                               (group 1.0)))))
 @end lisp
 
 @findex gnus-add-configuration
@@ -11740,9 +12652,15 @@ you want to change the @code{article} setting, you could say:
 @end lisp
 
 You'd typically stick these @code{gnus-add-configuration} calls in your
-@file{.gnus} file or in some startup hook---they should be run after
+@file{.gnus.el} file or in some startup hook---they should be run after
 Gnus has been loaded.
 
+@vindex gnus-always-force-window-configuration
+If all windows mentioned in the configuration are already visible, Gnus
+won't change the window configuration.  If you always want to force the
+``right'' window configuration, you can set
+@code{gnus-always-force-window-configuration} to non-@code{nil}.
+
 
 @node Compilation
 @section Compilation
@@ -11786,11 +12704,11 @@ quicker.
 @vindex gnus-mode-non-string-length
 By default, Gnus displays information on the current article in the mode
 lines of the summary and article buffers.  The information Gnus wishes
-to display (eg. the subject of the article) is often longer than the
+to display (e.g. the subject of the article) is often longer than the
 mode lines, and therefore have to be cut off at some point.  The
 @code{gnus-mode-non-string-length} variable says how long the other
 elements on the line is (i.e., the non-info part).  If you put
-additional elements on the mode line (eg. a clock), you should modify
+additional elements on the mode line (e.g. a clock), you should modify
 this variable:
 
 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it>
@@ -11805,6 +12723,10 @@ this variable:
 
 If this variable is @code{nil} (which is the default), the mode line
 strings won't be chopped off, and they won't be padded either.
+Note that the default is unlikely to be desirable, as even the
+percentage complete in the buffer may be crowded off the mode line;
+the user should configure this variable appropriately for their
+configuration.
 
 
 @node Highlighting and Menus
@@ -11871,21 +12793,6 @@ Other general variables that influence the look of all buffers include:
 This is the face (i.e., font) used for mouse highlighting in Gnus.  No
 mouse highlights will be done if @code{gnus-visual} is @code{nil}.
 
-@item gnus-display-type
-@vindex gnus-display-type
-This variable is symbol indicating the display type Emacs is running
-under.  The symbol should be one of @code{color}, @code{grayscale} or
-@code{mono}.  If Gnus guesses this display attribute wrongly, either set
-this variable in your @file{~/.emacs} or set the resource
-@code{Emacs.displayType} in your @file{~/.Xdefaults}.
-
-@item gnus-background-mode 
-@vindex gnus-background-mode 
-This is a symbol indicating the Emacs background brightness.  The symbol
-should be one of @code{light} or @code{dark}.  If Gnus guesses this
-frame attribute wrongly, either set this variable in your @file{~/.emacs} or
-set the resource @code{Emacs.backgroundMode} in your @file{~/.Xdefaults}. 
-`gnus-display-type'.
 @end table
 
 There are hooks associated with the creation of all the different menus:
@@ -12027,7 +12934,7 @@ time.  Modified by the @var{idle} parameter, of course.
 
 @vindex gnus-demon-timestep
 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep}
-seconds.  This is @code{60} by default.  If you change that variable,
+seconds.  This is 60 by default.  If you change that variable,
 all the timings in the handlers will be affected.)
 
 @vindex gnus-use-demon
@@ -12044,11 +12951,12 @@ your @file{.gnus} file:
 
 @findex gnus-demon-add-nocem
 @findex gnus-demon-add-scanmail
+@findex gnus-demon-add-rescan
 @findex gnus-demon-add-disconnection
 Some ready-made functions to do this has been created:
-@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, and
-@code{gnus-demon-add-scanmail}.  Just put those functions in your
-@file{.gnus} if you want those abilities.
+@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
+@code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}.  Just
+put those functions in your @file{.gnus} if you want those abilities.
 
 @findex gnus-demon-init
 @findex gnus-demon-cancel
@@ -12096,7 +13004,8 @@ by default.
 @item gnus-nocem-groups
 @vindex gnus-nocem-groups
 Gnus will look for NoCeM messages in the groups in this list.  The
-default is @code{("alt.nocem.misc" "news.admin.net-abuse.announce")}. 
+default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins"
+"alt.nocem.misc" "news.admin.net-abuse.announce")}. 
 
 @item gnus-nocem-issuers
 @vindex gnus-nocem-issuers
@@ -12120,7 +13029,8 @@ Norwegian, and was the person(s) who invented NoCeM.
 
 @item jem@@xpat.com;
 @cindex Jem
-Jem---Korean despammer who is getting very busy these days.
+John Milburn---despammer located in Korea who is getting very busy these
+days.
 
 @item red@@redpoll.mrfs.oh.us (Richard E. Depew)
 Richard E. Depew---lone American despammer.  He mostly cancels binary
@@ -12130,6 +13040,14 @@ postings to non-binary groups and removes spews (regurgitated articles).
 You do not have to heed NoCeM messages from all these people---just the
 ones you want to listen to.
 
+@item gnus-nocem-verifyer
+@vindex gnus-nocem-verifyer
+@findex mc-verify
+This should be a function for verifying that the NoCeM issuer is who she
+says she is.  The default is @code{mc-verify}, which is a Mailcrypt
+function.  If this is too slow and you don't care for verification
+(which may be dangerous), you can set this variable to @code{nil}.
+
 @item gnus-nocem-directory
 @vindex gnus-nocem-directory
 This is where Gnus will store its NoCeM cache files.  The default is
@@ -12163,8 +13081,7 @@ over your shoulder as you read news.
 @node Picon Basics
 @subsection Picon Basics
 
-What are Picons?  To quote directly from the Picons Web site
-(@samp{http://www.cs.indiana.edu/picons/ftp/index.html}):
+What are Picons?  To quote directly from the Picons Web site:
 
 @quotation 
 @dfn{Picons} is short for ``personal icons''.  They're small,
@@ -12176,9 +13093,9 @@ in either monochrome @code{XBM} format or color @code{XPM} and
 @code{GIF} formats.
 @end quotation
 
-Please see the above mentioned web site for instructions on obtaining
-and installing the picons databases, or the following ftp site:
-@samp{http://www.cs.indiana.edu/picons/ftp/index.html}.
+For instructions on obtaining and installing the picons databases, point
+your Web browser at
+@file{http://www.cs.indiana.edu/picons/ftp/index.html}.
 
 @vindex gnus-picons-database
 Gnus expects picons to be installed into a location pointed to by
@@ -12230,9 +13147,9 @@ feature, you need to first decide where to display them.
 Where the picon images should be displayed.  It is @code{picons} by
 default (which by default maps to the buffer @samp{*Picons*}).  Other
 valid places could be @code{article}, @code{summary}, or
-@samp{"*scratch*"} for all I care.  Just make sure that you've made the
+@samp{*scratch*} for all I care.  Just make sure that you've made the
 buffer visible using the standard Gnus window configuration
-routines---@xref{Windows Configuration}.
+routines---@pxref{Windows Configuration}.
 
 @end table
 
@@ -12296,7 +13213,7 @@ newsgroups.
 @item gnus-picons-user-directories
 @vindex gnus-picons-user-directories
 List of subdirectories to search in @code{gnus-picons-database} for user
-faces.  Defaults to @code{("local" "users" "usenix" "misc/MISC")}.
+faces.  @code{("local" "users" "usenix" "misc/MISC")} is the default.
 
 @item gnus-picons-domain-directories
 @vindex gnus-picons-domain-directories
@@ -12324,6 +13241,43 @@ The name of the buffer that @code{picons} points to.  Defaults to
 @end table
 
 
+@node Undo
+@section Undo
+@cindex undo
+
+It is very useful to be able to undo actions one has done.  In normal
+Emacs buffers, it's easy enough---you just push the @code{undo} button.
+In Gnus buffers, however, it isn't that simple.
+
+The things Gnus displays in its buffer is of no value whatsoever to
+Gnus---it's all just data that is designed to look nice to the user.
+Killing a group in the group buffer with @kbd{C-k} makes the line
+disappear, but that's just a side-effect of the real action---the
+removal of the group in question from the internal Gnus structures.
+Undoing something like that can't be done by the normal Emacs
+@code{undo} function.
+
+Gnus tries to remedy this somewhat by keeping track of what the user
+does and coming up with actions that would reverse the actions the user
+takes.  When the user then presses the @code{undo} key, Gnus will run
+the code to reverse the previous action, or the previous actions.
+However, not all actions are easily reversible, so Gnus currently offers
+a few key functions to be undoable.  These include killing groups,
+yanking groups, and changing the list of read articles of groups.
+That's it, really.  More functions may be added in the future, but each
+added function means an increase in data to be stored, so Gnus will
+never be totally undoable.
+
+@findex gnus-undo-mode
+@vindex gnus-use-undo
+@findex gnus-undo
+The undoability is provided by the @code{gnus-undo-mode} minor mode.  It
+is used if @code{gnus-use-undo} is non-@code{nil}, which is the
+default.  The @kbd{M-C-_} key performs the @code{gnus-undo} command
+command, which should feel kinda like the normal Emacs @code{undo}
+command. 
+
+
 @node Moderation
 @section Moderation
 @cindex moderation
@@ -12349,7 +13303,7 @@ supposed to work:
 @item 
 You split your incoming mail by matching on
 @samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted
-articles in some mail group---@samp{nnml:rec.zoofle}, for instance.
+articles in some mail group---for instance, @samp{nnml:rec.zoofle}.
 
 @item
 You enter that group once in a while and post articles using the @kbd{e}
@@ -12364,11 +13318,81 @@ articles that weren't approved by you, you can cancel them with the
 To use moderation mode in these two groups, say:
 
 @lisp
-(setq gnus-moderatated-groups 
+(setq gnus-moderated-list
       "^nnml:rec.zoofle$\\|^rec.zoofle$")
 @end lisp
 
 
+@node XEmacs Enhancements
+@section XEmacs Enhancements
+@cindex XEmacs
+
+XEmacs is able to display pictures and stuff, so Gnus has taken
+advantage of that.  Relevant variables include:
+
+@table @code
+@item gnus-xmas-glyph-directory
+@vindex gnus-xmas-glyph-directory
+This is where Gnus will look for pictures.  Gnus will normally
+auto-detect this directory, but you may set it manually if you have an
+unusual directory structure.
+
+@item gnus-xmas-logo-color-alist
+@vindex gnus-xmas-logo-color-alist
+This is an alist where the key is a type symbol and the values are the
+foreground and background color of the splash page glyph.
+
+@item gnus-xmas-logo-color-style
+@vindex gnus-xmas-logo-color-style
+This is the key used to look up the color in the alist described above.
+Legal values include @code{flame}, @code{pine}, @code{moss},
+@code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
+@code{labia}, @code{berry}, @code{neutral}, and @code{september}.
+
+@item gnus-use-toolbar
+@vindex gnus-use-toolbar
+If @code{nil}, don't display toolbars.  If non-@code{nil}, it should be
+one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar},
+@code{right-toolbar}, or @code{left-toolbar}.
+
+@item gnus-group-toolbar
+@vindex gnus-group-toolbar
+The toolbar in the group buffer.
+
+@item gnus-summary-toolbar
+@vindex gnus-summary-toolbar
+The toolbar in the summary buffer.
+
+@item gnus-summary-mail-toolbar
+@vindex gnus-summary-mail-toolbar
+The toolbar in the summary buffer of mail groups.
+
+@item gnus-xmas-modeline-glyph
+@vindex gnus-xmas-modeline-glyph
+A glyph displayed in all Gnus mode lines.  It is a tiny gnu head by
+default. 
+
+@end table
+
+
+@node Fuzzy Matching
+@section Fuzzy Matching
+@cindex fuzzy matching
+
+Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing
+things like scoring, thread gathering and thread comparison.  
+
+As opposed to regular expression matching, fuzzy matching is very fuzzy.
+It's so fuzzy that there's not even a definition of what @dfn{fuzziness}
+means, and the implementation has changed over time.
+
+Basically, it tries to remove all noise from lines before comparing.
+@samp{Re: }, parenthetical remarks, white space, and so on, are filtered
+out of the strings before comparing the results.  This often leads to
+adequate results---even when faced with strings generated by text
+manglers masquerading as newsreaders.
+
+
 @node Various Various
 @section Various Various
 @cindex mode lines
@@ -12376,11 +13400,15 @@ To use moderation mode in these two groups, say:
 
 @table @code
 
+@item gnus-home-directory
+All Gnus path variables will be initialized from this variable, which
+defaults to @file{~/}.
+
 @item gnus-directory
 @vindex gnus-directory
-All Gnus directories will be initialized from this variable, which
-defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/}
-if that variable isn't set.
+Most Gnus storage path variables will be initialized from this variable,
+which defaults to the @samp{SAVEDIR} environment variable, or
+@file{~/News/} if that variable isn't set.
 
 @item gnus-default-directory
 @vindex gnus-default-directory
@@ -12407,7 +13435,7 @@ to the Gnus backends instead of Gnus proper.
 @item nnheader-max-head-length
 @vindex nnheader-max-head-length
 When the backends read straight heads of articles, they all try to read
-as little as possible.  This variable (default @code{4096}) specifies
+as little as possible.  This variable (default 4096) specifies
 the absolute max length the backends will try to read before giving up
 on finding a separator line between the head and the body.  If this
 variable is @code{nil}, there is no upper read bound.  If it is
@@ -12415,6 +13443,11 @@ variable is @code{nil}, there is no upper read bound.  If it is
 but read the entire articles.  This makes sense with some versions of
 @code{ange-ftp}. 
 
+@item nnheader-head-chop-length
+@vindex nnheader-head-chop-length
+This variable says how big a piece of each article to read when doing
+the operation described above.
+
 @item nnheader-file-name-translation-alist 
 @vindex nnheader-file-name-translation-alist 
 @cindex file names
@@ -12464,6 +13497,7 @@ Ol' Charles Reznikoff said it pretty well, so I leave the floor to him:
 
 @quotation
 @strong{Te Deum}
+
 @sp 1
 Not because of victories @*
 I sing,@*
@@ -12471,6 +13505,7 @@ having none,@*
 but for the common sunshine,@*
 the breeze,@*
 the largess of the spring.
+
 @sp 1
 Not for victory@*
 but for the day's work done@*
@@ -12508,7 +13543,7 @@ distribution point for the new and spiffy versions of Gnus, and is known
 as The Site That Destroys Newsrcs And Drives People Mad.
 
 During the first extended alpha period of development, the new Gnus was
-called ``(ding) Gnus''.  @dfn{(ding)}, is, of course, short for
+called ``(ding) Gnus''.  @dfn{(ding)} is, of course, short for
 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares?
 (Besides, the ``Gnus'' in this abbreviation should probably be
 pronounced ``news'' as @sc{Umeda} intended, which makes it a more
@@ -12520,12 +13555,21 @@ renamed it back again to ``Gnus''.  But in mixed case.  ``Gnus'' vs.
 ``@sc{gnus}''.  New vs. old.
 
 The first ``proper'' release of Gnus 5 was done in November 1995 when it
-was included in the Emacs 19.30 distribution.
+was included in the Emacs 19.30 distribution (132 (ding) Gnus releases
+plus 15 Gnus 5.0 releases).
 
-In May 1996 the next Gnus generation (aka.  ``September Gnus'') was
-released under the name ``Gnus 5.2''.  
+In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99
+releases)) was released under the name ``Gnus 5.2'' (40 releases).
 
-On July 28th 1996 work on Red Gnus was begun.
+On July 28th 1996 work on Red Gnus was begun, and it was released on
+January 25th 1997 (after 84 releases) as ``Gnus 5.4''.
+
+If you happen upon a version of Gnus that has a name that is prefixed --
+``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
+don't panic.  Don't let it know that you're frightened.  Back away.
+Slowly.  Whatever you do, don't run.  Walk away, calmly, until you're
+out of its reach.  Find a proper released version of Gnus and snuggle up
+to that instead.
 
 @menu
 * Why?::                What's the point of Gnus?
@@ -12669,14 +13713,6 @@ consumer information.  After seeing so many badly formatted articles
 coming from @code{tin} and @code{Netscape} I know not to use either of
 those for posting articles.  I would not have known that if it wasn't
 for the @code{X-Newsreader} header.
-
-@item References
-Gnus does line breaking on this header.  I infer from RFC1036 that being
-conservative in what you output is not creating 5000-character lines, so
-it seems like a good idea to me.  However, this standard-to-be says that
-whitespace in the @code{References} header is to be preserved, so...  It
-doesn't matter one way or the other to Gnus, so if somebody tells me
-what The Way is, I'll change it.  Or not.
 @end table
 
 @end table
@@ -12698,43 +13734,23 @@ Gnus should work on :
 @itemize @bullet 
 
 @item
-Emacs 19.30 and up.
+Emacs 19.32 and up.
 
 @item
-XEmacs 19.13 and up.
+XEmacs 19.14 and up.
 
 @item 
-Mule versions based on Emacs 19.30 and up.
+Mule versions based on Emacs 19.32 and up.
 
 @end itemize
 
 Gnus will absolutely not work on any Emacsen older than that.  Not
 reliably, at least. 
 
-There are some vague differences between Gnus on the various platforms: 
-
-@itemize @bullet
-
-@item
-The mouse-face on Gnus lines under Emacs and Mule is delimited to
-certain parts of the lines while they cover the entire line under
-XEmacs. 
-
-@item 
-The same with current-article marking---XEmacs puts an underline under
-the entire summary line while Emacs and Mule are nicer and kinder.
-
-@item
-XEmacs features more graphics---a logo and a toolbar.
-
-@item
-Citation highlighting us better under Emacs and Mule than under XEmacs.
-
-@item
-Emacs 19.26-19.28 have tangible hidden headers, which can be a bit
-confusing. 
-
-@end itemize
+There are some vague differences between Gnus on the various
+platforms---XEmacs features more graphics (a logo and a toolbar)---but
+other than that, things should look pretty much the same under all
+Emacsen. 
 
 
 @node Contributors
@@ -12757,70 +13773,217 @@ wrong show.
 
 @itemize @bullet
 
-@item Masanobu @sc{Umeda}
-The writer of the original @sc{gnus}.
+@item 
+Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
 
-@item Per Abrahamsen
-Custom, scoring, highlighting and @sc{soup} code (as well as numerous
-other things).
+@item 
+Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as
+well as numerous other things).
 
-@item Luis Fernandes
-Design and graphics.
+@item 
+Luis Fernandes---design and graphics.
 
-@item Wes Hardaker
-@file{gnus-picon.el} and the manual section on @dfn{picons}
-(@pxref{Picons}). 
+@item
+Erik Naggum---help, ideas, support, code and stuff.
 
-@item Brad Miller
-@file{gnus-gl.el} and the GroupLens manual section (@pxref{GroupLens}). 
+@item 
+Wes Hardaker---@file{gnus-picon.el} and the manual section on
+@dfn{picons} (@pxref{Picons}).
 
-@item Sudish Joseph
-Innumerable bug fixes.
+@item 
+Brad Miller---@file{gnus-gl.el} and the GroupLens manual section
+(@pxref{GroupLens}).
 
-@item Ilja Weis
-@file{gnus-topic.el}.
+@item 
+Sudish Joseph---innumerable bug fixes.
 
-@item Steven L. Baur
-Lots and lots of bugs detections and fixes.
+@item 
+Ilja Weis---@file{gnus-topic.el}.
 
-@item Vladimir Alexiev
-The refcard and reference booklets.
+@item 
+Steven L. Baur---lots and lots and lots of bugs detections and fixes.
 
-@item Felix Lee & JWZ
-I stole some pieces from the XGnus distribution by Felix Lee and JWZ.
+@item 
+Vladimir Alexiev---the refcard and reference booklets.
 
-@item Scott Byer
-@file{nnfolder.el} enhancements & rewrite.
+@item 
+Felix Lee & Jamie Zawinsky---I stole some pieces from the XGnus
+distribution by Felix Lee and JWZ.
 
-@item Peter Mutsaers
-Orphan article scoring code.
+@item 
+Scott Byer---@file{nnfolder.el} enhancements & rewrite.
 
-@item Ken Raeburn
-POP mail support.
+@item 
+Peter Mutsaers---orphan article scoring code.
 
-@item Hallvard B Furuseth
-Various bits and pieces, especially dealing with .newsrc files.
+@item 
+Ken Raeburn---POP mail support.
 
-@item Brian Edmonds
-@file{gnus-bbdb.el}.
+@item 
+Hallvard B Furuseth---various bits and pieces, especially dealing with
+.newsrc files.
 
-@item Ricardo Nassif and Mark Borges
-Proof-reading.
+@item 
+Brian Edmonds---@file{gnus-bbdb.el}.
 
-@item Kevin Davidson
-Came up with the name @dfn{ding}, so blame him.
+@item
+David Moore---rewrite of @file{nnvirtual.el} and many other things. 
+
+@item 
+Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading.
+
+@item 
+Kevin Davidson---came up with the name @dfn{ding}, so blame him.
+
+@item
+François Pinard---many, many interesting and thorough bug reports.
 
 @end itemize
 
-Peter Arius, Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel
-Quinlan, Frank D. Cringle, Geoffrey T. Dairiki, Fabrice Popineau and
-Andrew Eskilsson have all contributed code and suggestions.
+The following people have contributed many patches and suggestions: 
+
+Christopher Davis,
+Andrew Eskilsson,
+Kai Grossjohann,
+David Kågedal,
+Richard Pieri,
+Fabrice Popineau, 
+Daniel Quinlan, 
+Jason L. Tibbitts, III,
+and
+Jack Vinson.
+
+Also thanks to the following for patches and stuff:
+
+Adrian Aichner,
+Peter Arius, 
+Matt Armstrong,
+Marc Auslander,
+Chris Bone,
+Mark Borges,
+Lance A. Brown,
+Kees de Bruin,
+Martin Buchholz,
+Kevin Buhr,
+Alastair Burt,
+Joao Cachopo,
+Zlatko Calusic,
+Massimo Campostrini,
+Michael R. Cook,
+Glenn Coombs, 
+Frank D. Cringle, 
+Geoffrey T. Dairiki,
+Andre Deparade,
+Ulrik Dickow,
+Dave Disser,
+Joev Dubach,
+Paul Eggert,
+Michael Ernst,
+Luc Van Eycken,
+Sam Falkner,
+Paul Franklin, 
+David S. Goldberg,
+D. Hall, 
+Magnus Hammerin,
+Raja R. Harinath,
+Hisashige Kenji, @c Hisashige
+Marc Horowitz,
+François Felix Ingrand,
+Ishikawa Ichiro, @c Ishikawa
+Lee Iverson, 
+Rajappa Iyer,
+Randell Jesup,
+Fred Johansen, 
+Greg Klanderman,
+Karl Kleinpaste,
+Peter Skov Knudsen,
+Shuhei Kobayashi, @c Kobayashi
+Thor Kristoffersen,
+Jens Lautenbacher,
+Carsten Leonhardt,
+James LewisMoss,
+Christian Limpach,
+Markus Linnala,
+Dave Love,
+Tonny Madsen,
+Shlomo Mahlab,
+Nat Makarevitch,
+David Martin,
+Gordon Matzigkeit,
+Timo Metzemakers,
+Richard Mlynarik,
+Lantz Moore,
+Morioka Tomohiko, @c Morioka
+Erik Toubro Nielsen,
+Hrvoje Niksic,
+Andy Norman,
+C. R. Oldham,
+Alexandre Oliva,
+Ken Olstad,
+Masaharu Onishi, @c Onishi
+Hideki Ono, @c Ono
+William Perry,
+Stephen Peters,
+Ulrich Pfeifer,
+John McClary Prevost,
+Colin Rafferty,
+Bart Robinson,
+Jason Rumney,
+Loren Schall,
+Dan Schmidt,
+Ralph Schleicher,
+Philippe Schnoebelen,
+Randal L. Schwartz,
+Danny Siu, 
+Paul D. Smith,
+Jeff Sparkes,
+Michael Sperber,
+Richard Stallman,
+Greg Stark, 
+Paul Stodghill,
+Kurt Swanson,
+Samuel Tardieu, 
+Teddy,
+Chuck Thompson,
+Philippe Troin,
+Jan Vroonhof,
+Barry A. Warsaw,
+Christoph Wedler,
+Joe Wells,
+and
+Katsumi Yamaoka. @c Yamaoka
+
+For a full overview of what each person has done, the ChangeLogs
+included in the Gnus alpha distributions should give ample reading
+(550kB and counting).
+
+Apologies to everybody that I've forgotten, of which there are many, I'm
+sure.  
+
+Gee, that's quite a list of people.  I guess that must mean that there
+actually are people who are using Gnus.  Who'd'a thunk it!
 
 
 @node New Features
 @subsection New Features
 @cindex new features
 
+@menu
+* ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus::     The Thing Formally Known As Gnus 5.3/5.3.
+* Red Gnus::           Third time best---Gnus 5.4/5.5.
+@end menu
+
+These lists are, of course, just @emph{short} overviews of the
+@emph{most} important new features.  No, really.  There are tons more.
+Yes, we have feeping creaturism in full effect.
+
+
+@node ding Gnus
+@subsubsection (ding) Gnus
+
+New features in Gnus 5.0/5.1:
+
 @itemize @bullet
 
 @item
@@ -12930,15 +14093,391 @@ configuration (@pxref{Windows Configuration}).
 You can click on buttons instead of using the keyboard
 (@pxref{Buttons}). 
 
-@item 
-Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}). 
+@end itemize
+
+
+@node September Gnus
+@subsubsection September Gnus
+
+New features in Gnus 5.2/5.3:
+
+@itemize @bullet
+
+@item
+A new message composition mode is used.  All old customization variables
+for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are
+now obsolete.
+
+@item
+Gnus is now able to generate @dfn{sparse} threads---threads where
+missing articles are represented by empty nodes (@pxref{Customizing
+Threading}). 
+
+@lisp
+(setq gnus-build-sparse-threads 'some)
+@end lisp
+
+@item
+Outgoing articles are stored on a special archive server
+(@pxref{Archived Messages}). 
+
+@item
+Partial thread regeneration now happens when articles are
+referred. 
+
+@item
+Gnus can make use of GroupLens predictions (@pxref{GroupLens}).
+
+@item
+Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). 
+
+@item
+A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}).
+
+@lisp
+(setq gnus-use-trees t)
+@end lisp
+
+@item
+An @code{nn}-like pick-and-read minor mode is available for the summary
+buffers (@pxref{Pick and Read}).
+
+@lisp
+(add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
+@end lisp
+
+@item
+In binary groups you can use a special binary minor mode (@pxref{Binary
+Groups}). 
+
+@item
+Groups can be grouped in a folding topic hierarchy (@pxref{Group
+Topics}).
+
+@lisp
+(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
+@end lisp
+
+@item
+Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}).
+
+@item
+Groups can now have a score, and bubbling based on entry frequency
+is possible (@pxref{Group Score}).
+
+@lisp
+(add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
+@end lisp
+
+@item
+Groups can be process-marked, and commands can be performed on
+groups of groups (@pxref{Marking Groups}).
+
+@item
+Caching is possible in virtual groups.
+
+@item
+@code{nndoc} now understands all kinds of digests, mail boxes, rnews
+news batches, ClariNet briefs collections, and just about everything
+else (@pxref{Document Groups}).
+
+@item
+Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets
+(@pxref{SOUP}).
+
+@item
+The Gnus cache is much faster.
+
+@item
+Groups can be sorted according to many criteria (@pxref{Sorting
+Groups}).
+
+@item
+New group parameters have been introduced to set list-address and
+expiry times (@pxref{Group Parameters}).
+
+@item
+All formatting specs allow specifying faces to be used
+(@pxref{Formatting Fonts}).
+
+@item
+There are several more commands for setting/removing/acting on process
+marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}).
+
+@item
+The summary buffer can be limited to show parts of the available
+articles based on a wide range of criteria.  These commands have been
+bound to keys on the @kbd{/} submap (@pxref{Limiting}).
+
+@item
+Articles can be made persistent with the @kbd{*} command
+(@pxref{Persistent Articles}).
+
+@item
+All functions for hiding article elements are now toggles.
+
+@item
+Article headers can be buttonized (@pxref{Article Washing}).
+
+@lisp
+(add-hook 'gnus-article-display-hook 
+          'gnus-article-add-buttons-to-head)
+@end lisp
+
+@item
+All mail backends support fetching articles by @code{Message-ID}.
+
+@item
+Duplicate mail can now be treated properly (@pxref{Duplicates}).
+
+@item
+All summary mode commands are available directly from the article
+buffer (@pxref{Article Keymap}). 
+
+@item
+Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows
+Configuration}).
+
+@item
+Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
+
+@item
+Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
+
+@lisp
+(setq gnus-use-nocem t)
+@end lisp
+
+@item
+Groups can be made permanently visible (@pxref{Listing Groups}).
+
+@lisp
+(setq gnus-permanently-visible-groups "^nnml:")
+@end lisp
+
+@item
+Many new hooks have been introduced to make customizing easier. 
+
+@item
+Gnus respects the @code{Mail-Copies-To} header.
+
+@item
+Threads can be gathered by looking at the @code{References} header
+(@pxref{Customizing Threading}).
+
+@lisp
+(setq gnus-summary-thread-gathering-function 
+      'gnus-gather-threads-by-references)
+@end lisp
+
+@item
+Read articles can be stored in a special backlog buffer to avoid
+refetching (@pxref{Article Backlog}).  
+
+@lisp
+(setq gnus-keep-backlog 50)
+@end lisp
+
+@item
+A clean copy of the current article is always stored in a separate
+buffer to allow easier treatment.
+
+@item
+Gnus can suggest where to save articles (@pxref{Saving Articles}).
+
+@item
+Gnus doesn't have to do as much prompting when saving (@pxref{Saving
+Articles}). 
+
+@lisp
+(setq gnus-prompt-before-saving t)
+@end lisp
+
+@item
+@code{gnus-uu} can view decoded files asynchronously while fetching
+articles (@pxref{Other Decode Variables}). 
+
+@lisp
+(setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
+@end lisp
+
+@item
+Filling in the article buffer now works properly on cited text
+(@pxref{Article Washing}).
+
+@item
+Hiding cited text adds buttons to toggle hiding, and how much
+cited text to hide is now customizable (@pxref{Article Hiding}).
+
+@lisp
+(setq gnus-cited-lines-visible 2)
+@end lisp
+
+@item
+Boring headers can be hidden (@pxref{Article Hiding}).
+
+@lisp
+(add-hook 'gnus-article-display-hook 
+          'gnus-article-hide-boring-headers t)
+@end lisp
+
+@item
+Default scoring values can now be set from the menu bar.
+
+@item
+Further syntax checking of outgoing articles have been added.
 
 @end itemize
 
-This is, of course, just a @emph{short} overview of the @emph{most}
-important new features.  No, really.  There are tons more.  Yes, we have
-feeping creaturism in full effect, but nothing too gratuitous, I would
-hope. 
+
+@node Red Gnus
+@subsubsection Red Gnus
+
+New features in Gnus 5.4/5.5:
+
+@itemize @bullet
+
+@item
+@file{nntp.el} has been totally rewritten in an asynchronous fashion.
+
+@item
+Article prefetching functionality has been moved up into 
+Gnus (@pxref{Asynchronous Fetching}).  
+
+@item
+Scoring can now be performed with logical operators like @code{and},
+@code{or}, @code{not}, and parent redirection (@pxref{Advanced
+Scoring}).
+
+@item
+Article washing status can be displayed in the
+article mode line (@pxref{Misc Article}).
+
+@item
+@file{gnus.el} has been split into many smaller files.
+
+@item
+Suppression of duplicate articles based on Message-ID can be done
+(@pxref{Duplicate Suppression}).
+
+@lisp
+(setq gnus-suppress-duplicates t)
+@end lisp
+
+@item
+New variables for specifying what score and adapt files are to be
+considered home score and adapt files (@pxref{Home Score File}).
+
+@item
+@code{nndoc} was rewritten to be easily extendable (@pxref{Document
+Server Internals}). 
+
+@item
+Groups can inherit group parameters from parent topics (@pxref{Topic
+Parameters}).
+
+@item
+Article editing has been revamped and is now actually usable.
+
+@item
+Signatures can be recognized in more intelligent fashions
+(@pxref{Article Signature}).
+
+@item
+Summary pick mode has been made to look more @code{nn}-like.  Line
+numbers are displayed and the @kbd{.} command can be used to pick
+articles (@code{Pick and Read}).
+
+@item
+Commands for moving the @file{.newsrc.eld} from one server to
+another have been added (@pxref{Changing Servers}).
+
+@item
+A way to specify that ``uninteresting'' fields be suppressed when
+generating lines in buffers (@pxref{Advanced Formatting}).
+
+@item
+Several commands in the group buffer can be undone with @kbd{M-C-_}
+(@pxref{Undo}).
+
+@item
+Scoring can be done on words using the new score type @code{w}
+(@pxref{Score File Format}).
+
+@item
+Adaptive scoring can be done on a Subject word-by-word basis
+(@pxref{Adaptive Scoring}). 
+
+@lisp
+(setq gnus-use-adaptive-scoring '(word))
+@end lisp
+
+@item
+Scores can be decayed (@pxref{Score Decays}).
+@lisp
+(setq gnus-decay-scores t)
+@end lisp
+
+@item
+Scoring can be performed using a regexp on the Date header.  The Date is
+normalized to compact ISO 8601 format first (@pxref{Score File Format}).
+
+@item
+A new command has been added to remove all data on articles from
+the native server (@pxref{Changing Servers}).
+
+@item
+A new command for reading collections of documents
+(@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d}
+(@pxref{Really Various Summary Commands}). 
+
+@item
+Process mark sets can be pushed and popped (@pxref{Setting Process
+Marks}).
+
+@item
+A new mail-to-news backend makes it possible to post even when the NNTP
+server doesn't allow posting (@pxref{Mail-To-News Gateways}).
+
+@item
+A new backend for reading searches from Web search engines
+(@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added
+(@pxref{Web Searches}).
+
+@item
+Groups inside topics can now be sorted using the standard sorting
+functions, and each topic can be sorted independently (@pxref{Topic
+Sorting}).
+
+@item
+Subsets of the groups can be sorted independently (@code{Sorting
+Groups}).
+
+@item
+Cached articles can be pulled into the groups (@pxref{Summary Generation
+Commands}).
+  
+@item
+Score files are now applied in a more reliable order (@pxref{Score
+Variables}).
+
+@item
+Reports on where mail messages end up can be generated (@pxref{Splitting
+Mail}).
+
+@item
+More hooks and functions have been added to remove junk from incoming
+mail before saving the mail (@pxref{Washing Mail}).
+
+@item
+Emphasized text can be properly fontisized:
+
+@lisp
+(add-hook 'gnus-article-display-hook 'gnus-article-emphasize)
+@end lisp
+@end itemize
 
 
 @node Newest Features
@@ -12954,20 +14493,78 @@ Be afraid.  Be very afraid.
 @item
 Native @sc{mime} support is something that should be done.  
 @item
-A better and simpler method for specifying mail composing methods. 
-@item
-Allow posting through mail-to-news gateways.
-@item
 Really do unbinhexing.
 @end itemize
 
 And much, much, much more.  There is more to come than has already been
 implemented.  (But that's always true, isn't it?)
 
-@code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual
+@file{<URL:http://www.ifi.uio.no/~larsi/rgnus/todo>} is where the actual
 up-to-the-second todo list is located, so if you're really curious, you
 could point your Web browser over that-a-way.
 
+@iftex
+
+@node The Manual
+@section The Manual
+@cindex colophon
+@cindex manual
+
+This manual was generated from a TeXinfo file and then run through
+either @code{texi2dvi}
+@iflatex
+or my own home-brewed TeXinfo to \LaTeX\ transformer,
+and then run through @code{latex} and @code{dvips} 
+@end iflatex
+to get what you hold in your hands now.
+
+The following conventions have been used:
+
+@enumerate
+
+@item
+This is a @samp{string}
+
+@item
+This is a @kbd{keystroke}
+
+@item
+This is a @file{file}
+
+@item 
+This is a @code{symbol}
+
+@end enumerate
+
+So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would
+mean:
+
+@lisp
+(setq flargnoze "yes")
+@end lisp
+
+If I say ``set @code{flumphel} to @code{yes}'', that would mean:
+
+@lisp
+(setq flumphel 'yes)
+@end lisp
+
+@samp{yes} and @code{yes} are two @emph{very} different things---don't
+ever get them confused.
+
+@iflatex
+@c @head
+Of course, everything in this manual is of vital interest, so you should
+read it all.  Several times.  However, if you feel like skimming the
+manual, look for that gnu head you should see in the margin over
+there---it means that what's being discussed is of more importance than
+the rest of the stuff.  (On the other hand, if everything is infinitely
+important, how can anything be more important than that?  Just one more
+of the mysteries of this world, I guess.)
+@end iflatex
+
+@end iftex
+
 
 @node Terminology
 @section Terminology
@@ -13022,7 +14619,7 @@ foreign, but they mostly act like they are native.
 
 @item article
 @cindex article
-A nessage that has been posted as news.
+A message that has been posted as news.
 
 @item mail message
 @cindex mail message
@@ -13085,7 +14682,7 @@ is rather large, as you might surmise.
 @item bogus groups
 @cindex bogus groups
 A group that exists in the @file{.newsrc} file, but isn't known to the
-server (i. e.,  it isn't in the active file), is a @emph{bogus group}.
+server (i.e.,  it isn't in the active file), is a @emph{bogus group}.
 This means that the group probably doesn't exist (any more).
 
 @item server 
@@ -13100,9 +14697,31 @@ server parameters.
 @item virtual server
 @cindex virtual server
 A named select method.  Since a select methods defines all there is to
-know about connecting to a (physical) server, taking the who things as a
+know about connecting to a (physical) server, taking the things as a
 whole is a virtual server.
 
+@item washing
+@cindex washing
+Taking a buffer and running it through a filter of some sort.  The
+result will (more often than not) be cleaner and more pleasing than the
+original. 
+
+@item ephemeral groups
+@cindex ephemeral groups
+Most groups store data on what articles you have read.  @dfn{Ephemeral}
+groups are groups that will have no data stored---when you exit the
+group, it'll disappear into the aether.  
+
+@item solid groups
+@cindex solid groups
+This is the opposite of ephemeral groups.  All groups listed in the
+group buffer are solid groups.
+
+@item sparse articles
+@cindex sparse articles
+These are article placeholders shown in the summary buffer when
+@code{gnus-build-sparse-threads} has been switched on.
+
 @end table
 
 
@@ -13134,7 +14753,7 @@ Gnus has to get from the @sc{nntp} server.
 @item gnus-read-active-file
 Set this to @code{nil}, which will inhibit Gnus from requesting the
 entire active file from the server.  This file is often v.  large.  You
-also have to set @code{gnus-check-new-news} and
+also have to set @code{gnus-check-new-newsgroups} and
 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
 doesn't suddenly decide to fetch the active file anyway.
 
@@ -13297,7 +14916,7 @@ mail you and ask for more info, and everything takes more time.
 If the problem you're seeing is very visual, and you can't quite explain
 it, copy the Emacs window to a file (with @code{xwd}, for instance), put
 it somewhere it can be reached, and include the URL of the picture in
-the bug report.a
+the bug report.
 
 If you just need help, you are better off asking on
 @samp{gnu.emacs.gnus}.  I'm not very helpful.
@@ -13309,7 +14928,7 @@ Write to @samp{ding-request@@ifi.uio.no} to subscribe.
 
 
 @node A Programmers Guide to Gnus
-@section A Programmer's Guide to Gnus
+@section A Programmer@'s Guide to Gnus
 
 It is my hope that other people will figure out smart stuff that Gnus
 can do, and that other people will write those smart things as well.  To
@@ -13396,6 +15015,7 @@ In the examples and definitions I will refer to the imaginary backend
 * Error Messaging::                   How to get messages and report errors.
 * Writing New Backends::              Extending old backends.
 * Hooking New Backends Into Gnus::    What has to be done on the Gnus end.
+* Mail-like Backends::                Some tips on mail backends.
 @end menu
 
 
@@ -13539,13 +15159,6 @@ group and article numbers are when fetching articles by
 on successful article retrievement.
 
 
-@item (nnchoke-open-group GROUP &optional SERVER)
-
-Make @var{group} the current group.  
-
-There should be no data returned by this function.
-
-
 @item (nnchoke-request-group GROUP &optional SERVER FAST)
 
 Get data on @var{group}.  This function also has the side effect of
@@ -13560,7 +15173,7 @@ Here's an example of some result data and a definition of the same:
 211 56 1000 1059 ifi.discussion
 @end example
 
-The first number is the status, which should be @code{211}.  Next is the
+The first number is the status, which should be 211.  Next is the
 total number of articles in the group, the lowest article number, the
 highest article number, and finally the group name.  Note that the total
 number of articles may be less than one might think while just
@@ -13651,10 +15264,9 @@ group-buffer = *active-line / *group-status
 
 A Gnus group info (@pxref{Group Info}) is handed to the backend for
 alterations.  This comes in handy if the backend really carries all the
-information (as is the case with virtual an imap groups).  This function
-may alter the info in any manner it sees fit, and should return the
-(altered) group info.  This function may alter the group info
-destructively, so no copying is needed before boogeying. 
+information (as is the case with virtual and imap groups).  This
+function should destructively alter the info to suit its needs, and
+should return the (altered) group info.
 
 There should be no result data from this function.
 
@@ -13983,16 +15595,16 @@ Below is a slightly shortened version of the @code{nndir} backend.
 
 (deffoo nndir-open-server (server &optional defs)
   (setq nndir-directory
-       (or (cadr (assq 'nndir-directory defs))
-           server))
+        (or (cadr (assq 'nndir-directory defs))
+            server))
   (unless (assq 'nndir-directory defs)
     (push `(nndir-directory ,server) defs))
   (push `(nndir-current-group
-         ,(file-name-nondirectory (directory-file-name nndir-directory)))
-       defs)
+          ,(file-name-nondirectory (directory-file-name nndir-directory)))
+        defs)
   (push `(nndir-top-directory
-         ,(file-name-directory (directory-file-name nndir-directory)))
-       defs)
+          ,(file-name-directory (directory-file-name nndir-directory)))
+        defs)
   (nnoo-change-server 'nndir server defs))
 
 (nnoo-map-functions nndir
@@ -14053,6 +15665,58 @@ The user should be prompted for an address when doing commands like
 @end table
 
 
+@node Mail-like Backends
+@subsubsection Mail-like Backends
+
+One of the things that separate the mail backends from the rest of the
+backends is the heavy dependence by the mail backends on common
+functions in @file{nnmail.el}.  For instance, here's the definition of
+@code{nnml-request-scan}: 
+
+@lisp
+(deffoo nnml-request-scan (&optional group server)
+  (setq nnml-article-file-alist nil)
+  (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group))
+@end lisp
+
+It simply just calls @code{nnmail-get-new-mail} will a few parameters,
+and @code{nnmail} takes care of all the moving and splitting of the
+mail.  
+
+This function takes four parameters.
+
+@table @var
+@item method
+This should be a symbol to designate which backend is responsible for
+the call.
+
+@item exit-function
+This function should be called after the splitting has been performed.
+
+@item temp-directory
+Where the temporary files should be stored.
+
+@item group
+This optional argument should be a group name if the splitting is to be
+performed for one group only.
+@end table
+
+@code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to
+save each article.  @var{backend}@code{-active-number} will be called to
+find the article number assigned to this article.  
+
+The function also uses the following variables:
+@var{backend}@code{-get-new-mail} (to see whether to get new mail for
+this backend); and @var{backend}@code{-group-alist} and
+@var{backend}@code{-active-file} to generate the new active file.
+@var{backend}@code{-group-alist} should be a group-active alist, like
+this:
+
+@example
+(("a-group" (1 . 10))
+ ("some-group" (34 . 39)))
+@end example
+
 
 @node Score File Syntax
 @subsection Score File Syntax
@@ -14139,7 +15803,7 @@ almost suspect that the author looked at the @sc{nov} specification and
 just shamelessly @emph{stole} the entire thing, and one would be right.
 
 @dfn{Header} is a severely overloaded term.  ``Header'' is used in
-RFC1036 to talk about lines in the head of an article (eg.,
+RFC1036 to talk about lines in the head of an article (e.g.,
 @code{From}).  It is used by many people as a synonym for
 ``head''---``the header and the body''.  (That should be avoided, in my
 opinion.)  And Gnus uses a format internally that it calls ``header'',
@@ -14164,7 +15828,7 @@ using it a lot and have elaborated on it greatly.
 
 The question is simple: If you have a large amount of objects that are
 identified by numbers (say, articles, to take a @emph{wild} example)
-that you want to callify as being ``included'', a normal sequence isn't
+that you want to qualify as being ``included'', a normal sequence isn't
 very useful.  (A 200,000 length sequence is a bit long-winded.)
 
 The solution is as simple as the question: You just collapse the
@@ -14255,10 +15919,17 @@ second is a more complex one:
                 (auto-expire (to-address "ding@@ifi.uio.no")))
 @end example
 
-The first element is the group name as Gnus knows the group; the second
-is the group level; the third is the read articles in range format; the
-fourth is a list of article marks lists; the fifth is the select method;
-and the sixth contains the group parameters.
+The first element is the @dfn{group name}---as Gnus knows the group,
+anyway.  The second element is the @dfn{subscription level}, which
+normally is a small integer.  The third element is a list of ranges of
+read articles.  The fourth element is a list of lists of article marks
+of various kinds.  The fifth element is the select method (or virtual
+server, if you like).  The sixth element is a list of @dfn{group
+parameters}, which is what this section is about.
+
+Any of the last three elements may be missing if they are not required.
+In fact, the vast majority of groups will normally only have the first
+three elements, which saves quite a lot of cons cells.
 
 Here's a BNF definition of the group info format: