2001-09-04 Katsumi Yamaoka <yamaoka@jpl.org>
[gnus] / texi / gnus.texi
index 9ccb11b..8eee5b5 100644 (file)
@@ -31,6 +31,8 @@
 
 \newcommand{\gnusbackslash}{/}
 
+\newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
+\newcommand{\gnusuref}[1]{\gnustt{#1}}
 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
 
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000 
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
 Free Software Foundation, Inc.
 
 
@@ -365,7 +367,7 @@ 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 Oort Gnus v0.01.
+This manual corresponds to Oort Gnus v.
 
 @end ifinfo
 
@@ -397,94 +399,95 @@ the program.
 @end iftex
 
 @menu
-* Starting Up::           Finding news can be a pain.
-* The Group Buffer::      Selecting, subscribing and killing groups.
-* The Summary Buffer::    Reading, saving and posting articles.
-* The Article Buffer::    Displaying and handling articles.
-* Composing Messages::    Information on sending mail and news.
-* Select Methods::        Gnus reads all messages from various select methods.
-* Scoring::               Assigning values to articles.
-* Various::               General purpose settings.
-* The End::               Farewell and goodbye.
-* Appendices::            Terminology, Emacs intro, FAQ, History, Internals.
-* Index::                 Variable, function and concept index.
-* Key Index::             Key Index.
+* Starting Up::                 Finding news can be a pain.
+* Group Buffer::                Selecting, subscribing and killing groups.
+* Summary Buffer::              Reading, saving and posting articles.
+* Article Buffer::              Displaying and handling articles.
+* Composing Messages::          Information on sending mail and news.
+* Select Methods::              Gnus reads all messages from various select methods.
+* Scoring::                     Assigning values to articles.
+* Various::                     General purpose settings.
+* The End::                     Farewell and goodbye.
+* Appendices::                  Terminology, Emacs intro, FAQ, History, Internals.
+* Index::                       Variable, function and concept index.
+* Key Index::                   Key Index.
 
 @detailmenu
  --- The Detailed Node Listing ---
 
 Starting Gnus
 
-* 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 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}.
-* Auto Save::           Recovering from a crash.
-* The Active File::     Reading the active file over a slow line Takes Time.
-* Changing Servers::    You may want to move from one server to another.
-* Startup Variables::   Other variables you might change.
+* 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 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?
+* Changing Servers::            You may want to move from one server to another.
+* Startup Files::               Those pesky startup files---@file{.newsrc}.
+* Auto Save::                   Recovering from a crash.
+* The Active File::             Reading the active file over a slow line Takes Time.
+* Startup Variables::           Other variables you might change.
 
 New Groups
 
-* 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.
-
-The Group Buffer
-
-* 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.
-* Marking Groups::         You can mark groups for later processing.
-* Foreign Groups::         Creating and editing groups.
-* Group Parameters::       Each group may have different parameters set.
-* Listing Groups::         Gnus can list various subsets of the groups.
-* Sorting Groups::         Re-arrange the group order.
-* Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server::  You can browse a server.  See what it has to offer.
-* Exiting Gnus::           Stop reading news and get some work done.
-* Group Topics::           A folding group mode divided into topics.
-* Misc Group Stuff::       Other stuff that you can to do.
+* 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.
+
+Group Buffer
+
+* 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.
+* Subscription Commands::       Unsubscribing, killing, subscribing.
+* Group Data::                  Changing the info for a group.
+* Group Levels::                Levels? What are those, then?
+* Group Score::                 A mechanism for finding out what groups you like.
+* Marking Groups::              You can mark groups for later processing.
+* Foreign Groups::              Creating and editing groups.
+* Group Parameters::            Each group may have different parameters set.
+* Listing Groups::              Gnus can list various subsets of the groups.
+* Sorting Groups::              Re-arrange the group order.
+* Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server::       You can browse a server.  See what it has to offer.
+* Exiting Gnus::                Stop reading news and get some work done.
+* Group Topics::                A folding group mode divided into topics.
+* Misc Group Stuff::            Other stuff that you can to do.
 
 Group Buffer Format
 
-* Group Line Specification::       Deciding how the group buffer is to look.
-* Group Modeline Specification::   The group buffer modeline.
-* Group Highlighting::             Having nice colors in the group buffer.
+* Group Line Specification::    Deciding how the group buffer is to look.
+* Group Modeline Specification::  The group buffer modeline.
+* Group Highlighting::          Having nice colors in the group buffer.
 
 Group Topics
 
-* 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.
+* 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.
 
 Misc Group Stuff
 
-* 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.
+* 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.
 
-The Summary Buffer
+Summary Buffer
 
 * Summary Buffer Format::       Deciding how the summary buffer is to look.
 * Summary Maneuvering::         Moving around the summary buffer.
 * Choosing Articles::           Reading articles.
 * Paging the Article::          Scrolling the current article.
 * Reply Followup and Post::     Posting articles.
+* Delayed Articles::            
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
-* Sorting::                     How articles and threads are sorted.
+* Sorting the Summary Buffer::  How articles and threads are sorted.
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
@@ -501,76 +504,84 @@ The Summary Buffer
 * Tree Display::                A more visual display of threads.
 * Mail Group Commands::         Some commands can only be used in mail groups.
 * Various Summary Stuff::       What didn't fit anywhere else.
-* Exiting the Summary Buffer::  Returning to the Group buffer.
+* Exiting the Summary Buffer::  Returning to the Group buffer,
+                                or reselecting the current group.
 * Crosspost Handling::          How crossposted articles are dealt with.
 * Duplicate Suppression::       An alternative when crosspost handling fails.
 * Security::                    Decrypt and Verify.
+* Mailing List::                Mailing list minor mode.
 
 Summary Buffer Format
 
-* Summary Buffer Lines::     You can specify how summary lines should look.
-* To From Newsgroups::       How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting::     Making the summary buffer all pretty and nice.
+* Summary Buffer Lines::        You can specify how summary lines should look.
+* To From Newsgroups::          How to not display your own name.
+* Summary Buffer Mode Line::    You can say how the mode line should look.
+* Summary Highlighting::        Making the summary buffer all pretty and nice.
 
 Choosing Articles
 
-* Choosing Commands::        Commands for choosing articles.
-* Choosing Variables::       Variables that influence these commands.
+* Choosing Commands::           Commands for choosing articles.
+* Choosing Variables::          Variables that influence these commands.
 
 Reply, Followup and Post
 
-* Summary Mail Commands::    Sending mail.
-* Summary Post Commands::    Sending news.
-* Summary Message Commands:: Other Message-related commands.
-* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
+* Summary Mail Commands::       Sending mail.
+* Summary Post Commands::       Sending news.
+* Summary Message Commands::    Other Message-related commands.
+* Canceling and Superseding::   
 
 Marking Articles
 
-* Unread Articles::          Marks for unread articles.
-* Read Articles::            Marks for read articles.
-* Other Marks::              Marks that do not affect readedness.
-* Setting Marks::            How to set and remove marks.
-* Generic Marking Commands:: How to customize the marking.
-* Setting Process Marks::    How to mark articles for later processing.
+* Unread Articles::             Marks for unread articles.
+* Read Articles::               Marks for read articles.
+* Other Marks::                 Marks that do not affect readedness.
+* Setting Marks::               
+* Generic Marking Commands::    
+* Setting Process Marks::       
+
+Marking Articles
+
+* Setting Marks::             How to set and remove marks.
+* Generic Marking Commands::  How to customize the marking.
+* Setting Process Marks::     How to mark articles for later processing.
 
 Threading
 
-* Customizing Threading::    Variables you can change to affect the threading.
-* Thread Commands::          Thread based commands in the summary buffer.
+* Customizing Threading::       Variables you can change to affect the threading.
+* Thread Commands::             Thread based commands in the summary buffer.
 
 Customizing Threading
 
-* Loose Threads::        How Gnus gathers loose threads into bigger threads.
-* Filling In Threads::   Making the threads displayed look fuller.
-* More Threading::       Even more variables for fiddling with threads.
-* Low-Level Threading::  You thought it was over... but you were wrong!
+* Loose Threads::               How Gnus gathers loose threads into bigger threads.
+* Filling In Threads::          Making the threads displayed look fuller.
+* More Threading::              Even more variables for fiddling with threads.
+* Low-Level Threading::         You thought it was over... but you were wrong!
 
 Decoding Articles
 
-* Uuencoded Articles::    Uudecode articles.
-* Shell Archives::        Unshar articles.
-* PostScript Files::      Split PostScript.
-* Other Files::           Plain save and binhex.
-* Decoding Variables::    Variables for a happy decoding.
-* Viewing Files::         You want to look at the result of the decoding?
+* Uuencoded Articles::          Uudecode articles.
+* Shell Archives::              Unshar articles.
+* PostScript Files::            Split PostScript.
+* Other Files::                 Plain save and binhex.
+* Decoding Variables::          Variables for a happy decoding.
+* Viewing Files::               You want to look at the result of the decoding?
 
 Decoding Variables
 
-* Rule Variables::          Variables that say how a file is to be viewed.
-* Other Decode Variables::  Other decode variables.
-* Uuencoding and Posting::  Variables for customizing uuencoding.
+* Rule Variables::              Variables that say how a file is to be viewed.
+* Other Decode Variables::      Other decode variables.
+* Uuencoding and Posting::      Variables for customizing uuencoding.
 
 Article Treatment
 
-* Article Highlighting::    You want to make the article look like fruit salad.
-* Article Fontisizing::     Making emphasized text look nice.
-* 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.
-* Article Date::            Grumble, UT!
-* Article Signature::       What is a signature?
-* Article Miscellania::     Various other stuff.
+* Article Highlighting::        You want to make the article look like fruit salad.
+* Article Fontisizing::         Making emphasized text look nice.
+* 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.
+* Article Date::                Grumble, UT!
+* Article Signature::           What is a signature?
+* Article Miscellania::         Various other stuff.
 
 Alternative Approaches
 
@@ -579,76 +590,83 @@ Alternative Approaches
 
 Various Summary Stuff
 
-* 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.
+* Summary Group Information::   Information oriented commands.
+* Searching for Articles::      Multiple article commands.
+* Summary Generation Commands::  
+* Really Various Summary Commands::  Those pesky non-conformant commands.
 
-The Article Buffer
+Article Buffer
 
-* 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.
-* Misc Article::          Other stuff.
+* 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.
+* Misc Article::                Other stuff.
 
 Composing Messages
 
-* Mail::                 Mailing and replying.
-* Posting Server::       What server should you post via?
-* Mail and Post::        Mailing and posting at the same time.
-* Archived Messages::    Where Gnus stores the messages you've sent.
-* Posting Styles::       An easier way to specify who you are.
-* Drafts::               Postponing messages and rejected messages.
-* Rejected Articles::    What happens if the server doesn't like your article?
-* Using GPG::            How to use GPG and MML to sign and encrypt messages
+* Mail::                        Mailing and replying.
+* Posting Server::              What server should you post via?
+* Mail and Post::               Mailing and posting at the same time.
+* Archived Messages::           Where Gnus stores the messages you've sent.
+* Posting Styles::              An easier way to specify who you are.
+* Drafts::                      Postponing messages and rejected messages.
+* Rejected Articles::           What happens if the server doesn't like your article?
+* Using GPG::                   How to use GPG and MML to sign and encrypt messages
 
 Select Methods
 
-* The Server Buffer::     Making and editing virtual servers.
-* Getting News::          Reading USENET news with Gnus.
-* Getting Mail::          Reading your personal mail with Gnus.
-* Browsing the Web::      Getting messages from a plethora of Web sources.
-* Other Sources::         Reading directories, files, SOUP packets.
-* Combined Groups::       Combining groups into one group.
-* Gnus Unplugged::        Reading news and mail offline.
+* Server Buffer::               Making and editing virtual servers.
+* Getting News::                Reading USENET news with Gnus.
+* Getting Mail::                Reading your personal mail with Gnus.
+* Browsing the Web::            Getting messages from a plethora of Web sources.
+* Other Sources::               Reading directories, files, SOUP packets.
+* Combined Groups::             Combining groups into one group.
+* Gnus Unplugged::              Reading news and mail offline.
 
-The Server Buffer
+Server Buffer
 
-* Server Buffer Format::      You can customize the look of this buffer.
-* 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.
+* Server Buffer Format::        You can customize the look of this buffer.
+* 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.
 
 Getting News
 
-* NNTP::               Reading news from an @sc{nntp} server.
-* News Spool::         Reading news from the local spool.
+* NNTP::                        Reading news from an @sc{nntp} server.
+* News Spool::                  Reading news from the local spool.
+
+@sc{nntp}
+
+* Direct Functions::            Connecting directly to the server.
+* Indirect Functions::          Connecting indirectly to the server.
+* Common Variables::            Understood by several connection functions.
 
 Getting Mail
 
-* Mail in a Newsreader::         Important introductory notes.  
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail::               How to create mail groups.
-* Mail Sources::                 How to tell Gnus where to get mail from.
-* Mail Backend Variables::       Variables for customizing mail handling.
-* Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting::         Use group customize to drive mail splitting.
-* Incorporating Old Mail::       What about the old mail you have?
-* Expiring Mail::                Getting rid of unwanted mail.
-* Washing Mail::                 Removing cruft 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.
+* Mail in a Newsreader::        Important introductory notes.
+* Getting Started Reading Mail::  A simple cookbook example.
+* Splitting Mail::              How to create mail groups.
+* Mail Sources::                How to tell Gnus where to get mail from.
+* Mail Backend Variables::      Variables for customizing mail handling.
+* Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting::        Use group customize to drive mail splitting.
+* 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.
+* Archiving Mail::              How to backup your mail.
 
 Mail Sources
 
-* Mail Source Specifiers::       How to specify what a mail source is.
-* Mail Source Customization::    Some variables that influence things.
-* Fetching Mail::                Using the mail source specifiers.
+* Mail Source Specifiers::      How to specify what a mail source is.
+* Mail Source Customization::   Some variables that influence things.
+* Fetching Mail::               Using the mail source specifiers.
 
 Choosing a Mail Backend
 
@@ -661,19 +679,21 @@ Choosing a Mail Backend
 
 Browsing the Web
 
-* Web Searches::          Creating groups from articles that match a string.
-* Slashdot::              Reading the Slashdot comments.
-* Ultimate::              The Ultimate Bulletin Board systems.
-* Web Archive::           Reading mailing list archived on web.
+* Web Searches::                Creating groups from articles that match a string.
+* Slashdot::                    Reading the Slashdot comments.
+* Ultimate::                    The Ultimate Bulletin Board systems.
+* Web Archive::                 Reading mailing list archived on web.
+* RSS::                         Reading RDF site summary.
+* Customizing w3::              Doing stuff to Emacs/w3 from Gnus.
 
 Other Sources
 
-* Directory Groups::      You can read a directory as if it was a newsgroup.
-* Anything Groups::       Dired?  Who needs dired?
-* Document Groups::       Single files can be the basis of a group.
-* SOUP::                  Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP::                  Using Gnus as a @sc{imap} client.
+* Directory Groups::            You can read a directory as if it was a newsgroup.
+* Anything Groups::             Dired?  Who needs dired?
+* Document Groups::             Single files can be the basis of a group.
+* SOUP::                        Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
+* IMAP::                        Using Gnus as a @sc{imap} client.
 
 Document Groups
 
@@ -681,71 +701,72 @@ Document Groups
 
 SOUP
 
-* SOUP Commands::     Commands for creating and sending @sc{soup} packets
-* SOUP Groups::       A backend for reading @sc{soup} packets.
-* SOUP Replies::      How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands::               Commands for creating and sending @sc{soup} packets
+* SOUP Groups::                 A backend for reading @sc{soup} packets.
+* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 
 @sc{imap}
 
-* Splitting in IMAP::     Splitting mail with nnimap.
-* Editing IMAP ACLs::     Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes::   Equivalent of a "compress mailbox" button.
+* Splitting in IMAP::           Splitting mail with nnimap.
+* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes::         Equivalent of a "compress mailbox" button.
 
 Combined Groups
 
-* Virtual Groups::     Combining articles from many groups.
-* Kibozed Groups::     Looking through parts of the newsfeed for articles.
+* Virtual Groups::              Combining articles from many groups.
+* Kibozed Groups::              Looking through parts of the newsfeed for articles.
 
 Gnus Unplugged
 
-* Agent Basics::           How it all is supposed to work.
-* Agent Categories::       How to tell the Gnus Agent what to download.
-* Agent Commands::         New commands for all the buffers.
-* Agent Expiry::           How to make old articles go away.
-* Agent and IMAP::         How to use the Agent with IMAP.
-* Outgoing Messages::      What happens when you post/mail something?
-* Agent Variables::        Customizing is fun.
-* Example Setup::          An example @file{.gnus.el} file for offline people.
-* Batching Agents::        How to fetch news from a @code{cron} job.
-* Agent Caveats::          What you think it'll do and what it does.
+* Agent Basics::                How it all is supposed to work.
+* Agent Categories::            How to tell the Gnus Agent what to download.
+* Agent Commands::              New commands for all the buffers.
+* Agent Expiry::                How to make old articles go away.
+* Agent and IMAP::              How to use the Agent with IMAP.
+* Outgoing Messages::           What happens when you post/mail something?
+* Agent Variables::             Customizing is fun.
+* Example Setup::               An example @file{.gnus.el} file for offline people.
+* Batching Agents::             How to fetch news from a @code{cron} job.
+* Agent Caveats::               What you think it'll do and what it does.
 
 Agent Categories
 
-* Category Syntax::       What a category looks like.
-* The Category Buffer::   A buffer for maintaining categories.
-* Category Variables::    Customize'r'Us.
+* Category Syntax::             What a category looks like.
+* Category Buffer::             A buffer for maintaining categories.
+* Category Variables::          Customize'r'Us.
 
 Agent Commands
 
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 
 Scoring
 
-* Summary Score Commands::   Adding score entries for the current group.
-* Group Score Commands::     General score commands.
-* 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 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.
+* Summary Score Commands::      Adding score entries for the current group.
+* Group Score Commands::        General score commands.
+* 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 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 On Other Headers::    Scoring on non-standard headers.
+* 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.
 
 GroupLens
 
-* Using GroupLens::          How to make Gnus use GroupLens.
-* Rating Articles::          Letting GroupLens know how you rate articles.
-* Displaying Predictions::   Displaying predictions given by GroupLens.
-* GroupLens Variables::      Customizing GroupLens.
+* Using GroupLens::             How to make Gnus use GroupLens.
+* Rating Articles::             Letting GroupLens know how you rate articles.
+* Displaying Predictions::      Displaying predictions given by GroupLens.
+* GroupLens Variables::         Customizing GroupLens.
 
 Advanced Scoring
 
@@ -755,116 +776,118 @@ Advanced Scoring
 
 Various
 
-* Process/Prefix::             A convention used by many treatment commands.
-* Interactive::                Making Gnus ask you many questions.
-* Symbolic Prefixes::          How to supply some Gnus functions with options.
-* Formatting Variables::       You can specify what buffers should look like.
-* Windows Configuration::      Configuring the Gnus buffer windows.
-* Faces and Fonts::            How to change how faces look.
-* Compilation::                How to speed Gnus up.
-* Mode Lines::                 Displaying information in the mode lines.
-* Highlighting and Menus::     Making buffers look all nice and cozy.
-* Buttons::                    Get tendinitis in ten easy steps!
-* Daemons::                    Gnus can do things behind your back.
-* NoCeM::                      How to avoid spam and other fatty foods.
-* 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?
-* Thwarting Email Spam::       A how-to on avoiding unsolicited commercial email.
-* Various Various::            Things that are really various.
+* Process/Prefix::              A convention used by many treatment commands.
+* Interactive::                 Making Gnus ask you many questions.
+* Symbolic Prefixes::           How to supply some Gnus functions with options.
+* Formatting Variables::        You can specify what buffers should look like.
+* Window Layout::               Configuring the Gnus buffer windows.
+* Faces and Fonts::             How to change how faces look.
+* Compilation::                 How to speed Gnus up.
+* Mode Lines::                  Displaying information in the mode lines.
+* Highlighting and Menus::      Making buffers look all nice and cozy.
+* Buttons::                     Get tendinitis in ten easy steps!
+* Daemons::                     Gnus can do things behind your back.
+* NoCeM::                       How to avoid spam and other fatty foods.
+* 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?
+* Thwarting Email Spam::        A how-to on avoiding unsolicited commercial email.
+* Various Various::             Things that are really various.
 
 Formatting Variables
 
-* Formatting Basics::     A formatting variable is basically a format string.
-* Mode Line Formatting::  Some rules about mode line formatting variables.
-* Advanced Formatting::   Modifying output in various ways.
-* User-Defined Specs::    Having Gnus call your own functions.
-* Formatting Fonts::      Making the formatting look colorful and nice.
+* Formatting Basics::           A formatting variable is basically a format string.
+* Mode Line Formatting::        Some rules about mode line formatting variables.
+* Advanced Formatting::         Modifying output in various ways.
+* User-Defined Specs::          Having Gnus call your own functions.
+* Formatting Fonts::            Making the formatting look colorful and nice.
+* Positioning Point::           Moving point to a position after an operation.
+* Tabulation::                  Tabulating your output.
+* Wide Characters::             Dealing with wide characters.
 
 XEmacs Enhancements
 
-* Picons::    How to display pictures of what your reading.
-* Smileys::   Show all those happy faces the way they were meant to be shown.
-* Toolbar::   Click'n'drool.
-* XVarious::  Other XEmacsy Gnusey variables.
+* Picons::                      How to display pictures of what your reading.
+* Smileys::                     Show all those happy faces the way they were meant to be shown.
+* Toolbar::                     Click'n'drool.
+* XVarious::                    Other XEmacsy Gnusey variables.
 
 Picons
 
-* Picon Basics::           What are picons and How do I get them.
-* Picon Requirements::     Don't go further if you aren't using XEmacs.
-* Easy Picons::            Displaying Picons---the easy way.
-* Hard Picons::            The way you should do it.  You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics::                What are picons and How do I get them.
+* Picon Requirements::          Don't go further if you aren't using XEmacs.
+* Easy Picons::                 Displaying Picons---the easy way.
+* Hard Picons::                 The way you should do it.  You'll learn something.
+* Picon Useless Configuration::  Other variables you can trash/tweak/munge/play with.
 
 Appendices
 
-* History::                        How Gnus got where it is today.
-* On Writing Manuals::             Why this is not a beginner's guide.
-* Terminology::                    We use really difficult, like, words here.
-* Customization::                  Tailoring Gnus to your needs.
-* Troubleshooting::                What you might try if things do not work.
-* Gnus Reference Guide::           Rilly, rilly technical stuff.
-* Emacs for Heathens::             A short introduction to Emacsian terms.
-* Frequently Asked Questions::     A question-and-answer session.
+* History::                     How Gnus got where it is today.
+* On Writing Manuals::          Why this is not a beginner's guide.
+* Terminology::                 We use really difficult, like, words here.
+* Customization::               Tailoring Gnus to your needs.
+* Troubleshooting::             What you might try if things do not work.
+* Gnus Reference Guide::        Rilly, rilly technical stuff.
+* Emacs for Heathens::          A short introduction to Emacsian terms.
 
 History
 
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                What's the point of Gnus?
-* Compatibility::       Just how compatible is Gnus with @sc{gnus}?
-* Conformity::          Gnus tries to conform to all standards.
-* Emacsen::             Gnus can be run on a few modern Emacsen.
-* Gnus Development::    How Gnus is developed.
-* Contributors::        Oodles of people.
-* New Features::        Pointers to some of the new stuff in Gnus.
+* Gnus Versions::               What Gnus versions have been released.
+* Other Gnus Versions::         Other Gnus versions that also have been released.
+* Why?::                        What's the point of Gnus?
+* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
+* Conformity::                  Gnus tries to conform to all standards.
+* Emacsen::                     Gnus can be run on a few modern Emacsen.
+* Gnus Development::            How Gnus is developed.
+* Contributors::                Oodles of people.
+* New Features::                Pointers to some of the new stuff in Gnus.
 
 New Features
 
-* ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus::     The Thing Formally Known As Gnus 5.2/5.3.
-* Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6/5.7.
-* Pterodactyl Gnus::   Pentad also starts with P, AKA Gnus 5.8/5.9.
+* ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
+* Red Gnus::                    Third time best---Gnus 5.4/5.5.
+* Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
+* Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
 
 Customization
 
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection::  You run a remote Emacs.
-* Little Disk Space::         You feel that having large setup files is icky.
-* Slow Machine::              You feel like buying a faster machine.
+* Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection::    You run a remote Emacs.
+* Little Disk Space::           You feel that having large setup files is icky.
+* Slow Machine::                You feel like buying a faster machine.
 
 Gnus Reference Guide
 
-* Gnus Utility Functions::   Common functions and variable to use.
-* Backend Interface::        How Gnus communicates with the servers.
-* Score File Syntax::        A BNF definition of the score file standard.
-* Headers::                  How Gnus stores headers internally.
-* Ranges::                   A handy format for storing mucho numbers.
-* Group Info::               The group info format.
-* Extended Interactive::     Symbolic prefixes and stuff.
-* Emacs/XEmacs Code::        Gnus can be run under all modern Emacsen.
-* Various File Formats::     Formats of files that Gnus use.
+* Gnus Utility Functions::      Common functions and variable to use.
+* Backend Interface::           How Gnus communicates with the servers.
+* Score File Syntax::           A BNF definition of the score file standard.
+* Headers::                     How Gnus stores headers internally.
+* Ranges::                      A handy format for storing mucho numbers.
+* Group Info::                  The group info format.
+* Extended Interactive::        Symbolic prefixes and stuff.
+* Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
+* Various File Formats::        Formats of files that Gnus use.
 
 Backend Interface
 
-* Required Backend Functions::        Functions that must be implemented.
-* Optional Backend Functions::        Functions that need not be implemented.
-* 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.
+* Required Backend Functions::  Functions that must be implemented.
+* Optional Backend Functions::  Functions that need not be implemented.
+* 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.
 
 Various File Formats
 
-* Active File Format::      Information on articles and groups available.
-* Newsgroups File Format::  Group descriptions.
+* Active File Format::          Information on articles and groups available.
+* Newsgroups File Format::      Group descriptions.
 
 Emacs for Heathens
 
-* Keystrokes::      Entering text and executing commands.
-* Emacs Lisp::      The built-in Emacs programming language.
+* Keystrokes::                  Entering text and executing commands.
+* Emacs Lisp::                  The built-in Emacs programming language.
 
 @end detailmenu
 @end menu
@@ -892,17 +915,17 @@ If you puzzle at any terms used in this manual, please refer to the
 terminology section (@pxref{Terminology}).
 
 @menu
-* 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 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}.
-* Auto Save::           Recovering from a crash.
-* The Active File::     Reading the active file over a slow line Takes Time.
-* Changing Servers::    You may want to move from one server to another.
-* Startup Variables::   Other variables you might change.
+* 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 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?
+* Changing Servers::            You may want to move from one server to another.
+* Startup Files::               Those pesky startup files---@file{.newsrc}.
+* Auto Save::                   Recovering from a crash.
+* The Active File::             Reading the active file over a slow line Takes Time.
+* Startup Variables::           Other variables you might change.
 @end menu
 
 
