-\input texinfo @c -*-texinfo-*-
+@c \input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.75 Manual
+@settitle Pterodactyl Gnus 0.96 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
\newcommand{\gnussc}[1]{\textsc{#1}}
\newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
\newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
+\newcommand{\gnusresult}[1]{\gnustt{=> #1}}
\newcommand{\gnusbullet}{{${\bullet}$}}
\newcommand{\gnusdollar}{\$}
@tex
@titlepage
-@title Pterodactyl Gnus 0.75 Manual
+@title Pterodactyl Gnus 0.96 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Pterodactyl Gnus 0.75.
+This manual corresponds to Pterodactyl Gnus 0.96.
@end ifinfo
Subscribe all new groups hierarchically. The difference between this
function and @code{gnus-subscribe-alphabetically} is slight.
@code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
-alphabetical fashion, while this function will enter groups into it's
+alphabetical fashion, while this function will enter groups into its
hierarchy. So if you want to have the @samp{rec} hierarchy before the
@samp{comp} hierarchy, this function will not mess that configuration
up. Or something like that.
not stored in the @file{.newsrc} file.
@vindex gnus-save-newsrc-file
+@vindex gnus-read-newsrc-file
You can turn off writing the @file{.newsrc} file by setting
@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
the file and save some space, as well as exiting from Gnus faster.
However, this will make it impossible to use other newsreaders than
-Gnus. But hey, who would want to, right?
+Gnus. But hey, who would want to, right? Similarly, setting
+@code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
+@file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
+convenient if you have a tendency to use Netscape once in a while.
@vindex gnus-save-killed-list
If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
at all. In any case, @code{some} should be faster than @code{nil}, and
is certainly faster than @code{t} over slow lines.
+Some news servers (Leafnode and old versions of INN, for instance) do
+not support the @code{LIST ACTIVE group}. For these servers, @code{nil}
+is probably the most efficient value for this variable.
+
If this variable is @code{nil}, Gnus will ask for group info in total
lock-step, which isn't very fast. If it is @code{some} and you use an
@sc{nntp} server, Gnus will pump out commands as fast as it can, and
performance, but if the server does not support the aforementioned
@code{LIST ACTIVE group} command, this isn't very nice to the server.
+If you think that starting up Gnus takes too long, try all the three
+different values for this variable and see what works best for you.
+
In any case, if you use @code{some} or @code{nil}, you should definitely
kill all groups that you aren't interested in to speed things up.
A hook that is run as the very last thing after starting up Gnus
successfully.
-@item gnus-started-hook
-@vindex gnus-started-hook
+@item gnus-setup-news-hook
+@vindex gnus-setup-news-hook
A hook that is run after reading the @file{.newsrc} file(s), but before
generating the group buffer.
group buffer according to how often you read groups, perhaps? Within
reason?
-This is what @dfn{group score} is for. You can assign a score to each
-group. You can then sort the group buffer based on this score.
-Alternatively, you can sort on score and then level. (Taken together,
-the level and the score is called the @dfn{rank} of the group. A group
-that is on level 4 and has a score of 1 has a higher rank than a group
-on level 5 that has a score of 300. (The level is the most significant
-part and the score is the least significant part.))
+This is what @dfn{group score} is for. You can have Gnus assign a score
+to each group through the mechanism described below. You can then sort
+the group buffer based on this score. Alternatively, you can sort on
+score and then level. (Taken together, the level and the score is
+called the @dfn{rank} of the group. A group that is on level 4 and has
+a score of 1 has a higher rank than a group on level 5 that has a score
+of 300. (The level is the most significant part and the score is the
+least significant part.))
@findex gnus-summary-bubble-group
If you want groups you read often to get higher scores than groups you
command, you will be prompted for a file name and a file type.
Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
-@code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
-this command without a prefix, Gnus will guess at the file type.
-@xref{Document Groups}.
+@code{rfc934}, @code{rfc822-forward}, @code{nsmail} and @code{forward}.
+If you run this command without a prefix, Gnus will guess at the file
+type. @xref{Document Groups}.
@item G u
@kindex G u (Group)
(@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
@end table
-@xref{Select Methods} for more information on the various select
+@xref{Select Methods}, for more information on the various select
methods.
@vindex gnus-activate-foreign-newsgroups
@end table
-All the commands below obeys the process/prefix convention
+All the commands below obey the process/prefix convention
(@pxref{Process/Prefix}).
When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
(@code{gnus-topic-move-group}). This command uses the process/prefix
convention (@pxref{Process/Prefix}).
+@item T j
+@kindex T j (Topic)
+@findex gnus-topic-jump-to-topic
+Go to a topic (@code{gnus-topic-jump-to-topic}).
+
@item T c
@kindex T c (Topic)
@findex gnus-topic-copy-group
@end table
-@xref{Sorting Groups} for more information about group sorting.
+@xref{Sorting Groups}, for more information about group sorting.
@node Topic Topology
* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
* Article Treatment:: The article buffer can be mangled at will.
* MIME Commands:: Doing MIMEy things with the articles.
+* Charsets:: Character set issues.
* Article Commands:: Doing various things with the article buffer.
* Summary Sorting:: Sorting the summary buffer in various ways.
* Finding the Parent:: No child support? Get the parent.
@item N
Article number.
@item S
-Subject string.
+Subject string. List identifiers stripped, @code{gnus-list-identifies}. @xref{Article Hiding}.
@item s
Subject if the article is the root of the thread or the previous article
had a different subject, @code{gnus-summary-same-subject} otherwise.
@end ifinfo
@menu
-* Setting Marks:: How to set and remove marks.
-* Setting Process Marks:: How to mark articles for later processing.
+* Setting Marks:: How to set and remove marks.
+* Generic Marking Commands:: How to customize the marking.
+* Setting Process Marks:: How to mark articles for later processing.
@end menu
The default is @code{t}.
+@node Generic Marking Commands
+@subsection Generic Marking Commands
+
+Some people would like the command that ticks an article (@kbd{!}) 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 behaviours 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 @kbd{M M} map in the summary
+buffer. Type @kbd{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
+@kbd{!} command to go to the next article instead of the next unread
+article, you could say something like:
+
+@lisp
+(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))
+@end lisp
+
+or
+
+@lisp
+(defun my-alter-summary-map ()
+ (local-set-key "!" "MM!n"))
+@end lisp
+
+
@node Setting Process Marks
@subsection Setting Process Marks
@cindex setting process marks
Limit the summary buffer to articles that match some author
(@code{gnus-summary-limit-to-author}).
+@item / x
+@kindex / x (Summary)
+@findex gnus-summary-limit-to-extra
+Limit the summary buffer to articles that match one of the ``extra''
+headers (@pxref{To From Newsgroups})
+(@code{gnus-summary-limit-to-author}).
+
@item / u
@itemx x
@kindex / u (Summary)
Exclude all dormant articles from the limit
(@code{gnus-summary-limit-exclude-dormant}).
+@item / M
+@kindex / M (Summary)
+@findex gnus-summary-limit-exclude-marks
+Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
+
@item / T
@kindex / T (Summary)
@findex gnus-summary-limit-include-thread
This is a number that says how much each sub-thread should be indented.
The default is 4.
+@item gnus-sort-gathered-threads-function
+@vindex 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 @code{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. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
+appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
+more logical sub-thread ordering in such instances.
+
@end table
(setq gnus-thread-sort-functions
'(gnus-thread-sort-by-number
gnus-thread-sort-by-subject
- (reverse gnus-thread-sort-by-total-score)))
+ (not gnus-thread-sort-by-total-score)))
@end lisp
The threads that have highest score will be displayed first in the
say something like:
@lisp
(setq gnus-uu-user-view-rules
- (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
+ (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
@end lisp
@item gnus-uu-user-view-rules-end
* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
* Article Date:: Grumble, UT!
* Article Signature:: What is a signature?
+* Article Miscellania:: Various other stuff.
@end menu
@end table
-@xref{Customizing Articles} for how to highlight articles automatically.
+@xref{Customizing Articles}, for how to highlight articles automatically.
@node Article Fontisizing
(copy-face 'red 'gnus-emphasis-italic)
@end lisp
-@xref{Customizing Articles} for how to fontize articles automatically.
+@vindex gnus-group-highlight-words-alist
+
+If you want to highlight arbitrary words, you can use the
+@code{gnus-group-highlight-words-alist} variable, which uses the same
+syntax as @code{gnus-emphasis-alist}. The @code{highlight-words} group
+parameter (@pxref{Group Parameters}) can also be used.
+
+@xref{Customizing Articles}, for how to fontize articles automatically.
@node Article Hiding
Hide signature (@code{gnus-article-hide-signature}). @xref{Article
Signature}.
+@item W W l
+@kindex W W l (Summary)
+@findex gnus-article-hide-list-identifiers
+@vindex gnus-list-identifiers
+Hide list identifiers specified in @code{gnus-list-identifiers}. Theese
+are strings some list servers add to the beginning of all @code{Subject}
+headers---for example, @samp{[zebra 4711]}.
+
+@table @code
+
+@item gnus-list-identifiers
+@vindex gnus-list-identifiers
+A regular expression that matches list identifiers to be removed from
+subject. This can also be a list of regular expressions.
+
+@end table
+
@item W W p
@kindex W W p (Summary)
@findex gnus-article-hide-pgp
groups adds to all the messages. The way to use this function is to add
the @code{banner} group parameter (@pxref{Group Parameters}) to the
group you want banners stripped from. The parameter either be a string,
-which will be interpreted as a regulax expression matching text to be
+which will be interpreted as a regular expression matching text to be
removed, or the symbol @code{signature}, meaning that the (last)
signature should be removed.
Also @pxref{Article Highlighting} for further variables for
citation customization.
-@xref{Customizing Articles} for how to hide article elements
+@xref{Customizing Articles}, for how to hide article elements
automatically.
@kindex W l (Summary)
@findex gnus-summary-stop-page-breaking
Remove page breaks from the current article
-(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article} for page
+(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article}, for page
delimiters.
@item W r
@item W C
@kindex W C (Summary)
-@findex gnus-article-capitalize-sentencse
+@findex gnus-article-capitalize-sentences
Capitalize the first word in each sentence
(@code{gnus-article-capitalize-sentences}).
Add clickable buttons to the article headers
(@code{gnus-article-add-buttons-to-head}).
+@item W W H
+@kindex W W H (Summary)
+@findex gnus-article-strip-headers-from-body
+Strip headers like the @code{X-No-Archive} header from the beginning of
+article bodies (@code{gnus-article-strip-headers-from-body}).
+
@item W E l
@kindex W E l (Summary)
@findex gnus-article-strip-leading-blank-lines
@end table
-@xref{Customizing Articles} for how to wash articles automatically.
+@xref{Customizing Articles}, for how to wash articles automatically.
@node Article Buttons
@end table
-@xref{Customizing Articles} for how to buttonize articles automatically.
+@xref{Customizing Articles}, for how to buttonize articles automatically.
@node Article Date
@findex gnus-start-date-timer
@findex gnus-stop-date-timer
Say how much time has elapsed between the article was posted and now
-(@code{gnus-article-date-lapsed}). If you want to have this line
-updated continually, you can put
+(@code{gnus-article-date-lapsed}). It looks something like:
+
+@example
+X-Sent: 9 years, 6 weeks, 4 days, 9 hours, 3 minutes, 28 seconds ago
+@end example
+
+The value of @code{gnus-article-date-lapsed-new-header} determines
+whether this header will just be added below the old Date one, or will
+replace it.
+
+An advantage of using Gnus to read mail is that it converts simple bugs
+into wonderful absurdities.
+
+If you want to have this line updated continually, you can put
@lisp
(gnus-start-date-timer)
@end table
-@xref{Customizing Articles} for how to display the date in your
+@xref{Customizing Articles}, for how to display the date in your
preferred format automatically.
@vindex gnus-signature-limit
@code{gnus-signature-limit} provides a limit to what is considered a
-signature.
+signature when displaying articles.
@enumerate
@item
signature after all.
+@node Article Miscellania
+@subsection Article Miscellania
+
+@table @kbd
+@item A t
+@kindex A t (Summary)
+@findex gnus-article-babel
+Translate the article from one language to another
+(@code{gnus-article-babel}).
+
+@end table
+
+
@node MIME Commands
-@section MIME Commands
+@section @sc{mime} Commands
@cindex MIME decoding
@table @kbd
+@item X m
+@kindex X m (Summary)
+@findex gnus-summary-save-parts
+Save all parts matching a @sc{mime} type to a directory
+(@code{gnus-summary-save-parts}). Understands the process/prefix
+convention (@pxref{Process/Prefix}).
+
@item M-t
@kindex M-t (Summary)
@findex gnus-summary-display-buttonized
'my-save-all-jpeg-parts)
@end lisp
+@vindex gnus-mime-multipart-functions
+@item gnus-mime-multipart-functions
+Alist of @sc{mime} multipart types and functions to handle them.
+
@end table
+@node Charsets
+@section Charsets
+@cindex charsets
+
+People use different charsets, and we have @sc{mime} to let us know what
+charsets they use. Or rather, we wish we had. Many people use
+newsreaders and mailers that do not understand or use @sc{mime}, and
+just send out messages without saying what character sets they use. To
+help a bit with this, some local news hierarchies have policies that say
+what character set is the default. For instance, the @samp{fj}
+hierarchy uses @code{iso-2022-jp-2}.
+
+@vindex gnus-group-charset-alist
+This knowledge is encoded in the @code{gnus-group-charset-alist}
+variable, which is an alist of regexps (to match group names) and
+default charsets to be used when reading these groups.
+
+In addition, some people do use soi-disant @sc{mime}-aware agents that
+aren't. These blitely mark messages as being in @code{iso-8859-1} even
+if they really are in @code{koi-8}. To help here, the
+@code{gnus-newsgroup-ignored-charsets} variable can be used. The
+charsets that are listed here will be ignored. The variable can be set
+on a group-by-group basis using the group parameters (@pxref{Group
+Parameters}). The default value is @code{(unknown-8bit)}, which is
+something some agents insist on having in there.
+
+
@node Article Commands
@section Article Commands
@findex gnus-summary-sort-by-lines
Sort by lines (@code{gnus-summary-sort-by-lines}).
+@item C-c C-s C-c
+@kindex C-c C-s C-c (Summary)
+@findex gnus-summary-sort-by-chars
+Sort by article length (@code{gnus-summary-sort-by-chars}).
+
@item C-c C-s C-i
@kindex C-c C-s C-i (Summary)
@findex gnus-summary-sort-by-score
@table @kbd
-@item C-d
+@item A D
+@itemx C-d
@kindex C-d (Summary)
+@kindex A D (Summary)
@findex gnus-summary-enter-digest-group
If the current article is a collection of other articles (for instance,
a digest), you might use this command to enter a group based on the that
Copy the @sc{mime} object to a fresh buffer and display this buffer
(@code{gnus-mime-copy-part}).
+@findex gnus-mime-view-part-as-type
+@item t (Article)
+View the @sc{mime} object as if it were a different @sc{mime} media type
+(@code{gnus-mime-view-part-as-type}.
+
@findex gnus-mime-pipe-part
@item | (Article)
Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
Any similarity to real events and people is purely coincidental. Ahem.
+Also see @pxref{MIME Commands}.
+
@node Customizing Articles
@section Customizing Articles
@code{gnus-treat-hide-headers}. Below is a list of variables that can
be set, but first we discuss the values these variables can have.
+Note: Some values, while valid, make little sense. Check the list below
+for sensible values.
+
@enumerate
@item
@code{nil}: Don't do this treatment.
than this number.
@item
-A list:
+A list of strings: Do this treatment on all body parts that are in
+articles that are read in groups that have names that match one of the
+regexps in the list.
+
+@item
+A list where the first element is not a string:
The list is evaluated recursively. The first element of the list is a
predicate. The following predicates are recognized: @code{or},
The following treatment options are available. The easiest way to
customize this is to examine the @code{gnus-article-treat} customization
-group.
+group. Values in brackets are suggested sensible values. Others are possible
+but those listed are probably sufficient for most people.
@table @code
-@item gnus-treat-highlight-signature
-@item gnus-treat-buttonize
-@item gnus-treat-buttonize-head
-@item gnus-treat-emphasize
-@item gnus-treat-fill-article
-@item gnus-treat-strip-cr
-@item gnus-treat-hide-headers
-@item gnus-treat-hide-boring-headers
-@item gnus-treat-hide-signature
-@item gnus-treat-hide-citation
-@item gnus-treat-strip-pgp
-@item gnus-treat-strip-pem
-@item gnus-treat-highlight-headers
-@item gnus-treat-highlight-citation
-@item gnus-treat-highlight-signature
-@item gnus-treat-date-ut
-@item gnus-treat-date-local
-@item gnus-treat-date-lapsed
-@item gnus-treat-date-original
-@item gnus-treat-strip-trailing-blank-lines
-@item gnus-treat-strip-leading-blank-lines
-@item gnus-treat-strip-multiple-blank-lines
-@item gnus-treat-strip-blank-lines
-@item gnus-treat-overstrike
-@item gnus-treat-display-xface
-@item gnus-treat-display-smileys
-@item gnus-treat-display-picons
+@item gnus-treat-highlight-signature (t, last)
+@item gnus-treat-buttonize (t, integer)
+@item gnus-treat-buttonize-head (head)
+@item gnus-treat-emphasize (t, head, integer)
+@item gnus-treat-fill-article (t, integer)
+@item gnus-treat-strip-cr (t, integer)
+@item gnus-treat-hide-headers (head)
+@item gnus-treat-hide-boring-headers (head)
+@item gnus-treat-hide-signature (t, last)
+@item gnus-treat-hide-citation (t, integer)
+@item gnus-treat-strip-pgp (t, last, integer)
+@item gnus-treat-strip-pem (t, last, integer)
+@item gnus-treat-highlight-headers (head)
+@item gnus-treat-highlight-citation (t, integer)
+@item gnus-treat-highlight-signature (t, last, integer)
+@item gnus-treat-date-ut (head)
+@item gnus-treat-date-local (head)
+@item gnus-treat-date-lapsed (head)
+@item gnus-treat-date-original (head)
+@item gnus-treat-strip-headers-in-body (t, integer)
+@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
+@item gnus-treat-strip-leading-blank-lines (t, integer)
+@item gnus-treat-strip-multiple-blank-lines (t, integer)
+@item gnus-treat-overstrike (t, integer)
+@item gnus-treat-display-xface (head)
+@item gnus-treat-display-smileys (t, integer)
+@item gnus-treat-display-picons (head)
+@item gnus-treat-capitalize-sentences (t, integer)
+@item gnus-treat-fill-long-lines (t, integer)
+@item gnus-treat-play-sounds
+@item gnus-treat-translate
@end table
@vindex gnus-part-display-hook
to @dfn{match}.
Each style may contain a arbitrary amount of @dfn{attributes}. Each
-attribute consists of a @var{(name . value)} pair. The attribute name
+attribute consists of a @var{(name value)} pair. The attribute name
can be one of @code{signature}, @code{signature-file},
@code{organization}, @code{address}, @code{name} or @code{body}. The
attribute name can also be a string. In that case, this will be used as
a header name, and the value will be inserted in the headers of the
article.
-The attribute value can be a string (used verbatim), a function (the
-return value will be used), a variable (its value will be used) or a
-list (it will be @code{eval}ed and the return value will be used).
+The attribute value can be a string (used verbatim), a function with
+zero arguments (the return value will be used), a variable (its value
+will be used) or a list (it will be @code{eval}ed and the return value
+will be used). The functions and sexps are called/@code{eval}ed in the
+message buffer that is being set up. The headers of the current article
+are available through the @code{message-reply-headers} variable.
If you wish to check whether the message you are about to compose is
meant to be a news article or a mail message, you can check the values
-of the two dynamically bound variables @code{message-this-is-news} and
-@code{message-this-is-mail}.
+of the @code{message-news-p} and @code{message-mail-p} functions.
-@vindex message-this-is-mail
-@vindex message-this-is-news
+@findex message-mail-p
+@findex message-news-p
So here's a new example:
(signature my-funny-signature-randomizer))
((equal (system-name) "gnarly")
(signature my-quote-randomizer))
- (message-this-is-news
+ ((message-news-p)
(signature my-news-signature))
- (posting-from-work-p
+ ((posting-from-work-p)
(signature-file "~/.work-signature")
(address "user@@bar.foo")
(body "You are fired.\n\nSincerely, your boss.")
course.
@menu
+* Mail in a Newsreader:: Important introductory notes.
* Getting Started Reading Mail:: A simple cookbook example.
* Splitting Mail:: How to create mail groups.
* Mail Sources:: How to tell Gnus where to get mail from.
* Mail Backend Variables:: Variables for customizing mail handling.
* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting:: Use group customize to drive mail splitting.
* Incorporating Old Mail:: What about the old mail you have?
* Expiring Mail:: Getting rid of unwanted mail.
* Washing Mail:: Removing gruft from the mail you get.
@end menu
+@node Mail in a Newsreader
+@subsection Mail in a Newsreader
+
+If you are used to traditional mail readers, but have decided to switch
+to reading mail with Gnus, you may find yourself experiencing something
+of a culture shock.
+
+Gnus does not behave like traditional mail readers. If you want to make
+it behave that way, you can, but it's an uphill battle.
+
+Gnus, by default, handles all its groups using the same approach. This
+approach is very newsreaderly---you enter a group, see the new/unread
+messages, and when you read the messages, they get marked as read, and
+you don't see them any more. (Unless you explicitly ask for them.)
+
+In particular, you do not do anything explicitly to delete messages.
+
+Does this mean that all the messages that have been marked as read are
+deleted? How awful!
+
+But, no, it means that old messages are @dfn{expired} according to some
+scheme or other. For news messages, the expire process is controlled by
+the news administrator; for mail, the expire process is controlled by
+you. The expire process for mail is covered in depth in @pxref{Expiring
+Mail}.
+
+What many Gnus users find, after using it a while for both news and
+mail, is that the transport mechanism has very little to do with how
+they want to treat a message.
+
+Many people subscribe to several mailing lists. These are transported
+via SMTP, and are therefore mail. But we might go for weeks without
+answering, or even reading these messages very carefully. We may not
+need to save them because if we should need to read one again, they are
+archived somewhere else.
+
+Some people have local news groups which have only a handful of readers.
+These are transported via NNTP, and are therefore news. But we may need
+to read and answer a large fraction of the messages very carefully in
+order to do our work. And there may not be an archive, so we may need
+to save the interesting messages the same way we would personal mail.
+
+The important distinction turns out to be not the transport mechanism,
+but other factors such as how interested we are in the subject matter,
+or how easy it is to retrieve the message if we need to read it again.
+
+Gnus provides many options for sorting mail into ``groups'' which behave
+like newsgroups, and for treating each group (whether mail or news)
+differently.
+
+Some users never get comfortable using the Gnus (ahem) paradigm and wish
+that Gnus should grow up and be a male, er, mail reader. It is possible
+to whip Gnus into a more mailreaderly being, but, as said before, it's
+not easy. People who prefer proper mail readers should try @sc{vm}
+instead, which is an excellent, and proper, mail reader.
+
+I don't mean to scare anybody off, but I want to make it clear that you
+may be required to learn a new way of thinking about messages. After
+you've been subjected to The Gnus Way, you will come to love it. I can
+guarantee it. (At least the guy who sold me the Emacs Subliminal
+Brain-Washing Functions that I've put into Gnus did guarantee it. You
+Will Be Assimilated. You Love Gnus. You Love The Gnus Mail Way.
+You Do.)
+
+
@node Getting Started Reading Mail
@subsection Getting Started Reading Mail
@code{nnmail-crosspost-link-function} to @code{copy-file}. (This
variable is @code{add-name-to-file} by default.)
-@findex nnmail-split-header-length-limit
-Header lines may be arbitrarily long. However, the longer a line is,
-the longer it takes to match them. Very long lines may lead to Gnus
-taking forever to split the mail, so Gnus excludes lines that are longer
-than @code{nnmail-split-header-length-limit} (which defaults to 1024).
-
@kindex M-x nnmail-split-history
@kindex nnmail-split-history
If you wish to see where the previous mail split put the messages, you
@cindex mail spool
@cindex mail source
-You tell Gnus how to fetch mail by creating a @dfn{mail source
-specifier}.
+You tell Gnus how to fetch mail by setting @code{mail-sources}
+(@pxref{Fetching Mail}) to a @dfn{mail source specifier}.
Here's an example:
@item :suffix
Only files ending with this suffix are used. The default is
@samp{.spool}.
+
+@item :predicate
+Only files that have this predicate return non-@code{nil} are returned.
+The default is @code{identity}. This is used as an additional
+filter---only files that have the right suffix @emph{and} satisfy this
+predicate are considered.
+
+@item :prescript
+@itemx :postscript
+Script run before/after fetching mail.
+
@end table
An example directory mail source:
prompted.
@item :program
-The program to use to fetch mail from the POP server.
+The program to use to fetch mail from the POP server. This is should be
+a @code{format}-like string. Here's an example:
+
+@example
+fetchmail %u@@%s -P %p %t
+@end example
+
+The valid format specifier characters are:
+
+@table @samp
+@item t
+The name of the file the mail is to be moved to. This must always be
+included in this string.
+
+@item s
+The name of the server.
+
+@item P
+The port number of the server.
+
+@item u
+The user name to use.
+
+@item p
+The password to use.
+@end table
-@item :args
-The arguments to give to the program. If this is a string, it is used
-as such. If this is a list, it is @code{eval}ed first, and the result
-is used.
+The values used for these specs are taken from the values you give the
+corresponding keywords.
+
+@item :prescript
+A script to be run before fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
+
+@item :postscript
+A script to be run after fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
@item :function
The function to use to fetch mail from the POP server. The function is
called with one parameter---the name of the file where the mail should
be moved to.
+
+@item :authentication
+This can be either the symbol @code{password} or the symbol @code{apop}
+and says what authentication scheme to use. The default is
+@code{password}.
+
@end table
If the @code{:program} and @code{:function} keywords aren't specified,
Use @samp{movemail} to move the mail:
@lisp
-(pop :program "movemail"
- :args (format "po:%s %s %s" user mail-source-crash-box password))
+(pop :program "movemail po:%u %t %p")
+@end lisp
+
+@item maildir
+Get mail from a maildir. This is a type of mailbox currently only
+supported by qmail, where each file in a special directory contains
+exactly one mail.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the directory where the mails are stored. The default is
+@samp{~/Maildir/new}.
+
+If you sometimes look at your mail through a pop3 daemon before fetching
+them with Gnus, you may also have to fetch your mails from the
+@code{cur} directory inside the maildir, like in the following example.
+
+@end table
+
+An example maildir mail source:
+
+@lisp
+(maildir :path "/home/user-name/Maildir/cur")
@end lisp
@end table
variables.
@table @code
-@item mail-source-movemail-program
-@vindex mail-source-movemail-program
-A command to be executed to move mail from the inbox. The default is
-@samp{movemail}.
-
-This can also be a function. In that case, the function will be
-called with two parameters -- the name of the INBOX file, and the file
-to be moved to.
-
-@item mail-source-movemail-args
-@vindex mail-source-movemail-args
-Extra arguments to give to the command described above.
-
@item mail-source-crash-box
@vindex mail-source-crash-box
File where mail will be stored while processing it. The default is
@node Fetching Mail
@subsubsection Fetching Mail
+@vindex mail-sources
+@vindex nnmail-spool-file
The way to actually tell Gnus where to get new mail from is to set
-@code{nnmail-spool-file} to a list of mail source specifiers
+@code{mail-sources} to a list of mail source specifiers
(@pxref{Mail Source Specifiers}).
-If this variable is @code{nil}, the mail backends will never attempt to
-fetch mail by themselves.
+If this variable (and the obsolescent @code{nnmail-spool-file}) is
+@code{nil}, the mail backends will never attempt to fetch mail by
+themselves.
If you want to fetch mail both from your local spool as well as a POP
mail server, you'd say something like:
@lisp
-(setq mail-spool-file
+(setq mail-sources
'((file)
(pop :server "pop3.mail.server"
:password "secret")))
Or, if you don't want to use any of the keyword defaults:
@lisp
-(setq mail-spool-file
+(setq mail-sources
'((file :path "/var/spool/mail/user-name")
(pop :server "pop3.mail.server"
:user "user-name"
;; Other mailing lists...
(any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
(any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
+ ;; Both lists below have the same suffix, so prevent
+ ;; cross-posting to mkpkg.list of messages posted only to
+ ;; the bugs- list, but allow cross-posting when the
+ ;; message was really cross-posted.
+ (any "bugs-mypackage@@somewhere" "mypkg.bugs")
+ (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
;; People...
(any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
;; Unmatched mail goes to the catch all group.
examples.
@item
-@var{(FIELD VALUE SPLIT)}: If the split is a list, the first element of
-which is a string, then store the message as specified by SPLIT, if
-header FIELD (a regexp) contains VALUE (also a regexp).
+@var{(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT)}: If the split
+is a list, the first element of which is a string, then store the
+message as specified by SPLIT, if header FIELD (a regexp) contains VALUE
+(also a regexp). If RESTRICT (yet another regexp) matches some string
+after FIELD and before the end of the matched VALUE, the SPLIT is
+ignored. If none of the RESTRICT clauses match, SPLIT is processed.
@item
@var{(| SPLIT...)}: If the split is a list, and the first element is
a SPLIT.
@item
+@var{(! FUNC SPLIT)}: If the split is a list, and the first element
+is @code{!}, then SPLIT will be processed, and FUNC will be called as a
+function with the result of SPLIT as argument. FUNC should return a split.
+
+@item
@code{nil}: If the split is @code{nil}, it is ignored.
@end enumerate
(any "debian-\\b\\(\\w+\\)@@lists.debian.org" "mail.debian.\\1")
@end example
+In this example, messages sent to @samp{debian-foo@@lists.debian.org}
+will be filed in @samp{mail.debian.foo}.
+
If the string contains the element @samp{\&}, then the previously
matched string will be substituted. Similarly, the elements @samp{\\1}
up to @samp{\\9} will be substituted with the text matched by the
groupings 1 through 9.
+@node Group Mail Splitting
+@subsection Group Mail Splitting
+@cindex mail splitting
+@cindex group mail splitting
+
+@findex gnus-group-split
+If you subscribe to dozens of mailing lists but you don't want to
+maintain mail splitting rules manually, group mail splitting is for you.
+You just have to set @var{to-list} and/or @var{to-address} in group
+parameters or group customization and set @code{nnmail-split-methods} to
+@code{gnus-group-split}. This splitting function will scan all groups
+for those parameters and split mail accordingly, i.e., messages posted
+from or to the addresses specified in the parameters @var{to-list} or
+@var{to-address} of a mail group will be stored in that group.
+
+Sometimes, mailing lists have multiple addresses, and you may want mail
+splitting to recognize them all: just set the @var{extra-aliases} group
+parameter to the list of additional addresses and it's done. If you'd
+rather use a regular expression, set @var{split-regexp}.
+
+All these parameters in a group will be used to create an
+@code{nnmail-split-fancy} split, in which the @var{FIELD} is @samp{any},
+the @var{VALUE} is a single regular expression that matches
+@var{to-list}, @var{to-address}, all of @var{extra-aliases} and all
+matches of @var{split-regexp}, and the @var{SPLIT} is the name of the
+group. @var{RESTRICT}s are also supported: just set the
+@var{split-exclude} parameter to a list of regular expressions.
+
+If you can't get the right split to be generated using all these
+parameters, or you just need something fancier, you can set the
+parameter @var{split-spec} to an @code{nnmail-split-fancy} split. In
+this case, all other aforementioned parameters will be ignored by
+@code{gnus-group-split}. In particular, @var{split-spec} may be set to
+@code{nil}, in which case the group will be ignored by
+@code{gnus-group-split}.
+
+@vindex gnus-group-split-default-catch-all-group
+@code{gnus-group-split} will do cross-posting on all groups that match,
+by defining a single @code{&} fancy split containing one split for each
+group. If a message doesn't match any split, it will be stored in the
+group named in @code{gnus-group-split-default-catch-all-group}, unless
+some group has @var{split-spec} set to @code{catch-all}, in which case
+that group is used as the catch-all group. Note that, in this case,
+there's no cross-posting, as a @code{|} fancy split encloses the
+@code{&} split and the catch-all group.
+
+It's time for an example. Assume the following group parameters have
+been defined:
+
+@example
+nnml:mail.bar:
+((to-address . "bar@@femail.com")
+ (split-regexp . ".*@@femail\\.com"))
+nnml:mail.foo:
+((to-list . "foo@@nowhere.gov")
+ (extra-aliases "foo@@localhost" "foo-redist@@home")
+ (split-exclude "bugs-foo" "rambling-foo")
+ (admin-address . "foo-request@@nowhere.gov"))
+nnml:mail.others:
+((split-spec . catch-all))
+@end example
+
+Setting @code{nnmail-split-methods} to @code{gnus-group-split} will
+behave as if @code{nnmail-split-fancy} had been selected and variable
+@code{nnmail-split-fancy} had been set as follows:
+
+@lisp
+(| (& (any "\\(bar@@femail\\.com\\|.*@@femail\\.com\\)" "mail.bar")
+ (any "\\(foo@@nowhere\\.gov\\|foo@@localhost\\|foo-redist@@home\\)"
+ - "bugs-foo" - "rambling-foo" "mail.foo"))
+ "mail.others")
+@end lisp
+
+@findex gnus-group-split-fancy
+If you'd rather not use group splitting for all your mail groups, you
+may use it for only some of them, by using @code{nnmail-split-fancy}
+splits like this:
+
+@lisp
+(: gnus-mlsplt-fancy GROUPS NO-CROSSPOST CATCH-ALL)
+@end lisp
+
+@var{GROUPS} may be a regular expression or a list of group names whose
+parameters will be scanned to generate the output split.
+@var{NO-CROSSPOST} can be used to disable cross-posting; in this case, a
+single @code{|} split will be output. @var{CATCH-ALL} may be the name
+of a group to be used as the default catch-all group. If
+@var{CATCH-ALL} is @code{nil}, or if @var{SPLIT-REGEXP} matches the
+empty string in any selected group, no catch-all split will be issued.
+Otherwise, if some group has @var{SPLIT-SPEC} set to @code{catch-all},
+this group will override the value of the @var{CATCH-ALL} argument.
+
+@findex gnus-group-split-setup
+Unfortunately, scanning all groups and their parameters can be quite
+slow, especially considering that it has to be done for every message.
+But don't despair! The function @code{gnus-group-split-setup} can be
+used to select @code{gnus-group-split} in a much more efficient way. It
+sets @code{nnmail-split-methods} to @code{nnmail-split-fancy} and sets
+@code{nnmail-split-fancy} to the split produced by
+@code{gnus-group-split-fancy}. Thus, the group parameters are only
+scanned once, no matter how many messages are split.
+
+@findex gnus-group-split-update
+However, if you change group parameters, you have to update
+@code{nnmail-split-fancy} manually. You can do it by running
+@code{gnus-group-split-update}. If you'd rather have it updated
+automatically, just tell @code{gnus-group-split-setup} to do it for
+you. For example, add to your @file{.gnus}:
+
+@lisp
+(gnus-group-split-setup AUTO-UPDATE CATCH-ALL)
+@end lisp
+
+If @var{AUTO-UPDATE} is non-@code{nil}, @code{gnus-group-split-update}
+will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever
+have to worry about updating @code{nnmail-split-fancy} again. If you
+don't omit @var{CATCH-ALL} (it's optional),
+@code{gnus-group-split-default-catch-all-group} will be set to its
+value.
+
+@vindex gnus-group-split-updated-hook
+Because you may want to change @code{nnmail-split-fancy} after it is set
+by @code{gnus-group-split-update}, this function will run
+@code{gnus-group-split-updated-hook} just before finishing.
+
@node Incorporating Old Mail
@subsection Incorporating Old Mail
'("(idm)" "nagnagnag"))
@end lisp
+This can also be done non-destructively with
+@code{gnus-list-identifiers}, @xref{Article Hiding}.
+
@item nnmail-remove-tabs
@findex nnmail-remove-tabs
Translate all @samp{TAB} characters into @samp{SPACE} characters.
habit of assuming that you want to read mail with them. This might not
be unreasonable, but it might not be what you want.
-If you set @code{nnmail-spool-file} to @code{nil}, none of the backends
-will ever attempt to read incoming mail, which should help.
+If you set @code{mail-sources} and @code{nnmail-spool-file} to
+@code{nil}, none of the backends will ever attempt to read incoming
+mail, which should help.
@vindex nnbabyl-get-new-mail
@vindex nnmbox-get-new-mail
file is first copied to your home directory. What happens after that
depends on what format you want to store your mail in.
+There are five different mail backends in the standard Gnus, and more
+backends are available separately. The mail backend most people use
+(because it is the fastest and most flexible) is @code{nnml}
+(@pxref{Mail Spool}).
+
@menu
* Unix Mail Box:: Using the (quite) standard Un*x mbox.
* Rmail Babyl:: Emacs programs use the rmail babyl format.
* Mail Spool:: Store your mail in a private spool?
* MH Spool:: An mhspool-like backend.
* Mail Folders:: Having one file for each group.
+* Comparing Mail Backends:: An in-depth looks at pros and cons.
@end menu
If you have lots of @code{nnfolder}-like files you'd like to read with
@code{nnfolder}, you can use the @kbd{M-x nnfolder-generate-active-file}
command to make @code{nnfolder} aware of all likely files in
-@code{nnfolder-directory}.
+@code{nnfolder-directory}. This only works if you use long file names,
+though.
+
+@node Comparing Mail Backends
+@subsubsection Comparing Mail Backends
+
+First, just for terminology, the @dfn{backend} is the common word for a
+low-level access method---a transport, if you will, by which something
+is acquired. The sense is that one's mail has to come from somewhere,
+and so selection of a suitable backend is required in order to get that
+mail within spitting distance of Gnus.
+
+The same concept exists for Usenet itself: Though access to articles is
+typically done by NNTP these days, once upon a midnight dreary, everyone
+in the world got at Usenet by running a reader on the machine where the
+articles lay (the machine which today we call an NNTP server), and
+access was by the reader stepping into the articles' directory spool
+area directly. One can still select between either the @code{nntp} or
+@code{nnspool} backends, to select between these methods, if one happens
+actually to live on the server (or can see its spool directly, anyway,
+via NFS).
+
+The goal in selecting a mail backend is to pick one which
+simultaneously represents a suitable way of dealing with the original
+format plus leaving mail in a form that is convenient to use in the
+future. Here are some high and low points on each:
+
+@table @code
+@item nnmbox
+
+UNIX systems have historically had a single, very common, and well-
+defined format. All messages arrive in a single @dfn{spool file}, and
+they are delineated by a line whose regular expression matches
+@samp{^From_}. (My notational use of @samp{_} is to indicate a space,
+to make it clear in this instance that this is not the RFC-specified
+@samp{From:} header.) Because Emacs and therefore Gnus emanate
+historically from the Unix environment, it is simplest if one does not
+mess a great deal with the original mailbox format, so if one chooses
+this backend, Gnus' primary activity in getting mail from the real spool
+area to Gnus' preferred directory is simply to copy it, with no
+(appreciable) format change in the process. It is the ``dumbest'' way
+to move mail into availability in the Gnus environment. This makes it
+fast to move into place, but slow to parse, when Gnus has to look at
+what's where.
+
+@item nnbabyl
+
+Once upon a time, there was the DEC-10 and DEC-20, running operating
+systems called TOPS and related things, and the usual (only?) mail
+reading environment was a thing called Babyl. I don't know what format
+was used for mail landing on the system, but Babyl had its own internal
+format to which mail was converted, primarily involving creating a
+spool-file-like entity with a scheme for inserting Babyl-specific
+headers and status bits above the top of each message in the file.
+RMAIL was Emacs' first mail reader, it was written by Richard Stallman,
+and Stallman came out of that TOPS/Babyl environment, so he wrote RMAIL
+to understand the mail files folks already had in existence. Gnus (and
+VM, for that matter) continue to support this format because it's
+perceived as having some good qualities in those mailer-specific
+headers/status bits stuff. RMAIL itself still exists as well, of
+course, and is still maintained by Stallman.
+
+Both of the above forms leave your mail in a single file on your
+filesystem, and they must parse that entire file each time you take a
+look at your mail.
+
+@item nnml
+
+@code{nnml} is the backend which smells the most as though you were
+actually operating with an @code{nnspool}-accessed Usenet system. (In
+fact, I believe @code{nnml} actually derived from @code{nnspool} code,
+lo these years ago.) One's mail is taken from the original spool file,
+and is then cut up into individual message files, 1:1. It maintains a
+Usenet-style active file (analogous to what one finds in an INN- or
+CNews-based news system in (for instance) @file{/var/lib/news/active},
+or what is returned via the @samp{NNTP LIST} verb) and also creates
+@dfn{overview} files for efficient group entry, as has been defined for
+@sc{nntp} servers for some years now. It is slower in mail-splitting,
+due to the creation of lots of files, updates to the @code{nnml} active
+file, and additions to overview files on a per-message basis, but it is
+extremely fast on access because of what amounts to the indexing support
+provided by the active file and overviews.
+
+@code{nnml} costs @dfn{inodes} in a big way; that is, it soaks up the
+resource which defines available places in the filesystem to put new
+files. Sysadmins take a dim view of heavy inode occupation within
+tight, shared filesystems. But if you live on a personal machine where
+the filesystem is your own and space is not at a premium, @code{nnml}
+wins big.
+
+It is also problematic using this backend if you are living in a
+FAT16-based Windows world, since much space will be wasted on all these
+tiny files.
+
+@item nnmh
+
+The Rand MH mail-reading system has been around UNIX systems for a very
+long time; it operates by splitting one's spool file of messages into
+individual files, but with little or no indexing support -- @code{nnmh}
+is considered to be semantically equivalent to ``@code{nnml} without
+active file or overviews''. This is arguably the worst choice, because
+one gets the slowness of individual file creation married to the
+slowness of access parsing when learning what's new in one's groups.
+
+@item nnfolder
+
+Basically the effect of @code{nnfolder} is @code{nnmbox} (the first
+method described above) on a per-group basis. That is, @code{nnmbox}
+itself puts *all* one's mail in one file; @code{nnfolder} provides a
+little bit of optimization to this so that each of one's mail groups has
+a Unix mail box file. It's faster than @code{nnmbox} because each group
+can be parsed separately, and still provides the simple Unix mail box
+format requiring minimal effort in moving the mail around. In addition,
+it maintains an ``active'' file making it much faster for Gnus to figure
+out how many messages there are in each separate group.
+
+If you have groups that are expected to have a massive amount of
+messages, @code{nnfolder} is not the best choice, but if you receive
+only a moderate amount of mail, @code{nnfolder} is probably the most
+friendly mail backend all over.
+
+@end table
+
@node Other Sources
@item forward
Forwarded articles.
-@item mime-parts
-MIME multipart messages, besides digests.
+@item nsmail
+Netscape mail boxes.
-@item mime-digest
-@cindex digest
-@cindex MIME digest
-@cindex 1153 digest
-@cindex RFC 1153 digest
-@cindex RFC 341 digest
-MIME (RFC 1341) digest format.
+@item mime-parts
+MIME multipart messages.
@item standard-digest
The standard (RFC 1153) digest format.
@vindex nndoc-article-type
This should be one of @code{mbox}, @code{babyl}, @code{digest},
@code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934},
-@code{rfc822-forward}, @code{mime-parts}, @code{mime-digest},
-@code{standard-digest}, @code{slack-digest}, @code{clari-briefs} or
-@code{guess}.
+@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest},
+@code{slack-digest}, @code{clari-briefs}, @code{nsmail} or @code{guess}.
@item nndoc-post-type
@vindex nndoc-post-type
The main way to control what is to be downloaded is to create a
@dfn{category} and then assign some (or all) groups to this category.
-Gnus has its own buffer for creating and managing categories.
+Groups that do not belong in any other category belong to the
+@code{default} category. Gnus has its own buffer for creating and
+managing categories.
@menu
* Category Syntax:: What a category looks like.
@lisp
(defun my-article-old-p ()
"Say whether an article is old."
- (< (time-to-day (date-to-time (mail-header-date gnus-headers)))
- (- (time-to-day (current-time)) gnus-agent-expire-days)))
+ (< (time-to-days (date-to-time (mail-header-date gnus-headers)))
+ (- (time-to-days (current-time)) gnus-agent-expire-days)))
@end lisp
with the predicate then defined as:
@kindex J S (Agent Group)
@findex gnus-group-send-drafts
Send all sendable messages in the draft group
-(@code{gnus-agent-fetch-session}). @xref{Drafts}.
+(@code{gnus-group-send-drafts}). @xref{Drafts}.
@item J a
@kindex J a (Agent Group)
@lisp
;;; Define how Gnus is to fetch news. We do this over NNTP
;;; from your ISP's server.
-(setq gnus-select-method '(nntp "nntp.your-isp.com"))
+(setq gnus-select-method '(nntp "news.your-isp.com"))
;;; Define how Gnus is to read your mail. We read mail from
;;; your ISP's POP server.
-(setenv "MAILHOST" "pop.your-isp.com")
-(setq nnmail-spool-file "po:username")
+(setq mail-sources '((pop :server "pop.your-isp.com")))
;;; Say how Gnus is to store the mail. We use nnml groups.
(setq gnus-secondary-select-methods '((nnml "")))
Score on the subject line.
@item x
-Score on the Xref line---i.e., the cross-posting line.
+Score on the @code{Xref} line---i.e., the cross-posting line.
@item r
-Score on the References line.
+Score on the @code{References} line.
@item d
Score on the date.
Score on the number of lines.
@item i
-Score on the Message-ID.
+Score on the @code{Message-ID} header.
@item f
-Score on followups.
+Score on followups---this matches the author name, and adds scores to
+the followups to this author.
@item b
Score on the body.
Score on the head.
@item t
-Score on thead.
+Score on thread.
@end table
scoring, then you might set this variable to @code{t}. This will make
Gnus save the scores into the @file{.newsrc.eld} file.
+If you do not set this to @code{t}, then manual scores (like those set
+with @kbd{V s} (@code{gnus-summary-set-score})) will not be preserved
+across group visits.
+
@item gnus-score-interactive-default-score
@vindex gnus-score-interactive-default-score
Score used by all the interactive raise/lower commands to raise/lower
the matches.
@item Marking as read
-You will probably want to mark articles that has a score below a certain
+You will probably want to mark articles that have scores below a certain
number as read. This is most easily achieved by putting the following
in your @file{all.SCORE} file:
@lisp
* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
* Conformity:: Gnus tries to conform to all standards.
* Emacsen:: Gnus can be run on a few modern Emacsen.
+* Gnus Development:: How Gnus is developed.
* Contributors:: Oodles of people.
* New Features:: Pointers to some of the new stuff in Gnus.
* Newest Features:: Features so new that they haven't been written yet.
Emacsen.
+@node Gnus Development
+@subsection Gnus Development
+
+Gnus is developed in a two-phased cycle. The first phase involves much
+discussion on the @samp{ding@@gnus.org} mailing list, where people
+propose changes and new features, post patches and new backends. This
+phase is called the @dfn{alpha} phase, since the Gnusae released in this
+phase are @dfn{alpha releases}, or (perhaps more commonly in other
+circles) @dfn{snapshots}. During this phase, Gnus is assumed to be
+unstable and should not be used by casual users. Gnus alpha releases
+have names like ``Red Gnus'' and ``Quassia Gnus''.
+
+After futzing around for 50-100 alpha releases, Gnus is declared
+@dfn{frozen}, and only bug fixes are applied. Gnus loses the prefix,
+and is called things like ``Gnus 5.6.32'' instead. Normal people are
+supposed to be able to use these, and these are mostly discussed on the
+@samp{gnu.emacs.gnus} newsgroup.
+
+@cindex Incoming*
+@vindex nnmail-delete-incoming
+Some variable defaults differ between alpha Gnusae and released Gnusae.
+In particular, @code{nnmail-delete-incoming} defaults to @code{nil} in
+alpha Gnusae and @code{t} in released Gnusae. This is to prevent
+lossage of mail if an alpha release hiccups while handling the mail.
+
+The division of discussion between the ding mailing list and the Gnus
+newsgroup is not purely based on publicity concerns. It's true that
+having people write about the horrible things that an alpha Gnus release
+can do (sometimes) in a public forum may scare people off, but more
+importantly, talking about new experimental features that have been
+introduced may confuse casual users. New features are frequently
+introduced, fiddled with, and judged to be found wanting, and then
+either discarded or totally rewritten. People reading the mailing list
+usually keep up with these rapid changes, whille people on the newsgroup
+can't be assumed to do so.
+
+
+
@node Contributors
@subsection Contributors
@cindex contributors
Matt Armstrong,
Marc Auslander,
Miles Bader,
+Alexei V. Barantsev,
Frank Bennett,
Robert Bihlmeyer,
Chris Bone,
Mark Borges,
Mark Boyns,
Lance A. Brown,
+Rob Browning,
Kees de Bruin,
Martin Buchholz,
Joe Buehler,
David Charlap,
Dan Christensen,
Kevin Christian,
+Jae-you Chung, @c ?
+James H. Cloos, Jr.,
+Laura Conrad,
Michael R. Cook,
Glenn Coombs,
+Andrew J. Cosgriff,
+Neil Crellin,
Frank D. Cringle,
Geoffrey T. Dairiki,
Andre Deparade,
Michael Welsh Duggan,
Dave Edmondson,
Paul Eggert,
+Mark W. Eichin,
Karl Eichwalder,
Enami Tsugutomo, @c Enami
Michael Ernst,
Sam Falkner,
Nelson Jose dos Santos Ferreira,
Sigbjorn Finne,
+Sven Fischer,
Paul Fisher,
Decklin Foster,
Gary D. Foster,
Yoshiki Hayashi, @c ?
P. E. Jareth Hein,
Hisashige Kenji, @c Hisashige
+Scott Hofmann,
Marc Horowitz,
Gunnar Horrigmo,
Richard Hoskins,
Brad Howes,
+Miguel de Icaza,
François Felix Ingrand,
+Tatsuya Ichikawa, @c ?
Ishikawa Ichiro, @c Ishikawa
Lee Iverson,
Iwamuro Motonori, @c Iwamuro
Rajappa Iyer,
Andreas Jaeger,
+Adam P. Jenkins,
Randell Jesup,
Fred Johansen,
Gareth Jones,
Simon Josefsson,
Greg Klanderman,
Karl Kleinpaste,
+Michael Klingbeil,
Peter Skov Knudsen,
Shuhei Kobayashi, @c Kobayashi
+Petr Konecny,
Koseki Yoshinori, @c Koseki
Thor Kristoffersen,
Jens Lautenbacher,
Ken Olstad,
Masaharu Onishi, @c Onishi
Hideki Ono, @c Ono
+Ettore Perazzoli,
William Perry,
Stephen Peters,
Jens-Ulrik Holger Petersen,
Richard Stallman,
Greg Stark,
Sam Steingold,
+Paul Stevenson,
Jonas Steverud,
Paul Stodghill,
+Kiyokazu Suto, @c Suto
Kurt Swanson,
Samuel Tardieu,
Teddy,
Chuck Thompson,
+Tozawa Akihiko, @c Tozawa
Philippe Troin,
James Troup,
Trung Tran-Duc,
+Jack Twilley,
Aaron M. Ucko,
Aki Vehtari,
Didier Verna,
+Vladimir Volovich,
Jan Vroonhof,
Stefan Waldherr,
Pete Ware,
@item
AUTHINFO GENERIC
@item
- support qmail maildir spools
-@item
`run-with-idle-timer' in gnus-demon.
@item
stop using invisible text properties and start using overlays instead
you press `l', point will move to the first instance of the group.
@item
-The documentation should mention pop3.el, fetchmail, smtpmail and why
-po:username often fails.
-
-@item
Fetch by Message-ID from dejanews.
<URL:http://search.dejanews.com/msgid.xp?MID=%3C62h9l9$hm4@@basement.replay.com%3E&fmt=raw>
timeout for all commands.
@item
+When stading on a topic line and `t'-ing, point goes to the last line.
+It should go somewhere else.
+
+@item
+I'm having trouble accessing a newsgroup with a "+" in its name with
+Gnus. There is a new newsgroup on msnews.microsoft.com named
+"microsoft.public.multimedia.directx.html+time" that I'm trying to
+access as
+"nntp+msnews.microsoft.com:microsoft.public.multimedia.directx.html+time"
+but it gives an error that it cant access the group.
+
+Is the "+" character illegal in newsgroup names? Is there any way in
+Gnus to work around this? (gnus 5.6.45 - XEmacs 20.4)
+
+@item
+
+When `#F', do:
+
+@example
+Subject: Answer to your mails 01.01.1999-01.05.1999
+ --text follows this line--
+Sorry I killfiled you...
+
+Under the subject "foo", you wrote on 01.01.1999:
+> bar
+Under the subject "foo1", you wrote on 01.01.1999:
+> bar 1
+@end example
+
+@item
+Allow "orphan" scores in the Agent scoring.
+
+@item
+@example
+ - Edit article's summary line.
+ - End edit
+ - Sort lines in buffer by subject
+
+ --> the old subject line appears in Summary buffer, not the one that was
+ just changed to.
+@end example
+
+@item
Solve the halting problem.
@c TODO
use any other newsreaders than Gnus. This variable is @code{t} by
default.
+@item gnus-read-newsrc-file
+If this is @code{nil}, Gnus will never read @file{.newsrc}---it will
+only read @file{.newsrc.eld}. This means that you will not be able to
+use any other newsreaders than Gnus. This variable is @code{t} by
+default.
+
@item gnus-save-killed-list
If this is @code{nil}, Gnus will not save the list of dead groups. You
should also set @code{gnus-check-new-newsgroups} to @code{ask-server}