[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. 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.

The most common way to a summary buffer is to select a group from the group buffer (see section 2.3 Selecting a Group).

You can have as many summary buffers open as you wish.

The key v is reserved for users. You can bind it key to some function or better use it as a prefix key. For example:

 
(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread

3.1 Summary Buffer Format  Deciding how the summary buffer is to look.
3.2 Summary Maneuvering  Moving around the summary buffer.
3.3 Choosing Articles  Reading articles.
3.4 Scrolling the Article  Scrolling the current article.
3.5 Reply, Followup and Post  Posting articles.
3.6 Delayed Articles  Send articles at a later time.
3.7 Marking Articles  Marking articles as read, expirable, etc.
3.8 Limiting  You can limit the summary buffer.
3.9 Threading  How threads are made.
3.10 Sorting the Summary Buffer  How articles and threads are sorted.
3.11 Asynchronous Article Fetching  Gnus might be able to pre-fetch articles.
3.12 Article Caching  You may store articles in a cache.
3.13 Persistent Articles  Making articles expiry-resistant.
3.14 Article Backlog  Having already read articles hang around.
3.15 Saving Articles  Ways of customizing article saving.
3.16 Decoding Articles  Gnus can treat series of (uu)encoded articles.
3.17 Article Treatment  The article buffer can be mangled at will.
3.18 MIME Commands  Doing MIMEy things with the articles.
3.19 Charsets  Character set issues.
3.20 Article Commands  Doing various things with the article buffer.
3.21 Summary Sorting  Sorting the summary buffer in various ways.
3.22 Finding the Parent  No child support? Get the parent.
3.23 Alternative Approaches  Reading using non-default summaries.
3.24 Tree Display  A more visual display of threads.
3.25 Mail Group Commands  Some commands can only be used in mail groups.
3.26 Various Summary Stuff  What didn't fit anywhere else.
3.27 Exiting the Summary Buffer  Returning to the Group buffer, or reselecting the current group.
3.28 Crosspost Handling  How crossposted articles are dealt with.
3.29 Duplicate Suppression  An alternative when crosspost handling fails.
3.30 Security  Decrypt and Verify.
3.31 Mailing List  Mailing list minor mode.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Summary Buffer Format

3.1.1 Summary Buffer Lines  You can specify how summary lines should look.
3.1.2 To From Newsgroups  How to not display your own name.
3.1.3 Summary Buffer Mode Line  You can say how the mode line should look.
3.1.4 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 functions 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:

 
(setq gnus-extract-address-components
      'mail-extract-address-components)

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 "".


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.1 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 as a normal format string, with some extensions (see section 8.4 Formatting Variables).

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 gnus-goto-colon which does whatever you like with the cursor.) See section 8.4.6 Positioning Point.

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

The following format specification characters and extended format specification(s) are understood:

`N'
Article number.
`S'
Subject string. List identifiers stripped, gnus-list-identifies. See section 3.17.3 Article Hiding.
`s'
Subject if the article is the root of the thread or the previous article had a different subject, gnus-summary-same-subject otherwise. (gnus-summary-same-subject defaults to "".)
`F'
Full From header.
`n'
The name (from the From header).
`f'
The name, To header or the Newsgroups header (see section 3.1.2 To From Newsgroups).
`a'
The name (from the From header). This differs from the n spec in that it uses the function designated by the gnus-extract-address-components variable, 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. This specifier is not supported in some methods (like nnfolder).
`k'
Pretty-printed version of the number of characters in the article; for example, `1.2k' or `0.4M'.
`I'
Indentation based on thread level (see section 3.9.1 Customizing Threading).
`B'
A complex trn-style thread tree, showing response-connecting trace lines. A thread could be drawn like this:

 
>
+->
| +->
| | \->
| |   \->
| \->
+->
\->

You can customize the appearance with the following options. Note that it is possible to make the thread display look really neat by replacing the default ASCII characters with graphic line-drawing glyphs.

gnus-sum-thread-tree-root
Used for the root of a thread. If nil, use subject instead. The default is `> '.

gnus-sum-thread-tree-false-root
Used for the false root of a thread (see section 3.9.1.1 Loose Threads). If nil, use subject instead. The default is `> '.

gnus-sum-thread-tree-single-indent
Used for a thread with just one message. If nil, use subject instead. The default is `'.

gnus-sum-thread-tree-vertical
Used for drawing a vertical line. The default is `| '.

gnus-sum-thread-tree-indent
Used for indenting. The default is ` '.

gnus-sum-thread-tree-leaf-with-other
Used for a leaf with brothers. The default is `+-> '.

gnus-sum-thread-tree-single-leaf
Used for a leaf without brothers. The default is `\-> '

`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 (see section 3.9.1 Customizing Threading).
`]'
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. See section 3.7.2 Read Articles.

`R'
This misleadingly named specifier is the secondary mark. This mark will say whether the article has been replied to, has been cached, or has been saved. See section 3.7.3 Other Marks.

`i'
Score as a number (see section 7. Scoring).
`z'
Zcore, `+' if above the default level and `-' if below the default level. If the difference between gnus-summary-default-score and the score is less than gnus-summary-zcore-fuzz, this spec will not be used.
`V'
Total thread score.
`x'
Xref.
`D'
Date.
`d'
The Date in DD-MMM format.
`o'
The Date in YYYYMMDDTHHMMSS format.
`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'
An `=' (gnus-not-empty-thread-mark) will be displayed if the article has any children.
`P'
The line number.
`O'
Download mark.
`*'
Desired cursor position (instead of after first colon).
`&user-date;'
Age sensitive date format. Various date format is defined in gnus-user-date-format-alist.
`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.

Text between `%(' and `%)' will be highlighted with gnus-mouse-face when the mouse point is placed inside the area. There can only be one such area.

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 invalid 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.2 To From Newsgroups

In some groups (particularly in archive groups), the From header isn't very interesting, since all the articles there are written by you. To display the information in the To or Newsgroups headers instead, you need to decide three things: What information to gather; where to display it; and when to display it.

  1. The reading of extra header information is controlled by the gnus-extra-headers. This is a list of header symbols. For instance:

     
    (setq gnus-extra-headers
          '(To Newsgroups X-Newsreader))
    

    This will result in Gnus trying to obtain these three headers, and storing it in header structures for later easy retrieval.

  2. The value of these extra headers can be accessed via the gnus-extra-header function. Here's a format line spec that will access the X-Newsreader header:

     
    "%~(form (gnus-extra-header 'X-Newsreader))@"
    

  3. The gnus-ignored-from-addresses variable says when the `%f' summary line spec returns the To, Newsreader or From header. If this regexp matches the contents of the From header, the value of the To or Newsreader headers are used instead.

A related variable is nnmail-extra-headers, which controls when to include extra headers when generating overview (NOV) files. If you have old overview files, you should regenerate them after changing this variable, by entering the server buffer using ^, and then g on the appropriate mail server (e.g. nnml) to cause regeneration.

You also have to instruct Gnus to display the data by changing the %n spec to the %f spec in the gnus-summary-line-format variable.

In summary, you'd typically put something like the following in `~/.gnus.el':

 
(setq gnus-extra-headers
      '(To Newsgroups))
(setq nnmail-extra-headers gnus-extra-headers)
(setq gnus-summary-line-format
      "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
(setq gnus-ignored-from-addresses
      "Your Name Here")

(The values listed above are the default values in Gnus. Alter them to fit your needs.)

A note for news server administrators, or for users who wish to try to convince their news server administrator to provide some additional support:

The above is mostly useful for mail groups, where you have control over the NOV files that are created. However, if you can persuade your nntp admin to add (in the usual implementation, notably INN):

 
Newsgroups:full

to the end of her `overview.fmt' file, then you can use that just as you would the extra headers from the mail groups.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.3 Summary Buffer Mode Line

You can also change the format of the summary mode bar (see section 8.4.2 Mode Line Formatting). Set gnus-summary-mode-line-format to whatever you like. The default is `Gnus: %%b [%A] %Z'.

Here are the elements you can play with:

`G'
Group name.
`p'
Unprefixed group name.
`A'
Current article number.
`z'
Current article score.
`V'
Gnus version.
`U'
Number of unread articles in this group.
`e'
Number of unread articles in this group that aren't displayed in the summary buffer.
`Z'
A string with the number of unread and unselected articles represented either as `<%U(+%e) 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'
User-defined spec (see section 8.4.4 User-Defined Specs).
`s'
Name of the current score file (see section 7. Scoring).
`d'
Number of dormant articles (see section 3.7.1 Unread Articles).
`t'
Number of ticked articles (see section 3.7.1 Unread Articles).
`r'
Number of articles that have been marked as read in this session.
`E'
Number of articles expunged by the score files.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.4 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) 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 of 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 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 g
Ask for an article number and then go to the summary line of that article without displaying the 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 issue one of the movement commands (like n) and there are no more unread articles after the current one, Gnus will offer to go to the next group. If this variable is 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 with unread articles. 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 see section 2.6 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. (Same here might mean roughly equal. See gnus-summary-gather-subject-limit for details (see section 3.9.1 Customizing Threading).) If there are no more articles with the same subject, go to the first unread article.

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.

This variable can also be a number. In that case, center the window at the given number of lines from the top.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Choosing Articles

3.3.1 Choosing Commands  Commands for choosing articles.
3.3.2 Choosing Variables  Variables that influence these commands.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.1 Choosing Commands

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

If you want to fetch new articles or redisplay the group, see 3.27 Exiting the Summary Buffer.

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

If you have an article window open already and you press SPACE again, the article will be scrolled. This lets you conveniently SPACE through an entire newsgroup. See section 3.4 Scrolling the Article.

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 unread article with the highest score (gnus-summary-best-unread-article). If given a prefix argument, go to the first unread article that has a score over the default score.

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

G o
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, while l toggles the two last read articles. For a somewhat related issue (if you use these commands a lot), see section 3.14 Article Backlog.

G j
j
Ask for an article number or Message-ID, and then go to that article (gnus-summary-goto-article).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3.2 Choosing Variables

Some variables 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. The default is nil. If you would like each article to be saved in the Agent as you read it, putting gnus-agent-fetch-selected-article on this hook will do so.

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-read-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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 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).

If gnus-article-skip-boring is non-nil and the rest of the article consists only of citations and signature, then it will be skipped; the next article will be shown instead. You can customize what is considered uninteresting with gnus-article-boring-faces. You can manually view the article's pages, no matter how boring, using C-M-v.

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

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

M-RET
Scroll the current article one line backward (gnus-summary-scroll-down).

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.

If given a numerical prefix, you can do semi-manual charset stuff. C-u 0 g cn-gb-2312 RET will decode the message as if it were encoded in the cn-gb-2312 charset. If you have

 
(setq gnus-summary-show-article-charset-alist
      '((1 . cn-gb-2312)
        (2 . big5)))

then you can say C-u 1 g to get the same effect.

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
s
Perform an isearch in the article buffer (gnus-summary-isearch-article).

h
Select the article buffer (gnus-summary-select-article-buffer).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 Reply, Followup and Post

3.5.1 Summary Mail Commands  Sending mail.
3.5.2 Summary Post Commands  Sending news.
3.5.3 Summary Message Commands  Other Message-related commands.
3.5.4 Canceling Articles  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.1 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 w
Mail a wide reply to the author of the current article (gnus-summary-wide-reply). A wide reply is a reply that goes out to all people listed in the To, From (or Reply-to) and Cc headers. If Mail-Followup-To is present, that's used instead.

S W
Mail a wide reply to the current article and include the original message (gnus-summary-wide-reply-with-original). This command uses the process/prefix convention.

S v
Mail a very wide reply to the author of the current article (gnus-summary-wide-reply). A very wide reply is a reply that goes out to all people listed in the To, From (or Reply-to) and Cc headers in all the process/prefixed articles. This command uses the process/prefix convention.

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

S B r
Mail a reply to the author of the current article but ignore the Reply-To field (gnus-summary-reply-broken-reply-to). If you need this because a mailing list incorrectly sets a Reply-To header pointing to the list, you probably want to set the broken-reply-to group parameter instead, so things will work correctly. See section 2.10 Group Parameters.

S B R
Mail a reply to the author of the current article and include the original message but ignore the Reply-To field (gnus-summary-reply-broken-reply-to-with-original).

S o m
C-c C-f
Forward the current article to some other person (gnus-summary-mail-forward). If no prefix is given, the message is forwarded according to the value of (message-forward-as-mime) and (message-forward-show-mml); if the prefix is 1, decode the message and forward directly inline; if the prefix is 2, forward message as an rfc822 MIME section; if the prefix is 3, decode message and forward as an rfc822 MIME section; if the prefix is 4, forward message directly inline; otherwise, the message is forwarded as no prefix given but use the flipped value of (message-forward-as-mime). By default, the message is decoded and forwarded as an rfc822 MIME section.

S m
m
Prepare a mail (gnus-summary-mail-other-window). By default, use the posting style of the current group. If given a prefix, disable that. If the prefix is 1, prompt for a group name to find the posting style.

S i
i
Prepare a news (gnus-summary-news-other-window). By default, post to the current group. If given a prefix, disable that. If the prefix is 1, prompt for a group to post to.

This function actually prepares a news even when using mail groups. This is useful for "posting" messages to mail groups without actually sending them over the network: they're just saved directly to the group in question. The corresponding back end must have a request-post method for this to work though.

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!

This command understands the process/prefix convention (see section 8.1 Process/Prefix).

S D e

Like the previous command, but will allow you to edit the message as if it were a new message before resending.

S O m
Digest the current series (see section 3.16 Decoding Articles) and forward the result using mail (gnus-uu-digest-mail-forward). This command uses the process/prefix convention (see section 8.1 Process/Prefix).

S M-c
Send a complaint about excessive crossposting to the author of the current article (gnus-summary-mail-crosspost-complaint).

This command is provided as a way to fight back against the current crossposting pandemic that's sweeping Usenet. It will compose a reply using the gnus-crosspost-complaint variable as a preamble. This command understands the process/prefix convention (see section 8.1 Process/Prefix) and will prompt you before sending each mail.

Also See section `Header Commands' in The Message Manual, for more information.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.2 Summary Post Commands

Commands for posting a news article:

S p
a
Prepare for posting an article (gnus-summary-post-news). By default, post to the current group. If given a prefix, disable that. If the prefix is 1, prompt for another group instead.

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 n
Post a followup to the current article via news, even if you got the message through mail (gnus-summary-followup-to-mail).

S N
Post a followup to the current article via news, even if you got the message through mail and include the original message (gnus-summary-followup-to-mail-with-original). This command uses the process/prefix convention.

S o p
Forward the current article to a newsgroup (gnus-summary-post-forward). If no prefix is given, the message is forwarded according to the value of (message-forward-as-mime) and (message-forward-show-mml); if the prefix is 1, decode the message and forward directly inline; if the prefix is 2, forward message as an rfc822 MIME section; if the prefix is 3, decode message and forward as an rfc822 MIME section; if the prefix is 4, forward message directly inline; otherwise, the message is forwarded as no prefix given but use the flipped value of (message-forward-as-mime). By default, the message is decoded and forwarded as an rfc822 MIME section.

S O p
Digest the current series and forward the result to a newsgroup (gnus-uu-digest-post-forward). 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). (see section 3.16.5.3 Uuencoding and Posting).

Also See section `Header Commands' in The Message Manual, for more information.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.3 Summary Message Commands

S y
Yank the current article into an already existing Message composition buffer (gnus-summary-yank-message). This command prompts for what message buffer you want to yank into, and understands the process/prefix convention (see section 8.1 Process/Prefix).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.4 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. This command uses the process/prefix convention (see section 8.1 Process/Prefix).

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.

Gnus will use the "current" select method when canceling. If you want to use the standard posting method, use the `a' symbolic prefix (see section 8.3 Symbolic Prefixes).

Gnus ensures that only you can cancel your own messages using a Cancel-Lock header (see section `Canceling News' in Message Manual).

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 *sent ...*). 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 the word 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'.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.6 Delayed Articles

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 gnus-delay package. Setup is simple:

 
(gnus-delay-initialize)