@@ -1100,9 +1123,9 @@ is @code{ask-server} by default.  If you set this variable to
 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.
+* 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
 
 
@@ -1191,7 +1214,7 @@ Kill all new groups.
 
 @item gnus-subscribe-topics
 @vindex gnus-subscribe-topics
-Put the groups into the topic that has a matching @code{subscribe} topic 
+Put the groups into the topic that has a matching @code{subscribe} topic
 parameter (@pxref{Topic Parameters}).  For instance, a @code{subscribe}
 topic parameter that looks like
 
@@ -1199,7 +1222,7 @@ topic parameter that looks like
 "nnslashdot"
 @end example
 
-will mean that all groups that match that regex will be subscribed under 
+will mean that all groups that match that regex will be subscribed under
 that topic.
 
 If no topics match the groups, the groups will be subscribed in the
@@ -1489,7 +1512,7 @@ performance, but if the server does not support the aforementioned
 @code{LIST ACTIVE group} command, this isn't very nice to the server.
 
 If you think that starting up Gnus takes too long, try all the three
-different values for this variable and see what works best for you. 
+different values for this variable and see what works best for you.
 
 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.
@@ -1559,8 +1582,8 @@ default is @samp{Tuxedomoon.Jingle4.au}.
 @end table
 
 
-@node The Group Buffer
-@chapter The Group Buffer
+@node Group Buffer
+@chapter Group Buffer
 @cindex group buffer
 
 The @dfn{group buffer} lists all (or parts) of the available groups.  It
@@ -1582,23 +1605,23 @@ long as Gnus is active.
 @end iftex
 
 @menu
-* 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.
-* Marking Groups::         You can mark groups for later processing.
-* Foreign Groups::         Creating and editing groups.
-* Group Parameters::       Each group may have different parameters set.
-* Listing Groups::         Gnus can list various subsets of the groups.
-* Sorting Groups::         Re-arrange the group order.
-* Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server::  You can browse a server.  See what it has to offer.
-* Exiting Gnus::           Stop reading news and get some work done.
-* Group Topics::           A folding group mode divided into topics.
-* Misc Group Stuff::       Other stuff that you can to do.
+* 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.
+* Subscription Commands::       Unsubscribing, killing, subscribing.
+* Group Data::                  Changing the info for a group.
+* Group Levels::                Levels? What are those, then?
+* Group Score::                 A mechanism for finding out what groups you like.
+* Marking Groups::              You can mark groups for later processing.
+* Foreign Groups::              Creating and editing groups.
+* Group Parameters::            Each group may have different parameters set.
+* Listing Groups::              Gnus can list various subsets of the groups.
+* Sorting Groups::              Re-arrange the group order.
+* Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server::       You can browse a server.  See what it has to offer.
+* Exiting Gnus::                Stop reading news and get some work done.
+* Group Topics::                A folding group mode divided into topics.
+* Misc Group Stuff::            Other stuff that you can to do.
 @end menu
 
 
@@ -1606,9 +1629,9 @@ long as Gnus is active.
 @section Group Buffer Format
 
 @menu
-* Group Line Specification::       Deciding how the group buffer is to look.
-* Group Modeline Specification::   The group buffer modeline.
-* Group Highlighting::             Having nice colors in the group buffer.
+* Group Line Specification::    Deciding how the group buffer is to look.
+* Group Modeline Specification::  The group buffer modeline.
+* Group Highlighting::          Having nice colors in the group buffer.
 @end menu
 
 
@@ -1681,6 +1704,15 @@ Number of read articles.
 Estimated total number of articles.  (This is really @var{max-number}
 minus @var{min-number} plus 1.)
 
+Gnus uses this estimation because the NNTP protocol provides efficient
+access to @var{max-number} and @var{min-number} but getting the true
+unread message count is not possible efficiently.  For hysterical
+raisins, even the mail backends, where the true number of unread
+messages might be available efficiently, use the same limited
+interface.  To remove this restriction from Gnus means that the
+backend interface has to be changed, which is not an easy job.  If you
+want to work on this, please contact the Gnus mailing list.
+
 @item y
 Number of unread, unticked, non-dormant articles.
 
@@ -2589,6 +2621,11 @@ 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.
 
+@findex gnus-mailing-list-mode
+@cindex Mail List Groups
+If this variable is set, @code{gnus-mailing-list-mode} is turned on when
+entering summary buffer.
+
 See also @code{gnus-parameter-to-list-alist}.
 
 @item visible
@@ -2667,12 +2704,14 @@ Elements that look like @code{(adapt-file . "file")} will make
 All adaptive score entries will be put into this file.
 
 @item admin-address
+@cindex admin-address
 When unsubscribing from a mailing list you should never send the
 unsubscription notice to the mailing list itself.  Instead, you'd send
 messages to the administrative address.  This parameter allows you to
 put the admin address somewhere convenient.
 
 @item display
+@cindex display
 Elements that look like @code{(display . MODE)} say which articles to
 display on entering the group.  Valid values are:
 
@@ -2683,15 +2722,45 @@ Display all articles, both read and unread.
 @item default
 Display the default visible articles, which normally includes unread and
 ticked articles.
+
+@item an array
+Display articles that satisfy a predicate.
+
+Here are some examples:
+
+@table @code
+@item [read]
+Display only read articles.
+
+@item [not expire]
+Display everything except expirable articles.
+
+@item [and (not reply) (not expire)]
+Display everything except expirable and articles you've already
+responded to.
+@end table
+
+The available operators are @code{not}, @code{and} and @code{or}.
+Predicates include @code{tick}, @code{unsend}, @code{undownload},
+@code{read}, @code{dormant}, @code{expire}, @code{reply},
+@code{killed}, @code{bookmark}, @code{score}, @code{save},
+@code{cache}, @code{forward}, @code{seen} and @code{recent}.
+
 @end table
 
+The @code{display} parameter works by limiting the summary buffer to
+the subset specified.  You can pop the limit by using the @kbd{/ w}
+command (@pxref{Limiting}). 
+
 @item comment
+@cindex comment
 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 charset
+@cindex charset
 Elements that look like @code{(charset . iso-8859-1)} will make
 @code{iso-8859-1} the default charset; that is, the charset that will be
 used for all articles that do not specify a charset.
@@ -2699,13 +2768,15 @@ used for all articles that do not specify a charset.
 See also @code{gnus-group-charset-alist}.
 
 @item ignored-charsets
-Elements that look like @code{(ignored-charsets x-known iso-8859-1)}
+@cindex ignored-charset
+Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
 will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
 default charset will be used for decoding articles.
 
 See also @code{gnus-group-ignored-charsets-alist}.
 
 @item posting-style
+@cindex posting-style
 You can store additional posting style information for this group only
 here (@pxref{Posting Styles}).  The format is that of an entry in the
 @code{gnus-posting-styles} alist, except that there's no regexp matching
@@ -2722,7 +2793,13 @@ like this in the group parameters:
   (signature "Funky Signature"))
 @end example
 
+@item post-method
+@cindex post-method
+If it is set, the value is used as the method for posting message
+instead of @code{gnus-post-method}.
+
 @item banner
+@cindex banner
 An item like @code{(banner . "regex")} causes any part of an article
 that matches the regular expression "regex" to be stripped. Instead of
 "regex", you can also use the symbol @code{signature} which strips the
@@ -2751,6 +2828,34 @@ presents you with a Customize-like interface.  The latter helps avoid
 silly Lisp errors.)  You might also be interested in reading about topic
 parameters (@pxref{Topic Parameters}).
 
+Group parameters can be set via the @code{gnus-parameters} variable too.
+But some variables, such as @code{visible}, have no effect.  For
+example:
+
+@example
+(setq gnus-parameters
+      '(("mail\\..*"
+         (gnus-show-threads nil)
+         (gnus-use-scoring nil)
+         (gnus-summary-line-format
+          "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
+         (gcc-self . t)
+         (display . all))
+
+        ("^nnimap:\\(foo.bar\\)$"
+         (to-group . "\\1"))
+
+        ("mail\\.me"
+         (gnus-use-scoring  t))
+
+        ("list\\..*"
+         (total-expire . t)
+         (broken-reply-to . t))))
+@end example
+
+String value of parameters will be subjected to regexp substitution, as
+the @code{to-group} example shows.
+
 
 @node Listing Groups
 @section Listing Groups
@@ -3023,6 +3128,8 @@ Sort the groups alphabetically by backend name
 
 @end table
 
+And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
+move groups around.
 
 
 @node Group Maintenance
@@ -3049,12 +3156,14 @@ zombies.
 @kindex C-c C-x (Group)
 @findex gnus-group-expire-articles
 Run all expirable articles in the current group through the expiry
-process (if any) (@code{gnus-group-expire-articles}).
+process (if any) (@code{gnus-group-expire-articles}).  That is, delete
+all expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
 
 @item C-c M-C-x
 @kindex C-c M-C-x (Group)
 @findex gnus-group-expire-all-groups
-Run all articles in all groups through the expiry process
+Run all expirable articles in all groups through the expiry process
 (@code{gnus-group-expire-all-groups}).
 
 @end table
@@ -3228,11 +3337,11 @@ the hook for the group mode:
 @end lisp
 
 @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.
+* 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
 
 
@@ -3304,7 +3413,7 @@ convention (@pxref{Process/Prefix}).
 @item T j
 @kindex T j (Topic)
 @findex gnus-topic-jump-to-topic
-Go to a topic (@code{gnus-topic-jump-to-topic}).  
+Go to a topic (@code{gnus-topic-jump-to-topic}).
 
 @item T c
 @kindex T c (Topic)
@@ -3398,8 +3507,9 @@ prefix, group on that level (and lower) will be displayed.
 @item C-c C-x
 @kindex C-c C-x (Topic)
 @findex gnus-topic-expire-articles
-Run all expirable articles in the current group or topic through the expiry
-process (if any) (@code{gnus-topic-expire-articles}).
+Run all expirable articles in the current group or topic through the
+expiry process (if any)
+(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
 
 @item C-k
 @kindex C-k (Topic)
@@ -3549,10 +3659,10 @@ parameters:
 
 @table @code
 @item subscribe
-When subscribing new groups by topic (@pxref{Subscription Methods}), the 
-@code{subscribe} topic parameter says what groups go in what topic.  Its 
+When subscribing new groups by topic (@pxref{Subscription Methods}), the
+@code{subscribe} topic parameter says what groups go in what topic.  Its
 value should be a regexp to match the groups that should go in that
-topic. 
+topic.
 
 @end table
 
@@ -3603,10 +3713,10 @@ happens.  You just have to be careful if you do stuff like that.
 @section Misc Group Stuff
 
 @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.
+* 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
 
 @table @kbd
@@ -3615,7 +3725,7 @@ happens.  You just have to be careful if you do stuff like that.
 @kindex ^ (Group)
 @findex gnus-group-enter-server-mode
 Enter the server buffer (@code{gnus-group-enter-server-mode}).
-@xref{The Server Buffer}.
+@xref{Server Buffer}.
 
 @item a
 @kindex a (Group)
@@ -3668,7 +3778,7 @@ For example:
 
 @item gnus-group-name-charset-group-alist
 @vindex gnus-group-name-charset-group-alist
-An alist of regexp of group name and the charset for group names. 
+An alist of regexp of group name and the charset for group names.
 It is used to show non-ASCII group names.
 
 For example:
@@ -3864,8 +3974,8 @@ file(s) whether Gnus thinks it is necessary or not.
 @end table
 
 
-@node The Summary Buffer
-@chapter The Summary Buffer
+@node Summary Buffer
+@chapter Summary Buffer
 @cindex summary buffer
 
 A line for each article is displayed in the summary buffer.  You can
@@ -3882,10 +3992,11 @@ You can have as many summary buffers open as you wish.
 * Choosing Articles::           Reading articles.
 * Paging the Article::          Scrolling the current article.
 * Reply Followup and Post::     Posting articles.
+* Delayed Articles::            
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
-* Sorting::                     How articles and threads are sorted.
+* Sorting the Summary Buffer::  How articles and threads are sorted.
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
@@ -3907,6 +4018,7 @@ You can have as many summary buffers open as you wish.
 * Crosspost Handling::          How crossposted articles are dealt with.
 * Duplicate Suppression::       An alternative when crosspost handling fails.
 * Security::                    Decrypt and Verify.
+* Mailing List::                Mailing list minor mode.
 @end menu
 
 
@@ -3924,10 +4036,10 @@ You can have as many summary buffers open as you wish.
 @end iftex
 
 @menu
-* Summary Buffer Lines::     You can specify how summary lines should look.
-* To From Newsgroups::       How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting::     Making the summary buffer all pretty and nice.
+* Summary Buffer Lines::        You can specify how summary lines should look.
+* To From Newsgroups::          How to not display your own name.
+* Summary Buffer Mode Line::    You can say how the mode line should look.
+* Summary Highlighting::        Making the summary buffer all pretty and nice.
 @end menu
 
 @findex mail-extract-address-components
@@ -3962,7 +4074,13 @@ the @code{gnus-summary-line-format} variable.  It works along the same
 lines as a normal @code{format} string, with some extensions
 (@pxref{Formatting Variables}).
 
-The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
+There should always be a colon or a point position marker on the line;
+the cursor always moves to the point position marker or the colon after
+performing an operation.  (Of course, Gnus wouldn't be Gnus if it wasn't
+possible to change this.  Just write a new function
+@code{gnus-goto-colon} which does whatever you like with the cursor.)
+
+The default string is @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n}.
 
 The following format specification characters are understood:
 
