Info file: gnus,    -*-Text-*-
produced by `texinfo-format-buffer'
from file `gnus.texi'
using `texinfmt.el' version 2.32 of 19 November 1993.





This file documents Gnus, the GNU Emacs newsreader.

Copyright (C) 1995,96 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.





File: gnus, Node: Sorting Groups, Next: Group Maintenance, Prev: Listing Groups, Up: The Group Buffer

Sorting Groups
==============

The `C-c C-s' (`gnus-group-sort-groups') command sorts the group buffer
according to the function(s) given by the `gnus-group-sort-function'
variable.  Available sorting functions include:


`gnus-group-sort-by-alphabet'
     Sort the group names alphabetically.  This is the default.

`gnus-group-sort-by-level'
     Sort by group level.

`gnus-group-sort-by-score'
     Sort by group score.

`gnus-group-sort-by-rank'
     Sort by group score and then the group level.  The level and the
     score are, when taken together, the group's "rank".

`gnus-group-sort-by-unread'
     Sort by number of unread articles.

`gnus-group-sort-by-method'
     Sort by alphabetically on the select method.



`gnus-group-sort-function' can also be a list of sorting functions.  In
that case, the most significant sort key function must be the last one.


There are also a number of commands for sorting directly according to
some sorting criteria:

`G S a'
     Sort the group buffer alphabetically by group name
     (`gnus-group-sort-groups-by-alphabet').

`G S u'
     Sort the group buffer by the number of unread articles
     (`gnus-group-sort-groups-by-unread').

`G S l'
     Sort the group buffer by group level
     (`gnus-group-sort-groups-by-level').

`G S v'
     Sort the group buffer by group score
     (`gnus-group-sort-groups-by-score').

`G S r'
     Sort the group buffer by group level
     (`gnus-group-sort-groups-by-rank').

`G S m'
     Sort the group buffer alphabetically by backend name
     (`gnus-group-sort-groups-by-method').


When given a prefix, all these commands will sort in reverse order.




File: gnus, Node: Group Maintenance, Next: Browse Foreign Server, Prev: Sorting Groups, Up: The Group Buffer

Group Maintenance
=================

`b'
     Find bogus groups and delete them
     (`gnus-group-check-bogus-groups').

