\newcommand{\gnusbackslash}{/}
+\newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
+\newcommand{\gnusuref}[1]{\gnustt{#1}}
\newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
\newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
\thispagestyle{empty}
-Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Oort Gnus v0.01.
+This manual corresponds to Oort Gnus v.
@end ifinfo
@menu
* Starting Up:: Finding news can be a pain.
-* The Group Buffer:: Selecting, subscribing and killing groups.
-* The Summary Buffer:: Reading, saving and posting articles.
-* The Article Buffer:: Displaying and handling articles.
+* Group Buffer:: Selecting, subscribing and killing groups.
+* Summary Buffer:: Reading, saving and posting articles.
+* Article Buffer:: Displaying and handling articles.
* Composing Messages:: Information on sending mail and news.
* Select Methods:: Gnus reads all messages from various select methods.
* Scoring:: Assigning values to articles.
* Subscription Methods:: What Gnus should do with new groups.
* Filtering New Groups:: Making Gnus ignore certain new groups.
-The Group Buffer
+Group Buffer
* Group Buffer Format:: Information listed and how you can change it.
* Group Maneuvering:: Commands for moving in the group buffer.
* Group Timestamp:: Making Gnus keep track of when you last read a group.
* File Commands:: Reading and writing the Gnus files.
-The Summary Buffer
+Summary Buffer
* Summary Buffer Format:: Deciding how the summary buffer is to look.
* Summary Maneuvering:: Moving around the summary buffer.
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
-* Sorting:: How articles and threads are sorted.
+* Sorting the Summary Buffer:: How articles and threads are sorted.
* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
* Article Caching:: You may store articles in a cache.
* Persistent Articles:: Making articles expiry-resistant.
* Summary Generation Commands:: (Re)generating the summary buffer.
* Really Various Summary Commands:: Those pesky non-conformant commands.
-The Article Buffer
+Article Buffer
* Hiding Headers:: Deciding what headers should be displayed.
* Using MIME:: Pushing articles through @sc{mime} before reading them.
Select Methods
-* The Server Buffer:: Making and editing virtual servers.
+* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
* Combined Groups:: Combining groups into one group.
* Gnus Unplugged:: Reading news and mail offline.
-The Server Buffer
+Server Buffer
* Server Buffer Format:: You can customize the look of this buffer.
* Server Commands:: Commands to manipulate servers.
Getting Mail
-* Mail in a Newsreader:: Important introductory notes.
+* 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.
* Slashdot:: Reading the Slashdot comments.
* Ultimate:: The Ultimate Bulletin Board systems.
* Web Archive:: Reading mailing list archived on web.
+* RSS:: Reading RDF site summary.
+* Customizing w3:: Doing stuff to Emacs/w3 from Gnus.
Other Sources
Agent Categories
* Category Syntax:: What a category looks like.
-* The Category Buffer:: A buffer for maintaining categories.
+* Category Buffer:: A buffer for maintaining categories.
* Category Variables:: Customize'r'Us.
Agent Commands
* 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.
New Features
* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
+* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
* Red Gnus:: Third time best---Gnus 5.4/5.5.
* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
+* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
Customization
@item gnus-subscribe-topics
@vindex gnus-subscribe-topics
-Put the groups into the topic that has a matching @code{subscribe} topic
+Put the groups into the topic that has a matching @code{subscribe} topic
parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
topic parameter that looks like
"nnslashdot"
@end example
-will mean that all groups that match that regex will be subscribed under
+will mean that all groups that match that regex will be subscribed under
that topic.
If no topics match the groups, the groups will be subscribed in the
@code{LIST ACTIVE group} command, this isn't very nice to the server.
If you think that starting up Gnus takes too long, try all the three
-different values for this variable and see what works best for you.
+different values for this variable and see what works best for you.
In any case, if you use @code{some} or @code{nil}, you should definitely
kill all groups that you aren't interested in to speed things up.
@end table
-@node The Group Buffer
-@chapter The Group Buffer
+@node Group Buffer
+@chapter Group Buffer
@cindex group buffer
The @dfn{group buffer} lists all (or parts) of the available groups. It
Estimated total number of articles. (This is really @var{max-number}
minus @var{min-number} plus 1.)
+Gnus uses this estimation because the NNTP protocol provides efficient
+access to @var{max-number} and @var{min-number} but getting the true
+unread message count is not possible efficiently. For hysterical
+raisins, even the mail backends, where the true number of unread
+messages might be available efficiently, use the same limited
+interface. To remove this restriction from Gnus means that the
+backend interface has to be changed, which is not an easy job. If you
+want to work on this, please contact the Gnus mailing list.
+
@item y
Number of unread, unticked, non-dormant articles.
parameters have this form @emph{except} local variable specs, which are
not dotted pairs, but proper lists.
+Some parameters have correspondant customizable variables, each of which
+is an alist of regexps and values.
+
The following group parameters can be used:
@table @code
group is therefore impossible---you have to send mail to the mailing
list address instead.
+See also @code{gnus-parameter-to-address-alist}.
+
@item to-list
@cindex to-list
Address used when doing @kbd{a} in that group.
@code{to-list} group parameter, one will be added automatically upon
sending the message.
+See also @code{gnus-parameter-to-list-alist}.
+
@item visible
@cindex visible
If the group parameter list has the element @code{(visible . t)},
. t)}, all articles read will be marked as expirable. For an
alternative approach, @pxref{Expiring Mail}.
+See also @code{gnus-auto-expirable-newsgroups}.
+
@item total-expire
@cindex total-expire
If the group parameter has an element that looks like
caution. Unread, ticked and dormant articles are not eligible for
expiry.
+See also @code{gnus-total-expirable-newsgroups}.
+
@item expiry-wait
@cindex expiry-wait
@vindex nnmail-expiry-wait-function
@code{iso-8859-1} the default charset; that is, the charset that will be
used for all articles that do not specify a charset.
-@item (@var{variable} @var{form})
-You can use the group parameters to set variables local to the group you
-are entering. If you want to turn threading off in @samp{news.answers},
-you could put @code{(gnus-show-threads nil)} in the group parameters of
-that group. @code{gnus-show-threads} will be made into a local variable
-in the summary buffer you enter, and the form @code{nil} will be
-@code{eval}ed there.
+See also @code{gnus-group-charset-alist}.
-This can also be used as a group-specific hook function, if you'd like.
-If you want to hear a beep when you enter a group, you could put
-something like @code{(dummy-variable (ding))} in the parameters of that
-group. @code{dummy-variable} will be set to the result of the
-@code{(ding)} form, but who cares?
+@item ignored-charsets
+Elements that look like @code{(ignored-charsets x-known iso-8859-1)}
+will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
+default charset will be used for decoding articles.
+
+See also @code{gnus-group-ignored-charsets-alist}.
@item posting-style
You can store additional posting style information for this group only
last signature or any of the elements of the alist
@code{gnus-article-banner-alist}.
+@item (@var{variable} @var{form})
+You can use the group parameters to set variables local to the group you
+are entering. If you want to turn threading off in @samp{news.answers},
+you could put @code{(gnus-show-threads nil)} in the group parameters of
+that group. @code{gnus-show-threads} will be made into a local variable
+in the summary buffer you enter, and the form @code{nil} will be
+@code{eval}ed there.
+
+This can also be used as a group-specific hook function, if you'd like.
+If you want to hear a beep when you enter a group, you could put
+something like @code{(dummy-variable (ding))} in the parameters of that
+group. @code{dummy-variable} will be set to the result of the
+@code{(ding)} form, but who cares?
+
@end table
-Use the @kbd{G p} command to edit group parameters of a group. You
-might also be interested in reading about topic parameters (@pxref{Topic
-Parameters}).
+Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
+group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
+presents you with a Customize-like interface. The latter helps avoid
+silly Lisp errors.) You might also be interested in reading about topic
+parameters (@pxref{Topic Parameters}).
+
+Group parameters can be set in @code{gnus-parameters} too. But some
+variables, such as @code{visible}, have no effect. For example,
+@example
+(setq gnus-parameters
+ '(("mail\\..*" (gnus-show-threads nil)
+ (gnus-use-scoring nil)
+ (gnus-summary-line-format
+ "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
+ (gcc-self . t)
+ (display . all))
+ ("mail\\.me" (gnus-use-scoring t))
+ ("list\\..*" (total-expire . t)
+ (broken-reply-to . t)))
+@end example
@node Listing Groups
@section Listing Groups
@end table
+And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
+move groups around.
@node Group Maintenance
@kindex C-c C-x (Group)
@findex gnus-group-expire-articles
Run all expirable articles in the current group through the expiry
-process (if any) (@code{gnus-group-expire-articles}).
+process (if any) (@code{gnus-group-expire-articles}). That is, delete
+all expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
@item C-c M-C-x
@kindex C-c M-C-x (Group)
@findex gnus-group-expire-all-groups
-Run all articles in all groups through the expiry process
+Run all expirable articles in all groups through the expiry process
(@code{gnus-group-expire-all-groups}).
@end table
@item T j
@kindex T j (Topic)
@findex gnus-topic-jump-to-topic
-Go to a topic (@code{gnus-topic-jump-to-topic}).
+Go to a topic (@code{gnus-topic-jump-to-topic}).
@item T c
@kindex T c (Topic)
@item C-c C-x
@kindex C-c C-x (Topic)
@findex gnus-topic-expire-articles
-Run all expirable articles in the current group or topic through the expiry
-process (if any) (@code{gnus-topic-expire-articles}).
+Run all expirable articles in the current group or topic through the
+expiry process (if any)
+(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
@item C-k
@kindex C-k (Topic)
@table @code
@item subscribe
-When subscribing new groups by topic (@pxref{Subscription Methods}), the
-@code{subscribe} topic parameter says what groups go in what topic. Its
+When subscribing new groups by topic (@pxref{Subscription Methods}), the
+@code{subscribe} topic parameter says what groups go in what topic. Its
value should be a regexp to match the groups that should go in that
-topic.
+topic.
@end table
@kindex ^ (Group)
@findex gnus-group-enter-server-mode
Enter the server buffer (@code{gnus-group-enter-server-mode}).
-@xref{The Server Buffer}.
+@xref{Server Buffer}.
@item a
@kindex a (Group)
@item gnus-group-name-charset-group-alist
@vindex gnus-group-name-charset-group-alist
-An alist of regexp of group name and the charset for group names.
+An alist of regexp of group name and the charset for group names.
It is used to show non-ASCII group names.
For example:
@end table
-@node The Summary Buffer
-@chapter The Summary Buffer
+@node Summary Buffer
+@chapter Summary Buffer
@cindex summary buffer
A line for each article is displayed in the summary buffer. You can
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
-* Sorting:: How articles and threads are sorted.
+* Sorting the Summary Buffer:: How articles and threads are sorted.
* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
* Article Caching:: You may store articles in a cache.
* Persistent Articles:: Making articles expiry-resistant.
lines as a normal @code{format} string, with some extensions
(@pxref{Formatting Variables}).
+There should always be a colon on the line; the cursor always moves to
+the colon after performing an operation.
+
The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
The following format specification characters are understood:
methods (like nnfolder).
@item I
Indentation based on thread level (@pxref{Customizing Threading}).
+@item B
+A complex trn-style thread tree, showing response-connecting trace lines.
@item T
Nothing if the article is a root and lots of spaces if it isn't (it
pushes everything after it off the screen).
@code{%n} spec to the @code{%f} spec in the
@code{gnus-summary-line-format} variable.
-In summary, you'd typically do something like the following:
+In summary, you'd typically put something like the following in
+@file{~/.gnus}:
@lisp
(setq gnus-extra-headers
Go to the previous summary line of an unread article
(@code{gnus-summary-prev-unread-subject}).
-@item G j
-@itemx j
-@kindex j (Summary)
-@kindex G j (Summary)
-@findex gnus-summary-goto-article
-Ask for an article number or @code{Message-ID}, and then go to that
-article (@code{gnus-summary-goto-article}).
-
@item G g
@kindex G g (Summary)
@findex gnus-summary-goto-subject
history as you like, while @kbd{l} toggles the two last read articles.
For a somewhat related issue (if you use these commands a lot),
@pxref{Article Backlog}.
+
+@item G j
+@itemx j
+@kindex j (Summary)
+@kindex G j (Summary)
+@findex gnus-summary-goto-article
+Ask for an article number or @code{Message-ID}, and then go to that
+article (@code{gnus-summary-goto-article}).
+
@end table
encoded in the @code{cn-gb-2312} charset. If you have
@lisp
-(setq gnus-summary-show-article-charset-alist
- '((1 . cn-gb-2312)
+(setq gnus-summary-show-article-charset-alist
+ '((1 . cn-gb-2312)
(2 . big5)))
@end lisp
message (@code{gnus-summary-wide-reply-with-original}). This command uses
the process/prefix convention.
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+Mail a very wide reply to the author of the current article
+(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
+that goes out to all people listed in the @code{To}, @code{From} (or
+@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
+articles. This command uses the process/prefix convention.
+
+@item S W
+@kindex S W (Summary)
+@findex gnus-summary-wide-reply-with-original
+Mail a very wide reply to the current article and include the original
+message (@code{gnus-summary-wide-reply-with-original}). This command uses
+the process/prefix convention.
+
@item S o m
@itemx C-c C-f
@kindex S o m (Summary)
@kindex S o p (Summary)
@findex gnus-summary-post-forward
Forward the current article to a newsgroup
-(@code{gnus-summary-post-forward}).
+(@code{gnus-summary-post-forward}).
If no prefix is given, the message is forwarded according to the value
of (@code{message-forward-as-mime}) and
(@code{message-forward-show-mml}); if the prefix is 1, decode the
@dfn{Ticked articles} are articles that will remain visible always. If
you see an article that you find interesting, or you want to put off
reading it, or replying to it, until sometime later, you'd typically
-tick it. However, articles can be expired, so if you want to keep an
-article forever, you'll have to make it persistent (@pxref{Persistent
-Articles}).
+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
+(@pxref{Persistent Articles}).
@item ?
@vindex gnus-dormant-mark
@dfn{Dormant articles} will only appear in the summary buffer if there
are followups to it. If you want to see them even if they don't have
followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
+Otherwise (except for the visibility issue), they are just like ticked
+messages.
@item SPACE
@vindex gnus-unread-mark
answered) will be marked with an @samp{A} in the second column
(@code{gnus-replied-mark}).
+@vindex gnus-forwarded-mark
+All articles that you have forwarded will be marked with an @samp{O} in
+the second column (@code{gnus-forwarded-mark}).
+
@item
@vindex gnus-cached-mark
Articles stored in the article cache will be marked with an @samp{*} in
@item M H
@kindex M H (Summary)
@findex gnus-summary-catchup-to-here
-Catchup the current group to point
+Catchup the current group to point (before the point)
(@code{gnus-summary-catchup-to-here}).
+@item M h
+@kindex M h (Summary)
+@findex gnus-summary-catchup-from-here
+Catchup the current group from point (after the point)
+(@code{gnus-summary-catchup-from-here}).
+
@item C-w
@kindex C-w (Summary)
@findex gnus-summary-mark-region-as-read
off sparse leaf nodes that don't lead anywhere. This variable is
@code{nil} by default.
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+This is a rather obscure variable that few will find useful. It's
+intended for those non-news newsgroups where the backend has to fetch
+quite a lot to present the summary buffer, and where it's impossible to
+go back to parents of articles. This is mostly the case in the
+web-based groups, like the @code{nnultimate} groups.
+
+If you don't use those, then it's safe to leave this as the default
+@code{nil}. If you want to use this variable, it should be a regexp
+that matches the group name, or @code{t} for all groups.
+
@end table
@item gnus-thread-ignore-subject
@vindex gnus-thread-ignore-subject
Sometimes somebody changes the subject in the middle of a thread. If
-this variable is non-@code{nil}, the subject change is ignored. If it
-is @code{nil}, which is the default, a change in the subject will result
-in a new thread.
+this variable is non-@code{nil}, which is the default, the subject
+change is ignored. If it is @code{nil}, a change in the subject will
+result in a new thread.
@item gnus-thread-indent-level
@vindex gnus-thread-indent-level
Matching}).
-@node Sorting
-@section Sorting
+@node Sorting the Summary Buffer
+@section Sorting the Summary Buffer
@findex gnus-thread-sort-by-total-score
@findex gnus-thread-sort-by-date
(@code{gnus-summary-save-article-vm}).
@item O p
+@itemx |
@kindex O p (Summary)
+@kindex | (Summary)
@findex gnus-summary-pipe-output
Save the current article in a pipe. Uhm, like, what I mean is---Pipe
the current article to a process (@code{gnus-summary-pipe-output}).
@item gnus-plain-save-name
@findex gnus-plain-save-name
File names like @file{~/News/alt.andrea-dworkin}.
+
+@item gnus-sender-save-name
+@findex gnus-sender-save-name
+File names like @file{~/News/larsi}.
@end table
@vindex gnus-split-methods
@lisp
(setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
-(setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding
+(setq gnus-default-article-saver
+ 'gnus-summary-save-in-file) ; no encoding
@end lisp
Then just save with @kbd{o}. You'd then read this hierarchy with
highlighting.
@lisp
-(setq gnus-article-emphasis
+(setq gnus-emphasis-alist
'(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
@end lisp
@item W Q
@kindex W Q (Summary)
-@findex gnus-article-fill-long-lines
+@findex gnus-article-fill-long-lines
Fill long lines (@code{gnus-article-fill-long-lines}).
@item W C
readable to me. Note that the this is usually done automatically by
Gnus if the message in question has a @code{Content-Transfer-Encoding}
header that says that this encoding has been done.
+If a prefix is given, a charset will be asked for.
@item W 6
@kindex W 6 (Summary)
automatically by Gnus if the message in question has a
@code{Content-Transfer-Encoding} header that says that this encoding has
been done.
+If a prefix is given, a charset will be asked for.
@item W Z
@kindex W Z (Summary)
@item W h
@kindex W h (Summary)
@findex gnus-article-wash-html
-Treat HTML (@code{gnus-article-wash-html}).
+Treat HTML (@code{gnus-article-wash-html}).
Note that the this is usually done automatically by Gnus if the message
in question has a @code{Content-Type} header that says that this type
has been done.
+If a prefix is given, a charset will be asked for.
@item W f
@kindex W f (Summary)
Add clickable buttons to the article headers
(@code{gnus-article-add-buttons-to-head}).
+@item W p
+@kindex W p (Summary)
+@findex gnus-article-verify-x-pgp-sig
+Verify a signed control message (@code{gnus-article-verify-x-pgp-sig}).
+Control messages such as @code{newgroup} and @code{checkgroups} are
+usually signed by the hierarchy maintainer. You need to add the PGP
+public key of the maintainer to your keyring to verify the
+message.@footnote{PGP keys for many hierarchies are available at
+@uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}}
+
@item W W H
@kindex W W H (Summary)
@findex gnus-article-strip-headers-from-body
(@code{gnus-article-date-lapsed}). It looks something like:
@example
-X-Sent: 9 years, 6 weeks, 4 days, 9 hours, 3 minutes, 28 seconds ago
+X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
@end example
The value of @code{gnus-article-date-lapsed-new-header} determines
@kindex A t (Summary)
@findex gnus-article-babel
Translate the article from one language to another
-(@code{gnus-article-babel}).
+(@code{gnus-article-babel}).
@end table
@item gnus-mime-multipart-functions
Alist of @sc{mime} multipart types and functions to handle them.
+@vindex mm-file-name-rewrite-functions
+@item mm-file-name-rewrite-functions
+List of functions used for rewriting file names of @sc{mime} parts.
+Each function takes a file name as input and returns a file name.
+
+Ready-made functions include@*
+@code{mm-file-name-delete-whitespace},
+@code{mm-file-name-trim-whitespace},
+@code{mm-file-name-collapse-whitespace}, and
+@code{mm-file-name-replace-whitespace}. The later uses the value of
+the variable @code{mm-file-name-replace-whitespace} to replace each
+whitespace character in a file name with that string; default value
+is @code{"_"} (a single underscore).
+@findex mm-file-name-delete-whitespace
+@findex mm-file-name-trim-whitespace
+@findex mm-file-name-collapse-whitespace
+@findex mm-file-name-replace-whitespace
+@vindex mm-file-name-replace-whitespace
+
+The standard functions @code{capitalize}, @code{downcase},
+@code{upcase}, and @code{upcase-initials} may be useful, too.
+
+Everybody knows that whitespace characters in file names are evil,
+except those who don't know. If you receive lots of attachments from
+such unenlightened users, you can make live easier by adding
+
+@lisp
+(setq mm-file-name-rewrite-functions
+ '(mm-file-name-trim-whitespace
+ mm-file-name-collapse-whitespace
+ mm-file-name-replace-whitespace))
+@end lisp
+
+@noindent
+to your @file{.gnus} file.
+
@end table
@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.
+variable, which is an alist of regexps (use the first item to match full
+group names) and default charsets to be used when reading these groups.
In addition, some people do use soi-disant @sc{mime}-aware agents that
aren't. These blithely mark messages as being in @code{iso-8859-1} even
@kindex C-c C-s C-i (Summary)
@findex gnus-summary-sort-by-score
Sort by score (@code{gnus-summary-sort-by-score}).
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+Sort using the default sorting method
+(@code{gnus-summary-sort-by-original}).
@end table
These functions will work both when you use threading and when you don't
@item B e
@kindex B e (Summary)
@findex gnus-summary-expire-articles
-Expire all expirable articles in the group
-(@code{gnus-summary-expire-articles}).
+Run all expirable articles in the current group through the expiry
+process (@code{gnus-summary-expire-articles}). That is, delete all
+expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
@item B M-C-e
@kindex B M-C-e (Summary)
@vindex gnus-preserve-marks
Move the article from one mail group to another
(@code{gnus-summary-move-article}). Marks will be preserved if
-@var{gnus-preserve-marks} is non-@code{nil} (which is the default).
+@var{gnus-preserve-marks} is non-@code{nil} (which is the default).
@item B c
@kindex B c (Summary)
@item M-s
@kindex M-s (Summary)
@findex gnus-summary-search-article-forward
-Search through all subsequent articles for a regexp
+Search through all subsequent (raw) articles for a regexp
(@code{gnus-summary-search-article-forward}).
@item M-r
@kindex M-r (Summary)
@findex gnus-summary-search-article-backward
-Search through all previous articles for a regexp
+Search through all previous (raw) articles for a regexp
(@code{gnus-summary-search-article-backward}).
@item &
encrypted messages.
@enumerate
-@item
+@item
To verify or decrypt PGP messages, you have to install mailcrypt or
gpg.el.
@end table
-@node The Article Buffer
-@chapter The Article Buffer
+@node Article Buffer
+@chapter Article Buffer
@cindex article buffer
The articles are displayed in the article buffer, of which there is only
@findex gnus-article-hide-boring-headers
@vindex gnus-boring-article-headers
You can hide further boring headers by setting
-@code{gnus-treat-hide-boring-header} to @code{head}. What this function
+@code{gnus-treat-hide-boring-headers} to @code{head}. What this function
does depends on the @code{gnus-boring-article-headers} variable. It's a
list, but this list doesn't actually contain header names. Instead is
lists various @dfn{boring conditions} that Gnus can check and remove
Remove all @code{To} headers if there are more than one.
@end table
-To include the four three elements, you could say something like;
+To include these three elements, you could say something like;
@lisp
(setq gnus-boring-article-headers
Prompt for a method, and then view the @sc{mime} object using this
method (@code{gnus-mime-view-part}).
+@findex gnus-mime-view-part-as-type
+@item t (Article)
+View the @sc{mime} object as if it were a different @sc{mime} media type
+(@code{gnus-mime-view-part-as-type}).
+
+@findex gnus-mime-view-part-as-charset
+@itemx C (Article)
+Prompt for a charset, and then view the @sc{mime} object using this
+charset (@code{gnus-mime-view-part-as-charset}).
+
@findex gnus-mime-save-part
@item o (Article)
Prompt for a file name, and then save the @sc{mime} object
(@code{gnus-mime-save-part}).
+@findex gnus-mime-save-part-and-strip
+@item C-o (Article)
+Prompt for a file name, then save the @sc{mime} object and strip it from
+the article. Then proceed to article editing, where a reasonable
+suggestion is being made on how the altered article should look
+like. The stripped @sc{mime} object will be referred via the
+message/external-body @sc{mime} type.
+(@code{gnus-mime-save-part-and-strip}).
+
@findex gnus-mime-copy-part
@item c (Article)
Copy the @sc{mime} object to a fresh buffer and display this buffer
(@code{gnus-mime-copy-part}).
-@findex gnus-mime-view-part-as-type
-@item t (Article)
-View the @sc{mime} object as if it were a different @sc{mime} media type
-(@code{gnus-mime-view-part-as-type}).
-
-@findex gnus-mime-pipe-part
-@item | (Article)
-Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
-
@findex gnus-mime-inline-part
@item i (Article)
Insert the contents of the @sc{mime} object into the buffer
@code{gnus-summary-show-article-charset-alist} in @pxref{Paging the
Article}).
+@findex gnus-mime-internalize-part
+@item E (Article)
+View the @sc{mime} object with an internal viewer. If no internal
+viewer is available, use an external viewer
+(@code{gnus-mime-internalize-part}).
+
+@findex gnus-mime-externalize-part
+@item e (Article)
+View the @sc{mime} object with an external viewer.
+(@code{gnus-mime-externalize-part}).
+
+@findex gnus-mime-pipe-part
+@item | (Article)
+Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
+
@findex gnus-mime-action-on-part
@item . (Article)
Interactively run an action on the @sc{mime} object
@item gnus-treat-hide-citation (t, integer)
@item gnus-treat-hide-citation-maybe (t, integer)
@item gnus-treat-strip-pgp (t, last, integer)
+@item gnus-treat-x-pgp-sig (head)
@item gnus-treat-strip-pem (t, last, integer)
@item gnus-treat-highlight-headers (head)
@item gnus-treat-highlight-citation (t, integer)
@code{gnus-part-display-hook}. The functions are called narrowed to the
part, and you can do anything you like, pretty much. There is no
information that you have to keep in the buffer---you can change
-everything.
+everything.
@node Article Keymap
@vindex gnus-post-method
-It can be quite complicated. Normally, Gnus will use the same native
-server. However. If your native server doesn't allow posting, just
-reading, you probably want to use some other server to post your
+It can be quite complicated. Normally, Gnus will post using the same
+select method as you're reading from (which might be convenient if
+you're reading lots of groups from different private servers).
+However. If the server you're reading from doesn't allow posting,
+just reading, you probably want to use some other server to post your
(extremely intelligent and fabulously interesting) articles. You can
then set the @code{gnus-post-method} to some other method:
Now, if you've done this, and then this server rejects your article, or
this server is down, what do you do then? To override this variable you
can use a non-zero prefix to the @kbd{C-c C-c} command to force using
-the ``current'' server for posting.
+the ``current'' server, to get back the default behavior, for posting.
If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command,
Gnus will prompt you for what method to use for posting.
If that's the case, Gnus will always prompt you for what method to use
for posting.
-Finally, if you want to always post using the same select method as
-you're reading from (which might be convenient if you're reading lots of
-groups from different private servers), you can set this variable to
-@code{current}.
+Finally, if you want to always post using the native select method,
+you can set this variable to @code{nil}.
@node Mail and Post
(add-hook 'gnus-select-group-hook
(lambda ()
(cond
- ((string-match "^de\\." gnus-newsgroup-name)
+ ((string-match
+ "^de\\." (gnus-group-real-name gnus-newsgroup-name))
(ispell-change-dictionary "deutsch"))
(t
(ispell-change-dictionary "english")))))
The first element in each style is called the @code{match}. If it's a
string, then Gnus will try to regexp match it against the group name.
-If it is the symbol @code{header}, then Gnus will look for header that
-match the next element in the match, and compare that to the last header
-in the match. If it's a function symbol, that function will be called
-with no arguments. If it's a variable symbol, then the variable will be
-referenced. If it's a list, then that list will be @code{eval}ed. In
-any case, if this returns a non-@code{nil} value, then the style is said
-to @dfn{match}.
+If it is the symbol @code{header}, then Gnus will look for header (the
+next element in the match) in the original article , and compare that to
+the last regexp in the match. If it's a function symbol, that function
+will be called with no arguments. If it's a variable symbol, then the
+variable will be referenced. If it's a list, then that list will be
+@code{eval}ed. In any case, if this returns a non-@code{nil} value,
+then the style is said to @dfn{match}.
Each style may contain a arbitrary amount of @dfn{attributes}. Each
-attribute consists of a @code{(@var{name} . @var{value})} pair. The
+attribute consists of a @code{(@var{name} @var{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
(signature my-quote-randomizer))
((message-news-p)
(signature my-news-signature))
- (header "From\\|To" "larsi.*org"
+ (header "to" "larsi.*org"
(Organization "Somewhere, Inc."))
((posting-from-work-p)
(signature-file "~/.work-signature")
If you want to benefit of PGP2.6 compatibility, you might create a script named
@file{gpg-2comp} with these instructions:
-@code{
+@example
#!/bin/sh
exec gpg --rfc1991 "$@@"
-}
+@end example
If you don't want to use such compatibility, you can add the following line to
your @file{~/.emacs} or @file{~/.gnus}:
value may have special meaning for the backend in question.
One could say that a select method defines a @dfn{virtual server}---so
-we do just that (@pxref{The Server Buffer}).
+we do just that (@pxref{Server Buffer}).
The @dfn{name} of the group is the name the backend will recognize the
group as.
The different methods all have their peculiarities, of course.
@menu
-* The Server Buffer:: Making and editing virtual servers.
+* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
@end menu
-@node The Server Buffer
-@section The Server Buffer
+@node Server Buffer
+@section Server Buffer
Traditionally, a @dfn{server} is a machine or a piece of software that
one connects to, and then requests information from. Gnus does not
@lisp
(nntp "firewall"
- (nntp-address "the.firewall.machine")
- (nntp-open-connection-function nntp-open-rlogin)
- (nntp-end-of-line "\n")
- (nntp-rlogin-parameters
- ("telnet" "the.real.nntp.host" "nntp")))
+ (nntp-open-connection-function nntp-open-via-rlogin-and-telnet)
+ (nntp-via-address "the.firewall.machine")
+ (nntp-address "the.real.nntp.host")
+ (nntp-end-of-line "\n"))
@end lisp
If you want to use the wonderful @code{ssh} program to provide a
-compressed connection over the modem line, you could create a virtual
-server that would look something like this:
+compressed connection over the modem line, you could add the following
+configuration to the example above:
+
+@lisp
+ (nntp-via-rlogin-command "ssh")
+@end lisp
+
+If you're behind a firewall, but have direct access to the outside world
+through a wrapper command like "runsocks", you could open a socksified
+telnet connection to the news server as follows:
@lisp
-(nntp "news"
- (nntp-address "copper.uio.no")
- (nntp-rlogin-program "ssh")
- (nntp-open-connection-function nntp-open-rlogin)
- (nntp-end-of-line "\n")
- (nntp-rlogin-parameters
- ("telnet" "news.uio.no" "nntp")))
+(nntp "outside"
+ (nntp-pre-command "runsocks")
+ (nntp-open-connection-function nntp-open-via-telnet)
+ (nntp-address "the.news.server")
+ (nntp-end-of-line "\n"))
@end lisp
This means that you have to have set up @code{ssh-agent} correctly to
So, what happens if the machine was only feeling unwell temporarily?
How do you test to see whether the machine has come up again?
-You jump to the server buffer (@pxref{The Server Buffer}) and poke it
+You jump to the server buffer (@pxref{Server Buffer}) and poke it
with the following commands:
@table @kbd
The file contains one or more line, each of which define one server.
@item
-Each line may contain an arbitrary number of token/value pairs.
+Each line may contain an arbitrary number of token/value pairs.
The valid tokens include @samp{machine}, @samp{login}, @samp{password},
@samp{default}. In addition Gnus introduces two new tokens, not present
@lisp
'(("nntpd 1\\.5\\.11t"
- (remove-hook 'nntp-server-opened-hook 'nntp-send-mode-reader)))
+ (remove-hook 'nntp-server-opened-hook
+ 'nntp-send-mode-reader)))
@end lisp
This ensures that Gnus doesn't send the @code{MODE READER} command to
This hook is run as the last step when connecting to an @sc{nntp}
server.
-@findex nntp-open-rlogin
-@findex nntp-open-telnet
-@findex nntp-open-network-stream
-@item nntp-open-connection-function
-@vindex nntp-open-connection-function
-This function is used to connect to the remote system. Four pre-made
-functions are supplied:
-
-@table @code
-@item nntp-open-network-stream
-This is the default, and simply connects to some port or other on the
-remote system.
-
-@item nntp-open-rlogin
-Does an @samp{rlogin} on the
-remote system, and then does a @samp{telnet} to the @sc{nntp} server
-available there.
-
-@code{nntp-open-rlogin}-related variables:
-
-@table @code
-
-@item nntp-rlogin-program
-@vindex nntp-rlogin-program
-Program used to log in on remote machines. The default is @samp{rsh},
-but @samp{ssh} is a popular alternative.
-
-@item nntp-rlogin-parameters
-@vindex nntp-rlogin-parameters
-This list will be used as the parameter list given to @code{rsh}.
-
-@item nntp-rlogin-user-name
-@vindex nntp-rlogin-user-name
-User name on the remote system.
-
-@end table
-
-@item nntp-open-telnet
-Does a @samp{telnet} to the remote system and then another @samp{telnet}
-to get to the @sc{nntp} server.
-
-@code{nntp-open-telnet}-related variables:
-
-@table @code
-@item nntp-telnet-command
-@vindex nntp-telnet-command
-Command used to start @code{telnet}.
-
-@item nntp-telnet-switches
-@vindex nntp-telnet-switches
-List of strings to be used as the switches to the @code{telnet} command.
-
-@item nntp-telnet-user-name
-@vindex nntp-telnet-user-name
-User name for log in on the remote system.
-
-@item nntp-telnet-passwd
-@vindex nntp-telnet-passwd
-Password to use when logging in.
-
-@item nntp-telnet-parameters
-@vindex nntp-telnet-parameters
-A list of strings executed as a command after logging in
-via @code{telnet}.
-
-@item nntp-telnet-shell-prompt
-@vindex nntp-telnet-shell-prompt
-Regexp matching the shell prompt on the remote machine. The default is
-@samp{bash\\|\$ *\r?$\\|> *\r?}.
-
-@item nntp-open-telnet-envuser
-@vindex nntp-open-telnet-envuser
-If non-@code{nil}, the @code{telnet} session (client and server both)
-will support the @code{ENVIRON} option and not prompt for login name.
-This works for Solaris @code{telnet}, for instance.
-
-@end table
-
-@findex nntp-open-ssl-stream
-@item nntp-open-ssl-stream
-Opens a connection to a server over a @dfn{secure} channel. To use this
-you must have SSLay installed
-(@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distribution, for instance). You then
-define a server as follows:
-
-@lisp
-;; Type `C-c C-c' after you've finished editing.
-;;
-;; "snews" is port 563 and is predefined in our /etc/services
-;;
-(nntp "snews.bar.com"
- (nntp-open-connection-function nntp-open-ssl-stream)
- (nntp-port-number "snews")
- (nntp-address "snews.bar.com"))
-@end lisp
-
-@end table
-
-@item nntp-end-of-line
-@vindex nntp-end-of-line
-String to use as end-of-line marker when talking to the @sc{nntp}
-server. This is @samp{\r\n} by default, but should be @samp{\n} when
-using @code{rlogin} to talk to the server.
-
-@item nntp-rlogin-user-name
-@vindex nntp-rlogin-user-name
-User name on the remote system when using the @code{rlogin} connect
-function.
-
-@item nntp-address
-@vindex nntp-address
-The address of the remote system running the @sc{nntp} server.
-
-@item nntp-port-number
-@vindex nntp-port-number
-Port number to connect to when using the @code{nntp-open-network-stream}
-connect function.
-
@item nntp-buggy-select
@vindex nntp-buggy-select
Set this to non-@code{nil} if your select routine is buggy.
buffer. This is useful if you are debugging a Gnus/@sc{nntp} connection
that doesn't seem to work.
+@item nntp-open-connection-function
+@vindex nntp-open-connection-function
+It is possible to customize how the connection to the nntp server will
+be opened. If you specify an @code{nntp-open-connection-function}
+parameter, Gnus will use that function to establish the connection.
+Five pre-made functions are supplied. These functions can be grouped in
+two categories: direct connection functions (three pre-made), and
+indirect ones (two pre-made).
@end table
+@menu
+* Direct Functions:: Connecting directly to the server.
+* Indirect Functions:: Connecting indirectly to the server.
+* Common Variables:: Understood by several connection functions.
+@end menu
-@node News Spool
-@subsection News Spool
-@cindex nnspool
-@cindex news spool
-
-Subscribing to a foreign group from the local spool is extremely easy,
-and might be useful, for instance, to speed up reading groups that
-contain very big articles---@samp{alt.binaries.pictures.furniture}, for
-instance.
-Anyway, you just specify @code{nnspool} as the method and @code{""} (or
-anything else) as the address.
+@node Direct Functions
+@subsubsection Direct Functions
+@cindex direct connection functions
-If you have access to a local spool, you should probably use that as the
-native select method (@pxref{Finding the News}). It is normally faster
-than using an @code{nntp} select method, but might not be. It depends.
-You just have to try to find out what's best at your site.
+These functions are