@@ -3994,10 +4112,13 @@ the @code{a} spec.
 @item L
 Number of lines in the article.
 @item c
-Number of characters in the article. This specifier is not supported in some
-methods (like nnfolder).
+Number of characters in the article. This specifier is not supported
+in some methods (like nnfolder).
 @item I
 Indentation based on thread level (@pxref{Customizing Threading}).
+@item B
+A complex trn-style thread tree, showing response-connecting trace
+lines.
 @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).
@@ -4138,7 +4259,7 @@ In summary, you'd typically put something like the following in
       '(To Newsgroups))
 (setq nnmail-extra-headers gnus-extra-headers)
 (setq gnus-summary-line-format
-      "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+      "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
 (setq gnus-ignored-from-addresses
       "Your Name Here")
 @end lisp
@@ -4337,8 +4458,8 @@ the given number of lines from the top.
 @cindex selecting articles
 
 @menu
-* Choosing Commands::        Commands for choosing articles.
-* Choosing Variables::       Variables that influence these commands.
+* Choosing Commands::           Commands for choosing articles.
+* Choosing Variables::          Variables that influence these commands.
 @end menu
 
 
@@ -4527,8 +4648,8 @@ If given a numerical prefix, you can do semi-manual charset stuff.
 encoded in the @code{cn-gb-2312} charset.  If you have
 
 @lisp
-(setq gnus-summary-show-article-charset-alist 
-      '((1 . cn-gb-2312) 
+(setq gnus-summary-show-article-charset-alist
+      '((1 . cn-gb-2312)
         (2 . big5)))
 @end lisp
 
@@ -4572,7 +4693,7 @@ Select the article buffer (@code{gnus-summary-select-article-buffer}).
 * Summary Mail Commands::       Sending mail.
 * Summary Post Commands::       Sending news.
 * Summary Message Commands::    Other Message-related commands.
-* Canceling and Superseding::   ``Whoops, I shouldn't have called him that.''
+* Canceling and Superseding::   
 @end menu
 
 
@@ -4620,6 +4741,15 @@ Mail a wide reply to the current article and include the original
 message (@code{gnus-summary-wide-reply-with-original}).  This command uses
 the process/prefix convention.
 
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+Mail a very wide reply to the author of the current article
+(@code{gnus-summary-wide-reply}).  A @dfn{very wide reply} is a reply
+that goes out to all people listed in the @code{To}, @code{From} (or
+@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
+articles.  This command uses the process/prefix convention.
+
 @item S o m
 @itemx C-c C-f
 @kindex S o m (Summary)
@@ -4760,7 +4890,7 @@ the process/prefix convention.
 @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-post-forward}).
  If no prefix is given, the message is forwarded according to the value
 of (@code{message-forward-as-mime}) and
 (@code{message-forward-show-mml}); if the prefix is 1, decode the
@@ -4861,6 +4991,103 @@ canceled/superseded.
 
 Just remember, kids: There is no 'c' in 'supersede'.
 
+@node Delayed Articles
+@section Delayed Articles
+@cindex delayed sending
+@cindex send delayed
+
+Sometimes, you might wish to delay the sending of a message.  For
+example, you might wish to arrange for a message to turn up just in time
+to remind your about the birthday of your Significant Other.  For this,
+there is the @code{gnus-delay} package.  Setup is simple:
+
+@lisp
+(gnus-delay-initialize)
+@end lisp
+
+@findex gnus-delay-article
+Normally, to send a message you use the @kbd{C-c C-c} command from
+Message mode.  To delay a message, use @kbd{C-c C-j}
+(@code{gnus-delay-article}) instead.  This will ask you for how long the
+message should be delayed.  Possible answers are:
+
+@itemize
+@item
+A time span.  Consists of an integer and a letter.  For example,
+@code{42d} means to delay for 42 days.  Available letters are @code{m}
+(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
+(months) and @code{Y} (years).
+
+@item
+A specific date.  Looks like @code{YYYYY-MM-DD}.  The message will be
+delayed until that day, at a specific time (eight o'clock by default).
+See also @code{gnus-delay-default-hour}.
+
+@item
+A specific time of day.  Given in @code{hh:mm} format, 24h, no am/pm
+stuff.  The deadline will be at that time today, except if that time has
+already passed, then it's at the given time tomorrow.  So if it's ten
+o'clock in the morning and you specify @code{11:15}, then the deadline
+is one hour and fifteen minutes hence.  But if you specify @code{9:20},
+that means a time tomorrow.
+@end itemize
+
+The action of the @code{gnus-delay-article} command is influenced by a
+couple of variables:
+
+@table @code
+@item gnus-delay-default-hour
+@vindex gnus-delay-default-hour
+When you specify a specific date, the message will be due on that hour
+on the given date.  Possible values are integers 0 through 23.
+
+@item gnus-delay-default-delay
+@vindex gnus-delay-default-delay
+This is a string and gives the default delay.  It can be of any of the
+formats described above.
+
+@item gnus-delay-group
+@vindex gnus-delay-group
+Delayed articles will be kept in this group on the drafts server until
+they are due.  You probably don't need to change this.  The default
+value is @code{"delayed"}.
+
+@item gnus-delay-header
+@vindex gnus-delay-header
+The deadline for each article will be stored in a header.  This variable
+is a string and gives the header name.  You probably don't need to
+change this.  The default value is @code{"X-Gnus-Delayed"}.
+@end table
+
+The way delaying works is like this: when you use the
+@code{gnus-delay-article} command, you give a certain delay.  Gnus
+calculates the deadline of the message and stores it in the
+@code{X-Gnus-Delayed} header and puts the message in the
+@code{nndraft:delayed} group.
+
+And whenever you get new news, Gnus looks through the group for articles
+which are due and sends them.  It uses the @code{gnus-delay-send-drafts}
+function for this.  By default, this function is added to the hook
+@code{gnus-get-new-news-hook}.  But of course, you can change this.
+Maybe you want to use the demon to send drafts?  Just tell the demon to
+execute the @code{gnus-delay-send-drafts} function.
+
+@table @code
+@item gnus-delay-initialize
+@findex gnus-delay-initialize
+By default, this function installs the @kbd{C-c C-j} key binding in
+Message mode and @code{gnus-delay-send-drafts} in
+@code{gnus-get-new-news-hook}.  But it accepts two optional arguments,
+@code{no-keymap} and @code{no-check}.  If @code{no-keymap} is non-nil,
+the @kbd{C-c C-j} binding is not intalled.  If @code{no-check} is
+non-nil, @code{gnus-get-new-news-hook} is not changed.
+
+For example, @code{(gnus-delay-initialize nil t)} means to change the
+keymap but not to change @code{gnus-get-new-news-hook}.  Presumably, you
+want to use the demon for sending due delayed articles.  Just don't
+forget to set that up :-)
+@end table
+
 
 @node Marking Articles
 @section Marking Articles
@@ -4877,9 +5104,9 @@ neologism ohoy!) of the article.  Alphabetic marks generally mean
 In addition, you also have marks that do not affect readedness.
 
 @menu
-* Unread Articles::      Marks for unread articles.
-* Read Articles::        Marks for read articles.
-* Other Marks::          Marks that do not affect readedness.
+* Unread Articles::             Marks for unread articles.
+* Read Articles::               Marks for read articles.
+* Other Marks::                 Marks that do not affect readedness.
 @end menu
 
 @ifinfo
@@ -4919,6 +5146,8 @@ Marked as dormant (@code{gnus-dormant-mark}).
 @dfn{Dormant articles} will only appear in the summary buffer if there
 are followups to it.  If you want to see them even if they don't have
 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
+Otherwise (except for the visibility issue), they are just like ticked
+messages.
 
 @item SPACE
 @vindex gnus-unread-mark
@@ -4982,7 +5211,7 @@ Threading}.
 @item M
 @vindex gnus-duplicate-mark
 Article marked as read by duplicate suppression
-(@code{gnus-duplicated-mark}).  @xref{Duplicate Suppression}.
+(@code{gnus-duplicate-mark}).  @xref{Duplicate Suppression}.
 
 @end table
 
@@ -5027,6 +5256,15 @@ All articles that you have replied to or made a followup to (i.e., have
 answered) will be marked with an @samp{A} in the second column
 (@code{gnus-replied-mark}).
 
+@vindex gnus-forwarded-mark
+All articles that you have forwarded will be marked with an @samp{F} in
+the second column (@code{gnus-forwarded-mark}).
+
+@vindex gnus-recent-mark
+Articles that are ``recently'' arrived in the group will be marked
+with an @samp{N} in the second column (@code{gnus-recent-mark}).  Most
+backend doesn't support the mark, in which case it's not shown.
+
 @item
 @vindex gnus-cached-mark
 Articles stored in the article cache will be marked with an @samp{*} in
@@ -5038,6 +5276,11 @@ Articles ``saved'' (in some manner or other; not necessarily
 religiously) are marked with an @samp{S} in the second column
 (@code{gnus-saved-mark}).
 
+@item
+@vindex gnus-unseen-mark
+Articles that haven't been seen by the user before are marked with a
+@samp{.} in the second column (@code{gnus-unseen-mark}). 
+
 @item
 @vindex gnus-not-empty-thread-mark
 @vindex gnus-empty-thread-mark
@@ -5143,9 +5386,15 @@ articles (@code{gnus-summary-catchup-all}).
 @item M H
 @kindex M H (Summary)
 @findex gnus-summary-catchup-to-here
-Catchup the current group to point
+Catchup the current group to point (before the point)
 (@code{gnus-summary-catchup-to-here}).
 
+@item M h
+@kindex M h (Summary)
+@findex gnus-summary-catchup-from-here
+Catchup the current group from point (after the point)
+(@code{gnus-summary-catchup-from-here}).
+
 @item C-w
 @kindex C-w (Summary)
 @findex gnus-summary-mark-region-as-read
@@ -5439,6 +5688,14 @@ the stack.
 Limit the summary buffer to articles that have a score at or above some
 score (@code{gnus-summary-limit-to-score}).
 
+@item / p
+@kindex / p (Summary)
+@findex gnus-summary-limit-to-display-parameter
+Limit the summary buffer to articles that satisfy the @code{display}
+group parameter predicate
+(@code{gnus-summary-limit-to-display-parameter}).  See @pxref{Group
+Parameters} for more on this predicate.
+
 @item / E
 @itemx M S
 @kindex M S (Summary)
@@ -5538,8 +5795,8 @@ displayed as empty lines in the summary buffer.
 
 
 @menu
-* Customizing Threading::     Variables you can change to affect the threading.
-* Thread Commands::           Thread based commands in the summary buffer.
+* Customizing Threading::       Variables you can change to affect the threading.
+* Thread Commands::             Thread based commands in the summary buffer.
 @end menu
 
 
@@ -5548,10 +5805,10 @@ displayed as empty lines in the summary buffer.
 @cindex customizing threading
 
 @menu
-* Loose Threads::        How Gnus gathers loose threads into bigger threads.
-* Filling In Threads::   Making the threads displayed look fuller.
-* More Threading::       Even more variables for fiddling with threads.
-* Low-Level Threading::  You thought it was over... but you were wrong!
+* Loose Threads::               How Gnus gathers loose threads into bigger threads.
+* Filling In Threads::          Making the threads displayed look fuller.
+* More Threading::              Even more variables for fiddling with threads.
+* Low-Level Threading::         You thought it was over... but you were wrong!
 @end menu
 
 
@@ -5774,6 +6031,18 @@ thread or not.  Finally, if this variable is @code{more}, Gnus won't cut
 off sparse leaf nodes that don't lead anywhere.  This variable is
 @code{nil} by default.
 
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+This is a rather obscure variable that few will find useful.  It's
+intended for those non-news newsgroups where the backend has to fetch
+quite a lot to present the summary buffer, and where it's impossible to
+go back to parents of articles.  This is mostly the case in the
+web-based groups, like the @code{nnultimate} groups.
+
+If you don't use those, then it's safe to leave this as the default
+@code{nil}.  If you want to use this variable, it should be a regexp
+that matches the group name, or @code{t} for all groups.
+
 @end table
 
 
@@ -5808,9 +6077,9 @@ will be hidden.
 @item gnus-thread-ignore-subject
 @vindex gnus-thread-ignore-subject
 Sometimes somebody changes the subject in the middle of a thread.  If
-this variable is non-@code{nil}, the subject change is ignored.  If it
-is @code{nil}, which is the default, a change in the subject will result
-in a new thread.
+this variable is non-@code{nil}, which is the default, the subject
+change is ignored.  If it is @code{nil}, a change in the subject will
+result in a new thread.
 
 @item gnus-thread-indent-level
 @vindex gnus-thread-indent-level
@@ -6003,8 +6272,8 @@ that have subjects fuzzily equal will be included (@pxref{Fuzzy
 Matching}).
 
 
-@node Sorting
-@section Sorting
+@node Sorting the Summary Buffer
+@section Sorting the Summary Buffer
 
 @findex gnus-thread-sort-by-total-score
 @findex gnus-thread-sort-by-date
@@ -6405,7 +6674,9 @@ Save the current article in a VM folder
 (@code{gnus-summary-save-article-vm}).
 
 @item O p
+@itemx |
 @kindex O p (Summary)
+@kindex | (Summary)
 @findex gnus-summary-pipe-output
 Save the current article in a pipe.  Uhm, like, what I mean is---Pipe
 the current article to a process (@code{gnus-summary-pipe-output}).
@@ -6588,7 +6859,8 @@ a spool, you could
 
 @lisp
 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
-(setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding
+(setq gnus-default-article-saver
+      'gnus-summary-save-in-file) ; no encoding
 @end lisp
 
 Then just save with @kbd{o}.  You'd then read this hierarchy with
@@ -6605,12 +6877,12 @@ Sometime users post articles (or series of articles) that have been
 encoded in some way or other.  Gnus can decode them for you.
 
 @menu
-* Uuencoded Articles::    Uudecode articles.
-* Shell Archives::        Unshar articles.
-* PostScript Files::      Split PostScript.
-* Other Files::           Plain save and binhex.
-* Decoding Variables::    Variables for a happy decoding.
-* Viewing Files::         You want to look at the result of the decoding?
+* Uuencoded Articles::          Uudecode articles.
+* Shell Archives::              Unshar articles.
+* PostScript Files::            Split PostScript.
+* Other Files::                 Plain save and binhex.
+* Decoding Variables::          Variables for a happy decoding.
+* Viewing Files::               You want to look at the result of the decoding?
 @end menu
 
 @cindex series
@@ -6777,9 +7049,9 @@ doesn't really work yet.
 Adjective, not verb.
 
 @menu
-* Rule Variables::          Variables that say how a file is to be viewed.
-* Other Decode Variables::  Other decode variables.
-* Uuencoding and Posting::  Variables for customizing uuencoding.
+* Rule Variables::              Variables that say how a file is to be viewed.
+* Other Decode Variables::      Other decode variables.
+* Uuencoding and Posting::      Variables for customizing uuencoding.
 @end menu
 
 
@@ -7014,14 +7286,14 @@ writing, so there are tons of functions and variables to make reading
 these articles easier.
 
 @menu
-* Article Highlighting::    You want to make the article look like fruit salad.
-* Article Fontisizing::     Making emphasized text look nice.
-* 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.
-* Article Date::            Grumble, UT!
-* Article Signature::       What is a signature?
-* Article Miscellania::     Various other stuff.
+* Article Highlighting::        You want to make the article look like fruit salad.
+* Article Fontisizing::         Making emphasized text look nice.
+* 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.
+* Article Date::                Grumble, UT!
+* Article Signature::           What is a signature?
+* Article Miscellania::         Various other stuff.
 @end menu
 
 
@@ -7460,7 +7732,7 @@ when filling.
 
 @item W Q
 @kindex W Q (Summary)
-@findex gnus-article-fill-long-lines 
+@findex gnus-article-fill-long-lines
 Fill long lines (@code{gnus-article-fill-long-lines}).
 
 @item W C
@@ -7487,6 +7759,7 @@ non-ASCII (i. e., 8-bit) articles.  It typically makes strings like
 readable to me.  Note that the this is usually done automatically by
 Gnus if the message in question has a @code{Content-Transfer-Encoding}
 header that says that this encoding has been done.
+If a prefix is given, a charset will be asked for.
 
 @item W 6
 @kindex W 6 (Summary)
@@ -7497,6 +7770,7 @@ Base64 is one common @sc{mime} encoding employed when sending non-ASCII
 automatically by Gnus if the message in question has a
 @code{Content-Transfer-Encoding} header that says that this encoding has
 been done.
+If a prefix is given, a charset will be asked for.
 
 @item W Z
 @kindex W Z (Summary)
@@ -7508,10 +7782,11 @@ makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
 @item W h
 @kindex W h (Summary)
 @findex gnus-article-wash-html
-Treat HTML (@code{gnus-article-wash-html}).  
+Treat HTML (@code{gnus-article-wash-html}).
 Note that the this is usually done automatically by Gnus if the message
 in question has a @code{Content-Type} header that says that this type
 has been done.
+If a prefix is given, a charset will be asked for.
 
 @item W f
 @kindex W f (Summary)
@@ -7560,6 +7835,16 @@ Add clickable buttons to the article (@code{gnus-article-add-buttons}).
 Add clickable buttons to the article headers
 (@code{gnus-article-add-buttons-to-head}).
 
+@item W p
+@kindex W p (Summary)
+@findex gnus-article-verify-x-pgp-sig
+Verify a signed control message (@code{gnus-article-verify-x-pgp-sig}).
+Control messages such as @code{newgroup} and @code{checkgroups} are
+usually signed by the hierarchy maintainer.  You need to add the PGP
+public key of the maintainer to your keyring to verify the
+message.@footnote{PGP keys for many hierarchies are available at
+@uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}}
+
 @item W W H
 @kindex W W H (Summary)
 @findex gnus-article-strip-headers-from-body
@@ -7753,7 +8038,7 @@ Say how much time has elapsed between the article was posted and now
 (@code{gnus-article-date-lapsed}).  It looks something like:
 
 @example
-X-Sent: 9 years, 6 weeks, 4 days, 9 hours, 3 minutes, 28 seconds ago
+X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
 @end example
 
 The value of @code{gnus-article-date-lapsed-new-header} determines
@@ -7858,7 +8143,7 @@ signature after all.
 @kindex A t (Summary)
 @findex gnus-article-babel
 Translate the article from one language to another
-(@code{gnus-article-babel}). 
+(@code{gnus-article-babel}).
 
 @end table
 
@@ -8002,6 +8287,42 @@ Here's an example function the does the latter:
 @item gnus-mime-multipart-functions
 Alist of @sc{mime} multipart types and functions to handle them.
 
+@vindex mm-file-name-rewrite-functions
+@item mm-file-name-rewrite-functions
+List of functions used for rewriting file names of @sc{mime} parts.
+Each function takes a file name as input and returns a file name.
+
+Ready-made functions include@*
+@code{mm-file-name-delete-whitespace},
+@code{mm-file-name-trim-whitespace},
+@code{mm-file-name-collapse-whitespace}, and
+@code{mm-file-name-replace-whitespace}.  The later uses the value of
+the variable @code{mm-file-name-replace-whitespace} to replace each
+whitespace character in a file name with that string; default value
+is @code{"_"} (a single underscore).
+@findex mm-file-name-delete-whitespace
+@findex mm-file-name-trim-whitespace
+@findex mm-file-name-collapse-whitespace
+@findex mm-file-name-replace-whitespace
+@vindex mm-file-name-replace-whitespace
+
+The standard functions @code{capitalize}, @code{downcase},
+@code{upcase}, and @code{upcase-initials} may be useful, too.
+
+Everybody knows that whitespace characters in file names are evil,
+except those who don't know.  If you receive lots of attachments from
+such unenlightened users, you can make live easier by adding
+
+@lisp
+(setq mm-file-name-rewrite-functions
+      '(mm-file-name-trim-whitespace
+        mm-file-name-collapse-whitespace
+        mm-file-name-replace-whitespace))
+@end lisp
+
+@noindent
+to your @file{.gnus} file.
+
 @end table
 
 
