| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.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] | [ ? ] |
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:
gnus-list-identifies. See section 3.17.3 Article Hiding.
gnus-summary-same-subject otherwise.
(gnus-summary-same-subject defaults to "".)
From header.
From header).
To header or the Newsgroups header (see section 3.1.2 To From Newsgroups).
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.
From header). This works the same way as
the a spec.
> +-> | +-> | | \-> | | \-> | \-> +-> \-> |
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
nil, use subject
instead. The default is `> '.
gnus-sum-thread-tree-false-root
nil, use subject instead. The default is `> '.
gnus-sum-thread-tree-single-indent
nil, use subject
instead. The default is `'.
gnus-sum-thread-tree-vertical
gnus-sum-thread-tree-indent
gnus-sum-thread-tree-leaf-with-other
gnus-sum-thread-tree-single-leaf
gnus-summary-default-score and the score is less than
gnus-summary-zcore-fuzz, this spec will not be used.
Xref.
Date.
Date in DD-MMM format.
Date in YYYYMMDDTHHMMSS format.
Message-ID.
References.
gnus-not-empty-thread-mark) will be displayed if the
article has any children.
gnus-user-date-format-alist.
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] | [ ? ] |
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.
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.
gnus-extra-header function. Here's a format line spec that will
access the X-Newsreader header:
"%~(form (gnus-extra-header 'X-Newsreader))@" |
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] | [ ? ] |
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:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-visual-mark-article-hook
gnus-visual is nil.
gnus-summary-update-hook
gnus-visual is nil.
gnus-summary-selected-face
gnus-summary-highlight
(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)) |
nil value,
face will be applied to the line.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All the straight movement commands understand the numeric prefix and behave pretty much as you'd expect.
None of these commands select articles.
gnus-summary-next-unread-subject).
gnus-summary-prev-unread-subject).
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
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
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
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
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.1 Choosing Commands | Commands for choosing articles. | |
| 3.3.2 Choosing Variables | Variables that influence these commands. |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
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.
gnus-summary-next-unread-article).
gnus-summary-prev-unread-article).
gnus-summary-next-article).
gnus-summary-prev-article).
gnus-summary-next-same-subject).
gnus-summary-prev-same-subject).
gnus-summary-first-unread-article).
gnus-summary-best-unread-article). If given a prefix argument,
go to the first unread article that has a score over the default score.
gnus-summary-goto-last-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.
Message-ID, and then go to that
article (gnus-summary-goto-article).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Some variables relevant for moving and selecting articles:
gnus-auto-extend-newsgroup
nil. Gnus will then fetch the article from
the server and display it in the article buffer.
gnus-select-article-hook
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
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] | [ ? ] |
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.
gnus-summary-prev-page).
gnus-summary-scroll-up).
gnus-summary-scroll-down).
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.
gnus-summary-beginning-of-article).
gnus-summary-end-of-article).
gnus-summary-isearch-article).
gnus-summary-select-article-buffer).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| 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] | [ ? ] |
Commands for composing a mail message:
gnus-summary-reply).
gnus-summary-reply-with-original). This
command uses the process/prefix convention.
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.
gnus-summary-wide-reply-with-original). This command uses
the process/prefix convention.
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.
gnus-summary-very-wide-reply-with-original). This
command uses the process/prefix convention.
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.
Reply-To field
(gnus-summary-reply-broken-reply-to-with-original).
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.
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.
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.
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.
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).
Like the previous command, but will allow you to edit the message as if it were a new message before resending.
gnus-uu-digest-mail-forward). This command
uses the process/prefix convention (see section 8.1 Process/Prefix).
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] | [ ? ] |
Commands for posting a news 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.
gnus-summary-followup).
gnus-summary-followup-with-original). This command uses the
process/prefix convention.
gnus-summary-followup-to-mail).
gnus-summary-followup-to-mail-with-original). This command uses
the process/prefix convention.
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.
gnus-uu-digest-post-forward). This command uses the
process/prefix convention.
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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:
42d means to delay for 42 days. Available letters are m
(minutes), h (hours), d (days), w (weeks), M
(months) and Y (years).
YYYY-MM-DD. The message will be
delayed until that day, at a specific time (eight o'clock by default).
See also gnus-delay-default-hour.
hh:mm format, 24h, no am/pm
stuff. The deadline will be at that time today, except if that time has
already passed, then it's at the given time tomorrow. So if it's ten
o'clock in the morning and you specify 11:15, then the deadline
is one hour and fifteen minutes hence. But if you specify 9:20,
that means a time tomorrow.
The action of the gnus-delay-article command is influenced by a
couple of variables:
gnus-delay-default-hour
gnus-delay-default-delay
gnus-delay-group
"delayed".
gnus-delay-header
"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
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] | [ ? ] |
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] | [ ? ] |
The following marks mark articles as (kinda) unread, in one form or other.
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).
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.
gnus-unread-mark).
Unread articles are articles that haven't been read at all yet.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All the following marks mark articles as read.
gnus-del-mark).
gnus-read-mark).
gnus-ancient-mark).
gnus-killed-mark).
gnus-kill-file-mark).
gnus-low-score-mark).
gnus-catchup-mark).
gnus-canceled-mark)
gnus-souped-mark). See section 6.6.4 SOUP.
gnus-sparse-mark). See section 3.9.1 Customizing Threading.
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:
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] | [ ? ] |
There are some marks that have nothing to do with whether the article is read or not.
gnus-replied-mark).
gnus-forwarded-mark).
gnus-cached-mark). See section 3.12 Article Caching.
gnus-saved-mark).
gnus-recent-mark). Note that not all servers support this
mark, in which case it simply never appears. Compare with
gnus-unseen-mark.
gnus-unseen-mark).
Compare with gnus-recent-mark.
gnus-downloaded-mark controls which character to
use.)
gnus-undownloaded-mark controls which character to use.)
gnus-downloadable-mark controls which character to
use.)
gnus-not-empty-thread-mark and
gnus-empty-thread-mark in the third column, respectively.
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.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All the marking commands understand the numeric prefix.
gnus-summary-clear-mark-forward). In other words, mark the
article as unread.
gnus-summary-tick-article-forward).
See section 3.12 Article Caching.
gnus-summary-mark-as-dormant). See section 3.12 Article Caching.
gnus-summary-mark-as-read-forward).
gnus-summary-mark-as-read-backward).
gnus-summary-kill-same-subject-and-select).
gnus-summary-kill-same-subject).
gnus-summary-catchup).
gnus-summary-catchup-all).
gnus-summary-catchup-to-here).
gnus-summary-catchup-from-here).
gnus-summary-mark-region-as-read).
gnus-summary-kill-below).
gnus-summary-mark-as-expirable).
gnus-summary-set-bookmark).
gnus-summary-remove-bookmark).
gnus-summary-clear-above).
gnus-summary-tick-above).
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] | [ ? ] |
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] | [ ? ] |
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.
gnus-summary-mark-as-processable).
gnus-summary-unmark-as-processable).
gnus-summary-unmark-all-processable).
gnus-uu-invert-processable).
Subject header that matches a regular
expression (gnus-uu-mark-by-regexp).
Subject header that matches a regular
expression (gnus-uu-unmark-by-regexp).
gnus-uu-mark-region).
gnus-uu-unmark-region).
gnus-uu-mark-thread).
gnus-uu-unmark-thread).
gnus-uu-mark-over).
gnus-uu-mark-series).
gnus-uu-mark-sparse).
gnus-uu-mark-all).
gnus-uu-mark-buffer).
gnus-summary-kill-process-mark).
gnus-summary-yank-process-mark).
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] | [ ? ] |
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.
gnus-summary-limit-to-subject). If given a prefix, exclude
matching articles.
gnus-summary-limit-to-author). If given a prefix, exclude
matching articles.
gnus-summary-limit-to-extra). If given a prefix, exclude
matching articles.
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.
gnus-summary-limit-to-marks).
gnus-summary-limit-to-age). If given a prefix, limit to
articles younger than that number of days.
gnus-summary-limit-to-articles). Uses the process/prefix
convention (see section 8.1 Process/Prefix).
gnus-summary-pop-limit). If given a prefix, pop all limits off
the stack.
gnus-summary-limit-to-unseen).
gnus-summary-limit-to-score).
display
group parameter predicate
(gnus-summary-limit-to-display-predicate). See section 2.10 Group Parameters, for more on this predicate.
gnus-summary-limit-include-expunged).
gnus-summary-limit-include-dormant).
gnus-summary-limit-include-cached).
gnus-summary-limit-exclude-dormant).
gnus-summary-limit-exclude-marks).
gnus-summary-limit-exclude-childless-dormant).
gnus-summary-limit-mark-excluded-as-read). If given a prefix,
also mark excluded ticked and dormant articles as read.
-get-new-mail is non-nil.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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:
| 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.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] | [ ? ] |
gnus-summary-make-false-root
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
dummy
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-summary-same-subject as the subject (see section 3.1 Summary Buffer Format).)
none
nil
gnus-summary-gather-subject-limit
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
gnus-simplify-ignored-prefixes
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
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
gnus-simplify-subject-fuzzy
gnus-simplify-whitespace
gnus-simplify-all-whitespace
You may also write your own functions, of course.
gnus-summary-gather-exclude-subject
gnus-summary-gather-exclude-subject to say
what subjects should be excluded from the gathering process.
gnus-summary-thread-gathering-function
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
Subjects exclusively.
gnus-gather-threads-by-references
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] | [ ? ] |
gnus-fetch-old-headers
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
gnus-fetch-old-headers, but only used for ephemeral
newsgroups.
gnus-build-sparse-threads
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
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] | [ ? ] |
gnus-show-threads
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
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
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
nil, the subtree
will be hidden.
gnus-thread-ignore-subject
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
gnus-sort-gathered-threads-function
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] | [ ? ] |
gnus-parse-headers-hook
gnus-alter-header-function
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))))
|
| [ < ] | [ > ] | [ << < |