Normally, to send a message you use the C-c C-c command from Message mode. To delay a message, use C-c C-j (gnus-delay-article) instead. This will ask you for how long the message should be delayed. Possible answers are:

The action of the gnus-delay-article command is influenced by a couple of variables:

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.

gnus-delay-default-delay
This is a string and gives the default delay. It can be of any of the formats described above.

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 "delayed".

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 "X-Gnus-Delayed".

The way delaying works is like this: when you use the gnus-delay-article command, you give a certain delay. Gnus calculates the deadline of the message and stores it in the X-Gnus-Delayed header and puts the message in the 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 gnus-delay-send-queue function for this. By default, this function is added to the hook 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 gnus-delay-send-queue function.

gnus-delay-initialize
By default, this function installs gnus-delay-send-queue in gnus-get-new-news-hook. But it accepts the optional second argument no-check. If it is non-nil, gnus-get-new-news-hook is not changed. The optional first argument is ignored.

For example, (gnus-delay-initialize nil t) means to do nothing. Presumably, you want to use the demon for sending due delayed articles. Just don't forget to set that up :-)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7 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.

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

3.7.1 Unread Articles  Marks for unread articles.
3.7.2 Read Articles  Marks for read articles.
3.7.3 Other Marks  Marks that do not affect readedness.
3.7.4 Setting Marks  How to set and remove marks.
3.7.5 Generic Marking Commands  How to customize the marking.
3.7.6 Setting Process Marks  How to mark articles for later processing.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.1 Unread Articles

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