@@ -8019,8 +8340,8 @@ hierarchy uses @code{iso-2022-jp-2}.
 
 @vindex gnus-group-charset-alist
 This knowledge is encoded in the @code{gnus-group-charset-alist}
-variable, which is an alist of regexps (to match full group names) and
-default charsets to be used when reading these groups.
+variable, which is an alist of regexps (use the first item to match full
+group names) and default charsets to be used when reading these groups.
 
 In addition, some people do use soi-disant @sc{mime}-aware agents that
 aren't.  These blithely mark messages as being in @code{iso-8859-1} even
@@ -8152,6 +8473,12 @@ Sort by article length (@code{gnus-summary-sort-by-chars}).
 @kindex C-c C-s C-i (Summary)
 @findex gnus-summary-sort-by-score
 Sort by score (@code{gnus-summary-sort-by-score}).
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+Sort using the default sorting method
+(@code{gnus-summary-sort-by-original}).
 @end table
 
 These functions will work both when you use threading and when you don't
@@ -8512,7 +8839,7 @@ following to your @file{.gnus.el} file:
              (article 1.0))))
 @end lisp
 
-@xref{Windows Configuration}.
+@xref{Window Layout}.
 
 
 @node Mail Group Commands
@@ -8530,8 +8857,10 @@ process/prefix convention (@pxref{Process/Prefix}).
 @item B e
 @kindex B e (Summary)
 @findex gnus-summary-expire-articles
-Expire all expirable articles in the group
-(@code{gnus-summary-expire-articles}).
+Run all expirable articles in the current group through the expiry
+process (@code{gnus-summary-expire-articles}).  That is, delete all
+expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
 
 @item B M-C-e
 @kindex B M-C-e (Summary)
@@ -8556,7 +8885,7 @@ disk forever and ever, never to return again.'' Use with caution.
 @vindex gnus-preserve-marks
 Move the article from one mail group to another
 (@code{gnus-summary-move-article}).  Marks will be preserved if
-@var{gnus-preserve-marks} is non-@code{nil} (which is the default). 
+@var{gnus-preserve-marks} is non-@code{nil} (which is the default).
 
 @item B c
 @kindex B c (Summary)
@@ -8655,10 +8984,10 @@ suggestions you find reasonable.  (Note that
 @section Various Summary Stuff
 
 @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.
+* Summary Group Information::   Information oriented commands.
+* Searching for Articles::      Multiple article commands.
+* Summary Generation Commands::  
+* Really Various Summary Commands::  Those pesky non-conformant commands.
 @end menu
 
 @table @code
@@ -8760,13 +9089,13 @@ Go to the Gnus info node (@code{gnus-info-find-node}).
 @item M-s
 @kindex M-s (Summary)
 @findex gnus-summary-search-article-forward
-Search through all subsequent articles for a regexp
+Search through all subsequent (raw) articles for a regexp
 (@code{gnus-summary-search-article-forward}).
 
 @item M-r
 @kindex M-r (Summary)
 @findex gnus-summary-search-article-backward
-Search through all previous articles for a regexp
+Search through all previous (raw) articles for a regexp
 (@code{gnus-summary-search-article-backward}).
 
 @item &
@@ -9126,7 +9455,7 @@ Gnus is able to verify PGP or S/MIME signed messages or decrypt PGP
 encrypted messages.
 
 @enumerate
-@item 
+@item
 To verify or decrypt PGP messages, you have to install mailcrypt or
 gpg.el.
 
@@ -9147,8 +9476,48 @@ protocols. Otherwise, ask user.
 
 @end table
 
-@node The Article Buffer
-@chapter The Article Buffer
+@node Mailing List
+@section Mailing List
+
+Gnus understands some mailing list fields of RFC 2369.
+
+@table @kbd
+
+@item C-c C-n h
+@kindex C-c C-n h (Summary)
+@findex gnus-mailing-list-help
+Send a message to fetch mailing list help, if List-Help field exists.
+
+@item C-c C-n s
+@kindex C-c C-n s (Summary)
+@findex gnus-mailing-list-subscribe
+Send a message to subscribe the mailing list, if List-Subscribe field exists.
+
+@item C-c C-n u
+@kindex C-c C-n u (Summary)
+@findex gnus-mailing-list-unsubscribe
+Send a message to unsubscribe the mailing list, if List-Unsubscribe
+field exists.
+
+@item C-c C-n p
+@kindex C-c C-n p (Summary)
+@findex gnus-mailing-list-post
+Post to the mailing list, if List-Post field exists.
+
+@item C-c C-n o
+@kindex C-c C-n o (Summary)
+@findex gnus-mailing-list-owner
+Send a message to the mailing list owner, if List-Owner field exists.
+
+@item C-c C-n a
+@kindex C-c C-n a (Summary)
+@findex gnus-mailing-list-owner
+Browse the mailing list archive, if List-Archive field exists.
+
+@end table
+
+@node Article Buffer
+@chapter Article Buffer
 @cindex article buffer
 
 The articles are displayed in the article buffer, of which there is only
@@ -9156,11 +9525,11 @@ one.  All the summary buffers share the same article buffer unless you
 tell Gnus otherwise.
 
 @menu
-* 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.
-* Misc Article::          Other stuff.
+* 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.
+* Misc Article::                Other stuff.
 @end menu
 
 
@@ -9243,7 +9612,7 @@ variable, will be displayed in random order after all the headers listed in this
 @findex gnus-article-hide-boring-headers
 @vindex gnus-boring-article-headers
 You can hide further boring headers by setting
-@code{gnus-treat-hide-boring-header} to @code{head}.  What this function
+@code{gnus-treat-hide-boring-headers} to @code{head}.  What this function
 does depends on the @code{gnus-boring-article-headers} variable.  It's a
 list, but this list doesn't actually contain header names.  Instead is
 lists various @dfn{boring conditions} that Gnus can check and remove
@@ -9274,7 +9643,7 @@ Remove the @code{To} header if it is very long.
 Remove all @code{To} headers if there are more than one.
 @end table
 
-To include the four three elements, you could say something like;
+To include these three elements, you could say something like;
 
 @lisp
 (setq gnus-boring-article-headers
@@ -9321,25 +9690,35 @@ Toggle displaying of the @sc{mime} object
 Prompt for a method, and then view the @sc{mime} object using this
 method (@code{gnus-mime-view-part}).
 
+@findex gnus-mime-view-part-as-type
+@item t (Article)
+View the @sc{mime} object as if it were a different @sc{mime} media type
+(@code{gnus-mime-view-part-as-type}).
+
+@findex gnus-mime-view-part-as-charset
+@itemx C (Article)
+Prompt for a charset, and then view the @sc{mime} object using this
+charset (@code{gnus-mime-view-part-as-charset}).
+
 @findex gnus-mime-save-part
 @item o (Article)
 Prompt for a file name, and then save the @sc{mime} object
 (@code{gnus-mime-save-part}).
 
+@findex gnus-mime-save-part-and-strip
+@item C-o (Article)
+Prompt for a file name, then save the @sc{mime} object and strip it from
+the article.  Then proceed to article editing, where a reasonable
+suggestion is being made on how the altered article should look
+like. The stripped @sc{mime} object will be referred via the
+message/external-body @sc{mime} type.
+(@code{gnus-mime-save-part-and-strip}).
+
 @findex gnus-mime-copy-part
 @item c (Article)
 Copy the @sc{mime} object to a fresh buffer and display this buffer
 (@code{gnus-mime-copy-part}).
 
-@findex gnus-mime-view-part-as-type
-@item t (Article)
-View the @sc{mime} object as if it were a different @sc{mime} media type
-(@code{gnus-mime-view-part-as-type}). 
-
-@findex gnus-mime-pipe-part
-@item | (Article)
-Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
-
 @findex gnus-mime-inline-part
 @item i (Article)
 Insert the contents of the @sc{mime} object into the buffer
@@ -9349,6 +9728,21 @@ do semi-manual charset stuff (see
 @code{gnus-summary-show-article-charset-alist} in @pxref{Paging the
 Article}).
 
+@findex gnus-mime-internalize-part
+@item E (Article)
+View the @sc{mime} object with an internal viewer.  If no internal
+viewer is available, use an external viewer
+(@code{gnus-mime-internalize-part}).
+
+@findex gnus-mime-externalize-part
+@item e (Article)
+View the @sc{mime} object with an external viewer.
+(@code{gnus-mime-externalize-part}).
+
+@findex gnus-mime-pipe-part
+@item | (Article)
+Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
+
 @findex gnus-mime-action-on-part
 @item . (Article)
 Interactively run an action on the @sc{mime} object
@@ -9458,6 +9852,7 @@ possible but those listed are probably sufficient for most people.
 @item gnus-treat-hide-citation (t, integer)
 @item gnus-treat-hide-citation-maybe (t, integer)
 @item gnus-treat-strip-pgp (t, last, integer)
+@item gnus-treat-x-pgp-sig (head)
 @item gnus-treat-strip-pem (t, last, integer)
 @item gnus-treat-highlight-headers (head)
 @item gnus-treat-highlight-citation (t, integer)
@@ -9488,7 +9883,7 @@ You can, of course, write your own functions to be called from
 @code{gnus-part-display-hook}.  The functions are called narrowed to the
 part, and you can do anything you like, pretty much.  There is no
 information that you have to keep in the buffer---you can change
-everything.  
+everything.
 
 
 @node Article Keymap
@@ -9636,14 +10031,14 @@ Message Manual}.  Where the message will be posted/mailed to depends
 on your setup (@pxref{Posting Server}).
 
 @menu
-* Mail::                 Mailing and replying.
-* Posting Server::       What server should you post via?
-* Mail and Post::        Mailing and posting at the same time.
-* Archived Messages::    Where Gnus stores the messages you've sent.
-* Posting Styles::       An easier way to specify who you are.
-* Drafts::               Postponing messages and rejected messages.
-* Rejected Articles::    What happens if the server doesn't like your article?
-* Using GPG::            How to use GPG and MML to sign and encrypt messages
+* Mail::                        Mailing and replying.
+* Posting Server::              What server should you post via?
+* Mail and Post::               Mailing and posting at the same time.
+* Archived Messages::           Where Gnus stores the messages you've sent.
+* Posting Styles::              An easier way to specify who you are.
+* Drafts::                      Postponing messages and rejected messages.
+* Rejected Articles::           What happens if the server doesn't like your article?
+* Using GPG::                   How to use GPG and MML to sign and encrypt messages
 @end menu
 
 Also see @pxref{Canceling and Superseding} for information on how to
@@ -9694,7 +10089,7 @@ then set the @code{gnus-post-method} to some other method:
 Now, if you've done this, and then this server rejects your article, or
 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, to get back the default behaviour, for posting.
+the ``current'' server, to get back the default behavior, for posting.
 
 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.
@@ -9747,7 +10142,8 @@ you're in, you could say something like the following:
 (add-hook 'gnus-select-group-hook
           (lambda ()
             (cond
-             ((string-match "^de\\." gnus-newsgroup-name)
+             ((string-match
+               "^de\\." (gnus-group-real-name gnus-newsgroup-name))
               (ispell-change-dictionary "deutsch"))
              (t
               (ispell-change-dictionary "english")))))
@@ -10122,10 +10518,10 @@ to 700, for your own safety.
 If you want to benefit of PGP2.6 compatibility, you might create a script named
 @file{gpg-2comp} with these instructions:
 
-@code{
+@example
 #!/bin/sh
 exec gpg --rfc1991 "$@@"
-}
+@end example
 
 If you don't want to use such compatibility, you can add the following line to
 your @file{~/.emacs} or @file{~/.gnus}:
@@ -10161,7 +10557,7 @@ name}.  There may be additional elements in the select method, where the
 value may have special meaning for the backend in question.
 
 One could say that a select method defines a @dfn{virtual server}---so
-we do just that (@pxref{The Server Buffer}).
+we do just that (@pxref{Server Buffer}).
 
 The @dfn{name} of the group is the name the backend will recognize the
 group as.
@@ -10175,18 +10571,18 @@ backend just knows this group as @samp{soc.motss}.
 The different methods all have their peculiarities, of course.
 
 @menu
-* The Server Buffer::     Making and editing virtual servers.
-* Getting News::          Reading USENET news with Gnus.
-* Getting Mail::          Reading your personal mail with Gnus.
-* Browsing the Web::      Getting messages from a plethora of Web sources.
-* Other Sources::         Reading directories, files, SOUP packets.
-* Combined Groups::       Combining groups into one group.
-* Gnus Unplugged::        Reading news and mail offline.
+* Server Buffer::               Making and editing virtual servers.
+* Getting News::                Reading USENET news with Gnus.
+* Getting Mail::                Reading your personal mail with Gnus.
+* Browsing the Web::            Getting messages from a plethora of Web sources.
+* Other Sources::               Reading directories, files, SOUP packets.
+* Combined Groups::             Combining groups into one group.
+* Gnus Unplugged::              Reading news and mail offline.
 @end menu
 
 
-@node The Server Buffer
-@section The Server Buffer
+@node Server Buffer
+@section Server Buffer
 
 Traditionally, a @dfn{server} is a machine or a piece of software that
 one connects to, and then requests information from.  Gnus does not
@@ -10212,13 +10608,13 @@ To enter the server buffer, use the @kbd{^}
 (@code{gnus-group-enter-server-mode}) command in the group buffer.
 
 @menu
-* Server Buffer Format::      You can customize the look of this buffer.
-* 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.
+* Server Buffer Format::        You can customize the look of this buffer.
+* 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
 
 @vindex gnus-server-mode-hook
@@ -10392,25 +10788,30 @@ 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")))
+      (nntp-open-connection-function nntp-open-via-rlogin-and-telnet)
+      (nntp-via-address "the.firewall.machine")
+      (nntp-address "the.real.nntp.host")
+      (nntp-end-of-line "\n"))
 @end lisp
 
 If you want to use the wonderful @code{ssh} program to provide a
-compressed connection over the modem line, you could create a virtual
-server that would look something like this:
+compressed connection over the modem line, you could add the following
+configuration to the example above:
+
+@lisp
+      (nntp-via-rlogin-command "ssh")
+@end lisp
+
+If you're behind a firewall, but have direct access to the outside world
+through a wrapper command like "runsocks", you could open a socksified
+telnet connection to the news server as follows:
 
 @lisp
-(nntp "news"
-       (nntp-address "copper.uio.no")
-       (nntp-rlogin-program "ssh")
-       (nntp-open-connection-function nntp-open-rlogin)
-       (nntp-end-of-line "\n")
-       (nntp-rlogin-parameters
-        ("telnet" "news.uio.no" "nntp")))
+(nntp "outside"
+      (nntp-pre-command "runsocks")
+      (nntp-open-connection-function nntp-open-via-telnet)
+      (nntp-address "the.news.server")
+      (nntp-end-of-line "\n"))
 @end lisp
 
 This means that you have to have set up @code{ssh-agent} correctly to
@@ -10512,7 +10913,7 @@ it will regard that server as ``down''.
 So, what happens if the machine was only feeling unwell temporarily?
 How do you test to see whether the machine has come up again?
 
-You jump to the server buffer (@pxref{The Server Buffer}) and poke it
+You jump to the server buffer (@pxref{Server Buffer}) and poke it
 with the following commands:
 
 @table @kbd
@@ -10566,8 +10967,8 @@ only two methods of getting news---it can read from an @sc{nntp} server,
 or it can read from a local spool.
 
 @menu
-* NNTP::               Reading news from an @sc{nntp} server.
-* News Spool::         Reading news from the local spool.
+* NNTP::                        Reading news from an @sc{nntp} server.
+* News Spool::                  Reading news from the local spool.
 @end menu
 
 
@@ -10625,7 +11026,7 @@ manual page, but here are the salient facts:
 The file contains one or more line, each of which define one server.
 
 @item
-Each line may contain an arbitrary number of token/value pairs.  
+Each line may contain an arbitrary number of token/value pairs.
 
 The valid tokens include @samp{machine}, @samp{login}, @samp{password},
 @samp{default}.  In addition Gnus introduces two new tokens, not present
@@ -10684,7 +11085,8 @@ The default value is
 
 @lisp
 '(("nntpd 1\\.5\\.11t"