`F'
     Find new groups and process them (`gnus-find-new-newsgroups').  If
     given a prefix, use the `ask-server' method to query the server for
     new groups.

`C-c C-x'
     Run all expirable articles in the current group through the expiry
     process (if any) (`gnus-group-expire-articles').

`C-c M-C-x'
     Run all articles in all groups through the expiry process
     (`gnus-group-expire-all-groups').





File: gnus, Node: Browse Foreign Server, Next: Exiting Gnus, Prev: Group Maintenance, Up: The Group Buffer

Browse Foreign Server
=====================

`B'
     You will be queried for a select method and a server name.  Gnus
     will then attempt to contact this server and let you browse the
     groups there (`gnus-group-browse-foreign-server').

A new buffer with a list of available groups will appear.  This buffer
will be use the `gnus-browse-mode'.  This buffer looks a bit
(well, a lot) like a normal group buffer, but with one major difference
- you can't enter any of the groups.  If you want to read any of the
news available on that server, you have to subscribe to the groups you
think may be interesting, and then you have to exit this buffer.  The
new groups will be added to the group buffer, and then you can read them
as you would any other group.

Future versions of Gnus may possibly permit reading groups straight from
the browse buffer.

Here's a list of keystrokes available in the browse mode:

`n'
     Go to the next group (`gnus-group-next-group').

`p'
     Go to the previous group (`gnus-group-prev-group').

`SPACE'
     Enter the current group and display the first article
     (`gnus-browse-read-group').

`RET'
     Enter the current group (`gnus-browse-select-group').

`u'
     Unsubscribe to the current group, or, as will be the case here,
     subscribe to it (`gnus-browse-unsubscribe-current-group').

`l'
`q'
     Exit browse mode (`gnus-browse-exit').

`?'
     Describe browse mode briefly (well, there's not much to describe,
     is there) (`gnus-browse-describe-briefly').




File: gnus, Node: Exiting Gnus, Next: Group Topics, Prev: Browse Foreign Server, Up: The Group Buffer

Exiting Gnus
============

Yes, Gnus is ex(c)iting.

`z'
     Suspend Gnus (`gnus-group-suspend').  This doesn't really exit
     Gnus, but it kills all buffers except the Group buffer.  I'm not
     sure why this is a gain, but then who am I to judge?

`q'
     Quit Gnus (`gnus-group-exit').

`Q'
     Quit Gnus without saving any startup files (`gnus-group-quit').

`gnus-suspend-gnus-hook' is called when you suspend Gnus and
`gnus-exit-gnus-hook' is called when you quit Gnus, while
`gnus-after-exiting-gnus-hook' is called as the final item when exiting
Gnus.

If you wish to completely unload Gnus and all its adherents, you can use
the `gnus-unload' command.  This command is also very handy when trying
to customize meta-variables.

Note:

     Miss Lisa Cannifax, while sitting in English class, feels her feet
     go numbly heavy and herself fall into a hazy trance as the boy
     sitting behind her drew repeated lines with his pencil across the
     back of her plastic chair.




File: gnus, Node: Group Topics, Next: Misc Group Stuff, Prev: Exiting Gnus, Up: The Group Buffer

Group Topics
============

If you read lots and lots of groups, it might be convenient to group
them hierarchically according to topics.  You put your Emacs groups over
here, your sex groups over there, and the rest (what, two groups or so?)
you put in some misc section that you never bother with anyway.  You can
even group the Emacs sex groups as a sub-topic to either the Emacs
groups or the sex groups--or both!  Go wild!

To get this *fab* functionality you simply turn on (ooh!) the
`gnus-topic' minor mode--type `t' in the group buffer.  (This is a
toggling command.)

Go ahead, just try it.  I'll still be here when you get back.  La de
dum...  Nice tune, that...  la la la...  What, you're back? Yes, and now
press `l'.  There.  All your groups are now listed under `misc'.
Doesn't that make you feel all warm and fuzzy?  Hot and bothered?

If you want this permanently enabled, you should add that minor mode to
the hook for the group mode:

     (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

* Menu:

* Topic Variables::    How to customize the topics the Lisp Way.
* Topic Commands::     Interactive E-Z commands.
* Topic Topology::     A map of the world.




File: gnus, Node: Topic Variables, Next: Topic Commands, Prev: Group Topics, Up: Group Topics

Topic Variables
---------------

Now, if you select a topic, if will fold/unfold that topic, which is
really neat, I think.

The topic lines themselves are created according to the
`gnus-topic-line-format' variable.  *Note Formatting Variables::.
Elements allowed are:

`i'
     Indentation.
`n'
     Topic name.
`v'
     Visibility.
`l'
     Level.
`g'
     Number of groups in the topic.
`a'
     Number of unread articles in the topic.
`A'
     Number of unread articles in the topic and all its subtopics.

Each sub-topic (and the groups in the sub-topics) will be indented with
`gnus-topic-indent-level' times the topic level number of spaces.  The
default is `2'.

`gnus-topic-mode-hook' is called in topic minor mode buffers.




File: gnus, Node: Topic Commands, Next: Topic Topology, Prev: Topic Variables, Up: Group Topics

Topic Commands
--------------

When the topic minor mode is turned on, a new `T' submap will be
available.  In addition, a few of the standard keys change their
definitions slightly.


`T n'
     Prompt for a new topic name and create it
     (`gnus-topic-create-topic').

`T m'
     Move the current group to some other topic
     (`gnus-topic-move-group').  This command understands the
     process/prefix convention (*Note Process/Prefix::).

`T c'
     Copy the current group to some other topic
     (`gnus-topic-copy-group').  This command understands the
     process/prefix convention (*Note Process/Prefix::).

`T D'
     Remove a group from the current topic (`gnus-topic-remove-group').
     This command understands the process/prefix convention (*Note
     Process/Prefix::).

`T M'
     Move all groups that match some regular expression to a topic
     (`gnus-topic-move-matching').

`T C'
     Copy all groups that match some regular expression to a topic
     (`gnus-topic-copy-matching').

`T #'
     Mark all groups in the current topic with the process mark
     (`gnus-topic-mark-topic').

`T M-#'
     Remove the process mark from all groups in the current topic
     (`gnus-topic-unmark-topic').

`RET'
`SPACE'
     Either select a group or fold a topic (`gnus-topic-select-group').
     When you perform this command on a group, you'll enter the group,
     as usual.  When done on a topic line, the topic will be folded (if
     it was visible) or unfolded (if it was folded already).  So it's
     basically a toggling command on topics.  In addition, if you give a
     numerical prefix, group on that level (and lower) will be
     displayed.

`T TAB'
     "Indent" the current topic so that it becomes a sub-topic of the
     previous topic (`gnus-topic-indent').  If given a prefix,
     "un-indent" the topic instead.

`C-k'
     Kill a group or topic (`gnus-topic-kill-group').

`C-y'
     Yank the previously killed group or topic
     (`gnus-topic-yank-group').  Note that all topics will be yanked
     before all groups.

`T r'
     Rename a topic (`gnus-topic-rename').

`T DEL'
     Delete an empty topic (`gnus-topic-delete').

`A T'
     List all groups that Gnus knows about in a topics-ified way
     (`gnus-topic-list-active').





File: gnus, Node: Topic Topology, Prev: Topic Commands, Up: Group Topics

Topic Topology
--------------

So, let's have a look at an example group buffer:

     Gnus
       Emacs -- I wuw it!
            3: comp.emacs
            2: alt.religion.emacs
         Naughty Emacs
          452: alt.sex.emacs
            0: comp.talk.emacs.recovery
       Misc
            8: comp.binaries.fractals
           13: comp.sources.unix

So, here we have one top-level topic, two topics under that, and one
sub-topic under one of the sub-topics.  (There is always just one (1)
top-level topic).  This topology can be expressed as follows:

     (("Gnus" visible)
      (("Emacs -- I wuw it!" visible) 
       (("Naughty Emacs" visible)))
      (("Misc" visible)))

This is in fact how the variable `gnus-topic-topology' would look for
the display above.  That variable is saved in the `.newsrc.eld' file,
and shouldn't be messed with manually--unless you really want to.  Since
this variable is read from the `.newsrc.eld' file, setting it in any
other startup files will have no effect.

This topology shows what topics are sub-topics of what topics (right),
and which topics are visible.  Two settings are currently
allowed---`visible' and `invisible'.




File: gnus, Node: Misc Group Stuff, Prev: Group Topics, Up: The Group Buffer

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.
* File Commands::         Reading and writing the Gnus files.


`^'
     Enter the server buffer (`gnus-group-enter-server-mode'). *Note The
     Server Buffer::.

`a'
     Post an article to a group (`gnus-group-post-news').  The current
     group name will be used as the default.

`m'
     Mail a message somewhere (`gnus-group-mail').


Variables for the group buffer:


`gnus-group-mode-hook'
     `gnus-group-mode-hook' is called after the group buffer has been
     created.

`gnus-group-prepare-hook'
     `gnus-group-prepare-hook' is called after the group buffer is
     generated.  It may be used to modify the buffer in some strange,
     unnatural way.

`gnus-permanently-visible-groups'
     Groups matching this regexp will always be listed in the group
     buffer, whether they are empty or not.





File: gnus, Node: Scanning New Messages, Next: Group Information, Prev: Misc Group Stuff, Up: Misc Group Stuff

Scanning New Messages
---------------------


`g'
     Check the server(s) for new articles.  If the numerical prefix is
     used, this command will check only groups of level ARG and lower
     (`gnus-group-get-new-news').  If given a non-numerical prefix, this
     command will force a total rereading of the active file(s) from the
     backend(s).

`M-g'
     Check whether new articles have arrived in the current group
     (`gnus-group-get-new-news-this-group').  The
     `gnus-goto-next-group-when-activating' variable controls whether
     this command is to move point to the next group or not.  It is `t'
     by default.

`C-c M-g'
     Activate absolutely all groups (`gnus-activate-all-groups').

`R'
     Restart Gnus (`gnus-group-restart').


`gnus-get-new-news-hook' is run just before checking for new news.

`gnus-after-getting-new-news-hook' is run after checking for new news.




File: gnus, Node: Group Information, Next: File Commands, Prev: Scanning New Messages, Up: Misc Group Stuff

Group Information
-----------------


`M-f'
     Try to fetch the FAQ for the current group
     (`gnus-group-fetch-faq').  Gnus will try to get the FAQ from
     `gnus-group-faq-directory', which is usually a directory on a
     remote machine.  `ange-ftp' will be used for fetching the file.

`D'
     Describe the current group (`gnus-group-describe-group').  If given
     a prefix, force Gnus to re-read the description from the server.

`M-d'
     Describe all groups (`gnus-group-describe-all-groups').  If given a
     prefix, force Gnus to re-read the description file from the server.

`V'
     Display current Gnus version numbers (`gnus-version').

`?'
     Give a very short help message (`gnus-group-describe-briefly').

`C-c C-i'
     Go to the Gnus info node (`gnus-info-find-node').




File: gnus, Node: File Commands, Prev: Group Information, Up: Misc Group Stuff

File Commands
-------------


`r'
     Read the init file (`gnus-init-file', which defaults to `~/.gnus')
     (`gnus-group-read-init-file').

`s'
     Save the `.newsrc.eld' file (and `.newsrc' if wanted)
     (`gnus-group-save-newsrc').  If given a prefix, force saving the
     file(s) whether Gnus thinks it is necessary or not.






File: gnus, Node: The Summary Buffer, Next: The Article Buffer, Prev: The Group Buffer, Up: Top

The Summary Buffer
******************

A line for each article is displayed in the summary buffer.  You can
move around, read articles, post articles and reply to articles.

* Menu:

* 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.
* Canceling and Superseding::   "Whoops, I shouldn't have called him that."
* 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.
* 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.
* Article Backlog::             Having already read articles hang around.
* Saving Articles::             Ways of customizing article saving.
* Decoding Articles::           Gnus can treat series of (uu)encoded articles.
* Article Treatment::           The article buffer can be mangled at will.
* Summary Sorting::             Sorting the summary buffer in various ways.
* Finding the Parent::          No child support? Get the parent.
* Alternative Approaches::      Reading using non-default summaries.
* 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.




File: gnus, Node: Summary Buffer Format, Next: Summary Maneuvering, Prev: The Summary Buffer, Up: The Summary Buffer

Summary Buffer Format
=====================

* Menu:

* Summary Buffer Lines::     You can specify how summary lines should look.
* Summary Buffer Mode Line:: You can say how the mode line should look.
* Summary Highlighting::     Making the summary buffer all pretty and nice.

Gnus will use the value of the `gnus-extract-address-components'
variable as a function for getting the name and address parts of a
`From' header.  Two pre-defined function exist:
`gnus-extract-address-components', which is the default, quite fast, and
too simplistic solution; and `mail-extract-address-components', which
works very nicely, but is slower.  The default function will return the
wrong answer in 5% of the cases.  If this is unacceptable to you, use
the other function instead.

`gnus-summary-same-subject' is a string indicating that the current
article has the same subject as the previous.  This string will be used
with those specs that require it.  The default is `'.




File: gnus, Node: Summary Buffer Lines, Next: Summary Buffer Mode Line, Prev: Summary Buffer Format, Up: Summary Buffer Format

Summary Buffer Lines
--------------------

You can change the format of the lines in the summary buffer by changing
the `gnus-summary-line-format' variable.  It works along the same lines
a a normal `format' string, with some extensions.

The default string is `%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n'.

The following format specification characters are understood:

`N'
     Article number.
`S'
     Subject string.
`s'
     Subject if the article is the root, `gnus-summary-same-subject'
     otherwise.
`F'
     Full `From' line.
`n'
     The name (from the `From' header).
`a'
     The name (from the `From' header).  This differs from the `n' spec
     in that it uses `gnus-extract-address-components', which is slower,
     but may be more thorough.
`A'
     The address (from the `From' header).  This works the same way as
     the `a' spec.
`L'
     Number of lines in the article.
`c'
     Number of characters in the article.
`I'
     Indentation based on thread level (*Note Customizing Threading::).
`T'
     Nothing if the article is a root and lots of spaces if it isn't (it
     pushes everything after it off the screen).
`\['
     Opening bracket, which is normally `\[', but can also be `<' for
     adopted articles.
`\]'
     Closing bracket, which is normally `\]', but can also be `>' for
     adopted articles.
`>'
     One space for each thread level.
`<'
     Twenty minus thread level spaces.
`U'
     Unread.
`R'
     Replied.
`i'
     Score as a number.
`z'
     Zcore, `+' if above the default level and `-' if below the default
     level.  If the difference between `gnus-summary-default-level' and
     the score is less than `gnus-summary-zcore-fuzz', this spec will
     not be used.
`V'
     Total thread score.
`x'
     `Xref'.
`D'
     `Date'.
`M'
     `Message-ID'.
`r'
     `References'.
`t'
     Number of articles in the current sub-thread.  Using this spec will
     slow down summary buffer generation somewhat.
`e'
     A single character will be displayed if the article has any
     children.
`u'
     User defined specifier.  The next character in the format string
     should be a letter.  GNUS will call the function
     `gnus-user-format-function-'`X', where `X' is the letter following
     `%u'.  The function will be passed the current header as argument.
     The function should return a string, which will be inserted into
     the summary just like information from any other summary specifier.

The `%U' (status), `%R' (replied) and `%z' (zcore) specs have to be
handled with care.  For reasons of efficiency, Gnus will compute what
column these characters will end up in, and "hard-code" that.  This
means that it is illegal to have these specs after a variable-length
spec.  Well, you might not be arrested, but your summary buffer will
look strange, which is bad enough.

The smart choice is to have these specs as far to the left as possible.
(Isn't that the case with everything, though?  But I digress.)

This restriction may disappear in later versions of Gnus.




File: gnus, Node: Summary Buffer Mode Line, Next: Summary Highlighting, Prev: Summary Buffer Lines, Up: Summary Buffer Format

Summary Buffer Mode Line
------------------------

You can also change the format of the summary mode bar.  Set
`gnus-summary-mode-line-format' to whatever you like.  Here are the
elements you can play with:

`G'
     Group name.
`p'
     Unprefixed group name.
`A'
     Current article number.
`V'
     Gnus version.
`U'
     Number of unread articles in this group.
`e'
     Number of unselected articles in this group.
`Z'
     A string with the number of unread and unselected articles
     represented either as `<%U(+%u) more>' if there are both unread and
     unselected articles, and just as `<%U more>' if there are just
     unread articles and no unselected ones.
`g'
     Shortish group name.  For instance, `rec.arts.anime' will be
     shortened to `r.a.anime'.
`S'
     Subject of the current article.
`u'
     Used-defined spec.
`s'
     Name of the current score file.
`d'
     Number of dormant articles.
`t'
     Number of ticked articles.
`r'
     Number of articles that have been marked as read in this session.
`E'
     Number of articles expunged by the score files.




File: gnus, Node: Summary Highlighting, Prev: Summary Buffer Mode Line, Up: Summary Buffer Format

Summary Highlighting
--------------------


`gnus-visual-mark-article-hook'
     This hook is run after selecting an article.  It is meant to be
     used for highlighting the article in some way.  It is not run if
     `gnus-visual' is `nil'.

`gnus-summary-update-hook'
     This hook is called when a summary line is changed.  It is not run
     if `gnus-visual' is `nil'.

`gnus-summary-selected-face'
     This is the face (or "font" as some people call it) that is used to
     highlight the current article in the summary buffer.

`gnus-summary-highlight'
     Summary lines are highlighted according to this variable, which is
     a list where the elements are on the format `(FORM . FACE)'.  If
     you would, for instance, like ticked articles to be italic and
     high-scored articles to be bold, you could set this variable to
     something like
          (((eq mark gnus-ticked-mark) . italic)
           ((> score default) . bold)) As you may have guessed, if FORM
     returns a non-`nil' value, FACE will be applied to the line.




File: gnus, Node: Summary Maneuvering, Next: Choosing Articles, Prev: Summary Buffer Format, Up: The Summary Buffer

Summary Maneuvering
===================

All the straight movement commands understand the numeric prefix and
behave pretty much as you'd expect.

None of these commands select articles.

`G M-n'
`M-n'
     Go to the next summary line of an unread article
     (`gnus-summary-next-unread-subject').

`G M-p'
`M-p'
     Go to the previous summary line of an unread article
     (`gnus-summary-prev-unread-subject').

`G j'
`j'
     Ask for an article number and then go that article
     (`gnus-summary-goto-article').

`G g'
     Ask for an article number and then go the summary line of that
     article (`gnus-summary-goto-subject').

If Gnus asks you to press a key to confirm going to the next group, you
can use the `C-n' and `C-p' keys to move around the group buffer,
searching for the next group to read without actually returning to the
group buffer.

Variables related to summary movement:


`gnus-auto-select-next'
     If you are at the end of the group and issue one of the movement
     commands, Gnus will offer to go to the next group.  If this variable is
     `t' and the next group is empty, Gnus will exit summary mode and
     return to the group buffer.  If this variable is neither `t' nor
     `nil', Gnus will select the next group, no matter whether it has
     any unread articles or not.  As a special case, if this variable is
     `quietly', Gnus will select the next group without asking for
     confirmation.  If this variable is `almost-quietly', the same will
     happen only if you are located on the last article in the group.
     Finally, if this variable is `slightly-quietly', the `Z n'
     command will go to the next group without confirmation.  Also
     *Note Group Levels::.

`gnus-auto-select-same'
     If non-`nil', all the movement commands will try to go to the next
     article with the same subject as the current.  This variable is not
     particularly useful if you use a threaded display.

`gnus-summary-check-current'
     If non-`nil', all the "unread" movement commands will not proceed
     to the next (or previous) article if the current article is unread.
     Instead, they will choose the current article.

`gnus-auto-center-summary'
     If non-`nil', Gnus will keep the point in the summary buffer
     centered at all times.  This makes things quite tidy, but if you
     have a slow network connection, or simply do not like this
     un-Emacsism, you can set this variable to `nil' to get the normal
     Emacs scrolling action.  This will also inhibit horizontal
     re-centering of the summary buffer, which might make it more
     inconvenient to read extremely long threads.





File: gnus, Node: Choosing Articles, Next: Paging the Article, Prev: Summary Maneuvering, Up: The Summary Buffer

Choosing Articles
=================

None of the following movement commands understand the numeric prefix,
and they all select and display an article.

`SPACE'
     Select the current article, or, if that one's read already, the
     next unread article (`gnus-summary-next-page').

`G n'
`n'
     Go to next unread article (`gnus-summary-next-unread-article').

`G p'
`p'
     Go to previous unread article (`gnus-summary-prev-unread-article').

`G N'
`N'
     Go to the next article (`gnus-summary-next-article').

`G P'
`P'
     Go to the previous article (`gnus-summary-prev-article').

`G C-n'
     Go to the next article with the same subject
     (`gnus-summary-next-same-subject').

`G C-p'
     Go to the previous article with the same subject
     (`gnus-summary-prev-same-subject').

`G f'
`.'
     Go to the first unread article
     (`gnus-summary-first-unread-article').

`G b'
`,'
     Go to the article with the highest score
     (`gnus-summary-best-unread-article').

`G l'
`l'
     Go to the previous article read (`gnus-summary-goto-last-article').

`G p'
     Pop an article off the summary history and go to this article
     (`gnus-summary-pop-article').  This command differs from the
     command above in that you can pop as many previous articles off the
     history as you like.

Some variables that are relevant for moving and selecting articles:

`gnus-auto-extend-newsgroup'
     All the movement commands will try to go to the previous (or next)
     article, even if that article isn't displayed in the Summary buffer
     if this variable is non-`nil'.  Gnus will then fetch the article
     from the server and display it in the article buffer.

`gnus-select-article-hook'
     This hook is called whenever an article is selected.  By default it
     exposes any threads hidden under the selected article.

`gnus-mark-article-hook'
     This hook is called whenever an article is selected.  It is
     intended to be used for marking articles as read.  The default
     value is `gnus-summary-mark-read-and-unread-as-read', and will
     change the mark of almost any article you read to
     `gnus-unread-mark'.  The only articles not affected by this
     function are ticked, dormant, and expirable articles.  If you'd
     instead like to just have unread articles marked as read, you can
     use `gnus-summary-mark-unread-as-read' instead.  It will leave
     marks like `gnus-low-score-mark', `gnus-del-mark' (and so on)
     alone.





File: gnus, Node: Paging the Article, Next: Reply Followup and Post, Prev: Choosing Articles, Up: The Summary Buffer

Scrolling the Article
=====================


`SPACE'
     Pressing `SPACE' will scroll the current article forward one page,
     or, if you have come to the end of the current article, will choose
     the next article (`gnus-summary-next-page').

`DEL'
     Scroll the current article back one page
     (`gnus-summary-prev-page').

`RET'
     Scroll the current article one line forward
     (`gnus-summary-scroll-up').

`A g'
`g'
     (Re)fetch the current article (`gnus-summary-show-article').  If
     given a prefix, fetch the current article, but don't run any of the
     article treatment functions.  This will give you a "raw" article,
     just the way it came from the server.

`A <'
`<'
     Scroll to the beginning of the article
     (`gnus-summary-beginning-of-article').

`A >'
`>'
     Scroll to the end of the article (`gnus-summary-end-of-article').

`A s'
     Perform an isearch in the article buffer
     (`gnus-summary-isearch-article').





File: gnus, Node: Reply Followup and Post, Next: Canceling and Superseding, Prev: Paging the Article, Up: The Summary Buffer

Reply, Followup and Post
========================

* Menu:

* Summary Mail Commands::            Sending mail.
* Summary Post Commands::            Sending news.




File: gnus, Node: Summary Mail Commands, Next: Summary Post Commands, Prev: Reply Followup and Post, Up: Reply Followup and Post

Summary Mail Commands
---------------------

Commands for composing a mail message:


`S r'
`r'
     Mail a reply to the author of the current article
     (`gnus-summary-reply').

`S R'
`R'
     Mail a reply to the author of the current article and include the
     original message (`gnus-summary-reply-with-original').  This
     command uses the process/prefix convention.

`S o m'
     Forward the current article to some other person
     (`gnus-summary-mail-forward').

`S o p'
     Forward the current article to a newsgroup
     (`gnus-summary-post-forward').

`S m'
`m'
     Send a mail to some other person
     (`gnus-summary-mail-other-window').

`S D b'
     If you have sent a mail, but the mail was bounced back to you for
     some reason (wrong address, transient failure), you can use this
     command to resend that bounced mail
     (`gnus-summary-resend-bounced-mail').  You will be popped into a
     mail buffer where you can edit the headers before sending the mail
     off again.  If you give a prefix to this command, and the bounced
     mail is a reply to some other mail, Gnus will try to fetch that
     mail and display it for easy perusal of its headers.  This might
     very well fail, though.

`S D r'
     Not to be confused with the previous command,
     `gnus-summary-resend-message' will prompt you for an address to
     send the current message off to, and then send it to that place.
     The headers of the message won't be altered--but lots of headers
     that say `Resent-To', `Resent-From' and so on will be added.  This
     means that you actually send a mail to someone that has a `To'
     header that (probably) points to yourself.  This will confuse
     people.  So, natcherly you'll only do that if you're really eVIl.

     This command is mainly used if you have several accounts and want
     to ship a mail to a different account of yours.  (If you're both
     `root' and `postmaster' and get a mail for `postmaster' to the
     `root' account, you may want to resend it to `postmaster'.  Ordnung
     muss sein!

`S O m'
     Digest the current series and forward the result using mail
     (`gnus-uu-digest-mail-forward').  This command uses the
     process/prefix convention (*Note Process/Prefix::).

`S O p'
     Digest the current series and forward the result to a newsgroup
     (`gnus-uu-digest-mail-forward').




File: gnus, Node: Summary Post Commands, Prev: Summary Mail Commands, Up: Reply Followup and Post

Summary Post Commands
---------------------

Commands for posting an article:

`S p'
`a'
     Post an article to the current group (`gnus-summary-post-news').

`S f'
`f'
     Post a followup to the current article (`gnus-summary-followup').

`S F'
`F'
     Post a followup to the current article and include the original
     message (`gnus-summary-followup-with-original').  This command uses
     the process/prefix convention.

`S u'
     Uuencode a file, split it into parts, and post it as a series
     (`gnus-uu-post-news'). (*Note Uuencoding and Posting::).




File: gnus, Node: Canceling and Superseding, Next: Marking Articles, Prev: Reply Followup and Post, Up: The Summary Buffer

Canceling Articles
==================

Have you ever written something, and then decided that you really,
really, really wish you hadn't posted that?

Well, you can't cancel mail, but you can cancel posts.

Find the article you wish to cancel (you can only cancel your own
articles, so don't try any funny stuff).  Then press `C' or `S c'
(`gnus-summary-cancel-article').  Your article will be
canceled--machines all over the world will be deleting your article.

Be aware, however, that not all sites honor cancels, so your article may
live on here and there, while most sites will delete the article in
question.

If you discover that you have made some mistakes and want to do some
corrections, you can post a "superseding" article that will replace your
original article.

Go to the original article and press `S s'
(`gnus-summary-supersede-article').  You will be put in a buffer where
you can edit the article all you want before sending it off the usual
way.

The same goes for superseding as for canceling, only more so: Some sites
do not honor superseding.  On those sites, it will appear that you have
posted almost the same article twice.

If you have just posted the article, and change your mind right away,
there is a trick you can use to cancel/supersede the article without
waiting for the article to appear on your site first.  You simply return
to the post buffer (which is called `*post-buf*').  There you will find
the article you just posted, with all the headers intact.  Change the
`Message-ID' header to a `Cancel' or `Supersedes' header by substituting
one of those words for `Message-ID'.  Then just press `C-c C-c' to send
the article as you would do normally.  The previous article will be
canceled/superseded.

Just remember, kids: There is no 'c' in 'supersede'.




File: gnus, Node: Marking Articles, Next: Limiting, Prev: Canceling and Superseding, Up: The Summary Buffer

Marking Articles
================

There are several marks you can set on an article.

You have marks that decide the "readedness" (whoo, neato-keano neologism
ohoy!) of the article.  Alphabetic marks generally mean "read", while
non-alphabetic characters generally mean "unread".

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.

There's a plethora of commands for manipulating these marks:

* Menu:

* Setting Marks::           How to set and remove marks.
* Setting Process Marks::   How to mark articles for later processing.




File: gnus, Node: Unread Articles, Next: Read Articles, Prev: Marking Articles, Up: Marking Articles

Unread Articles
---------------

The following marks mark articles as unread, in one form or other.

`!'
     "Ticked articles" are articles that will remain visible always.  If
     you see an article that you find interesting, or you want to put
     off reading it, or replying to it, until sometime later, you'd
     typically tick it.  However, articles can be expired, so if you
     want to keep an article forever, you'll have to save it.  Ticked
     articles have a `!' (`gnus-ticked-mark') in the first column.

`?'
     A "dormant" article is marked with a `?'  (`gnus-dormant-mark'),
     and will only appear in the summary buffer if there are followups
     to it.

`SPACE'
     An "unread" article is marked with a `SPACE' (`gnus-unread-mark').
     These are articles that haven't been read at all yet.




File: gnus, Node: Read Articles, Next: Other Marks, Prev: Unread Articles, Up: Marking Articles

Read Articles
-------------

All the following marks mark articles as read.


`r'
     Articles that are marked as read.  They have a `r'
     (`gnus-del-mark') in the first column.  These are articles that the
     user has marked as read more or less manually.

`R'
     Articles that are actually read are marked with `R'
     (`gnus-read-mark').

`O'
     Articles that were marked as read in previous sessions are now
     "old" and marked with `O' (`gnus-ancient-mark').

`K'
     Marked as killed (`gnus-killed-mark').

`X'
     Marked as killed by kill files (`gnus-kill-file-mark').

`Y'
     Marked as read by having a too low score (`gnus-low-score-mark').

`C'
     Marked as read by a catchup (`gnus-catchup-mark').

`G'
     Canceled article (`gnus-canceled-mark')

`F'
     SOUPed article (`gnus-souped-mark').

`Q'
     Sparsely reffed article (`gnus-sparse-mark').

All these marks just mean that the article is marked as read, really.
They are interpreted differently by the adaptive scoring scheme,
however.

One more special mark, though:

`E'
     You can also mark articles as "expirable" (or have them marked as
     such automatically).  That doesn't make much sense in normal
     groups, because a user does not control the expiring of news
     articles, but in mail groups, for instance, articles that are
     marked as "expirable" can be deleted by Gnus at any time.
     Expirable articles are marked with `E' (`gnus-expirable-mark').




File: gnus, Node: Other Marks, Next: Setting Marks, Prev: Read Articles, Up: Marking Articles

Other Marks
-----------

There are some marks that have nothing to do with whether the article is
read or not.


   * You can set a bookmark in the current article.  Say you are reading
     a long thesis on cats' urinary tracts, and have to go home for
     dinner before you've finished reading the thesis.  You can then set
     a bookmark in the article, and Gnus will jump to this bookmark the
     next time it encounters the article.

   * All articles that you have replied to or made a followup to (i.e.,
     have answered) will be marked with an `A' in the second column
     (`gnus-replied-mark').

   * Articles that are stored in the article cache will be marked with
     an `*' in the second column (`gnus-cached-mark').

   * Articles that are "saved" (in some manner or other; not necessarily
     religiously) are marked with an `S' in the second column
     (`gnus-saved-mark'.

   * It the `%e' spec is used, the presence of threads or not will be
     marked with `gnus-not-empty-thread-mark' and
     `gnus-empty-thread-mark' in the third column, respectively.

   * Finally we have the "process mark" (`gnus-process-mark'.  A variety
     of commands react to the presence of the process mark.  For
     instance, `X u' (`gnus-uu-decode-uu') will uudecode and view all
     articles that have been marked with the process mark.  Articles
     marked with the process mark have a `#' in the second column.


You might have noticed that most of these "non-readedness" marks appear
in the second column by default.  So if you have a cached, saved,
replied article that you have process-marked, what will that look like?

Nothing much.  The precedence rules go as follows: process -> cache ->
replied -> saved.  So if the article is in the cache and is replied,
you'll only see the cache mark and not the replied mark.




File: gnus, Node: Setting Marks, Next: Setting Process Marks, Prev: Other Marks, Up: Marking Articles

Setting Marks
-------------

All the marking commands understand the numeric prefix.

`M t'
`!'
     Tick the current article (`gnus-summary-tick-article-forward').

`M ?'
`?'
     Mark the current article as dormant
     (`gnus-summary-mark-as-dormant').

`M d'
`d'
     Mark the current article as read
     (`gnus-summary-mark-as-read-forward').

`M k'
`k'
     Mark all articles that have the same subject as the current one as
     read, and then select the next unread article
     (`gnus-summary-kill-same-subject-and-select').

`M K'
`C-k'
     Mark all articles that have the same subject as the current one as
     read (`gnus-summary-kill-same-subject').

`M C'
     Mark all unread articles in the group as read
     (`gnus-summary-catchup').

`M C-c'
     Mark all articles in the group as read--even the ticked and dormant
     articles (`gnus-summary-catchup-all').

`M H'
     Catchup the current group to point
     (`gnus-summary-catchup-to-here').

`C-w'
     Mark all articles between point and mark as read
     (`gnus-summary-mark-region-as-read').

`M V k'
     Kill all articles with scores below the default score (or below the
     numeric prefix) (`gnus-summary-kill-below').

`M c'
`M-u'
     Clear all readedness-marks from the current article
     (`gnus-summary-clear-mark-forward').

`M e'
`E'
     Mark the current article as expirable
     (`gnus-summary-mark-as-expirable').

`M b'
     Set a bookmark in the current article
     (`gnus-summary-set-bookmark').

`M B'
     Remove the bookmark from the current article
     (`gnus-summary-remove-bookmark').

`M V c'
     Clear all marks from articles with scores over the default score
     (or over the numeric prefix) (`gnus-summary-clear-above').

`M V u'
     Tick all articles with scores over the default score (or over the
     numeric prefix) (`gnus-summary-tick-above').

`M V m'
     Prompt for a mark, and mark all articles with scores over the
     default score (or over the numeric prefix) with this mark
     (`gnus-summary-clear-above').

The `gnus-summary-goto-unread' variable controls what action should be
taken after setting a mark.  If non-`nil', point will move to the
next/previous unread article.  If `nil', point will just move one line
up or down.  As a special case, if this variable is `never', all the
marking commands as well as other commands (like `SPACE') will move to
the next article, whether it is unread or not.  The default is `t'.




File: gnus, Node: Setting Process Marks, Prev: Setting Marks, Up: Marking Articles

Setting Process Marks
---------------------


`M P p'
`#'
     Mark the current article with the process mark
     (`gnus-summary-mark-as-processable').

`M P u'
`M-#'
     Remove the process mark, if any, from the current article
     (`gnus-summary-unmark-as-processable').

`M P U'
     Remove the process mark from all articles
     (`gnus-summary-unmark-all-processable').

`M P R'
     Mark articles by a regular expression (`gnus-uu-mark-by-regexp').

`M P r'
     Mark articles in region (`gnus-uu-mark-region').

`M P t'
     Mark all articles in the current (sub)thread
     (`gnus-uu-mark-thread').

`M P T'
     Unmark all articles in the current (sub)thread
     (`gnus-uu-unmark-thread').

`M P v'
     Mark all articles that have a score above the prefix argument
     (`gnus-uu-mark-over').

`M P s'
     Mark all articles in the current series (`gnus-uu-mark-series').

`M P S'
     Mark all series that have already had some articles marked
     (`gnus-uu-mark-sparse').

`M P a'
     Mark all articles in series order (`gnus-uu-mark-series').

`M P b'
     Mark all articles in the buffer in the order they appear
     (`gnus-uu-mark-buffer').




File: gnus, Node: Limiting, Next: Threading, Prev: Marking Articles, Up: The Summary Buffer

Limiting
========

It can be convenient to limit the summary buffer to just show some
subset of the articles currently in the group.  The effect most limit
commands have is to remove a few (or many) articles from the summary
buffer.


`/ /'
`/ s'
     Limit the summary buffer to articles that match some subject
     (`gnus-summary-limit-to-subject').

`/ a'
     Limit the summary buffer to articles that match some author
     (`gnus-summary-limit-to-author').

`/ u'
`x'
     Limit the summary buffer to articles that are not marked as read
     (`gnus-summary-limit-to-unread').  If given a prefix, limit the
     buffer to articles that are strictly unread.  This means that
     ticked and dormant articles will also be excluded.

`/ m'
     Ask for a mark and then limit to all articles that have not been
     marked with that mark (`gnus-summary-limit-to-marks').

`/ n'
     Limit the summary buffer to the current article
     (`gnus-summary-limit-to-articles').  Uses the process/prefix
     convention (*Note Process/Prefix::).

`/ w'
     Pop the previous limit off the stack and restore it
     (`gnus-summary-pop-limit').  If given a prefix, pop all limits off
     the stack.

`/ v'
     Limit the summary buffer to articles that have a score at or above
     some score (`gnus-summary-limit-to-score').

`/ E'
`M S'
     Display all expunged articles
     (`gnus-summary-limit-include-expunged').

`/ D'
     Display all dormant articles
     (`gnus-summary-limit-include-dormant').

`/ d'
     Hide all dormant articles (`gnus-summary-limit-exclude-dormant').

`/ c'
     Hide all dormant articles that have no children
     (`gnus-summary-limit-exclude-childless-dormant').

`/ C'
     Mark all excluded unread articles as read
     (`gnus-summary-limit-mark-excluded-as-read').  If given a prefix,
     also mark excluded ticked and dormant articles as read.





File: gnus, Node: Threading, Next: Sorting, Prev: Limiting, Up: The Summary Buffer

Threading
=========

Gnus threads articles by default.  "To thread" is to put replies to
articles directly after the articles they reply to--in a hierarchical
fashion.

* Menu:

* Customizing Threading::     Variables you can change to affect the threading.
* Thread Commands::           Thread based commands in the summary buffer.




File: gnus, Node: Customizing Threading, Next: Thread Commands, Prev: Threading, Up: Threading

Customizing Threading
---------------------


`gnus-show-threads'
     If this variable is `nil', no threading will be done, and all of
     the rest of the variables here will have no effect.  Turning
     threading off will speed group selection up a bit, but it is sure
     to make reading slower and more awkward.

`gnus-fetch-old-headers'
     If non-`nil', Gnus will attempt to build old threads by fetching
     more old headers--headers to articles that are marked as read.  If
     you would like to display as few summary lines as possible, but
     still connect as many loose threads as possible, you should set
     this variable to `some' or a number.  If you set it to a number, no
     more than that number of extra old headers will be fetched.  In
     either case, fetching old headers only works if the backend you are
     using carries overview files--this would normally be `nntp',
     `nnspool' and `nnml'.  Also remember that if the root of the thread
     has been expired by the server, there's not much Gnus can do about
     that.

`gnus-build-sparse-threads'
     Fetching old headers can be slow.  A low-rent similar effect can be
     gotten by setting this variable to `some'.  Gnus will then look at
     the complete `References' headers of all articles and try to string
     articles that belong in the same thread together.  This will leave
     "gaps" in the threading display where Gnus guesses that an article
     is missing from the thread.  (These gaps appear like normal summary
     lines.  If you select a gap, Gnus will try to fetch the article in
     question.)  If this variable is `t', Gnus will display all these
     "gaps" without regard for whether they are useful for completing
     the thread or not.  Finally, if this variable is `more', Gnus won't
     cut off sparse leaf nodes that don't lead anywhere.  This variable
     is `nil' by default.

`gnus-summary-gather-subject-limit'
     Loose threads are gathered by comparing subjects of articles.  If
     this variable is `nil', Gnus requires an exact match between the
     subjects of the loose threads before gathering them into one big
     super-thread.  This might be too strict a requirement, what with
     the presence of stupid newsreaders that chop off long subjects
     lines.  If you think so, set this variable to, say, 20 to require
     that only the first 20 characters of the subjects have to match.
     If you set this variable to a really low number, you'll find that
     Gnus will gather everything in sight into one thread, which isn't
     very helpful.

     If you set this variable to the special value `fuzzy', Gnus will
     use a fuzzy string comparison algorithm on the subjects.

`gnus-simplify-subject-fuzzy-regexp'
     This can either be a regular expression or list of regular
     expressions that match strings that will be removed from subjects
     if fuzzy subject simplification is used.

`gnus-simplify-ignored-prefixes'
     If you set `gnus-summary-gather-subject-limit' to something as low
     as 10, you might consider setting this variable to something
     sensible:

          (setq gnus-simplify-ignored-prefixes
                (concat 
                 "\\`\\[?\\("
                 (mapconcat 'identity
                            '("looking"
                               "wanted" "followup" "summary\\( of\\)?"
                               "help" "query" "problem" "question" 
                               "answer" "reference" "announce"
                               "How can I" "How to" "Comparison of"
                               ;; ...
                               )
                            "\\|")
                            "\\)\\s *\\("
                            (mapconcat 'identity
                                       '("for" "for reference" "with" "about")
                                       "\\|")
                            "\\)?\\]?:?[ \t]*"))

     All words that match this regexp will be removed before comparing
     two subjects.

`gnus-summary-gather-exclude-subject'
     Since loose thread gathering is done on subjects only, that might
     lead to many false hits, especially with certain common subjects
     like `' and `(none)'.  To make the situation slightly better, you
     can use the regexp `gnus-summary-gather-exclude-subject' to say
     what subjects should be excluded from the gathering process.  The
     default is `^ *$\\|^(none)$'.

`gnus-summary-thread-gathering-function'
     Gnus gathers threads by looking at `Subject' headers.  This means
     that totally unrelated articles may end up in the same "thread",
     which is confusing.  An alternate approach is to look at all the
     `Message-ID's in all the `References' headers to find matches.
     This will ensure that no gathered threads ever includes unrelated
     articles, but it's also means that people who have posted with
     broken newsreaders won't be gathered properly.  The choice is
     yours--plague or cholera:

     `gnus-gather-threads-by-subject'
          This function is the default gathering function and looks at
          `Subject's exclusively.

     `gnus-gather-threads-by-references'
          This function looks at `References' headers exclusively.

     If you want to test gathering by `References', you could say
     something like:

          (setq gnus-summary-thread-gathering-function
                'gnus-gather-threads-by-references)

`gnus-summary-make-false-root'
     If non-`nil', Gnus will gather all loose subtrees into one big tree
     and create a dummy root at the top.  (Wait a minute.  Root at the
     top?  Yup.)  Loose subtrees occur when the real root has expired,
     or you've read or killed the root in a previous session.

     When there is no real root of a thread, Gnus will have to fudge
     something.  This variable says what fudging method Gnus should use.
     There are four possible values:



     `adopt'
          Gnus will make the first of the orphaned articles the parent.
          This parent will adopt all the other articles.  The adopted
          articles will be marked as such by pointy brackets (`<>')
          instead of the standard square brackets (`[]').  This is the
          default method.

     `dummy'
          Gnus will create a dummy summary line that will pretend to be
          the parent.  This dummy line does not correspond to any real
          article, so selecting it will just select the first real
          article after the dummy article.
          `gnus-summary-dummy-line-format' is used to specify the format
          of the dummy roots.  It accepts only one format spec: `S',
          which is the subject of the article.  *Note Formatting
          Variables::.

     `empty'
          Gnus won't actually make any article the parent, but simply
          leave the subject field of all orphans except the first empty.
          (Actually, it will use `gnus-summary-same-subject' as the
          subject (*Note Summary Buffer Format::).)

     `none'
          Don't make any article parent at all.  Just gather the threads
          and display them after one another.

     `nil'
          Don't gather loose threads.

`gnus-thread-hide-subtree'
     If non-`nil', all threads will be hidden when the summary buffer is
     generated.

`gnus-thread-hide-killed'
     if you kill a thread and this variable is non-`nil', the subtree
     will be hidden.

`gnus-thread-ignore-subject'
     Sometimes somebody changes the subject in the middle of a thread.
     If this variable is non-`nil', the subject change is ignored.  If
     it is `nil', which is the default, a change in the subject will
     result in a new thread.

`gnus-thread-indent-level'
     This is a number that says how much each sub-thread should be
     indented.  The default is `4'.