`!'
Marked as ticked (gnus-ticked-mark).

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 (from news servers by the news server software, Gnus itself never expires ticked messages), so if you want to keep an article forever, you'll have to make it persistent (see section 3.13 Persistent Articles).

`?'
Marked as dormant (gnus-dormant-mark).

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 / D command (see section 3.8 Limiting). Otherwise (except for the visibility issue), they are just like ticked messages.

`SPACE'
Marked as unread (gnus-unread-mark).

Unread articles are articles that haven't been read at all yet.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.2 Read Articles

All the following marks mark articles as read.

`r'
These are articles that the user has marked as read with the d command manually, more or less (gnus-del-mark).

`R'
Articles that have actually been read (gnus-read-mark).

`O'
Articles that were marked as read in previous sessions and are now old (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 too low a 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). See section 6.6.4 SOUP.

`Q'
Sparsely reffed article (gnus-sparse-mark). See section 3.9.1 Customizing Threading.

`M'
Article marked as read by duplicate suppression (gnus-duplicate-mark). See section 3.29 Duplicate Suppression.

All these marks just mean that the article is marked as read, really. They are interpreted differently when doing adaptive scoring, though.

One more special mark, though:

`E'
Marked as expirable (gnus-expirable-mark).

Marking articles as expirable (or have them marked as such automatically) doesn't make much sense in normal groups--a user doesn't control expiring of news articles, but in mail groups, for instance, articles marked as expirable can be deleted by Gnus at any time.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.3 Other Marks

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

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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.4 Setting Marks

All the marking commands understand the numeric prefix.

M c
M-u
Clear all readedness-marks from the current article (gnus-summary-clear-mark-forward). In other words, mark the article as unread.

M t
!
Tick the current article (gnus-summary-tick-article-forward). See section 3.12 Article Caching.

M ?
?
Mark the current article as dormant (gnus-summary-mark-as-dormant). See section 3.12 Article Caching.

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

D
Mark the current article as read and move point to the previous line (gnus-summary-mark-as-read-backward).

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 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 (before the point) (gnus-summary-catchup-to-here).

M h
Catchup the current group from point (after the point) (gnus-summary-catchup-from-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 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.5 Generic Marking Commands

Some people would like the command that ticks an article (!) go to the next article. Others would like it to go to the next unread article. Yet others would like it to stay on the current article. And even though I haven't heard of anybody wanting it to go to the previous (unread) article, I'm sure there are people that want that as well.

Multiply these five behaviors with five different marking commands, and you get a potentially complex set of variable to control what each command should do.

To sidestep that mess, Gnus provides commands that do all these different things. They can be found on the M M map in the summary buffer. Type M M C-h to see them all--there are too many of them to list in this manual.

While you can use these commands directly, most users would prefer altering the summary mode keymap. For instance, if you would like the ! command to go to the next article instead of the next unread article, you could say something like:

 
(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
(defun my-alter-summary-map ()
  (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))

or

 
(defun my-alter-summary-map ()
  (local-set-key "!" "MM!n"))


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7.6 Setting Process Marks

Process marks are displayed as # in the summary buffer, and are used for marking articles in such a way that other commands will process these articles. For instance, if you process mark four articles and then use the * command, Gnus will enter these four commands into the cache. For more information, see section 8.1 Process/Prefix.

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 i
Invert the list of process marked articles (gnus-uu-invert-processable).

M P R
Mark articles that have a Subject header that matches a regular expression (gnus-uu-mark-by-regexp).

M P G
Unmark articles that have a Subject header that matches a regular expression (gnus-uu-unmark-by-regexp).

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

M P g
Unmark articles in region (gnus-uu-unmark-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-all).

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

M P k
Push the current process mark set onto the stack and unmark all articles (gnus-summary-kill-process-mark).

M P y
Pop the previous process mark set from the stack and restore it (gnus-summary-yank-process-mark).

M P w
Push the current process mark set onto the stack (gnus-summary-save-process-mark).

Also see the & command in 3.26.2 Searching for Articles, for how to set process marks based on article body contents.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8 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.

All limiting commands work on subsets of the articles already fetched from the servers. None of these commands query the server for additional articles.

/ /
/ s
Limit the summary buffer to articles that match some subject (gnus-summary-limit-to-subject). If given a prefix, exclude matching articles.

/ a
Limit the summary buffer to articles that match some author (gnus-summary-limit-to-author). If given a prefix, exclude matching articles.

/ x
Limit the summary buffer to articles that match one of the "extra" headers (see section 3.1.2 To From Newsgroups) (gnus-summary-limit-to-extra). If given a prefix, exclude matching articles.

/ u
x
Limit the summary buffer to articles not marked as read (gnus-summary-limit-to-unread). If given a prefix, limit the buffer to articles 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 been marked with that mark (gnus-summary-limit-to-marks).

/ t
Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days (gnus-summary-limit-to-age). If given a prefix, limit to articles younger than that number of days.

/ n
Limit the summary buffer to the current article (gnus-summary-limit-to-articles). Uses the process/prefix convention (see section 8.1 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.

/ .
Limit the summary buffer to the unseen articles (gnus-summary-limit-to-unseen).

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

/ p
Limit the summary buffer to articles that satisfy the display group parameter predicate (gnus-summary-limit-to-display-predicate). See section 2.10 Group Parameters, for more on this predicate.

/ E
M S
Include all expunged articles in the limit (gnus-summary-limit-include-expunged).

/ D
Include all dormant articles in the limit (gnus-summary-limit-include-dormant).

/ *
Include all cached articles in the limit (gnus-summary-limit-include-cached).

/ d
Exclude all dormant articles from the limit (gnus-summary-limit-exclude-dormant).

/ M
Exclude all marked articles (gnus-summary-limit-exclude-marks).

/ T
Include all the articles in the current thread in the limit.

/ c
Exclude all dormant articles that have no children from the limit
(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.

/ N
Insert all new articles in the summary buffer. It scans for new emails if back-end-get-new-mail is non-nil.

/ o
Insert all old articles in the summary buffer. If given a numbered prefix, fetch this number of articles.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9 Threading

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

Threading is done by looking at the References headers of the articles. In a perfect world, this would be enough to build pretty trees, but unfortunately, the References header is often broken or simply missing. Weird news propagation exacerbates the problem, so one has to employ other heuristics to get pleasing results. A plethora of approaches exists, as detailed in horrible detail in 3.9.1 Customizing Threading.

First, a quick overview of the concepts:

root
The top-most article in a thread; the first article in the thread.

thread
A tree-like article structure.

sub-thread
A small(er) section of this tree-like structure.

loose threads
Threads often lose their roots due to article expiry, or due to the root already having been read in a previous session, and not displayed in the summary buffer. We then typically have many sub-threads that really belong to one thread, but are without connecting roots. These are called loose threads.

thread gathering
An attempt to gather loose threads into bigger threads.

sparse threads
A thread where the missing articles have been "guessed" at, and are displayed as empty lines in the summary buffer.

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


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9.1 Customizing Threading

3.9.1.1 Loose Threads  How Gnus gathers loose threads into bigger threads.
3.9.1.2 Filling In Threads  Making the threads displayed look fuller.
3.9.1.3 More Threading  Even more variables for fiddling with threads.
3.9.1.4 Low-Level Threading  You thought it was over... but you were wrong!


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9.1.1 Loose Threads

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. See section 8.4 Formatting Variables. If you want all threads to have a dummy root, even the non-gathered ones, set gnus-summary-make-false-root-always to t.

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 (see section 3.1 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-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 subject 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 (see section 8.18 Fuzzy Matching).

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-simplify-subject-functions
If non-nil, this variable overrides gnus-summary-gather-subject-limit. This variable should be a list of functions to apply to the Subject string iteratively to arrive at the simplified version of the string.

Useful functions to put in this list include:

gnus-simplify-subject-re
Strip the leading `Re:'.