-   (remove-hook 'nntp-server-opened-hook 'nntp-send-mode-reader)))
+   (remove-hook 'nntp-server-opened-hook
+                'nntp-send-mode-reader)))
 @end lisp
 
 This ensures that Gnus doesn't send the @code{MODE READER} command to
@@ -10735,125 +11137,6 @@ no timeouts are done.
 This hook is run as the last step when connecting to an @sc{nntp}
 server.
 
-@findex nntp-open-rlogin
-@findex nntp-open-telnet
-@findex nntp-open-network-stream
-@item nntp-open-connection-function
-@vindex nntp-open-connection-function
-This function is used to connect to the remote system.  Four pre-made
-functions are supplied:
-
-@table @code
-@item nntp-open-network-stream
-This is the default, and simply connects to some port or other on the
-remote system.
-
-@item nntp-open-rlogin
-Does an @samp{rlogin} on the
-remote system, and then does a @samp{telnet} to the @sc{nntp} server
-available there.
-
-@code{nntp-open-rlogin}-related variables:
-
-@table @code
-
-@item nntp-rlogin-program
-@vindex nntp-rlogin-program
-Program used to log in on remote machines.  The default is @samp{rsh},
-but @samp{ssh} is a popular alternative.
-
-@item nntp-rlogin-parameters
-@vindex nntp-rlogin-parameters
-This list will be used as the parameter list given to @code{rsh}.
-
-@item nntp-rlogin-user-name
-@vindex nntp-rlogin-user-name
-User name on the remote system.
-
-@end table
-
-@item nntp-open-telnet
-Does a @samp{telnet} to the remote system and then another @samp{telnet}
-to get to the @sc{nntp} server.
-
-@code{nntp-open-telnet}-related variables:
-
-@table @code
-@item nntp-telnet-command
-@vindex nntp-telnet-command
-Command used to start @code{telnet}.
-
-@item nntp-telnet-switches
-@vindex nntp-telnet-switches
-List of strings to be used as the switches to the @code{telnet} command.
-
-@item nntp-telnet-user-name
-@vindex nntp-telnet-user-name
-User name for log in on the remote system.
-
-@item nntp-telnet-passwd
-@vindex nntp-telnet-passwd
-Password to use when logging in.
-
-@item nntp-telnet-parameters
-@vindex nntp-telnet-parameters
-A list of strings executed as a command after logging in
-via @code{telnet}.
-
-@item nntp-telnet-shell-prompt
-@vindex nntp-telnet-shell-prompt
-Regexp matching the shell prompt on the remote machine.  The default is
-@samp{bash\\|\$ *\r?$\\|> *\r?}.
-
-@item nntp-open-telnet-envuser
-@vindex nntp-open-telnet-envuser
-If non-@code{nil}, the @code{telnet} session (client and server both)
-will support the @code{ENVIRON} option and not prompt for login name.
-This works for Solaris @code{telnet}, for instance.
-
-@end table
-
-@findex nntp-open-ssl-stream
-@item nntp-open-ssl-stream
-Opens a connection to a server over a @dfn{secure} channel.  To use this
-you must have SSLay installed
-(@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distribution, for instance).  You then
-define a server as follows:
-
-@lisp
-;; Type `C-c C-c' after you've finished editing.
-;;
-;; "snews" is port 563 and is predefined in our /etc/services
-;;
-(nntp "snews.bar.com"
-      (nntp-open-connection-function nntp-open-ssl-stream)
-      (nntp-port-number "snews")
-      (nntp-address "snews.bar.com"))
-@end lisp
-
-@end table
-
-@item nntp-end-of-line
-@vindex nntp-end-of-line
-String to use as end-of-line marker when talking to the @sc{nntp}
-server.  This is @samp{\r\n} by default, but should be @samp{\n} when
-using @code{rlogin} to talk to the server.
-
-@item nntp-rlogin-user-name
-@vindex nntp-rlogin-user-name
-User name on the remote system when using the @code{rlogin} connect
-function.
-
-@item nntp-address
-@vindex nntp-address
-The address of the remote system running the @sc{nntp} server.
-
-@item nntp-port-number
-@vindex nntp-port-number
-Port number to connect to when using the @code{nntp-open-network-stream}
-connect function.
-
 @item nntp-buggy-select
 @vindex nntp-buggy-select
 Set this to non-@code{nil} if your select routine is buggy.
@@ -10901,6 +11184,200 @@ If non-@code{nil}, @code{nntp} will log all commands it sends to the
 buffer.  This is useful if you are debugging a Gnus/@sc{nntp} connection
 that doesn't seem to work.
 
+@item nntp-open-connection-function
+@vindex nntp-open-connection-function
+It is possible to customize how the connection to the nntp server will
+be opened.  If you specify an @code{nntp-open-connection-function}
+parameter, Gnus will use that function to establish the connection.
+Five pre-made functions are supplied.  These functions can be grouped in
+two categories: direct connection functions (three pre-made), and
+indirect ones (two pre-made).
+@end table
+
+@menu
+* Direct Functions::            Connecting directly to the server.
+* Indirect Functions::          Connecting indirectly to the server.
+* Common Variables::            Understood by several connection functions.
+@end menu
+
+
+@node Direct Functions
+@subsubsection Direct Functions
+@cindex direct connection functions
+
+These functions are called direct because they open a direct connection
+between your machine and the @sc{nntp} server.  The behavior of these
+functions is also affected by commonly understood variables
+(@pxref{Common Variables}).
+
+@table @code
+@findex nntp-open-network-stream
+@item nntp-open-network-stream
+This is the default, and simply connects to some port or other on the
+remote system.
+
+@findex nntp-open-ssl-stream
+@item nntp-open-ssl-stream
+Opens a connection to a server over a @dfn{secure} channel.  To use this
+you must have SSLay installed
+(@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
+@file{ssl.el} (from the W3 distribution, for instance).  You then
+define a server as follows:
+
+@lisp
+;; Type `C-c C-c' after you've finished editing.
+;;
+;; "snews" is port 563 and is predefined in our /etc/services
+;;
+(nntp "snews.bar.com"
+      (nntp-open-connection-function nntp-open-ssl-stream)
+      (nntp-port-number "snews")
+      (nntp-address "snews.bar.com"))
+@end lisp
+
+@findex nntp-open-telnet-stream
+@item nntp-open-telnet-stream
+Opens a connection to an @sc{nntp} server by simply @samp{telnet}'ing
+it.  You might wonder why this function exists, since we have the
+default @code{nntp-open-network-stream} which would do the job.  (One
+of) the reason(s) is that if you are behind a firewall but have direct
+connections to the outside world thanks to a command wrapper like
+@code{runsocks}, you can use it like this:
+
+@lisp
+(nntp "socksified"
+      (nntp-pre-command "runsocks")
+      (nntp-open-connection-function nntp-open-telnet-stream)
+      (nntp-address "the.news.server"))
+@end lisp
+
+With the default method, you would need to wrap your whole Emacs
+session, which is not a good idea.
+@end table
+
+
+@node Indirect Functions
+@subsubsection Indirect Functions
+@cindex indirect connection functions
+
+These functions are called indirect because they connect to an
+intermediate host before actually connecting to the @sc{nntp} server.
+All of these functions and related variables are also said to belong to
+the "via" family of connection: they're all prefixed with "via" to make
+things cleaner.  The behavior of these functions is also affected by
+commonly understood variables (@pxref{Common Variables}).
+
+@table @code
+@item nntp-open-via-rlogin-and-telnet
+@findex nntp-open-via-rlogin-and-telnet
+Does an @samp{rlogin} on a remote system, and then does a @samp{telnet}
+to the real @sc{nntp} server from there.  This is useful for instance if
+you need to connect to a firewall machine first.
+
+@code{nntp-open-via-rlogin-and-telnet}-specific variables:
+
+@table @code
+@item nntp-via-rlogin-command
+@vindex nntp-via-rlogin-command
+Command used to log in on the intermediate host.  The default is
+@samp{rsh}, but @samp{ssh} is a popular alternative.
+@end table
+
+@item nntp-open-via-telnet-and-telnet
+@findex nntp-open-via-telnet-and-telnet
+Does essentially the same, but uses @samp{telnet} instead of
+@samp{rlogin} to connect to the intermediate host.
+
+@code{nntp-open-via-telnet-and-telnet}-specific variables:
+
+@table @code
+@item nntp-via-telnet-command
+@vindex nntp-via-telnet-command
+Command used to @code{telnet} the intermediate host.  The default is
+@samp{telnet}.
+
+@item nntp-via-telnet-switches
+@vindex nntp-via-telnet-switches
+List of strings to be used as the switches to the
+@code{nntp-via-telnet-command} command.  The default is @samp{("-8")}.
+
+@item nntp-via-user-password
+@vindex nntp-via-user-password
+Password to use when logging in on the intermediate host.
+
+@item nntp-via-envuser
+@vindex nntp-via-envuser
+If non-@code{nil}, the intermediate @code{telnet} session (client and
+server both) will support the @code{ENVIRON} option and not prompt for
+login name. This works for Solaris @code{telnet}, for instance.
+
+@item nntp-via-shell-prompt
+@vindex nntp-via-shell-prompt
+Regexp matching the shell prompt on the intermediate host.  The default
+is @samp{bash\\|\$ *\r?$\\|> *\r?}.
+
+@end table
+
+@end table
+
+
+Here are some additional variables that are understood by all the above
+functions:
+
+@table @code
+
+@item nntp-via-user-name
+@vindex nntp-via-user-name
+User name to use when connecting to the intermediate host.
+
+@item nntp-via-address
+@vindex nntp-via-address
+Address of the intermediate host to connect to.
+
+@end table
+
+
+@node Common Variables
+@subsubsection Common Variables
+
+The following variables affect the behavior of all, or several of the
+pre-made connection functions. When not specified, all functions are
+affected.
+
+@table @code
+
+@item nntp-pre-command
+@vindex nntp-pre-command
+A command wrapper to use when connecting through a non native connection
+function (all except @code{nntp-open-network-stream} and
+@code{nntp-open-ssl-stream}.  This is where you would put a @samp{SOCKS}
+wrapper for instance.
+
+@item nntp-address
+@vindex nntp-address
+The address of the @sc{nntp} server.
+
+@item nntp-port-number
+@vindex nntp-port-number
+Port number to connect to the @sc{nntp} server.  The default is @samp{nntp}.
+
+@item nntp-end-of-line
+@vindex nntp-end-of-line
+String to use as end-of-line marker when talking to the @sc{nntp}
+server.  This is @samp{\r\n} by default, but should be @samp{\n} when
+using a non native connection function.
+
+@item nntp-telnet-command
+@vindex nntp-telnet-command
+Command to use when connecting to the @sc{nntp} server through
+@samp{telnet}.  This is NOT for an intermediate host.  This is just for
+the real @sc{nntp} server.  The default is @samp{telnet}.
+
+@item nntp-telnet-switches
+@vindex nntp-telnet-switches
+A list of switches to pass to @code{nntp-telnet-command}.  The default
+is @samp{("-8")}.
+
 @end table
 
 
@@ -10986,30 +11463,31 @@ Reading mail with a newsreader---isn't that just plain WeIrD? But of
 course.
 
 @menu
-* Mail in a Newsreader::         Important introductory notes.  
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail::               How to create mail groups.
-* Mail Sources::                 How to tell Gnus where to get mail from.
-* Mail Backend Variables::       Variables for customizing mail handling.
-* Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting::         Use group customize to drive mail splitting.
-* 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.
+* Mail in a Newsreader::        Important introductory notes.
+* Getting Started Reading Mail::  A simple cookbook example.
+* Splitting Mail::              How to create mail groups.
+* Mail Sources::                How to tell Gnus where to get mail from.
+* Mail Backend Variables::      Variables for customizing mail handling.
+* Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting::        Use group customize to drive mail splitting.
+* 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.
+* Archiving Mail::              How to backup your mail.
 @end menu
 
 
 @node Mail in a Newsreader
 @subsection Mail in a Newsreader
 
-If you are used to traditional mail readers, but have decided to switch 
+If you are used to traditional mail readers, but have decided to switch
 to reading mail with Gnus, you may find yourself experiencing something
 of a culture shock.
 
-Gnus does not behave like traditional mail readers.  If you want to make 
+Gnus does not behave like traditional mail readers.  If you want to make
 it behave that way, you can, but it's an uphill battle.
 
 Gnus, by default, handles all its groups using the same approach.  This
@@ -11023,7 +11501,7 @@ Does this mean that all the messages that have been marked as read are
 deleted?  How awful!
 
 But, no, it means that old messages are @dfn{expired} according to some
-scheme or other.  For news messages, the expire process is controlled by 
+scheme or other.  For news messages, the expire process is controlled by
 the news administrator; for mail, the expire process is controlled by
 you.  The expire process for mail is covered in depth in @pxref{Expiring
 Mail}.
@@ -11078,8 +11556,7 @@ For instance, if you want to use @code{nnml} (which is a "one file per
 mail" backend), you could put the following in your @file{.gnus} file:
 
 @lisp
-(setq gnus-secondary-select-methods
-      '((nnml "private")))
+(setq gnus-secondary-select-methods '((nnml "")))
 @end lisp
 
 Now, the next time you start Gnus, this backend will be queried for new
@@ -11179,7 +11656,7 @@ If you wish to see where the previous mail split put the messages, you
 can use the @kbd{M-x nnmail-split-history} command.  If you wish to see
 where re-spooling messages would put the messages, you can use
 @code{gnus-summary-respool-trace} and related commands (@pxref{Mail
-Group Commands}). 
+Group Commands}).
 
 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
@@ -11200,9 +11677,9 @@ POP mail server, from a procmail directory, or from a maildir, for
 instance.
 
 @menu
-* Mail Source Specifiers::       How to specify what a mail source is.
-* Mail Source Customization::    Some variables that influence things.
-* Fetching Mail::                Using the mail source specifiers.
+* Mail Source Specifiers::      How to specify what a mail source is.
+* Mail Source Customization::   Some variables that influence things.
+* Fetching Mail::               Using the mail source specifiers.
 @end menu
 
 
@@ -11254,8 +11731,8 @@ Or using the default path:
 (file)
 @end lisp
 
-If the mail spool file is not located on the local machine, it's best to 
-use POP or @sc{imap} or the like to fetch the mail.  You can not use ange-ftp 
+If the mail spool file is not located on the local machine, it's best to
+use POP or @sc{imap} or the like to fetch the mail.  You can not use ange-ftp
 file names here---it has no way to lock the mail spool while moving the
 mail.
 
@@ -11446,11 +11923,13 @@ from locking problems).
 Two example maildir mail sources:
 
 @lisp
-(maildir :path "/home/user-name/Maildir/" :subdirs ("cur" "new"))
+(maildir :path "/home/user-name/Maildir/"
+         :subdirs ("cur" "new"))
 @end lisp
 
 @lisp
-(maildir :path "/user@@remotehost.org:~/Maildir/" :subdirs ("new"))
+(maildir :path "/user@@remotehost.org:~/Maildir/"
+         :subdirs ("new"))
 @end lisp
 
 @item imap
@@ -11542,7 +12021,9 @@ after finishing the fetch.
 An example @sc{imap} mail source:
 
 @lisp
-(imap :server "mail.mycorp.com" :stream kerberos4 :fetchflag "\\Seen")
+(imap :server "mail.mycorp.com"
+      :stream kerberos4
+      :fetchflag "\\Seen")
 @end lisp
 
 @item webmail
@@ -11581,7 +12062,9 @@ folder after finishing the fetch.
 An example webmail source:
 
 @lisp
-(webmail :subtype 'hotmail :user "user-name" :password "secret")
+(webmail :subtype 'hotmail
+         :user "user-name"
+         :password "secret")
 @end lisp
 @end table
 
@@ -11598,7 +12081,7 @@ directory source to get mail, you can specify it as in this example:
 
 @lisp
 (setq mail-sources
-      '((directory :path "/home/pavel/.Spool/" 
+      '((directory :path "/home/pavel/.Spool/"
                    :suffix ""
                    :plugged t)))
 @end lisp
@@ -11749,10 +12232,10 @@ is done).  Here's and example of using these two hooks to change the
 default file modes the new mail files get:
 
 @lisp
-(add-hook 'gnus-pre-get-new-mail-hook
+(add-hook 'nnmail-pre-get-new-mail-hook
           (lambda () (set-default-file-modes 511)))
 
-(add-hook 'gnus-post-get-new-mail-hook
+(add-hook 'nnmail-post-get-new-mail-hook
           (lambda () (set-default-file-modes 551)))
 @end lisp
 
@@ -11807,7 +12290,7 @@ Let's look at an example value of this variable first:
       (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
       (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
       ;; Both lists below have the same suffix, so prevent
-      ;; cross-posting to mkpkg.list of messages posted only to 
+      ;; cross-posting to mkpkg.list of messages posted only to
       ;; the bugs- list, but allow cross-posting when the
       ;; message was really cross-posted.
       (any "bugs-mypackage@@somewhere" "mypkg.bugs")
@@ -11859,6 +12342,7 @@ 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 @var{split}.
 
+@cindex body split
 For instance, the following function could be used to split based on the
 body of the messages:
 
@@ -11871,6 +12355,9 @@ body of the messages:
       "string.group")))
 @end lisp
 
+The @samp{" *nnmail incoming*"} is narrowed to the message in question
+when the @code{:} function is run.
+
 @item
 @code{(! @var{func} @var{split})}: If the split is a list, and the first
 element is @code{!}, then SPLIT will be processed, and FUNC will be
@@ -11925,9 +12412,10 @@ string into the subject line, you have to resort to manually moving the
 messages into the right group.  With this function, you only have to do
 it once per thread.
 
-To use this feature, you have to set @code{nnmail-treat-duplicates} to a
-non-nil value.  And then you can include
-@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+To use this feature, you have to set @code{nnmail-treat-duplicates} and
+@code{nnmail-cache-accepted-message-ids} to a non-nil value.  And then
+you can include @code{nnmail-split-fancy-with-parent} using the colon
+feature, like so:
 @lisp
 (setq nnmail-split-fancy
       '(| (: nnmail-split-fancy-with-parent)
@@ -11943,11 +12431,12 @@ messages).  When mail splitting is invoked, the function
 @code{nnmail-split-fancy-with-parent} then looks at the References (and
 In-Reply-To) header of each message to split and searches the file
 specified by @code{nnmail-message-id-cache-file} for the message ids.
-When it has found a parent, it returns the corresponding group name.  It
-is recommended that you set @code{nnmail-message-id-cache-length} to a
-somewhat higher number than the default so that the message ids are
-still in the cache.  (A value of 5000 appears to create a file some 300
-kBytes in size.)
+When it has found a parent, it returns the corresponding group name
+unless the group name matches the regexp
+@code{nnmail-split-fancy-with-parent-ignore-groups}.  It is recommended
+that you set @code{nnmail-message-id-cache-length} to a somewhat higher
+number than the default so that the message ids are still in the cache.
+(A value of 5000 appears to create a file some 300 kBytes in size.)
 @vindex nnmail-cache-accepted-message-ids
 When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus
 also records the message ids of moved articles, so that the followup
@@ -12085,6 +12574,8 @@ by @code{gnus-group-split-update}, this function will run
 
 @node Incorporating Old Mail
 @subsection Incorporating Old Mail
+@cindex incorporating old mail
+@cindex import old mail
 
 Most people have lots of old mail stored in various file formats.  If
 you have set up Gnus to read mail using one of the spiffy Gnus mail
@@ -12180,7 +12671,7 @@ automatically, you can put something like the following in your
 Note that making a group auto-expirable doesn't mean that all read
 articles are expired---only the articles marked as expirable
 will be expired.  Also note that using the @kbd{d} command won't make
-groups expirable---only semi-automatic marking of articles as read will
+articles 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
@@ -12415,7 +12906,7 @@ methods:
 @lisp
 (setq nnmail-split-fancy
       '(| ;; Messages duplicates go to a separate group.
-          ("gnus-warning" "duplication of message" "duplicate")
+          ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate")
           ;; Message from daemons, postmaster, and the like to another.
           (any mail "mail.misc")
           ;; Other rules.
@@ -12425,7 +12916,7 @@ methods:
 Or something like:
 @lisp
 (setq nnmail-split-methods
-      '(("duplicates" "^Gnus-Warning:")
+      '(("duplicates" "^Gnus-Warning:.*duplicate")
         ;; Other rules.
         [...]))
 @end lisp
@@ -12503,16 +12994,18 @@ Virtual server settings:
 @table @code
 @item nnmbox-mbox-file
 @vindex nnmbox-mbox-file
-The name of the mail box in the user's home directory.
+The name of the mail box in the user's home directory.  Default is
+@file{~/mbox}.
 
 @item nnmbox-active-file
 @vindex nnmbox-active-file
-The name of the active file for the mail box.
+The name of the active file for the mail box.  Default is
+@file{~/.mbox-active}.
 
 @item nnmbox-get-new-mail
 @vindex nnmbox-get-new-mail
 If non-@code{nil}, @code{nnmbox} will read incoming mail and split it
-into groups.
+into groups.  Default is @code{t}.
 @end table
 
 
@@ -12532,15 +13025,17 @@ Virtual server settings:
 @table @code
 @item nnbabyl-mbox-file
 @vindex nnbabyl-mbox-file
-The name of the rmail mbox file.
+The name of the rmail mbox file.  The default is @file{~/RMAIL}
 
 @item nnbabyl-active-file
 @vindex nnbabyl-active-file
-The name of the active file for the rmail box.
+The name of the active file for the rmail box.  The default is
+@file{~/.rmail-active}
 
 @item nnbabyl-get-new-mail
 @vindex nnbabyl-get-new-mail
-If non-@code{nil}, @code{nnbabyl} will read incoming mail.
+If non-@code{nil}, @code{nnbabyl} will read incoming mail.  Default is
+@code{t}
 @end table
 
 
@@ -12575,29 +13070,45 @@ splitting.  It has to create lots of files, and it also generates
 @sc{nov} databases for the incoming mails.  This makes it the fastest
 backend when it comes to reading mail.
 
+@cindex self contained nnml servers
+When the marks file is used (which it is by default), @code{nnml}
+servers have the property that you may backup them using @code{tar} or
+similar, and later be able to restore them into Gnus (by adding the
+proper @code{nnml} server) and have all your marks be preserved.  Marks
+for a group is usually stored in the @code{.marks} file (but see
+@code{nnml-marks-file-name}) within each @code{nnml} group's directory.
+Individual @code{nnml} groups are also possible to backup, use @kbd{G m}
+to restore the group (after restoring the backup into the nnml
+directory).
+
 Virtual server settings:
 
 @table @code
 @item nnml-directory
 @vindex nnml-directory
 All @code{nnml} directories will be placed under this directory.
+The default is the value of `message-directory' (whose default value is
+@file{~/Mail}).
 
 @item nnml-active-file
 @vindex nnml-active-file
-The active file for the @code{nnml} server.
+The active file for the @code{nnml} server.  The default is
+@file{~/Mail/active"}.
 
 @item nnml-newsgroups-file
 @vindex nnml-newsgroups-file
 The @code{nnml} group descriptions file.  @xref{Newsgroups File
-Format}.
+Format}.  The default is @file{~/Mail/newsgroups"}.
 
 @item nnml-get-new-mail
 @vindex nnml-get-new-mail
-If non-@code{nil}, @code{nnml} will read incoming mail.
+If non-@code{nil}, @code{nnml} will read incoming mail.  The default is
+@code{t}.
 
 @item nnml-nov-is-evil
 @vindex nnml-nov-is-evil
-If non-@code{nil}, this backend will ignore any @sc{nov} files.
+If non-@code{nil}, this backend will ignore any @sc{nov} files.  The
+default is @code{nil}.
 
 @item nnml-nov-file-name
 @vindex nnml-nov-file-name
@@ -12607,6 +13118,15 @@ The name of the @sc{nov} files.  The default is @file{.overview}.
 @vindex nnml-prepare-save-mail-hook
 Hook run narrowed to an article before saving.
 
+@item nnml-marks-is-evil
+@vindex nnml-marks-is-evil
+If non-@code{nil}, this backend will ignore any @sc{marks} files.  The
+default is @code{nil}.
+
+@item nnml-marks-file-name
+@vindex nnml-marks-file-name
+The name of the @sc{marks} files.  The default is @file{.marks}.
+
 @end table
 
 @findex nnml-generate-nov-databases
@@ -12625,20 +13145,23 @@ Commands}).
 @cindex mh-e mail spool
 
 @code{nnmh} is just like @code{nnml}, except that is doesn't generate
-@sc{nov} databases and it doesn't keep an active file.  This makes
-@code{nnmh} a @emph{much} slower backend than @code{nnml}, but it also
-makes it easier to write procmail scripts for.
+@sc{nov} databases and it doesn't keep an active file or marks file.
+This makes @code{nnmh} a @emph{much} slower backend than @code{nnml},
+but it also makes it easier to write procmail scripts for.
 
 Virtual server settings:
 
 @table @code
 @item nnmh-directory
 @vindex nnmh-directory
-All @code{nnmh} directories will be located under this directory.
+All @code{nnmh} directories will be located under this directory.  The
+default is the value of @code{message-directory} (whose default is
+@file{~/Mail})
 
 @item nnmh-get-new-mail
 @vindex nnmh-get-new-mail
-If non-@code{nil}, @code{nnmh} will read incoming mail.
+If non-@code{nil}, @code{nnmh} will read incoming mail.  The default is
+@code{t}.
 
 @item nnmh-be-safe
 @vindex nnmh-be-safe
@@ -12647,7 +13170,7 @@ sure that the articles in the folder are actually what Gnus thinks they
 are.  It will check date stamps and stat everything in sight, so
 setting this to @code{t} will mean a serious slow-down.  If you never
 use anything but Gnus to read the @code{nnmh} articles, you do not have
-to set this variable to @code{t}.
+to set this variable to @code{t}.  The default is @code{nil}.
 @end table
 
 
@@ -12662,24 +13185,40 @@ file.  Each file is in the standard Un*x mbox format.  @code{nnfolder}
 will add extra headers to keep track of article numbers and arrival
 dates.
 
+@cindex self contained nnfolder servers
+When the marks file is used (which it is by default), @code{nnfolder}
+servers have the property that you may backup them using @code{tar} or
+similar, and later be able to restore them into Gnus (by adding the
+proper @code{nnfolder} server) and have all your marks be preserved.
+Marks for a group is usually stored in a file named as the mbox file
+with @code{.mrk} concatenated to it (but see
+@code{nnfolder-marks-file-suffix}) within the @code{nnfolder} directory.
+Individual @code{nnfolder} groups are also possible to backup, use
+@kbd{G m} to restore the group (after restoring the backup into the
+@code{nnfolder} directory).
+
 Virtual server settings:
 
 @table @code
 @item nnfolder-directory
 @vindex nnfolder-directory
 All the @code{nnfolder} mail boxes will be stored under this directory.
+The default is the value of @code{message-directory} (whose default is
+@file{~/Mail})
 
 @item nnfolder-active-file
 @vindex nnfolder-active-file
-The name of the active file.
+The name of the active file.  The default is @file{~/Mail/active}.
 
 @item nnfolder-newsgroups-file
 @vindex nnfolder-newsgroups-file
-The name of the group descriptions file.  @xref{Newsgroups File Format}.
+The name of the group descriptions file.  @xref{Newsgroups File
+Format}.  The default is @file{~/Mail/newsgroups"}
 
 @item nnfolder-get-new-mail
 @vindex nnfolder-get-new-mail
-If non-@code{nil}, @code{nnfolder} will read incoming mail.
+If non-@code{nil}, @code{nnfolder} will read incoming mail.  The default
+is @code{t}
 
 @item nnfolder-save-buffer-hook
 @vindex nnfolder-save-buffer-hook
@@ -12704,7 +13243,21 @@ extract some information from it before removing it.
 
 @item nnfolder-nov-is-evil
 @vindex nnfolder-nov-is-evil
-If non-@code{nil}, this backend will ignore any @sc{nov} files.
+If non-@code{nil}, this backend will ignore any @sc{nov} files.  The
+default is @code{nil}.
+
+@item nnfolder-nov-file-suffix
+@vindex nnfolder-nov-file-suffix
+The extension for @sc{nov} files.  The default is @file{.nov}.
+
+@item nnfolder-marks-is-evil
+@vindex nnfolder-marks-is-evil
+If non-@code{nil}, this backend will ignore any @sc{marks} files.  The
+default is @code{nil}.
+
+@item nnfolder-marks-file-suffix
+@vindex nnfolder-marks-file-suffix
+The extension for @sc{marks} files.  The default is @file{.mrk}.
 
 @end table
 
@@ -12826,8 +13379,8 @@ itself puts *all* one's mail in one file; @code{nnfolder} provides a
 little bit of optimization to this so that each of one's mail groups has
 a Unix mail box file.  It's faster than @code{nnmbox} because each group
 can be parsed separately, and still provides the simple Unix mail box
-format requiring minimal effort in moving the mail around.  In addition, 
-it maintains an ``active'' file making it much faster for Gnus to figure 
+format requiring minimal effort in moving the mail around.  In addition,
+it maintains an ``active'' file making it much faster for Gnus to figure
 out how many messages there are in each separate group.
 
 If you have groups that are expected to have a massive amount of
@@ -12853,30 +13406,31 @@ and click, and there's the discussion.  With mailing lists, you have to
 go through a cumbersome subscription procedure, and most people don't
 even know what a news group is.
 
-The problem with this scenario is that web browsers are not very good at 
-being newsreaders.  They do not keep track of what articles you've read; 
-they do not allow you to score on subjects you're interested in; they do 
+The problem with this scenario is that web browsers are not very good at
+being newsreaders.  They do not keep track of what articles you've read;
+they do not allow you to score on subjects you're interested in; they do
 not allow off-line browsing; they require you to click around and drive
 you mad in the end.
 
-So---if web browsers suck at reading discussion forums, why not use Gnus 
+So---if web browsers suck at reading discussion forums, why not use Gnus
 to do it instead?
 
 Gnus has been getting a bit of a collection of backends for providing
 interfaces to these sources.
 
 @menu
-* Web Searches::          Creating groups from articles that match a string.
-* Slashdot::              Reading the Slashdot comments.
-* Ultimate::              The Ultimate Bulletin Board systems.
-* Web Archive::           Reading mailing list archived on web.
-* Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
+* Web Searches::                Creating groups from articles that match a string.
+* Slashdot::                    Reading the Slashdot comments.
+* Ultimate::                    The Ultimate Bulletin Board systems.
+* Web Archive::                 Reading mailing list archived on web.
+* RSS::                         Reading RDF site summary.
+* Customizing w3::              Doing stuff to Emacs/w3 from Gnus.
 @end menu
 
 All the web sources require Emacs/w3 and the url library to work.
 
 The main caveat with all these web sources is that they probably won't
-work for a very long time.  Gleaning information from the @sc{html} data 
+work for a very long time.  Gleaning information from the @sc{html} data
 is guesswork at best, and when the layout is altered, the Gnus backend
 will fail.  If you have reasonably new versions of these backends,
 though, you should be ok.
@@ -12887,6 +13441,35 @@ cases, it makes a lot of sense to let the Gnus Agent (@pxref{Gnus
 Unplugged}) handle downloading articles, and then you can read them at
 leisure from your local disk.  No more World Wide Wait for you.
 
+@node Archiving Mail
+@subsection Archiving Mail
+@cindex archiving mail
+@cindex backup of mail
+
+Some of the backends, notably nnml and nnfolder, now actually store
+the article marks with each group.  For these servers, archiving and
+restoring a group while preserving marks is fairly simple.
+
+(Preserving the group level and group parameters as well still
+requires ritual dancing and sacrifices to the @code{.newsrc.eld} deity
+though.)
+
+To archive an entire @code{nnml} or @code{nnfolder} server, take a
+recursive copy of the server directory.  There is no need to shut down
+Gnus, so archiving may be invoked by @code{cron} or similar.  You
+restore the data by restoring the directory tree, and adding a server
+definition pointing to that directory in Gnus. The @ref{Article
+Backlog}, @ref{Asynchronous Fetching} and other things might interfer
+with overwriting data, so you may want to shut down Gnus before you
+restore the data.
+
+It is also possible to archive individual @code{nnml} or
+@code{nnfolder} groups, while preserving marks.  For @code{nnml}, you
+copy all files in the group's directory.  For @code{nnfolder} you need
+to copy both the base folder file itself (@code{FOO}, say), and the
+marks file (@code{FOO.mrk} in this example).  Restoring the group is
+done with @kbd{G m} from the Group buffer.  The last step makes Gnus
+notice the new directory.
 
 @node Web Searches
 @subsection Web Searches
@@ -13033,12 +13616,12 @@ The password to use when posting.
 
 @item nnslashdot-directory
 @vindex nnslashdot-directory
-Where @code{nnslashdot} will store its files.  The default value is
+Where @code{nnslashdot} will store its files.  The default is
 @samp{~/News/slashdot/}.
 
 @item nnslashdot-active-url
 @vindex nnslashdot-active-url
-The @sc{url} format string that will be used to fetch the information on 
+The @sc{url} format string that will be used to fetch the information on
 news articles and comments.  The default is
 @samp{http://slashdot.org/search.pl?section=&min=%d}.
 
@@ -13078,7 +13661,7 @@ quite regular and nice interface, and it's possible to get the
 information Gnus needs to keep groups updated.
 
 The easiest way to get started with @code{nnultimate} is to say
-something like the following in the group buffer:  @kbd{B nnultimate RET 
+something like the following in the group buffer:  @kbd{B nnultimate RET
 http://www.tcj.com/messboard/ubbcgi/ RET}.  (Substitute the @sc{url}
 (not including @samp{Ultimate.cgi} or the like at the end) for a forum
 you're interested in; there's quite a list of them on the Ultimate web
@@ -13131,6 +13714,64 @@ The account name on the web server.
 The password for your account on the web server.
 @end table
 
+@node RSS
+@subsection RSS
+@cindex nnrss
+@cindex RSS
+
+Some sites have RDF site summary (RSS)
+@uref{http://purl.org/rss/1.0/spec}.  It has a quite regular and nice
+interface, and it's possible to get the information Gnus needs to keep
+groups updated.
+
+The easiest way to get started with @code{nnrss} is to say something
+like the following in the group buffer: @kbd{B nnrss RET RET}, then
+subscribe groups.
+
+The following @code{nnrss} variables can be altered:
+
+@table @code
+@item nnrss-directory
+@vindex nnrss-directory
+The directory where @code{nnrss} stores its files.  The default is
+@samp{~/News/rss/}.
+
+@end table
+
+The following code may be helpful, if you want to show the description in
+the summary buffer.
+
+@lisp
+(add-to-list 'nnmail-extra-headers nnrss-description-field)
+(setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n")
+
+(defun gnus-user-format-function-X (header)
+  (let ((descr
+        (assq nnrss-description-field (mail-header-extra header))))
+    (if descr (concat "\n\t" (cdr descr)) "")))
+@end lisp
+
+The following code may be useful to open an nnrss url directly from the
+summary buffer.
+@lisp
+(require 'browse-url)
+
+(defun browse-nnrss-url( arg )
+  (interactive "p")
+  (let ((url (assq nnrss-url-field
+                   (mail-header-extra
+                    (gnus-data-header
+                     (assq (gnus-summary-article-number)
+                           gnus-newsgroup-data))))))
+    (if url
+        (browse-url (cdr url))
+      (gnus-summary-scroll-up arg))))
+
+(eval-after-load "gnus"
+  #'(define-key gnus-summary-mode-map
+      (kbd "<RET>") 'browse-nnrss-url))
+(add-to-list 'nnmail-extra-headers nnrss-url-field)
+@end lisp
 
 @node Customizing w3
 @subsection Customizing w3
@@ -13139,12 +13780,12 @@ The password for your account on the web server.
 @cindex url
 @cindex Netscape
 
-Gnus uses the url library to fetch web pages and Emacs/w3 to display web 
+Gnus uses the url library to fetch web pages and Emacs/w3 to display web
 pages.  Emacs/w3 is documented in its own manual, but there are some
 things that may be more relevant for Gnus users.
 
 For instance, a common question is how to make Emacs/w3 follow links
-using the @code{browse-url} functions (which will call some external web 
+using the @code{browse-url} functions (which will call some external web
 browser like Netscape).  Here's one way:
 
 @lisp
@@ -13171,12 +13812,12 @@ below allow Gnus to view directories and files as if they were
 newsgroups.
 
 @menu
-* Directory Groups::      You can read a directory as if it was a newsgroup.
-* Anything Groups::       Dired?  Who needs dired?
-* Document Groups::       Single files can be the basis of a group.
-* SOUP::                  Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP::                  Using Gnus as a @sc{imap} client.
+* Directory Groups::            You can read a directory as if it was a newsgroup.
+* Anything Groups::             Dired?  Who needs dired?
+* Document Groups::             Single files can be the basis of a group.
+* SOUP::                        Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
+* IMAP::                        Using Gnus as a @sc{imap} client.
 @end menu
 
 
@@ -13580,9 +14221,9 @@ So you basically have a bipartite system---you use @code{nnsoup} for
 reading and Gnus for packing/sending these @sc{soup} packets.
 
 @menu
-* SOUP Commands::     Commands for creating and sending @sc{soup} packets
-* SOUP Groups::       A backend for reading @sc{soup} packets.
-* SOUP Replies::      How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands::               Commands for creating and sending @sc{soup} packets
+* SOUP Groups::                 A backend for reading @sc{soup} packets.
+* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 @end menu
 
 
@@ -13829,9 +14470,10 @@ Here's an example:
 
 @lisp
 (setq gnus-post-method
-      '(nngateway "mail2news@@replay.com"
-                  (nngateway-header-transformation
-                   nngateway-mail2news-header-transformation)))
+      '(nngateway
+        "mail2news@@replay.com"
+        (nngateway-header-transformation
+         nngateway-mail2news-header-transformation)))
 @end lisp
 
 @end table
@@ -13877,7 +14519,7 @@ A server configuration in @code{~/.gnus} with a few @sc{imap} servers
 might look something like this:
 
 @lisp
-(setq gnus-secondary-select-methods 
+(setq gnus-secondary-select-methods
       '((nnimap "simpleserver") ; no special configuration
         ; perhaps a ssh port forwarded server:
         (nnimap "dolk"
@@ -13939,7 +14581,7 @@ Example server specification:
 
 @lisp
 (nnimap "mail.server.com"
-        (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*" 
+        (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*"
                                ("~friend/Mail/" . "list/*"))))
 @end lisp
 
@@ -13961,16 +14603,16 @@ Please note that the value of @code{nnimap-stream} is a symbol!
 
 @itemize @bullet
 @item
-@dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Require the
+@dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Requires the
 @samp{imtest} program.
 @item
-@dfn{kerberos4:} Connect with kerberos 4. Require the @samp{imtest} program.
+@dfn{kerberos4:} Connect with kerberos 4. Requires the @samp{imtest} program.
 @item
 @dfn{starttls:} Connect via the STARTTLS extension (similar to
-SSL). Require the external library @samp{starttls.el} and program
+SSL). Requires the external library @samp{starttls.el} and program
 @samp{starttls}.
 @item
-@dfn{ssl:} Connect through SSL. Require OpenSSL (the
+@dfn{ssl:} Connect through SSL. Requires OpenSSL (the
 program @samp{openssl}) or SSLeay (@samp{s_client}).
 @item
 @dfn{shell:} Use a shell command to start @sc{imap} connection.
@@ -13979,8 +14621,13 @@ program @samp{openssl}) or SSLeay (@samp{s_client}).
 @end itemize
 
 @vindex imap-kerberos4-program
-The @samp{imtest} program is shipped with Cyrus IMAPD, nnimap support
-both @samp{imtest} version 1.5.x and version 1.6.x.  The variable
+The @samp{imtest} program is shipped with Cyrus IMAPD.  If you're
+using @samp{imtest} from Cyrus IMAPD < 2.0.14 (which includes version
+1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type}
+to make @code{imap.el} use a pty instead of a pipe when communicating
+with @samp{imtest}.  You will then suffer from a line length
+restrictions on IMAP commands, which might make Gnus seem to hang
+indefinitely if you have many articles in a mailbox.  The variable
 @code{imap-kerberos4-program} contain parameters to pass to the imtest
 program.
 
@@ -14067,24 +14714,56 @@ articles or not.
 
 @end table
 
+@item nnimap-importantize-dormant
+@vindex nnimap-importantize-dormant
+
+If non-nil, marks dormant articles as ticked (as well), for other IMAP
+clients. Within Gnus, dormant articles will naturally still (only) be
+marked as ticked.  This is to make dormant articles stand out, just
+like ticked articles, in other IMAP clients. (In other words, Gnus has
+two ``Tick'' marks and IMAP has only one.)
+
+Probably the only reason for frobing this would be if you're trying
+enable per-user persistant dormant flags, using something like:
+
+@lisp
+(setcdr (assq 'dormant nnimap-mark-to-flag-alist)
+        (format "gnus-dormant-%s" (user-login-name)))
+(setcdr (assq 'dormant nnimap-mark-to-predicate-alist)
+        (format "KEYWORD gnus-dormant-%s" (user-login-name)))
+@end lisp
+
+In this case, you would not want the per-user dormant flag showing up
+as ticked for other users.
+
+@item nnimap-expunge-search-string
+@cindex Expunging
+@vindex nnimap-expunge-search-string
+
+This variable contain the IMAP search command sent to server when
+searching for articles eligible for expiring.  The default is
+@code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by
+UID set and the second @code{%s} is replaced by a date.
+
+Probably the only useful value to change this to is
+@code{"UID %s NOT SENTSINCE %s"}, which makes nnimap use the Date: in
+messages instead of the internal article date. See section 6.4.4 of
+RFC 2060 for more information on valid strings.
+
 @item nnimap-authinfo-file
 @vindex nnimap-authinfo-file
 
-A file containing credentials used to log in on servers.  The format
-is (almost) the same as the @code{ftp} @file{~/.netrc} file.  See
-`nntp-authinfo-file' for exact syntax.
-
 A file containing credentials used to log in on servers.  The format is
 (almost) the same as the @code{ftp} @file{~/.netrc} file.  See the
 variable @code{nntp-authinfo-file} for exact syntax; also see
-@xref{NNTP}.
+@ref{NNTP}.
 
 @end table
 
 @menu
-* Splitting in IMAP::     Splitting mail with nnimap.
-* Editing IMAP ACLs::     Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes::   Equivalent of a "compress mailbox" button.
+* Splitting in IMAP::           Splitting mail with nnimap.
+* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes::         Equivalent of a "compress mailbox" button.
 @end menu
 
 
@@ -14145,14 +14824,15 @@ Neither did I, we need examples.
 
 @lisp
 (setq nnimap-split-rule
-      '(("INBOX.nnimap"  "^Sender: owner-nnimap@@vic20.globalcom.se")
+      '(("INBOX.nnimap"
+         "^Sender: owner-nnimap@@vic20.globalcom.se")
         ("INBOX.junk"    "^Subject:.*MAKE MONEY")
         ("INBOX.private" "")))
 @end lisp
 
 This will put all articles from the nnimap mailing list into mailbox
 INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line