gnus-simplify-subject-fuzzy
Simplify fuzzily.

gnus-simplify-whitespace
Remove excessive whitespace.

gnus-simplify-all-whitespace
Remove all whitespace.

You may also write your own functions, of course.

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-IDs in all the References headers to find matches. This will ensure that no gathered threads ever include unrelated articles, but it 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 Subjects 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)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9.1.2 Filling In Threads

gnus-fetch-old-headers
If non-nil, Gnus will attempt to build old threads by fetching more old headers--headers to articles 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 back end you are using carries overview files--this would normally be nntp, nnspool, nnml, and nnmaildir. Also remember that if the root of the thread has been expired by the server, there's not much Gnus can do about that.

This variable can also be set to invisible. This won't have any visible effects, but is useful if you use the A T command a lot (see section 3.22 Finding the Parent).

gnus-fetch-old-ephemeral-headers
Same as gnus-fetch-old-headers, but only used for ephemeral newsgroups.

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 together articles that belong in the same thread. 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-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 back end 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 nnultimate groups.

If you don't use those, then it's safe to leave this as the default nil. If you want to use this variable, it should be a regexp that matches the group name, or t for all groups.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9.1.3 More 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-thread-hide-subtree
If non-nil, all threads will be hidden when the summary buffer is generated.