-into INBOX.spam and everything else in INBOX.private.
+into INBOX.junk and everything else in INBOX.private.
 
 The first string may contain `\\1' forms, like the ones used by
 replace-match to insert sub-expressions from the matched text.  For
@@ -14283,7 +14963,7 @@ INBOX.mailbox).
 @kindex G x
 @findex gnus-group-nnimap-expunge
 
-If you're using the @code{never} setting of @code{nnimap-expunge-close},
+If you're using the @code{never} setting of @code{nnimap-expunge-on-close},
 you may want the option of expunging all deleted articles in a mailbox
 manually.  This is exactly what @kbd{G x} does.
 
@@ -14299,8 +14979,8 @@ Gnus allows combining a mixture of all the other group types into bigger
 groups.
 
 @menu
-* Virtual Groups::     Combining articles from many groups.
-* Kibozed Groups::     Looking through parts of the newsfeed for articles.
+* Virtual Groups::              Combining articles from many groups.
+* Kibozed Groups::              Looking through parts of the newsfeed for articles.
 @end menu
 
 
@@ -14482,16 +15162,16 @@ That's it.  Gnus is now an ``offline'' newsreader.
 Of course, to use it as such, you have to learn a few new commands.
 
 @menu
-* Agent Basics::           How it all is supposed to work.
-* Agent Categories::       How to tell the Gnus Agent what to download.
-* Agent Commands::         New commands for all the buffers.
-* Agent Expiry::           How to make old articles go away.
-* Agent and IMAP::         How to use the Agent with IMAP.
-* Outgoing Messages::      What happens when you post/mail something?
-* Agent Variables::        Customizing is fun.
-* Example Setup::          An example @file{.gnus.el} file for offline people.
-* Batching Agents::        How to fetch news from a @code{cron} job.
-* Agent Caveats::          What you think it'll do and what it does.
+* Agent Basics::                How it all is supposed to work.
+* Agent Categories::            How to tell the Gnus Agent what to download.
+* Agent Commands::              New commands for all the buffers.
+* Agent Expiry::                How to make old articles go away.
+* Agent and IMAP::              How to use the Agent with IMAP.
+* Outgoing Messages::           What happens when you post/mail something?
+* Agent Variables::             Customizing is fun.
+* Example Setup::               An example @file{.gnus.el} file for offline people.
+* Batching Agents::             How to fetch news from a @code{cron} job.
+* Agent Caveats::               What you think it'll do and what it does.
 @end menu
 
 
@@ -14582,9 +15262,9 @@ Groups that do not belong in any other category belong to the
 managing categories.
 
 @menu
-* Category Syntax::       What a category looks like.
-* The Category Buffer::   A buffer for maintaining categories.
-* Category Variables::    Customize'r'Us.
+* Category Syntax::             What a category looks like.
+* Category Buffer::             A buffer for maintaining categories.
+* Category Variables::          Customize'r'Us.
 @end menu
 
 
@@ -14859,8 +15539,8 @@ Group Parameter specification
 @end itemize
 @end enumerate
 
-@node The Category Buffer
-@subsubsection The Category Buffer
+@node Category Buffer
+@subsubsection Category Buffer
 
 You'd normally do all category maintenance from the category buffer.
 When you enter it for the first time (with the @kbd{J c} command from
@@ -14969,9 +15649,9 @@ toggles the plugged/unplugged state of the Gnus Agent.
 
 
 @menu
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 @end menu
 
 You can run a complete batch fetch from the command line with the
@@ -15059,6 +15739,12 @@ Toggle whether to download the article (@code{gnus-agent-toggle-mark}).
 @findex gnus-agent-catchup
 Mark all undownloaded articles as read (@code{gnus-agent-catchup}).
 
+@item J u
+@kindex J u (Agent Summary)
+@findex gnus-agent-summary-fetch-group
+Download all downloadable articles in the current group
+(@code{gnus-agent-summary-fetch-group}). 
+
 @end table
 
 
@@ -15310,22 +15996,23 @@ temporary and have not been used for, say, a week, will be removed
 silently to help keep the sizes of the score files down.
 
 @menu
-* Summary Score Commands::   Adding score entries for the current group.
-* Group Score Commands::     General score commands.
-* 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 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.
+* Summary Score Commands::      Adding score entries for the current group.
+* Group Score Commands::        General score commands.
+* 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 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 On Other Headers::    Scoring on non-standard headers.
+* 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.
 @end menu
 
 
@@ -15463,7 +16150,8 @@ Score on the @code{Message-ID} header.
 
 @item f
 Score on followups---this matches the author name, and adds scores to
-the followups to this author.
+the followups to this author.  (Using this key leads to the creation of
+@file{ADAPT} files.)
 
 @item b
 Score on the body.
@@ -15472,7 +16160,8 @@ Score on the body.
 Score on the head.
 
 @item t
-Score on thread.
+Score on thread.  (Using this key leads to the creation of @file{ADAPT}
+files.)
 
 @end table
 
@@ -15710,18 +16399,20 @@ can't have score files like @file{all.SCORE}, but you can have
 server.
 
 @end table
-This variable can also be a list of functions.  In that case, all these
-functions will be called with the group name as argument, and all the
-returned lists of score files will be applied.  These functions can also
-return lists of score alists directly.  In that case, the functions that
-return these non-file score alists should probably be placed before the
-``real'' score file functions, to ensure that the last score file
-returned is the local score file.  Phu.
+This variable can also be a list of functions.  In that case, all
+these functions will be called with the group name as argument, and
+all the returned lists of score files will be applied.  These
+functions can also return lists of lists of score alists directly.  In
+that case, the functions that return these non-file score alists
+should probably be placed before the ``real'' score file functions, to
+ensure that the last score file returned is the local score file.
+Phu.
 
 For example, to do hierarchical scoring but use a non-server-specific
 overall score file, you could use the value
 @example
-(list (lambda (group) ("all.SCORE")) 'gnus-score-find-hierarchical)
+(list (lambda (group) ("all.SCORE"))
+      'gnus-score-find-hierarchical)
 @end example
 
 @item gnus-score-expiry-days
@@ -15994,9 +16685,9 @@ interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the
 rest.  Next time you enter the group, you will see new articles in the
 interesting threads, plus any new threads.
 
-I.e.---the orphan score atom is for high-volume groups where there
-exist a few interesting threads which can't be found automatically by
-ordinary scoring rules.
+I.e.---the orphan score atom is for high-volume groups where a few
+interesting threads which can't be found automatically by ordinary
+scoring rules exist.
 
 @item adapt
 This entry controls the adaptive scoring.  If it is @code{t}, the
@@ -16201,6 +16892,12 @@ Words that appear in the @code{gnus-default-ignored-adaptive-words} list
 will be ignored.  If you wish to add more words to be ignored, use the
 @code{gnus-ignored-adaptive-words} list instead.
 
+@vindex gnus-adaptive-word-length-limit
+Some may feel that short words shouldn't count when doing adaptive
+scoring.  If so, you may set @code{gnus-adaptive-word-length-limit} to
+an integer.  Words shorter than this number will be ignored.  This
+variable defaults til @code{nil}.
+
 @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
@@ -16380,6 +17077,39 @@ Whether it's the first two or first three characters that are ``yours''
 is system-dependent.
 
 
+@node Scoring On Other Headers
+@section Scoring On Other Headers
+@cindex scoring on other headers
+
+Gnus is quite fast when scoring the ``traditional''
+headers---@samp{From}, @samp{Subject} and so on.  However, scoring
+other headers requires writing a @code{head} scoring rule, which means
+that Gnus has to request every single article from the backend to find
+matches.  This takes a long time in big groups.
+
+Now, there's not much you can do about this for news groups, but for
+mail groups, you have greater control.  In the @pxref{To From
+Newsgroups} section of the manual, it's explained in greater detail what
+this mechanism does, but here's a cookbook example for @code{nnml} on
+how to allow scoring on the @samp{To} and @samp{Cc} headers.
+
+Put the following in your @file{.gnus.el} file. 
+
+@lisp
+(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
+      nnmail-extra-headers gnus-extra-headers)
+@end lisp
+
+Restart Gnus and rebuild your @code{nnml} overview files with the
+@kbd{M-x nnml-generate-nov-databases} command.  This will take a long
+time if you have much mail.
+
+Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
+so: @kbd{I e s p To RET <your name> RET}.
+
+See?  Simple.
+
+
 @node Scoring Tips
 @section Scoring Tips
 @cindex scoring tips
@@ -16399,7 +17129,9 @@ the @code{Xref} header.
 If you want to lower the score of articles that have been crossposted to
 more than, say, 3 groups:
 @lisp
-("xref" ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+" -1000 nil r))
+("xref"
+  ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+"
+   -1000 nil r))
 @end lisp
 
 @item Matching on the body
@@ -16465,9 +17197,10 @@ 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 the score file
+To use the score file
 @file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and
-all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
+all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory,
+say this:
 
 @lisp
 (setq gnus-global-score-files
@@ -16476,6 +17209,7 @@ all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
 @end lisp
 
 @findex gnus-score-search-global-directories
+@noindent
 Simple, eh?  Directory names must end with a @samp{/}.  These
 directories are typically scanned only once during each Gnus session.
 If you feel the need to manually re-scan the remote directories, you can
@@ -16656,10 +17390,10 @@ prediction to help you decide whether or not you want to read the
 article.
 
 @menu
-* Using GroupLens::          How to make Gnus use GroupLens.
-* Rating Articles::          Letting GroupLens know how you rate articles.
-* Displaying Predictions::   Displaying predictions given by GroupLens.
-* GroupLens Variables::      Customizing GroupLens.
+* Using GroupLens::             How to make Gnus use GroupLens.
+* Rating Articles::             Letting GroupLens know how you rate articles.
+* Displaying Predictions::      Displaying predictions given by GroupLens.
+* GroupLens Variables::         Customizing GroupLens.
 @end menu
 
 
@@ -16811,7 +17545,7 @@ Prediction +/- confidence.
 @item gnus-summary-grouplens-line-format
 The summary line format used in GroupLens-enhanced summary buffers.  It
 accepts the same specs as the normal summary line format (@pxref{Summary
-Buffer Lines}).  The default is @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%)
+Buffer Lines}).  The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%)
 %s\n}.
 
 @item grouplens-bbb-host
@@ -17063,24 +17797,24 @@ four days, Gnus will decay the scores four times, for instance.
 @chapter Various
 
 @menu
-* Process/Prefix::             A convention used by many treatment commands.
-* Interactive::                Making Gnus ask you many questions.
-* Symbolic Prefixes::          How to supply some Gnus functions with options.
-* Formatting Variables::       You can specify what buffers should look like.
-* Windows Configuration::      Configuring the Gnus buffer windows.
-* Faces and Fonts::            How to change how faces look.
-* Compilation::                How to speed Gnus up.
-* Mode Lines::                 Displaying information in the mode lines.
-* Highlighting and Menus::     Making buffers look all nice and cozy.
-* Buttons::                    Get tendinitis in ten easy steps!
-* Daemons::                    Gnus can do things behind your back.
-* NoCeM::                      How to avoid spam and other fatty foods.
-* 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?
-* Thwarting Email Spam::       A how-to on avoiding unsolicited commercial email.
-* Various Various::            Things that are really various.
+* Process/Prefix::              A convention used by many treatment commands.
+* Interactive::                 Making Gnus ask you many questions.
+* Symbolic Prefixes::           How to supply some Gnus functions with options.
+* Formatting Variables::        You can specify what buffers should look like.
+* Window Layout::               Configuring the Gnus buffer windows.
+* Faces and Fonts::             How to change how faces look.
+* Compilation::                 How to speed Gnus up.
+* Mode Lines::                  Displaying information in the mode lines.
+* Highlighting and Menus::      Making buffers look all nice and cozy.
+* Buttons::                     Get tendinitis in ten easy steps!
+* Daemons::                     Gnus can do things behind your back.
+* NoCeM::                       How to avoid spam and other fatty foods.
+* 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?
+* Thwarting Email Spam::        A how-to on avoiding unsolicited commercial email.
+* Various Various::             Things that are really various.
 @end menu
 
 
@@ -17219,11 +17953,14 @@ Here's an example format spec (from the group buffer): @samp{%M%S%5y:
 lots of percentages everywhere.
 
 @menu
-* Formatting Basics::     A formatting variable is basically a format string.
-* Mode Line Formatting::  Some rules about mode line formatting variables.
-* Advanced Formatting::   Modifying output in various ways.
-* User-Defined Specs::    Having Gnus call your own functions.
-* Formatting Fonts::      Making the formatting look colorful and nice.
+* Formatting Basics::           A formatting variable is basically a format string.
+* Mode Line Formatting::        Some rules about mode line formatting variables.
+* Advanced Formatting::         Modifying output in various ways.
+* User-Defined Specs::          Having Gnus call your own functions.
+* Formatting Fonts::            Making the formatting look colorful and nice.
+* Positioning Point::           Moving point to a position after an operation.
+* Tabulation::                  Tabulating your output.
+* Wide Characters::             Dealing with wide characters.
 @end menu
 
 Currently Gnus uses the following formatting variables:
@@ -17423,10 +18160,66 @@ and extremely vulgar displays.  Have fun!
 Note that the @samp{%(} specs (and friends) do not make any sense on the
 mode-line variables.
 
+@node Positioning Point
+@subsection Positioning Point
+
+Gnus usually moves point to a pre-defined place on each line in most
+buffers.  By default, point move to the first colon character on the
+line.  You can customize this behaviour in three different ways.
+
+You can move the colon character to somewhere else on the line.
+
+@findex gnus-goto-colon
+You can redefine the function that moves the point to the colon.  The
+function is called @code{gnus-goto-colon}.
+
+But perhaps the most convenient way to deal with this, if you don't want
+to have a colon in your line, is to use the @samp{%C} specifier.  If you
+put a @samp{%C} somewhere in your format line definition, Gnus will
+place point there.
 
-@node Windows Configuration
-@section Windows Configuration
-@cindex windows configuration
+
+@node Tabulation
+@subsection Tabulation
+
+You can usually line up your displays by padding and cutting your
+strings.  However, when combining various strings of different size, it
+can often be more convenient to just output the strings, and then worry
+about lining up the following text afterwards.
+
+To do that, Gnus supplies tabulator specs--@samp{%=}.  There are two
+different types---@dfn{hard tabulators} and @dfn{soft tabulators}.
+
+@samp{%50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, nothing will be inserted.
+This is the soft tabulator.
+
+@samp{%-50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, the excess text past column
+50 will be removed.  This is the hard tabulator.
+
+
+@node Wide Characters
+@subsection Wide Characters
+
+Proportional fonts in most countries have characters of the same width.
+Some countries, however, use Latin characters mixed with wider
+characters---most notable East Asian countries.
+
+The problem is that when formatting, Gnus assumes that if a string is 10
+characters wide, it'll be 10 Latin characters wide on the screen.  In
+these coutries, that's not true.
+
+@vindex gnus-use-correct-string-widths
+To help fix this, you can set @code{gnus-use-correct-string-widths} to
+@code{t}.  This makes buffer generation slower, but the results will be
+prettieer.  The default value is @code{nil}.
+
+
+
+@node Window Layout
+@section Window Layout
+@cindex window layout
 
 No, there's nothing here about X, so be quiet.
 
@@ -17527,13 +18320,13 @@ To be slightly more formal, here's a definition of what a valid split
 may look like:
 
 @example
-split       = frame | horizontal | vertical | buffer | form
-frame       = "(frame " size *split ")"
-horizontal  = "(horizontal " size *split ")"
-vertical    = "(vertical " size *split ")"
-buffer      = "(" buffer-name " " size *[ "point" ] *[ "frame-focus"] ")"
-size        = number | frame-params
-buffer-name = group | article | summary ...
+split      = frame | horizontal | vertical | buffer | form
+frame      = "(frame " size *split ")"
+horizontal = "(horizontal " size *split ")"
+vertical   = "(vertical " size *split ")"
+buffer     = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")"
+size       = number | frame-params
+buf-name   = group | article | summary ...
 @end example
 
 The limitations are that the @code{frame} split can only appear as the
@@ -17629,13 +18422,14 @@ for composing mail and news while leaving the original frame intact.  To
 accomplish that, something like the following can be done:
 
 @lisp
-(message (frame 1.0
-                (if (not (buffer-live-p gnus-summary-buffer))
-                    (car (cdr (assoc 'group gnus-buffer-configuration)))
-                  (car (cdr (assoc 'summary gnus-buffer-configuration))))
-                (vertical ((user-position . t) (top . 1) (left . 1)
-                           (name . "Message"))
-                          (message 1.0 point))))
+(message
+  (frame 1.0
+         (if (not (buffer-live-p gnus-summary-buffer))
+             (car (cdr (assoc 'group gnus-buffer-configuration)))
+           (car (cdr (assoc 'summary gnus-buffer-configuration))))
+         (vertical ((user-position . t) (top . 1) (left . 1)
+                    (name . "Message"))
+                   (message 1.0 point))))
 @end lisp
 
 @findex gnus-add-configuration
@@ -17670,7 +18464,7 @@ windows resized.
 @subsection Example Window Configurations
 
 @itemize @bullet
-@item 
+@item
 Narrow left hand side occupied by group buffer.  Right hand side split
 between summary buffer (top one-sixth) and article buffer (bottom).
 
@@ -18185,7 +18979,7 @@ never be totally undoable.
 @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} 
+default.  The @kbd{M-C-_} key performs the @code{gnus-undo}
 command, which should feel kinda like the normal Emacs @code{undo}
 command.
 
@@ -18243,10 +19037,10 @@ XEmacs is able to display pictures and stuff, so Gnus has taken
 advantage of that.
 
 @menu
-* Picons::    How to display pictures of what your reading.
-* Smileys::   Show all those happy faces the way they were meant to be shown.
-* Toolbar::   Click'n'drool.
-* XVarious::  Other XEmacsy Gnusey variables.
+* Picons::                      How to display pictures of what your reading.
+* Smileys::                     Show all those happy faces the way they were meant to be shown.
+* Toolbar::                     Click'n'drool.
+* XVarious::                    Other XEmacsy Gnusey variables.
 @end menu
 
 
@@ -18264,11 +19058,11 @@ good way to do so.  Its also a great way to impress people staring
 over your shoulder as you read news.
 
 @menu
-* Picon Basics::           What are picons and How do I get them.
-* Picon Requirements::     Don't go further if you aren't using XEmacs.
-* Easy Picons::            Displaying Picons---the easy way.
-* Hard Picons::            The way you should do it.  You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics::                What are picons and How do I get them.
+* Picon Requirements::          Don't go further if you aren't using XEmacs.
+* Easy Picons::                 Displaying Picons---the easy way.
+* Hard Picons::                 The way you should do it.  You'll learn something.
+* Picon Useless Configuration::  Other variables you can trash/tweak/munge/play with.
 @end menu
 
 
@@ -18388,7 +19182,7 @@ 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
 buffer visible using the standard Gnus window configuration
-routines---@pxref{Windows Configuration}.
+routines---@pxref{Window Layout}.
 
 @item gnus-picons-group-excluded-groups
 @vindex gnus-picons-group-excluded-groups
@@ -18909,14 +19703,14 @@ but at the common table.@*
 @chapter Appendices
 
 @menu
-* History::                        How Gnus got where it is today.
-* On Writing Manuals::             Why this is not a beginner's guide.
-* Terminology::                    We use really difficult, like, words here.
-* Customization::                  Tailoring Gnus to your needs.
-* Troubleshooting::                What you might try if things do not work.
-* Gnus Reference Guide::           Rilly, rilly technical stuff.
-* Emacs for Heathens::             A short introduction to Emacsian terms.
-* Frequently Asked Questions::     A question-and-answer session.
+* History::                     How Gnus got where it is today.
+* On Writing Manuals::          Why this is not a beginner's guide.
+* Terminology::                 We use really difficult, like, words here.
+* Customization::               Tailoring Gnus to your needs.
+* Troubleshooting::             What you might try if things do not work.
+* Gnus Reference Guide::        Rilly, rilly technical stuff.
+* Emacs for Heathens::          A short introduction to Emacsian terms.
+* Frequently Asked Questions::
 @end menu
 
 
@@ -18946,15 +19740,15 @@ renamed it back again to ``Gnus''.  But in mixed case.  ``Gnus'' vs.
 ``@sc{gnus}''.  New vs. old.
 
 @menu
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                What's the point of Gnus?
-* Compatibility::       Just how compatible is Gnus with @sc{gnus}?
-* Conformity::          Gnus tries to conform to all standards.
-* Emacsen::             Gnus can be run on a few modern Emacsen.
-* Gnus Development::    How Gnus is developed.
-* Contributors::        Oodles of people.
-* New Features::        Pointers to some of the new stuff in Gnus.
+* Gnus Versions::               What Gnus versions have been released.
+* Other Gnus Versions::         Other Gnus versions that also have been released.
+* Why?::                        What's the point of Gnus?
+* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
+* Conformity::                  Gnus tries to conform to all standards.
+* Emacsen::                     Gnus can be run on a few modern Emacsen.
+* Gnus Development::            How Gnus is developed.
+* Contributors::                Oodles of people.
+* New Features::                Pointers to some of the new stuff in Gnus.
 @end menu
 
 
@@ -19257,6 +20051,9 @@ well as numerous other things).
 @item
 Luis Fernandes---design and graphics.
 
+@item
+Joe Reiss---creator of the smiley faces.
+
 @item
 Justin Sheehy--the FAQ maintainer.
 
@@ -19548,11 +20345,11 @@ actually are people who are using Gnus.  Who'd'a thunk it!
 @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.2/5.3.
-* Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6/5.7.
-* Pterodactyl Gnus::   Pentad also starts with P, AKA Gnus 5.8/5.9.
+* ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
+* Red Gnus::                    Third time best---Gnus 5.4/5.5.
+* Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
+* Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
@@ -19667,7 +20464,7 @@ Buttons}).
 
 @item
 You can do lots of strange stuff with the Gnus window & frame
-configuration (@pxref{Windows Configuration}).
+configuration (@pxref{Window Layout}).
 
 @item
 You can click on buttons instead of using the keyboard
@@ -19816,8 +20613,8 @@ 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}).
+Frames can be part of @code{gnus-buffer-configuration} (@pxref{Window
+Layout}).
 
 @item
 Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
@@ -20217,7 +21014,7 @@ If you used procmail like in
 (setq nnmail-procmail-suffix "\\.in")
 @end lisp
 
-this now has changed to 
+this now has changed to
 
 @lisp
 (setq mail-sources
@@ -20246,7 +21043,7 @@ of variables starting with @code{gnus-treat-} have been added.
 @item The Gnus posting styles have been redone again and now works in a
 subtly different manner.
 
-@item New web-based backends have been added: @code{nnslashdot}, 
+@item New web-based backends have been added: @code{nnslashdot},
 @code{nnwarchive} and @code{nnultimate}.  nnweb has been revamped,
 again, to keep up with ever-changing layouts.
 
@@ -20257,7 +21054,7 @@ again, to keep up with ever-changing layouts.
 @iftex
 
 @page
-@node The Manual
+@node History
 @section The Manual
 @cindex colophon
 @cindex manual
@@ -20325,16 +21122,16 @@ I guess most manuals are written after-the-fact; documenting a program
 that's already there.  This is not how this manual is written.  When
 implementing something, I write the manual entry for that something
 straight away.  I then see that it's difficult to explain the
-functionality, so I write how it's supposed to be, and then I change the 
+functionality, so I write how it's supposed to be, and then I change the
 implementation.  Writing the documentation and writing the code goes
 hand in hand.
 
 This, of course, means that this manual has no, or little, flow.  It
 documents absolutely everything in Gnus, but often not where you're
-looking for it.  It is a reference manual, and not a guide to how to get 
+looking for it.  It is a reference manual, and not a guide to how to get
 started with Gnus.
 
-That would be a totally different book, that should be written using the 
+That would be a totally different book, that should be written using the
 reference manual as source material.  It would look quite differently.
 
 
@@ -20539,10 +21336,10 @@ section is designed to give general pointers on how to customize Gnus
 for some quite common situations.
 
 @menu
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection::  You run a remote Emacs.
-* Little Disk Space::         You feel that having large setup files is icky.
-* Slow Machine::              You feel like buying a faster machine.
+* Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection::    You run a remote Emacs.
+* Little Disk Space::           You feel that having large setup files is icky.
+* Slow Machine::                You feel like buying a faster machine.
 @end menu
 
 
@@ -20726,6 +21523,10 @@ 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.
 
+@cindex patches
+If you would like to contribute a patch to fix bugs or make
+improvements, please produce the patch using @samp{diff -u}.
+
 If you just need help, you are better off asking on
 @samp{gnu.emacs.gnus}.  I'm not very helpful.
 
@@ -20752,15 +21553,15 @@ backends (this is written in stone), the format of the score files
 and general methods of operation.
 
 @menu
-* Gnus Utility Functions::   Common functions and variable to use.
-* Backend Interface::        How Gnus communicates with the servers.
-* Score File Syntax::        A BNF definition of the score file standard.
-* Headers::                  How Gnus stores headers internally.
-* Ranges::                   A handy format for storing mucho numbers.
-* Group Info::               The group info format.
-* Extended Interactive::     Symbolic prefixes and stuff.
-* Emacs/XEmacs Code::        Gnus can be run under all modern Emacsen.
-* Various File Formats::     Formats of files that Gnus use.
+* Gnus Utility Functions::      Common functions and variable to use.
+* Backend Interface::           How Gnus communicates with the servers.
+* Score File Syntax::           A BNF definition of the score file standard.
+* Headers::                     How Gnus stores headers internally.
+* Ranges::                      A handy format for storing mucho numbers.
+* Group Info::                  The group info format.
+* Extended Interactive::        Symbolic prefixes and stuff.
+* Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
+* Various File Formats::        Formats of files that Gnus use.
 @end menu
 
 
@@ -20936,18 +21737,37 @@ only operate on one group at a time, and have no concept of ``server''
 -- they have a group, and they deliver info on that group and nothing
 more.
 
+Gnus identifies each message by way of group name and article number.  A
+few remarks about these article numbers might be useful.  First of all,
+the numbers are positive integers.  Secondly, it is normally not
+possible for later articles to `re-use' older article numbers without
+confusing Gnus.  That is, if a group has ever contained a message
+numbered 42, then no other message may get that number, or Gnus will get
+mightily confused.@footnote{See the function
+@code{nnchoke-request-update-info}, @ref{Optional Backend Functions}.}
+Third, article numbers must be assigned in order of arrival in the
+group; this is not necessarily the same as the date of the message.
+
+The previous paragraph already mentions all the `hard' restrictions that
+article numbers must fulfill.  But it seems that it might be useful to
+assign @emph{consecutive} article numbers, for Gnus gets quite confused
+if there are holes in the article numbering sequence.  However, due to
+the `no-reuse' restriction, holes cannot be avoided altogether.  It's
+also useful for the article numbers to start at 1 to avoid running out
+of numbers as long as possible.
+
 In the examples and definitions I will refer to the imaginary backend
 @code{nnchoke}.
 
 @cindex @code{nnchoke}
 
 @menu
-* Required Backend Functions::        Functions that must be implemented.
-* Optional Backend Functions::        Functions that need not be implemented.
-* 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.
+* Required Backend Functions::  Functions that must be implemented.
+* Optional Backend Functions::  Functions that need not be implemented.
+* 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
 
 
@@ -21232,14 +22052,13 @@ ACTION is a list of mark setting requests, having this format:
 @end example
 
 RANGE is a range of articles you wish to update marks on.  ACTION is
-@code{set}, @code{add} or @code{del}, respectively used for removing all
-existing marks and setting them as specified, adding (preserving the
-marks not mentioned) mark and removing (preserving the marks not
-mentioned) marks.  MARK is a list of marks; where each mark is a symbol.
-Currently used marks are @code{read}, @code{tick}, @code{reply},
-@code{expire}, @code{killed}, @code{dormant}, @code{save},
-@code{download} and @code{unsend}, but your backend should, if possible,
-not limit itself to these.
+@code{add} or @code{del}, used to add marks or remove marks
+(preserving all marks not mentioned).  MARK is a list of marks; where
+each mark is a symbol.  Currently used marks are @code{read},
+@code{tick}, @code{reply}, @code{expire}, @code{killed},
+@code{dormant}, @code{save}, @code{download}, @code{unsend},
+@code{forward} and @code{recent}, but your backend should, if
+possible, not limit itself to these.
 
 Given contradictory actions, the last action in the list should be the
 effective one.  That is, if your action contains a request to add the
@@ -21312,8 +22131,18 @@ description-buffer = *description-line
 @item (nnchoke-request-newgroups DATE &optional SERVER)
 
 The result data from this function should be all groups that were
-created after @samp{date}, which is in normal human-readable date
-format.  The data should be in the active buffer format.
+created after @samp{date}, which is in normal human-readable date format
+(i.e., the date format used in mail and news headers, and returned by
+the function @code{message-make-date} by default).  The data should be
+in the active buffer format.
+
+It is okay for this function to return `too many' groups; some backends
+might find it cheaper to return the full list of groups, rather than
+just the new groups.  But don't do this for backends with many groups.
+Normally, if the user creates the groups herself, there won't be too
+many groups, so nnml and the like are probably safe.  But for backends
+like nntp, where the groups have been created by the server, it is quite
+likely that there can be many groups.
 
 
 @item (nnchoke-request-create-group GROUP &optional SERVER)
@@ -21555,7 +22384,9 @@ Below is a slightly shortened version of the @code{nndir} backend.
   "*Non-nil means that nndir will never retrieve NOV headers."
   nnml-nov-is-evil)
 
-(defvoo nndir-current-group "" nil nnml-current-group nnmh-current-group)
+(defvoo nndir-current-group ""
+  nil
+  nnml-current-group nnmh-current-group)
 (defvoo nndir-top-directory nil nil nnml-directory nnmh-directory)
 (defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail)
 
@@ -21573,7 +22404,8 @@ Below is a slightly shortened version of the @code{nndir} backend.
   (unless (assq 'nndir-directory defs)
     (push `(nndir-directory ,server) defs))
   (push `(nndir-current-group
-          ,(file-name-nondirectory (directory-file-name nndir-directory)))
+          ,(file-name-nondirectory
+            (directory-file-name nndir-directory)))
         defs)
   (push `(nndir-top-directory
           ,(file-name-directory (directory-file-name nndir-directory)))
@@ -21600,6 +22432,7 @@ Below is a slightly shortened version of the @code{nndir} backend.
 @subsubsection Hooking New Backends Into Gnus
 
 @vindex gnus-valid-select-methods
+@findex gnus-declare-backend
 Having Gnus start using your new backend is rather easy---you just
 declare it with the @code{gnus-declare-backend} functions.  This will
 enter the backend into the @code{gnus-valid-select-methods} variable.
@@ -21613,6 +22446,8 @@ Here's an example:
 (gnus-declare-backend "nnchoke" 'mail 'respool 'address)
 @end lisp
 
+The above line would then go in the @file{nnchoke.el} file.
+
 The abilities can be:
 
 @table @code
@@ -21712,47 +22547,47 @@ Here's a typical score file:
 BNF definition of a score file:
 
 @example
-score-file       = "" / "(" *element ")"
-element          = rule / atom
-rule             = string-rule / number-rule / date-rule
-string-rule      = "(" quote string-header quote space *string-match ")"
-number-rule      = "(" quote number-header quote space *number-match ")"
-date-rule        = "(" quote date-header quote space *date-match ")"
-quote            = <ascii 34>
-string-header    = "subject" / "from" / "references" / "message-id" /
-                   "xref" / "body" / "head" / "all" / "followup"
-number-header    = "lines" / "chars"
-date-header      = "date"
-string-match     = "(" quote <string> quote [ "" / [ space score [ "" /
-                   space date [ "" / [ space string-match-t ] ] ] ] ] ")"
-score            = "nil" / <integer>
-date             = "nil" / <natural number>
-string-match-t   = "nil" / "s" / "substring" / "S" / "Substring" /
-                   "r" / "regex" / "R" / "Regex" /
-                   "e" / "exact" / "E" / "Exact" /
-                   "f" / "fuzzy" / "F" / "Fuzzy"
-number-match     = "(" <integer> [ "" / [ space score [ "" /
-                   space date [ "" / [ space number-match-t ] ] ] ] ] ")"
-number-match-t   = "nil" / "=" / "<" / ">" / ">=" / "<="
-date-match       = "(" quote <string> quote [ "" / [ space score [ "" /
-                   space date [ "" / [ space date-match-t ] ] ] ] ")"
-date-match-t     = "nil" / "at" / "before" / "after"
-atom             = "(" [ required-atom / optional-atom ] ")"
-required-atom    = mark / expunge / mark-and-expunge / files /
-                   exclude-files / read-only / touched
-optional-atom    = adapt / local / eval
-mark             = "mark" space nil-or-number
-nil-or-number    = "nil" / <integer>
-expunge          = "expunge" space nil-or-number
+score-file      = "" / "(" *element ")"
+element         = rule / atom
+rule            = string-rule / number-rule / date-rule
+string-rule     = "(" quote string-header quote space *string-match ")"
+number-rule     = "(" quote number-header quote space *number-match ")"
+date-rule       = "(" quote date-header quote space *date-match ")"
+quote           = <ascii 34>
+string-header   = "subject" / "from" / "references" / "message-id" /
+                  "xref" / "body" / "head" / "all" / "followup"
+number-header   = "lines" / "chars"
+date-header     = "date"
+string-match    = "(" quote <string> quote [ "" / [ space score [ "" /
+                  space date [ "" / [ space string-match-t ] ] ] ] ] ")"
+score           = "nil" / <integer>
+date            = "nil" / <natural number>
+string-match-t  = "nil" / "s" / "substring" / "S" / "Substring" /
+                  "r" / "regex" / "R" / "Regex" /
+                  "e" / "exact" / "E" / "Exact" /
+                  "f" / "fuzzy" / "F" / "Fuzzy"
+number-match    = "(" <integer> [ "" / [ space score [ "" /
+                  space date [ "" / [ space number-match-t ] ] ] ] ] ")"
+number-match-t  = "nil" / "=" / "<" / ">" / ">=" / "<="
+date-match      = "(" quote <string> quote [ "" / [ space score [ "" /
+                  space date [ "" / [ space date-match-t ] ] ] ] ")"
+date-match-t    = "nil" / "at" / "before" / "after"
+atom            = "(" [ required-atom / optional-atom ] ")"
+required-atom   = mark / expunge / mark-and-expunge / files /
+                  exclude-files / read-only / touched
+optional-atom   = adapt / local / eval
+mark            = "mark" space nil-or-number
+nil-or-number   = "nil" / <integer>
+expunge         = "expunge" space nil-or-number
 mark-and-expunge = "mark-and-expunge" space nil-or-number
-files            = "files" *[ space <string> ]
-exclude-files    = "exclude-files" *[ space <string> ]
-read-only        = "read-only" [ space "nil" / space "t" ]
-adapt            = "adapt" [ space "ignore" / space "t" / space adapt-rule ]
-adapt-rule       = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")"
-local            = "local" *[ space "(" <string> space <form> ")" ]
-eval             = "eval" space <form>
-space            = *[ " " / <TAB> / <NEWLINE> ]
+files           = "files" *[ space <string> ]
+exclude-files   = "exclude-files" *[ space <string> ]
+read-only       = "read-only" [ space "nil" / space "t" ]
+adapt        = "adapt" [ space "ignore" / space "t" / space adapt-rule ]
+adapt-rule      = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")"
+local           = "local" *[ space "(" <string> space <form> ")" ]
+eval            = "eval" space <form>
+space           = *[ " " / <TAB> / <NEWLINE> ]
 @end example
 
 Any unrecognized elements in a score file should be ignored, but not
@@ -22093,8 +22928,8 @@ hit these indirections impose on Gnus under XEmacs should be slight.
 @subsection Various File Formats
 
 @menu
-* Active File Format::      Information on articles and groups available.
-* Newsgroups File Format::  Group descriptions.
+* Active File Format::          Information on articles and groups available.
+* Newsgroups File Format::      Group descriptions.
 @end menu
 
 
@@ -22119,9 +22954,9 @@ Here's a pseudo-BNF definition of this file:
 
 @example
 active      = *group-line
-group-line  = group space high-number space low-number space flag <NEWLINE>
+group-line  = group spc high-number spc low-number spc flag <NEWLINE>
 group       = <non-white-space string>
-space       = " "
+spc         = " "
 high-number = <non-negative integer>
 low-number  = <positive integer>
 flag        = "y" / "n" / "m" / "j" / "x" / "=" group
@@ -22165,8 +23000,8 @@ you are already familiar with Emacs, just ignore this and go fondle your
 cat instead.
 
 @menu
-* Keystrokes::      Entering text and executing commands.
-* Emacs Lisp::      The built-in Emacs programming language.
+* Keystrokes::                  Entering text and executing commands.
+* Emacs Lisp::                  The built-in Emacs programming language.
 @end menu