This can also be a predicate specifier (see section 8.14 Predicate Specifiers). Available predicates are gnus-article-unread-p and gnus-article-unseen-p.

Here's an example:

 
(setq gnus-thread-hide-subtree
      '(or gnus-article-unread-p
           gnus-article-unseen-p))

(It's a pretty nonsensical example, since all unseen articles are also unread, but you get my drift.)

gnus-thread-expunge-below
All threads that have a total score (as defined by gnus-thread-score-function) less than this number will be expunged. This variable is nil by default, which means that no threads are expunged.

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, which is the default, the subject change is ignored. If it is nil, 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.

gnus-sort-gathered-threads-function
Sometimes, particularly with mailing lists, the order in which mails arrive locally is not necessarily the same as the order in which they arrived on the mailing list. Consequently, when sorting sub-threads using the default gnus-thread-sort-by-number, responses can end up appearing before the article to which they are responding to. Setting this variable to an alternate value (e.g. gnus-thread-sort-by-date), in a group's parameters or in an appropriate hook (e.g. gnus-summary-generate-hook) can produce a more logical sub-thread ordering in such instances.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9.1.4 Low-Level Threading

gnus-parse-headers-hook
Hook run before parsing any headers.

gnus-alter-header-function
If non-nil, this function will be called to allow alteration of article header structures. The function is called with one parameter, the article header vector, which it may alter in any way. For instance, if you have a mail-to-news gateway which alters the Message-IDs in systematic ways (by adding prefixes and such), you can use this variable to un-scramble the Message-IDs so that they are more meaningful. Here's one example:

 
(setq gnus-alter-header-function 'my-alter-message-id)

(defun my-alter-message-id (header)
  (let ((id (mail-header-id header)))
    (when (string-match
           "\\(<[^<>@]*\\)\\.?cygnus\\..*@\\([^<>@]*>\\)" id)
      (mail-header-set-id
       (concat (match-string 1 id) "@" (match-string 2 id))
       header))))


[ < ] [ > ]