@synindex fn cp
@synindex vr cp
@synindex pg cp
-@dircategory Editors
+@dircategory Emacs
@direntry
* Gnus: (gnus). The newsreader Gnus.
@end direntry
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright \copyright{} 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
This file documents Gnus, the GNU Emacs newsreader.
-Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Gnus 5.8.7.
+This manual corresponds to Gnus 5.9.0.
@end ifinfo
Composing Messages
* Mail:: Mailing and replying.
-* Post:: Posting and following up.
* Posting Server:: What server should you post via?
* Mail and Post:: Mailing and posting at the same time.
* Archived Messages:: Where Gnus stores the messages you've sent.
* 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.
+* Mail Back End 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.
+* Washing Mail:: Removing cruft from the mail you get.
* Duplicates:: Dealing with duplicated mail.
-* Not Reading Mail:: Using mail backends for reading other files.
-* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
+* Not Reading Mail:: Using mail back ends for reading other files.
+* Choosing a Mail Back End:: Gnus can read a variety of mail formats.
Mail Sources
* Mail Source Customization:: Some variables that influence things.
* Fetching Mail:: Using the mail source specifiers.
-Choosing a Mail Backend
+Choosing a Mail Back End
* 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.
+* MH Spool:: An mhspool-like back end.
* Mail Folders:: Having one file for each group.
-* Comparing Mail Backends:: An in-depth looks at pros and cons.
+* Comparing Mail Back Ends:: An in-depth looks at pros and cons.
Browsing the Web
SOUP
* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A backend for reading @sc{soup} packets.
+* SOUP Groups:: A back end for reading @sc{soup} packets.
* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
@sc{imap}
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendonitis in ten easy steps!
+* Buttons:: Get tendinitis in ten easy steps!
* Daemons:: Gnus can do things behind your back.
* NoCeM:: How to avoid spam and other fatty foods.
* Undo:: Some actions can be undone.
* 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
Gnus Reference Guide
* Gnus Utility Functions:: Common functions and variable to use.
-* Backend Interface:: How Gnus communicates with the servers.
+* Back End Interface:: How Gnus communicates with the servers.
* Score File Syntax:: A BNF definition of the score file standard.
* Headers:: How Gnus stores headers internally.
* Ranges:: A handy format for storing mucho numbers.
* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
* Various File Formats:: Formats of files that Gnus use.
-Backend Interface
+Back End Interface
-* Required Backend Functions:: Functions that must be implemented.
-* Optional Backend Functions:: Functions that need not be implemented.
+* Required Back End Functions:: Functions that must be implemented.
+* Optional Back End Functions:: Functions that need not be implemented.
* Error Messaging:: How to get messages and report errors.
-* Writing New Backends:: Extending old backends.
-* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
-* Mail-like Backends:: Some tips on mail backends.
+* Writing New Back Ends:: Extending old back ends.
+* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
+* Mail-like Back Ends:: Some tips on mail back ends.
Various File Formats
server.)
@findex gnus-group-browse-foreign-server
-@kindex B (Group)
+@kindex B @r{(Group)}
However, if you use one @sc{nntp} server regularly and are just
interested in a couple of groups from a different server, you would be
better served by using the @kbd{B} command in the group buffer. It will
appear on these servers will be subscribed (or not) just as native
groups are.
-For instance, if you use the @code{nnmbox} backend to read your mail, you
-would typically set this variable to
+For instance, if you use the @code{nnmbox} back end to read your mail,
+you would typically set this variable to
@lisp
(setq gnus-secondary-select-methods '((nnmbox "")))
me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
Applications}) will be much more expensive, of course.)
-Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
+Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
however you do it). Each subsequent slave Gnusae should be started with
@kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
files, but instead save @dfn{slave files} that contain information only
@code{nil}, you can always subscribe to the new groups just by pressing
@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
is @code{ask-server} by default. If you set this variable to
-@code{always}, then Gnus will query the backends for new groups even
+@code{always}, then Gnus will query the back ends for new groups even
when you do the @kbd{g} command (@pxref{Scanning New Messages}).
@menu
thought it would be nice to have two of these. This variable is more
meant for setting some ground rules, while the other variable is used
more for user fiddling. By default this variable makes all new groups
-that come from mail backends (@code{nnml}, @code{nnbabyl},
+that come from mail back ends (@code{nnml}, @code{nnbabyl},
@code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
don't like that, just set this variable to @code{nil}.
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.
+Some news servers (old versions of 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
@samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
the group lately.
+@item p
+@samp{#} (@code{gnus-process-mark}) if the group is process marked.
+
@item d
A string that says when you last read the group (@pxref{Group
Timestamp}).
@table @kbd
@item n
-@kindex n (Group)
+@kindex n @r{(Group)}
@findex gnus-group-next-unread-group
Go to the next group that has unread articles
(@code{gnus-group-next-unread-group}).
@item p
-@itemx DEL
-@kindex DEL (Group)
-@kindex p (Group)
+@itemx @key{DEL}
+@kindex @key{DEL} @r{(Group)}
+@kindex p @r{(Group)}
@findex gnus-group-prev-unread-group
Go to the previous group that has unread articles
(@code{gnus-group-prev-unread-group}).
@item N
-@kindex N (Group)
+@kindex N @r{(Group)}
@findex gnus-group-next-group
Go to the next group (@code{gnus-group-next-group}).
@item P
-@kindex P (Group)
+@kindex P @r{(Group)}
@findex gnus-group-prev-group
Go to the previous group (@code{gnus-group-prev-group}).
@item M-n
-@kindex M-n (Group)
+@kindex M-n @r{(Group)}
@findex gnus-group-next-unread-group-same-level
Go to the next unread group on the same (or lower) level
(@code{gnus-group-next-unread-group-same-level}).
@item M-p
-@kindex M-p (Group)
+@kindex M-p @r{(Group)}
@findex gnus-group-prev-unread-group-same-level
Go to the previous unread group on the same (or lower) level
(@code{gnus-group-prev-unread-group-same-level}).
@table @kbd
@item j
-@kindex j (Group)
+@kindex j @r{(Group)}
@findex gnus-group-jump-to-group
Jump to a group (and make it visible if it isn't already)
(@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
like living groups.
@item ,
-@kindex , (Group)
+@kindex , @r{(Group)}
@findex gnus-group-best-unread-group
Jump to the unread group with the lowest level
(@code{gnus-group-best-unread-group}).
@item .
-@kindex . (Group)
+@kindex . @r{(Group)}
@findex gnus-group-first-unread-group
Jump to the first group with unread articles
(@code{gnus-group-first-unread-group}).
@table @kbd
-@item SPACE
-@kindex SPACE (Group)
+@item @key{SPC}
+@kindex @key{SPC} @r{(Group)}
@findex gnus-group-read-group
Select the current group, switch to the summary buffer and display the
first unread article (@code{gnus-group-read-group}). If there are no
positive, Gnus fetches the @var{N} newest articles, if @var{N} is
negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
-@item RET
-@kindex RET (Group)
+Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
+articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
+- 4 2 SPC} fetches the 42 oldest ones.
+
+When you are in the group (in the Summary buffer), you can type
+@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
+ones.
+
+@item @key{RET}
+@kindex @key{RET} @r{(Group)}
+
@findex gnus-group-select-group
Select the current group and switch to the summary buffer
(@code{gnus-group-select-group}). Takes the same arguments as
does not display the first unread article automatically upon group
entry.
-@item M-RET
-@kindex M-RET (Group)
+@item M-@key{RET}
+@kindex M-@key{RET} @r{(Group)}
@findex gnus-group-quick-select-group
This does the same as the command above, but tries to do it with the
minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
scoring/killing will be performed, there will be no highlights and no
expunging. This might be useful if you're in a real hurry and have to
enter some humongous group. If you give a 0 prefix to this command
-(i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
+(i.e., @kbd{0 M-@key{RET}}), Gnus won't even generate the summary buffer,
which is useful if you want to toggle threading before generating the
summary buffer (@pxref{Summary Generation Commands}).
-@item M-SPACE
-@kindex M-SPACE (Group)
+@item M-@key{SPC}
+@kindex M-@key{SPC} @r{(Group)}
@findex gnus-group-visible-select-group
-This is yet one more command that does the same as the @kbd{RET}
+This is yet one more command that does the same as the @key{RET}
command, but this one does it without expunging and hiding dormants
(@code{gnus-group-visible-select-group}).
-@item M-C-RET
-@kindex M-C-RET (Group)
+@item C-M-@key{RET}
+@kindex C-M-@key{RET} @r{(Group)}
@findex gnus-group-select-group-ephemerally
Finally, this command selects the current group ephemerally without
doing any processing of its contents
@vindex gnus-select-group-hook
@vindex gnus-auto-select-first
@code{gnus-auto-select-first} control whether any articles are selected
-automatically when entering a group with the @kbd{SPACE} command.
+automatically when entering a group with the @key{SPC} command.
@table @code
@item S t
@itemx u
-@kindex S t (Group)
-@kindex u (Group)
+@kindex S t @r{(Group)}
+@kindex u @r{(Group)}
@findex gnus-group-unsubscribe-current-group
@c @icon{gnus-group-unsubscribe}
Toggle subscription to the current group
@item S s
@itemx U
-@kindex S s (Group)
-@kindex U (Group)
+@kindex S s @r{(Group)}
+@kindex U @r{(Group)}
@findex gnus-group-unsubscribe-group
Prompt for a group to subscribe, and then subscribe it. If it was
subscribed already, unsubscribe it instead
@item S k
@itemx C-k
-@kindex S k (Group)
-@kindex C-k (Group)
+@kindex S k @r{(Group)}
+@kindex C-k @r{(Group)}
@findex gnus-group-kill-group
@c @icon{gnus-group-kill-group}
Kill the current group (@code{gnus-group-kill-group}).
@item S y
@itemx C-y
-@kindex S y (Group)
-@kindex C-y (Group)
+@kindex S y @r{(Group)}
+@kindex C-y @r{(Group)}
@findex gnus-group-yank-group
Yank the last killed group (@code{gnus-group-yank-group}).
@item C-x C-t
-@kindex C-x C-t (Group)
+@kindex C-x C-t @r{(Group)}
@findex gnus-group-transpose-groups
Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
really a subscription command, but you can use it instead of a
@item S w
@itemx C-w
-@kindex S w (Group)
-@kindex C-w (Group)
+@kindex S w @r{(Group)}
+@kindex C-w @r{(Group)}
@findex gnus-group-kill-region
Kill all groups in the region (@code{gnus-group-kill-region}).
@item S z
-@kindex S z (Group)
+@kindex S z @r{(Group)}
@findex gnus-group-kill-all-zombies
Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
@item S C-k
-@kindex S C-k (Group)
+@kindex S C-k @r{(Group)}
@findex gnus-group-kill-level
Kill all groups on a certain level (@code{gnus-group-kill-level}).
These groups can't be yanked back after killing, so this command should
@table @kbd
@item c
-@kindex c (Group)
+@kindex c @r{(Group)}
@findex gnus-group-catchup-current
@vindex gnus-group-catchup-group-hook
@c @icon{gnus-group-catchup-current}
the group buffer.
@item C
-@kindex C (Group)
+@kindex C @r{(Group)}
@findex gnus-group-catchup-current-all
Mark all articles in this group, even the ticked ones, as read
(@code{gnus-group-catchup-current-all}).
@item M-c
-@kindex M-c (Group)
+@kindex M-c @r{(Group)}
@findex gnus-group-clear-data
Clear the data from the current group---nix out marks and the list of
read articles (@code{gnus-group-clear-data}).
@table @kbd
@item S l
-@kindex S l (Group)
+@kindex S l @r{(Group)}
@findex gnus-group-set-current-level
Set the level of the current group. If a numeric prefix is given, the
next @var{n} groups will have their levels set. The user will be
@table @kbd
@item #
-@kindex # (Group)
+@kindex # @r{(Group)}
@itemx M m
-@kindex M m (Group)
+@kindex M m @r{(Group)}
@findex gnus-group-mark-group
Set the mark on the current group (@code{gnus-group-mark-group}).
@item M-#
-@kindex M-# (Group)
+@kindex M-# @r{(Group)}
@itemx M u
-@kindex M u (Group)
+@kindex M u @r{(Group)}
@findex gnus-group-unmark-group
Remove the mark from the current group
(@code{gnus-group-unmark-group}).
@item M U
-@kindex M U (Group)
+@kindex M U @r{(Group)}
@findex gnus-group-unmark-all-groups
Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
@item M w
-@kindex M w (Group)
+@kindex M w @r{(Group)}
@findex gnus-group-mark-region
Mark all groups between point and mark (@code{gnus-group-mark-region}).
@item M b
-@kindex M b (Group)
+@kindex M b @r{(Group)}
@findex gnus-group-mark-buffer
Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
@item M r
-@kindex M r (Group)
+@kindex M r @r{(Group)}
@findex gnus-group-mark-regexp
Mark all groups that match some regular expression
(@code{gnus-group-mark-regexp}).
@table @kbd
@item G m
-@kindex G m (Group)
+@kindex G m @r{(Group)}
@findex gnus-group-make-group
@cindex making groups
Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
@item G r
-@kindex G r (Group)
+@kindex G r @r{(Group)}
@findex gnus-group-rename-group
@cindex renaming groups
Rename the current group to something else
(@code{gnus-group-rename-group}). This is valid only on some
groups---mail groups mostly. This command might very well be quite slow
-on some backends.
+on some back ends.
@item G c
-@kindex G c (Group)
+@kindex G c @r{(Group)}
@cindex customizing
@findex gnus-group-customize
Customize the group parameters (@code{gnus-group-customize}).
@item G e
-@kindex G e (Group)
+@kindex G e @r{(Group)}
@findex gnus-group-edit-group-method
@cindex renaming groups
Enter a buffer where you can edit the select method of the current
group (@code{gnus-group-edit-group-method}).
@item G p
-@kindex G p (Group)
+@kindex G p @r{(Group)}
@findex gnus-group-edit-group-parameters
Enter a buffer where you can edit the group parameters
(@code{gnus-group-edit-group-parameters}).
@item G E
-@kindex G E (Group)
+@kindex G E @r{(Group)}
@findex gnus-group-edit-group
Enter a buffer where you can edit the group info
(@code{gnus-group-edit-group}).
@item G d
-@kindex G d (Group)
+@kindex G d @r{(Group)}
@findex gnus-group-make-directory-group
@cindex nndir
Make a directory group (@pxref{Directory Groups}). You will be prompted
for a directory name (@code{gnus-group-make-directory-group}).
@item G h
-@kindex G h (Group)
+@kindex G h @r{(Group)}
@cindex help group
@findex gnus-group-make-help-group
Make the Gnus help group (@code{gnus-group-make-help-group}).
@item G a
-@kindex G a (Group)
+@kindex G a @r{(Group)}
@cindex (ding) archive
@cindex archive group
@findex gnus-group-make-archive-group
group will be created from @code{gnus-group-archive-directory}.
@item G k
-@kindex G k (Group)
+@kindex G k @r{(Group)}
@findex gnus-group-make-kiboze-group
@cindex nnkiboze
Make a kiboze group. You will be prompted for a name, for a regexp to
@xref{Kibozed Groups}.
@item G D
-@kindex G D (Group)
+@kindex G D @r{(Group)}
@findex gnus-group-enter-directory
@cindex nneething
Read an arbitrary directory as if it were a newsgroup with the
-@code{nneething} backend (@code{gnus-group-enter-directory}).
+@code{nneething} back end (@code{gnus-group-enter-directory}).
@xref{Anything Groups}.
@item G f
-@kindex G f (Group)
+@kindex G f @r{(Group)}
@findex gnus-group-make-doc-group
@cindex ClariNet Briefs
@cindex nndoc
type. @xref{Document Groups}.
@item G u
-@kindex G u (Group)
+@kindex G u @r{(Group)}
@vindex gnus-useful-groups
@findex gnus-group-make-useful-group
Create one of the groups mentioned in @code{gnus-useful-groups}
(@code{gnus-group-make-useful-group}).
@item G w
-@kindex G w (Group)
+@kindex G w @r{(Group)}
@findex gnus-group-make-web-group
@cindex DejaNews
@cindex Alta Vista
to a particular group by using a match string like
@samp{~g alt.sysadmin.recovery shaving}.
-@item G DEL
-@kindex G DEL (Group)
+@item G @key{DEL}
+@kindex G @key{DEL} @r{(Group)}
@findex gnus-group-delete-group
This function will delete the current group
(@code{gnus-group-delete-group}). If given a prefix, this function will
read-only groups (like @code{nntp} group), though.
@item G V
-@kindex G V (Group)
+@kindex G V @r{(Group)}
@findex gnus-group-make-empty-virtual
Make a new, fresh, empty @code{nnvirtual} group
(@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
@item G v
-@kindex G v (Group)
+@kindex G v @r{(Group)}
@findex gnus-group-add-to-virtual
Add the current group to an @code{nnvirtual} group
(@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
group is therefore impossible---you have to send mail to the mailing
list address instead.
+Some parameters have corresponding customizable variables, each of which
+is an alist of regexps and values.
+
@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)},
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
here (@pxref{Posting Styles}). The format is that of an entry in the
(signature "Funky Signature"))
@end example
+@item banner
+An item like @code{(banner . "regex")} causes any part of an article
+that matches the regular expression "regex" to be stripped. Instead of
+"regex", you can also use the symbol @code{signature} which strips the
+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 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}).
@node Listing Groups
@item l
@itemx A s
-@kindex A s (Group)
-@kindex l (Group)
+@kindex A s @r{(Group)}
+@kindex l @r{(Group)}
@findex gnus-group-list-groups
List all groups that have unread articles
(@code{gnus-group-list-groups}). If the numeric prefix is used, this
@item L
@itemx A u
-@kindex A u (Group)
-@kindex L (Group)
+@kindex A u @r{(Group)}
+@kindex L @r{(Group)}
@findex gnus-group-list-all-groups
List all groups, whether they have unread articles or not
(@code{gnus-group-list-all-groups}). If the numeric prefix is used,
unsubscribed groups).
@item A l
-@kindex A l (Group)
+@kindex A l @r{(Group)}
@findex gnus-group-list-level
List all unread groups on a specific level
(@code{gnus-group-list-level}). If given a prefix, also list the groups
with no unread articles.
@item A k
-@kindex A k (Group)
+@kindex A k @r{(Group)}
@findex gnus-group-list-killed
List all killed groups (@code{gnus-group-list-killed}). If given a
prefix argument, really list all groups that are available, but aren't
from the server.
@item A z
-@kindex A z (Group)
+@kindex A z @r{(Group)}
@findex gnus-group-list-zombies
List all zombie groups (@code{gnus-group-list-zombies}).
@item A m
-@kindex A m (Group)
+@kindex A m @r{(Group)}
@findex gnus-group-list-matching
List all unread, subscribed groups with names that match a regexp
(@code{gnus-group-list-matching}).
@item A M
-@kindex A M (Group)
+@kindex A M @r{(Group)}
@findex gnus-group-list-all-matching
List groups that match a regexp (@code{gnus-group-list-all-matching}).
@item A A
-@kindex A A (Group)
+@kindex A A @r{(Group)}
@findex gnus-group-list-active
List absolutely all groups in the active file(s) of the
server(s) you are connected to (@code{gnus-group-list-active}). This
Take the output with some grains of salt.
@item A a
-@kindex A a (Group)
+@kindex A a @r{(Group)}
@findex gnus-group-apropos
List all groups that have names that match a regexp
(@code{gnus-group-apropos}).
@item A d
-@kindex A d (Group)
+@kindex A d @r{(Group)}
@findex gnus-group-description-apropos
List all groups that have names or descriptions that match a regexp
(@code{gnus-group-description-apropos}).
@item A c
-@kindex A c (Group)
+@kindex A c @r{(Group)}
@findex gnus-group-list-cached
List all groups with cached articles (@code{gnus-group-list-cached}).
@item A ?
-@kindex A ? (Group)
+@kindex A ? @r{(Group)}
@findex gnus-group-list-dormant
List all groups with dormant articles (@code{gnus-group-list-dormant}).
@section Sorting Groups
@cindex sorting groups
-@kindex C-c C-s (Group)
+@kindex C-c C-s @r{(Group)}
@findex gnus-group-sort-groups
@vindex gnus-group-sort-function
The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
@table @kbd
@item G S a
-@kindex G S a (Group)
+@kindex G S a @r{(Group)}
@findex gnus-group-sort-groups-by-alphabet
Sort the group buffer alphabetically by group name
(@code{gnus-group-sort-groups-by-alphabet}).
@item G S u
-@kindex G S u (Group)
+@kindex G S u @r{(Group)}
@findex gnus-group-sort-groups-by-unread
Sort the group buffer by the number of unread articles
(@code{gnus-group-sort-groups-by-unread}).
@item G S l
-@kindex G S l (Group)
+@kindex G S l @r{(Group)}
@findex gnus-group-sort-groups-by-level
Sort the group buffer by group level
(@code{gnus-group-sort-groups-by-level}).
@item G S v
-@kindex G S v (Group)
+@kindex G S v @r{(Group)}
@findex gnus-group-sort-groups-by-score
Sort the group buffer by group score
(@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
@item G S r
-@kindex G S r (Group)
+@kindex G S r @r{(Group)}
@findex gnus-group-sort-groups-by-rank
Sort the group buffer by group rank
(@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
@item G S m
-@kindex G S m (Group)
+@kindex G S m @r{(Group)}
@findex gnus-group-sort-groups-by-method
-Sort the group buffer alphabetically by backend name
+Sort the group buffer alphabetically by back end name
(@code{gnus-group-sort-groups-by-method}).
@end table
@table @kbd
@item G P a
-@kindex G P a (Group)
+@kindex G P a @r{(Group)}
@findex gnus-group-sort-selected-groups-by-alphabet
Sort the groups alphabetically by group name
(@code{gnus-group-sort-selected-groups-by-alphabet}).
@item G P u
-@kindex G P u (Group)
+@kindex G P u @r{(Group)}
@findex gnus-group-sort-selected-groups-by-unread
Sort the groups by the number of unread articles
(@code{gnus-group-sort-selected-groups-by-unread}).
@item G P l
-@kindex G P l (Group)
+@kindex G P l @r{(Group)}
@findex gnus-group-sort-selected-groups-by-level
Sort the groups by group level
(@code{gnus-group-sort-selected-groups-by-level}).
@item G P v
-@kindex G P v (Group)
+@kindex G P v @r{(Group)}
@findex gnus-group-sort-selected-groups-by-score
Sort the groups by group score
(@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
@item G P r
-@kindex G P r (Group)
+@kindex G P r @r{(Group)}
@findex gnus-group-sort-selected-groups-by-rank
Sort the groups by group rank
(@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
@item G P m
-@kindex G P m (Group)
+@kindex G P m @r{(Group)}
@findex gnus-group-sort-selected-groups-by-method
-Sort the groups alphabetically by backend name
+Sort the groups alphabetically by back end name
(@code{gnus-group-sort-selected-groups-by-method}).
@end table
@table @kbd
@item b
-@kindex b (Group)
+@kindex b @r{(Group)}
@findex gnus-group-check-bogus-groups
Find bogus groups and delete them
(@code{gnus-group-check-bogus-groups}).
@item F
-@kindex F (Group)
+@kindex F @r{(Group)}
@findex gnus-group-find-new-groups
Find new groups and process them (@code{gnus-group-find-new-groups}).
With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
zombies.
@item C-c C-x
-@kindex C-c C-x (Group)
+@kindex C-c C-x @r{(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}).
-@item C-c M-C-x
-@kindex C-c M-C-x (Group)
+@item C-c C-M-x
+@kindex C-c C-M-x @r{(Group)}
@findex gnus-group-expire-all-groups
Run all articles in all groups through the expiry process
(@code{gnus-group-expire-all-groups}).
@table @kbd
@item B
-@kindex B (Group)
+@kindex B @r{(Group)}
@findex gnus-group-browse-foreign-server
You will be queried for a select method and a server name. Gnus will
then attempt to contact this server and let you browse the groups there
@findex gnus-group-prev-group
Go to the previous group (@code{gnus-group-prev-group}).
-@item SPACE
-@kindex SPACE (Browse)
+@item @key{SPC}
+@kindex @key{SPC} (Browse)
@findex gnus-browse-read-group
Enter the current group and display the first article
(@code{gnus-browse-read-group}).
-@item RET
-@kindex RET (Browse)
+@item @key{RET}
+@kindex @key{RET} (Browse)
@findex gnus-browse-select-group
Enter the current group (@code{gnus-browse-select-group}).
@table @kbd
@item z
-@kindex z (Group)
+@kindex z @r{(Group)}
@findex gnus-group-suspend
Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
but it kills all buffers except the Group buffer. I'm not sure why this
is a gain, but then who am I to judge?
@item q
-@kindex q (Group)
+@kindex q @r{(Group)}
@findex gnus-group-exit
@c @icon{gnus-group-exit}
Quit Gnus (@code{gnus-group-exit}).
@item Q
-@kindex Q (Group)
+@kindex Q @r{(Group)}
@findex gnus-group-quit
Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
The dribble file will be saved, though (@pxref{Auto Save}).
@end example
@findex gnus-topic-mode
-@kindex t (Group)
+@kindex t @r{(Group)}
To get this @emph{fab} functionality you simply turn on (ooh!) the
@code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
is a toggling command.)
``Un-indent'' the current topic so that it becomes a sub-topic of the
parent of its current parent (@code{gnus-topic-unindent}).
-@item RET
-@kindex RET (Topic)
+@item @key{RET}
+@kindex @key{RET} (Topic)
@findex gnus-topic-select-group
-@itemx SPACE
+@itemx @key{SPC}
Either select a group or fold a topic (@code{gnus-topic-select-group}).
When you perform this command on a group, you'll enter the group, as
usual. When done on a topic line, the topic will be folded (if it was
@findex gnus-topic-rename
Rename a topic (@code{gnus-topic-rename}).
-@item T DEL
-@kindex T DEL (Topic)
+@item T @key{DEL}
+@kindex T @key{DEL} (Topic)
@findex gnus-topic-delete
Delete an empty topic (@code{gnus-topic-delete}).
@item T S m
@kindex T S m (Topic)
@findex gnus-topic-sort-groups-by-method
-Sort the current topic alphabetically by backend name
+Sort the current topic alphabetically by back end name
(@code{gnus-topic-sort-groups-by-method}).
@end table
@table @kbd
@item ^
-@kindex ^ (Group)
+@kindex ^ @r{(Group)}
@findex gnus-group-enter-server-mode
Enter the server buffer (@code{gnus-group-enter-server-mode}).
@xref{The Server Buffer}.
@item a
-@kindex a (Group)
+@kindex a @r{(Group)}
@findex gnus-group-post-news
Post an article to a group (@code{gnus-group-post-news}). If given a
prefix, the current group name will be used as the default.
@item m
-@kindex m (Group)
+@kindex m @r{(Group)}
@findex gnus-group-mail
Mail a message somewhere (@code{gnus-group-mail}).
@table @kbd
@item g
-@kindex g (Group)
+@kindex g @r{(Group)}
@findex gnus-group-get-new-news
@c @icon{gnus-group-get-new-news}
Check the server(s) for new articles. If the numerical prefix is used,
this command will check only groups of level @var{arg} and lower
(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
command will force a total re-reading of the active file(s) from the
-backend(s).
+back end(s).
@item M-g
-@kindex M-g (Group)
+@kindex M-g @r{(Group)}
@findex gnus-group-get-new-news-this-group
@vindex gnus-goto-next-group-when-activating
@c @icon{gnus-group-get-new-news-this-group}
@findex gnus-activate-all-groups
@cindex activating groups
@item C-c M-g
-@kindex C-c M-g (Group)
+@kindex C-c M-g @r{(Group)}
Activate absolutely all groups (@code{gnus-activate-all-groups}).
@item R
-@kindex R (Group)
+@kindex R @r{(Group)}
@cindex restarting
@findex gnus-group-restart
Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
@item H f
-@kindex H f (Group)
+@kindex H f @r{(Group)}
@findex gnus-group-fetch-faq
@vindex gnus-group-faq-directory
@cindex FAQ
@item H d
@itemx C-c C-d
@c @icon{gnus-group-describe-group}
-@kindex H d (Group)
-@kindex C-c C-d (Group)
+@kindex H d @r{(Group)}
+@kindex C-c C-d @r{(Group)}
@cindex describing groups
@cindex group description
@findex gnus-group-describe-group
a prefix, force Gnus to re-read the description from the server.
@item M-d
-@kindex M-d (Group)
+@kindex M-d @r{(Group)}
@findex gnus-group-describe-all-groups
Describe all groups (@code{gnus-group-describe-all-groups}). If given a
prefix, force Gnus to re-read the description file from the server.
@item H v
@itemx V
-@kindex V (Group)
-@kindex H v (Group)
+@kindex V @r{(Group)}
+@kindex H v @r{(Group)}
@cindex version
@findex gnus-version
Display current Gnus version numbers (@code{gnus-version}).
@item ?
-@kindex ? (Group)
+@kindex ? @r{(Group)}
@findex gnus-group-describe-briefly
Give a very short help message (@code{gnus-group-describe-briefly}).
@item C-c C-i
-@kindex C-c C-i (Group)
+@kindex C-c C-i @r{(Group)}
@cindex info
@cindex manual
@findex gnus-info-find-node
@table @kbd
@item r
-@kindex r (Group)
+@kindex r @r{(Group)}
@findex gnus-group-read-init-file
@vindex gnus-init-file
@cindex reading init file
@file{~/.gnus}) (@code{gnus-group-read-init-file}).
@item s
-@kindex s (Group)
+@kindex s @r{(Group)}
@findex gnus-group-save-newsrc
@cindex saving .newsrc
Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
file(s) whether Gnus thinks it is necessary or not.
@c @item Z
-@c @kindex Z (Group)
+@c @kindex Z @r{(Group)}
@c @findex gnus-group-clear-dribble
@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
* Tree Display:: A more visual display of threads.
* Mail Group Commands:: Some commands can only be used in mail groups.
* Various Summary Stuff:: What didn't fit anywhere else.
-* Exiting the Summary Buffer:: Returning to the Group buffer.
+* Exiting the Summary Buffer:: Returning to the Group buffer,
+ or reselecting the current group.
* Crosspost Handling:: How crossposted articles are dealt with.
* Duplicate Suppression:: An alternative when crosspost handling fails.
@end menu
@table @kbd
@item G M-n
@itemx M-n
-@kindex M-n (Summary)
-@kindex G M-n (Summary)
+@kindex M-n @r{(Summary)}
+@kindex G M-n @r{(Summary)}
@findex gnus-summary-next-unread-subject
Go to the next summary line of an unread article
(@code{gnus-summary-next-unread-subject}).
@item G M-p
@itemx M-p
-@kindex M-p (Summary)
-@kindex G M-p (Summary)
+@kindex M-p @r{(Summary)}
+@kindex G M-p @r{(Summary)}
@findex gnus-summary-prev-unread-subject
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)
+@kindex G g @r{(Summary)}
@findex gnus-summary-goto-subject
Ask for an article number and then go to the summary line of that article
without displaying the article (@code{gnus-summary-goto-subject}).
None of the following movement commands understand the numeric prefix,
and they all select and display an article.
+If you want to fetch new articles or redisplay the group, see
+@ref{Exiting the Summary Buffer}.
+
@table @kbd
-@item SPACE
-@kindex SPACE (Summary)
+@item @key{SPC}
+@kindex @key{SPC} @r{(Summary)}
@findex gnus-summary-next-page
Select the current article, or, if that one's read already, the next
unread article (@code{gnus-summary-next-page}).
@item G n
@itemx n
-@kindex n (Summary)
-@kindex G n (Summary)
+@kindex n @r{(Summary)}
+@kindex G n @r{(Summary)}
@findex gnus-summary-next-unread-article
@c @icon{gnus-summary-next-unread}
Go to next unread article (@code{gnus-summary-next-unread-article}).
@item G p
@itemx p
-@kindex p (Summary)
+@kindex p @r{(Summary)}
@findex gnus-summary-prev-unread-article
@c @icon{gnus-summary-prev-unread}
Go to previous unread article (@code{gnus-summary-prev-unread-article}).
@item G N
@itemx N
-@kindex N (Summary)
-@kindex G N (Summary)
+@kindex N @r{(Summary)}
+@kindex G N @r{(Summary)}
@findex gnus-summary-next-article
Go to the next article (@code{gnus-summary-next-article}).
@item G P
@itemx P
-@kindex P (Summary)
-@kindex G P (Summary)
+@kindex P @r{(Summary)}
+@kindex G P @r{(Summary)}
@findex gnus-summary-prev-article
Go to the previous article (@code{gnus-summary-prev-article}).
@item G C-n
-@kindex G C-n (Summary)
+@kindex G C-n @r{(Summary)}
@findex gnus-summary-next-same-subject
Go to the next article with the same subject
(@code{gnus-summary-next-same-subject}).
@item G C-p
-@kindex G C-p (Summary)
+@kindex G C-p @r{(Summary)}
@findex gnus-summary-prev-same-subject
Go to the previous article with the same subject
(@code{gnus-summary-prev-same-subject}).
@item G f
@itemx .
-@kindex G f (Summary)
-@kindex . (Summary)
+@kindex G f @r{(Summary)}
+@kindex . @r{(Summary)}
@findex gnus-summary-first-unread-article
Go to the first unread article
(@code{gnus-summary-first-unread-article}).
@item G b
@itemx ,
-@kindex G b (Summary)
-@kindex , (Summary)
+@kindex G b @r{(Summary)}
+@kindex , @r{(Summary)}
@findex gnus-summary-best-unread-article
Go to the article with the highest score
(@code{gnus-summary-best-unread-article}).
@item G l
@itemx l
-@kindex l (Summary)
-@kindex G l (Summary)
+@kindex l @r{(Summary)}
+@kindex G l @r{(Summary)}
@findex gnus-summary-goto-last-article
Go to the previous article read (@code{gnus-summary-goto-last-article}).
@item G o
-@kindex G o (Summary)
+@kindex G o @r{(Summary)}
@findex gnus-summary-pop-article
@cindex history
@cindex article history
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 @r{(Summary)}
+@kindex G j @r{(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
@table @kbd
-@item SPACE
-@kindex SPACE (Summary)
+@item @key{SPC}
+@kindex @key{SPC} @r{(Summary)}
@findex gnus-summary-next-page
-Pressing @kbd{SPACE} will scroll the current article forward one page,
+Pressing @key{SPC} will scroll the current article forward one page,
or, if you have come to the end of the current article, will choose the
next article (@code{gnus-summary-next-page}).
-@item DEL
-@kindex DEL (Summary)
+@item @key{DEL}
+@kindex @key{DEL} @r{(Summary)}
@findex gnus-summary-prev-page
Scroll the current article back one page (@code{gnus-summary-prev-page}).
-@item RET
-@kindex RET (Summary)
+@item @key{RET}
+@kindex @key{RET} @r{(Summary)}
@findex gnus-summary-scroll-up
Scroll the current article one line forward
(@code{gnus-summary-scroll-up}).
-@item M-RET
-@kindex M-RET (Summary)
+@item M-@key{RET}
+@kindex M-@key{RET} @r{(Summary)}
@findex gnus-summary-scroll-down
Scroll the current article one line backward
(@code{gnus-summary-scroll-down}).
@item A g
@itemx g
-@kindex A g (Summary)
-@kindex g (Summary)
+@kindex A g @r{(Summary)}
+@kindex g @r{(Summary)}
@findex gnus-summary-show-article
@vindex gnus-summary-show-article-charset-alist
(Re)fetch the current article (@code{gnus-summary-show-article}). If
the way it came from the server.
If given a numerical prefix, you can do semi-manual charset stuff.
-@kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
+@kbd{C-u 0 g cn-gb-2312 @key{RET}} will decode the message as if it were
encoded in the @code{cn-gb-2312} charset. If you have
@lisp
@item A <
@itemx <
-@kindex < (Summary)
-@kindex A < (Summary)
+@kindex < @r{(Summary)}
+@kindex A < @r{(Summary)}
@findex gnus-summary-beginning-of-article
Scroll to the beginning of the article
(@code{gnus-summary-beginning-of-article}).
@item A >
@itemx >
-@kindex > (Summary)
-@kindex A > (Summary)
+@kindex > @r{(Summary)}
+@kindex A > @r{(Summary)}
@findex gnus-summary-end-of-article
Scroll to the end of the article (@code{gnus-summary-end-of-article}).
@item A s
@itemx s
-@kindex A s (Summary)
-@kindex s (Summary)
+@kindex A s @r{(Summary)}
+@kindex s @r{(Summary)}
@findex gnus-summary-isearch-article
Perform an isearch in the article buffer
(@code{gnus-summary-isearch-article}).
@item h
-@kindex h (Summary)
+@kindex h @r{(Summary)}
@findex gnus-summary-select-article-buffer
Select the article buffer (@code{gnus-summary-select-article-buffer}).
@item S r
@itemx r
-@kindex S r (Summary)
-@kindex r (Summary)
+@kindex S r @r{(Summary)}
+@kindex r @r{(Summary)}
@findex gnus-summary-reply
@c @icon{gnus-summary-mail-reply}
@c @icon{gnus-summary-reply}
@item S R
@itemx R
-@kindex R (Summary)
-@kindex S R (Summary)
+@kindex R @r{(Summary)}
+@kindex S R @r{(Summary)}
@findex gnus-summary-reply-with-original
@c @icon{gnus-summary-reply-with-original}
Mail a reply to the author of the current article and include the
command uses the process/prefix convention.
@item S w
-@kindex S w (Summary)
+@kindex S w @r{(Summary)}
@findex gnus-summary-wide-reply
Mail a wide reply to the author of the current article
(@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
@code{Reply-to}) and @code{Cc} headers.
@item S W
-@kindex S W (Summary)
+@kindex S W @r{(Summary)}
@findex gnus-summary-wide-reply-with-original
Mail a wide reply to the current article and include the original
message (@code{gnus-summary-wide-reply-with-original}). This command uses
@item S o m
@itemx C-c C-f
-@kindex S o m (Summary)
-@kindex C-c C-f (Summary)
+@kindex S o m @r{(Summary)}
+@kindex C-c C-f @r{(Summary)}
@findex gnus-summary-mail-forward
@c @icon{gnus-summary-mail-forward}
Forward the current article to some other person
(@code{gnus-summary-mail-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
-message and forward directly inline; if the prefix is 2, foward message
+message and forward directly inline; if the prefix is 2, forward message
as an rfc822 MIME section; if the prefix is 3, decode message and
-forward as an rfc822 MIME section; if the prefix is 4, foward message
+forward as an rfc822 MIME section; if the prefix is 4, forward message
directly inline; otherwise, the message is forwarded as no prefix given
but use the flipped value of (@code{message-forward-as-mime}). By
default, the message is decoded and forwarded as an rfc822 MIME section.
@item S m
@itemx m
-@kindex m (Summary)
-@kindex S m (Summary)
+@kindex m @r{(Summary)}
+@kindex S m @r{(Summary)}
@findex gnus-summary-mail-other-window
@c @icon{gnus-summary-mail-originate}
Send a mail to some other person
(@code{gnus-summary-mail-other-window}).
@item S D b
-@kindex S D b (Summary)
+@kindex S D b @r{(Summary)}
@findex gnus-summary-resend-bounced-mail
@cindex bouncing mail
If you have sent a mail, but the mail was bounced back to you for some
very well fail, though.
@item S D r
-@kindex S D r (Summary)
+@kindex S D r @r{(Summary)}
@findex gnus-summary-resend-message
Not to be confused with the previous command,
@code{gnus-summary-resend-message} will prompt you for an address to
(@pxref{Process/Prefix}).
@item S O m
-@kindex S O m (Summary)
+@kindex S O m @r{(Summary)}
@findex gnus-uu-digest-mail-forward
Digest the current series (@pxref{Decoding Articles}) and forward the
result using mail (@code{gnus-uu-digest-mail-forward}). This command
uses the process/prefix convention (@pxref{Process/Prefix}).
@item S M-c
-@kindex S M-c (Summary)
+@kindex S M-c @r{(Summary)}
@findex gnus-summary-mail-crosspost-complaint
@cindex crossposting
@cindex excessive crossposting
@table @kbd
@item S p
@itemx a
-@kindex a (Summary)
-@kindex S p (Summary)
+@kindex a @r{(Summary)}
+@kindex S p @r{(Summary)}
@findex gnus-summary-post-news
@c @icon{gnus-summary-post-news}
Post an article to the current group
@item S f
@itemx f
-@kindex f (Summary)
-@kindex S f (Summary)
+@kindex f @r{(Summary)}
+@kindex S f @r{(Summary)}
@findex gnus-summary-followup
@c @icon{gnus-summary-followup}
Post a followup to the current article (@code{gnus-summary-followup}).
@item S F
@itemx F
-@kindex S F (Summary)
-@kindex F (Summary)
+@kindex S F @r{(Summary)}
+@kindex F @r{(Summary)}
@c @icon{gnus-summary-followup-with-original}
@findex gnus-summary-followup-with-original
Post a followup to the current article and include the original message
process/prefix convention.
@item S n
-@kindex S n (Summary)
+@kindex S n @r{(Summary)}
@findex gnus-summary-followup-to-mail
Post a followup to the current article via news, even if you got the
message through mail (@code{gnus-summary-followup-to-mail}).
@item S N
-@kindex S N (Summary)
+@kindex S N @r{(Summary)}
@findex gnus-summary-followup-to-mail-with-original
Post a followup to the current article via news, even if you got the
message through mail and include the original message
the process/prefix convention.
@item S o p
-@kindex S o p (Summary)
+@kindex S o p @r{(Summary)}
@findex gnus-summary-post-forward
Forward the current article to a newsgroup
(@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
-message and forward directly inline; if the prefix is 2, foward message
+message and forward directly inline; if the prefix is 2, forward message
as an rfc822 MIME section; if the prefix is 3, decode message and
-forward as an rfc822 MIME section; if the prefix is 4, foward message
+forward as an rfc822 MIME section; if the prefix is 4, forward message
directly inline; otherwise, the message is forwarded as no prefix given
but use the flipped value of (@code{message-forward-as-mime}). By
default, the message is decoded and forwarded as an rfc822 MIME section.
@item S O p
-@kindex S O p (Summary)
+@kindex S O p @r{(Summary)}
@findex gnus-uu-digest-post-forward
@cindex digests
@cindex making digests
process/prefix convention.
@item S u
-@kindex S u (Summary)
+@kindex S u @r{(Summary)}
@findex gnus-uu-post-news
@c @icon{gnus-uu-post-news}
Uuencode a file, split it into parts, and post it as a series
@table @kbd
@item S y
-@kindex S y (Summary)
+@kindex S y @r{(Summary)}
@findex gnus-summary-yank-message
Yank the current article into an already existing Message composition
buffer (@code{gnus-summary-yank-message}). This command prompts for
Well, you can't cancel mail, but you can cancel posts.
@findex gnus-summary-cancel-article
-@kindex C (Summary)
+@kindex C @r{(Summary)}
@c @icon{gnus-summary-cancel-article}
Find the article you wish to cancel (you can only cancel your own
articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
your original article.
@findex gnus-summary-supersede-article
-@kindex S (Summary)
+@kindex S @r{(Summary)}
Go to the original article and press @kbd{S s}
(@code{gnus-summary-supersede-article}). You will be put in a buffer
where you can edit the article all you want before sending it off the
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}).
-@item SPACE
+@item @key{SPC}
@vindex gnus-unread-mark
Marked as unread (@code{gnus-unread-mark}).
@table @kbd
@item M c
@itemx M-u
-@kindex M c (Summary)
-@kindex M-u (Summary)
+@kindex M c @r{(Summary)}
+@kindex M-u @r{(Summary)}
@findex gnus-summary-clear-mark-forward
@cindex mark as unread
Clear all readedness-marks from the current article
@item M t
@itemx !
-@kindex ! (Summary)
-@kindex M t (Summary)
+@kindex ! @r{(Summary)}
+@kindex M t @r{(Summary)}
@findex gnus-summary-tick-article-forward
Tick the current article (@code{gnus-summary-tick-article-forward}).
@xref{Article Caching}.
@item M ?
@itemx ?
-@kindex ? (Summary)
-@kindex M ? (Summary)
+@kindex ? @r{(Summary)}
+@kindex M ? @r{(Summary)}
@findex gnus-summary-mark-as-dormant
Mark the current article as dormant
(@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
@item M d
@itemx d
-@kindex M d (Summary)
-@kindex d (Summary)
+@kindex M d @r{(Summary)}
+@kindex d @r{(Summary)}
@findex gnus-summary-mark-as-read-forward
Mark the current article as read
(@code{gnus-summary-mark-as-read-forward}).
@item D
-@kindex D (Summary)
+@kindex D @r{(Summary)}
@findex gnus-summary-mark-as-read-backward
Mark the current article as read and move point to the previous line
(@code{gnus-summary-mark-as-read-backward}).
@item M k
@itemx k
-@kindex k (Summary)
-@kindex M k (Summary)
+@kindex k @r{(Summary)}
+@kindex M k @r{(Summary)}
@findex gnus-summary-kill-same-subject-and-select
Mark all articles that have the same subject as the current one as read,
and then select the next unread article
@item M K
@itemx C-k
-@kindex M K (Summary)
-@kindex C-k (Summary)
+@kindex M K @r{(Summary)}
+@kindex C-k @r{(Summary)}
@findex gnus-summary-kill-same-subject
Mark all articles that have the same subject as the current one as read
(@code{gnus-summary-kill-same-subject}).
@item M C
-@kindex M C (Summary)
+@kindex M C @r{(Summary)}
@findex gnus-summary-catchup
@c @icon{gnus-summary-catchup}
Mark all unread articles as read (@code{gnus-summary-catchup}).
@item M C-c
-@kindex M C-c (Summary)
+@kindex M C-c @r{(Summary)}
@findex gnus-summary-catchup-all
Mark all articles in the group as read---even the ticked and dormant
articles (@code{gnus-summary-catchup-all}).
@item M H
-@kindex M H (Summary)
+@kindex M H @r{(Summary)}
@findex gnus-summary-catchup-to-here
Catchup the current group to point
(@code{gnus-summary-catchup-to-here}).
@item C-w
-@kindex C-w (Summary)
+@kindex C-w @r{(Summary)}
@findex gnus-summary-mark-region-as-read
Mark all articles between point and mark as read
(@code{gnus-summary-mark-region-as-read}).
@item M V k
-@kindex M V k (Summary)
+@kindex M V k @r{(Summary)}
@findex gnus-summary-kill-below
Kill all articles with scores below the default score (or below the
numeric prefix) (@code{gnus-summary-kill-below}).
@item M e
@itemx E
-@kindex M e (Summary)
-@kindex E (Summary)
+@kindex M e @r{(Summary)}
+@kindex E @r{(Summary)}
@findex gnus-summary-mark-as-expirable
Mark the current article as expirable
(@code{gnus-summary-mark-as-expirable}).
@item M b
-@kindex M b (Summary)
+@kindex M b @r{(Summary)}
@findex gnus-summary-set-bookmark
Set a bookmark in the current article
(@code{gnus-summary-set-bookmark}).
@item M B
-@kindex M B (Summary)
+@kindex M B @r{(Summary)}
@findex gnus-summary-remove-bookmark
Remove the bookmark from the current article
(@code{gnus-summary-remove-bookmark}).
@item M V c
-@kindex M V c (Summary)
+@kindex M V c @r{(Summary)}
@findex gnus-summary-clear-above
Clear all marks from articles with scores over the default score (or
over the numeric prefix) (@code{gnus-summary-clear-above}).
@item M V u
-@kindex M V u (Summary)
+@kindex M V u @r{(Summary)}
@findex gnus-summary-tick-above
Tick all articles with scores over the default score (or over the
numeric prefix) (@code{gnus-summary-tick-above}).
@item M V m
-@kindex M V m (Summary)
+@kindex M V m @r{(Summary)}
@findex gnus-summary-mark-above
Prompt for a mark, and mark all articles with scores over the default
score (or over the numeric prefix) with this mark
the next/previous unread article. If @code{nil}, point will just move
one line up or down. As a special case, if this variable is
@code{never}, all the marking commands as well as other commands (like
-@kbd{SPACE}) will move to the next article, whether it is unread or not.
+@key{SPC}) will move to the next article, whether it is unread or not.
The default is @code{t}.
previous (unread) article, I'm sure there are people that want that as
well.
-Multiply these five behaviours with five different marking commands, and
+Multiply these five behaviors by five different marking commands, and
you get a potentially complex set of variable to control what each
command should do.
@item M P p
@itemx #
-@kindex # (Summary)
-@kindex M P p (Summary)
+@kindex # @r{(Summary)}
+@kindex M P p @r{(Summary)}
@findex gnus-summary-mark-as-processable
Mark the current article with the process mark
(@code{gnus-summary-mark-as-processable}).
@item M P u
@itemx M-#
-@kindex M P u (Summary)
-@kindex M-# (Summary)
+@kindex M P u @r{(Summary)}
+@kindex M-# @r{(Summary)}
Remove the process mark, if any, from the current article
(@code{gnus-summary-unmark-as-processable}).
@item M P U
-@kindex M P U (Summary)
+@kindex M P U @r{(Summary)}
@findex gnus-summary-unmark-all-processable
Remove the process mark from all articles
(@code{gnus-summary-unmark-all-processable}).
@item M P i
-@kindex M P i (Summary)
+@kindex M P i @r{(Summary)}
@findex gnus-uu-invert-processable
Invert the list of process marked articles
(@code{gnus-uu-invert-processable}).
@item M P R
-@kindex M P R (Summary)
+@kindex M P R @r{(Summary)}
@findex gnus-uu-mark-by-regexp
Mark articles that have a @code{Subject} header that matches a regular
expression (@code{gnus-uu-mark-by-regexp}).
@item M P G
-@kindex M P G (Summary)
+@kindex M P G @r{(Summary)}
@findex gnus-uu-unmark-by-regexp
Unmark articles that have a @code{Subject} header that matches a regular
expression (@code{gnus-uu-unmark-by-regexp}).
@item M P r
-@kindex M P r (Summary)
+@kindex M P r @r{(Summary)}
@findex gnus-uu-mark-region
Mark articles in region (@code{gnus-uu-mark-region}).
@item M P t
-@kindex M P t (Summary)
+@kindex M P t @r{(Summary)}
@findex gnus-uu-mark-thread
Mark all articles in the current (sub)thread
(@code{gnus-uu-mark-thread}).
@item M P T
-@kindex M P T (Summary)
+@kindex M P T @r{(Summary)}
@findex gnus-uu-unmark-thread
Unmark all articles in the current (sub)thread
(@code{gnus-uu-unmark-thread}).
@item M P v
-@kindex M P v (Summary)
+@kindex M P v @r{(Summary)}
@findex gnus-uu-mark-over
Mark all articles that have a score above the prefix argument
(@code{gnus-uu-mark-over}).
@item M P s
-@kindex M P s (Summary)
+@kindex M P s @r{(Summary)}
@findex gnus-uu-mark-series
Mark all articles in the current series (@code{gnus-uu-mark-series}).
@item M P S
-@kindex M P S (Summary)
+@kindex M P S @r{(Summary)}
@findex gnus-uu-mark-sparse
Mark all series that have already had some articles marked
(@code{gnus-uu-mark-sparse}).
@item M P a
-@kindex M P a (Summary)
+@kindex M P a @r{(Summary)}
@findex gnus-uu-mark-all
Mark all articles in series order (@code{gnus-uu-mark-series}).
@item M P b
-@kindex M P b (Summary)
+@kindex M P b @r{(Summary)}
@findex gnus-uu-mark-buffer
Mark all articles in the buffer in the order they appear
(@code{gnus-uu-mark-buffer}).
@item M P k
-@kindex M P k (Summary)
+@kindex M P k @r{(Summary)}
@findex gnus-summary-kill-process-mark
Push the current process mark set onto the stack and unmark all articles
(@code{gnus-summary-kill-process-mark}).
@item M P y
-@kindex M P y (Summary)
+@kindex M P y @r{(Summary)}
@findex gnus-summary-yank-process-mark
Pop the previous process mark set from the stack and restore it
(@code{gnus-summary-yank-process-mark}).
@item M P w
-@kindex M P w (Summary)
+@kindex M P w @r{(Summary)}
@findex gnus-summary-save-process-mark
Push the current process mark set onto the stack
(@code{gnus-summary-save-process-mark}).
@item / /
@itemx / s
-@kindex / / (Summary)
+@kindex / / @r{(Summary)}
@findex gnus-summary-limit-to-subject
Limit the summary buffer to articles that match some subject
(@code{gnus-summary-limit-to-subject}).
@item / a
-@kindex / a (Summary)
+@kindex / a @r{(Summary)}
@findex gnus-summary-limit-to-author
Limit the summary buffer to articles that match some author
(@code{gnus-summary-limit-to-author}).
@item / x
-@kindex / x (Summary)
+@kindex / x @r{(Summary)}
@findex gnus-summary-limit-to-extra
Limit the summary buffer to articles that match one of the ``extra''
headers (@pxref{To From Newsgroups})
@item / u
@itemx x
-@kindex / u (Summary)
-@kindex x (Summary)
+@kindex / u @r{(Summary)}
+@kindex x @r{(Summary)}
@findex gnus-summary-limit-to-unread
Limit the summary buffer to articles not marked as read
(@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
dormant articles will also be excluded.
@item / m
-@kindex / m (Summary)
+@kindex / m @r{(Summary)}
@findex gnus-summary-limit-to-marks
Ask for a mark and then limit to all articles that have been marked
with that mark (@code{gnus-summary-limit-to-marks}).
@item / t
-@kindex / t (Summary)
+@kindex / t @r{(Summary)}
@findex gnus-summary-limit-to-age
Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
(@code{gnus-summary-limit-to-age}). If given a prefix, limit to
articles younger than that number of days.
@item / n
-@kindex / n (Summary)
+@kindex / n @r{(Summary)}
@findex gnus-summary-limit-to-articles
Limit the summary buffer to the current article
(@code{gnus-summary-limit-to-articles}). Uses the process/prefix
convention (@pxref{Process/Prefix}).
@item / w
-@kindex / w (Summary)
+@kindex / w @r{(Summary)}
@findex gnus-summary-pop-limit
Pop the previous limit off the stack and restore it
(@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
the stack.
@item / v
-@kindex / v (Summary)
+@kindex / v @r{(Summary)}
@findex gnus-summary-limit-to-score
Limit the summary buffer to articles that have a score at or above some
score (@code{gnus-summary-limit-to-score}).
@item / E
@itemx M S
-@kindex M S (Summary)
-@kindex / E (Summary)
+@kindex M S @r{(Summary)}
+@kindex / E @r{(Summary)}
@findex gnus-summary-limit-include-expunged
Include all expunged articles in the limit
(@code{gnus-summary-limit-include-expunged}).
@item / D
-@kindex / D (Summary)
+@kindex / D @r{(Summary)}
@findex gnus-summary-limit-include-dormant
Include all dormant articles in the limit
(@code{gnus-summary-limit-include-dormant}).
@item / *
-@kindex / * (Summary)
+@kindex / * @r{(Summary)}
@findex gnus-summary-limit-include-cached
Include all cached articles in the limit
(@code{gnus-summary-limit-include-cached}).
@item / d
-@kindex / d (Summary)
+@kindex / d @r{(Summary)}
@findex gnus-summary-limit-exclude-dormant
Exclude all dormant articles from the limit
(@code{gnus-summary-limit-exclude-dormant}).
@item / M
-@kindex / M (Summary)
+@kindex / M @r{(Summary)}
@findex gnus-summary-limit-exclude-marks
Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
@item / T
-@kindex / T (Summary)
+@kindex / T @r{(Summary)}
@findex gnus-summary-limit-include-thread
Include all the articles in the current thread in the limit.
@item / c
-@kindex / c (Summary)
+@kindex / c @r{(Summary)}
@findex gnus-summary-limit-exclude-childless-dormant
Exclude all dormant articles that have no children from the limit
(@code{gnus-summary-limit-exclude-childless-dormant}).
@item / C
-@kindex / C (Summary)
+@kindex / C @r{(Summary)}
@findex gnus-summary-limit-mark-excluded-as-read
Mark all excluded unread articles as read
(@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
Threading is done by looking at the @code{References} headers of the
articles. In a perfect world, this would be enough to build pretty
trees, but unfortunately, the @code{References} header is often broken
-or simply missing. Weird news propagation excarcerbates the problem,
+or simply missing. Weird news propagation exacerbates the problem,
so one has to employ other heuristics to get pleasing results. A
plethora of approaches exists, as detailed in horrible detail in
@pxref{Customizing Threading}.
connect as many loose threads as possible, you should set this variable
to @code{some} or a number. If you set it to a number, no more than
that number of extra old headers will be fetched. In either case,
-fetching old headers only works if the backend you are using carries
+fetching old headers only works if the back end you are using carries
overview files---this would normally be @code{nntp}, @code{nnspool} and
@code{nnml}. Also remember that if the root of the thread has been
expired by the server, there's not much Gnus can do about that.
@table @kbd
@item T k
-@itemx M-C-k
-@kindex T k (Summary)
-@kindex M-C-k (Summary)
+@itemx C-M-k
+@kindex T k @r{(Summary)}
+@kindex C-M-k @r{(Summary)}
@findex gnus-summary-kill-thread
Mark all articles in the current (sub-)thread as read
(@code{gnus-summary-kill-thread}). If the prefix argument is positive,
articles instead.
@item T l
-@itemx M-C-l
-@kindex T l (Summary)
-@kindex M-C-l (Summary)
+@itemx C-M-l
+@kindex T l @r{(Summary)}
+@kindex C-M-l @r{(Summary)}
@findex gnus-summary-lower-thread
Lower the score of the current (sub-)thread
(@code{gnus-summary-lower-thread}).
@item T i
-@kindex T i (Summary)
+@kindex T i @r{(Summary)}
@findex gnus-summary-raise-thread
Increase the score of the current (sub-)thread
(@code{gnus-summary-raise-thread}).
@item T #
-@kindex T # (Summary)
+@kindex T # @r{(Summary)}
@findex gnus-uu-mark-thread
Set the process mark on the current (sub-)thread
(@code{gnus-uu-mark-thread}).
@item T M-#
-@kindex T M-# (Summary)
+@kindex T M-# @r{(Summary)}
@findex gnus-uu-unmark-thread
Remove the process mark from the current (sub-)thread
(@code{gnus-uu-unmark-thread}).
@item T T
-@kindex T T (Summary)
+@kindex T T @r{(Summary)}
@findex gnus-summary-toggle-threads
Toggle threading (@code{gnus-summary-toggle-threads}).
@item T s
-@kindex T s (Summary)
+@kindex T s @r{(Summary)}
@findex gnus-summary-show-thread
Expose the (sub-)thread hidden under the current article, if any
(@code{gnus-summary-show-thread}).
@item T h
-@kindex T h (Summary)
+@kindex T h @r{(Summary)}
@findex gnus-summary-hide-thread
Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
@item T S
-@kindex T S (Summary)
+@kindex T S @r{(Summary)}
@findex gnus-summary-show-all-threads
Expose all hidden threads (@code{gnus-summary-show-all-threads}).
@item T H
-@kindex T H (Summary)
+@kindex T H @r{(Summary)}
@findex gnus-summary-hide-all-threads
Hide all threads (@code{gnus-summary-hide-all-threads}).
@item T t
-@kindex T t (Summary)
+@kindex T t @r{(Summary)}
@findex gnus-summary-rethread-current
Re-thread the current article's thread
(@code{gnus-summary-rethread-current}). This works even when the
summary buffer is otherwise unthreaded.
@item T ^
-@kindex T ^ (Summary)
+@kindex T ^ @r{(Summary)}
@findex gnus-summary-reparent-thread
Make the current article the child of the marked (or previous) article
(@code{gnus-summary-reparent-thread}).
@table @kbd
@item T n
-@kindex T n (Summary)
-@itemx M-C-n
-@kindex M-C-n (Summary)
+@kindex T n @r{(Summary)}
+@itemx C-M-n
+@kindex C-M-n @r{(Summary)}
@itemx M-down
-@kindex M-down (Summary)
+@kindex M-down @r{(Summary)}
@findex gnus-summary-next-thread
Go to the next thread (@code{gnus-summary-next-thread}).
@item T p
-@kindex T p (Summary)
-@itemx M-C-p
-@kindex M-C-p (Summary)
+@kindex T p @r{(Summary)}
+@itemx C-M-p
+@kindex C-M-p @r{(Summary)}
@itemx M-up
-@kindex M-up (Summary)
+@kindex M-up @r{(Summary)}
@findex gnus-summary-prev-thread
Go to the previous thread (@code{gnus-summary-prev-thread}).
@item T d
-@kindex T d (Summary)
+@kindex T d @r{(Summary)}
@findex gnus-summary-down-thread
Descend the thread (@code{gnus-summary-down-thread}).
@item T u
-@kindex T u (Summary)
+@kindex T u @r{(Summary)}
@findex gnus-summary-up-thread
Ascend the thread (@code{gnus-summary-up-thread}).
@item T o
-@kindex T o (Summary)
+@kindex T o @r{(Summary)}
@findex gnus-summary-top-thread
Go to the top of the thread (@code{gnus-summary-top-thread}).
@end table
@vindex gnus-thread-operation-ignore-subject
If you ignore subject while threading, you'll naturally end up with
threads that have several different subjects in them. If you then issue
-a command like `T k' (@code{gnus-summary-kill-thread}) you might not
+a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
wish to kill the entire thread, but just those parts of the thread that
have the same subject as the current article. If you like this idea,
you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
@vindex gnus-use-article-prefetch
You can control how many articles are to be pre-fetched by setting
@code{gnus-use-article-prefetch}. This is 30 by default, which means
-that when you read an article in the group, the backend will pre-fetch
-the next 30 articles. If this variable is @code{t}, the backend will
+that when you read an article in the group, the back end will pre-fetch
+the next 30 articles. If this variable is @code{t}, the back end will
pre-fetch all the articles it can without bound. If it is
@code{nil}, no pre-fetching will be done.
To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
all articles ticked or marked as dormant will then be copied
over to your local cache (@code{gnus-cache-directory}). Whether this
-cache is flat or hierarchal is controlled by the
+cache is flat or hierarchical is controlled by the
@code{gnus-use-long-file-name} variable, as usual.
When re-selecting a ticked or dormant article, it will be fetched from the
@table @kbd
@item *
-@kindex * (Summary)
+@kindex * @r{(Summary)}
@findex gnus-cache-enter-article
Make the current article persistent (@code{gnus-cache-enter-article}).
@item M-*
-@kindex M-* (Summary)
+@kindex M-* @r{(Summary)}
@findex gnus-cache-remove-article
Remove the current article from the persistent articles
(@code{gnus-cache-remove-article}). This will normally delete the
@item O o
@itemx o
-@kindex O o (Summary)
-@kindex o (Summary)
+@kindex O o @r{(Summary)}
+@kindex o @r{(Summary)}
@findex gnus-summary-save-article
@c @icon{gnus-summary-save-article}
Save the current article using the default article saver
(@code{gnus-summary-save-article}).
@item O m
-@kindex O m (Summary)
+@kindex O m @r{(Summary)}
@findex gnus-summary-save-article-mail
Save the current article in mail format
(@code{gnus-summary-save-article-mail}).
@item O r
-@kindex O r (Summary)
+@kindex O r @r{(Summary)}
@findex gnus-summary-save-article-rmail
Save the current article in rmail format
(@code{gnus-summary-save-article-rmail}).
@item O f
-@kindex O f (Summary)
+@kindex O f @r{(Summary)}
@findex gnus-summary-save-article-file
@c @icon{gnus-summary-save-article-file}
Save the current article in plain file format
(@code{gnus-summary-save-article-file}).
@item O F
-@kindex O F (Summary)
+@kindex O F @r{(Summary)}
@findex gnus-summary-write-article-file
Write the current article in plain file format, overwriting any previous
file contents (@code{gnus-summary-write-article-file}).
@item O b
-@kindex O b (Summary)
+@kindex O b @r{(Summary)}
@findex gnus-summary-save-article-body-file
Save the current article body in plain file format
(@code{gnus-summary-save-article-body-file}).
@item O h
-@kindex O h (Summary)
+@kindex O h @r{(Summary)}
@findex gnus-summary-save-article-folder
Save the current article in mh folder format
(@code{gnus-summary-save-article-folder}).
@item O v
-@kindex O v (Summary)
+@kindex O v @r{(Summary)}
@findex gnus-summary-save-article-vm
Save the current article in a VM folder
(@code{gnus-summary-save-article-vm}).
@item O p
-@kindex O p (Summary)
+@kindex O p @r{(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}).
@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
@table @kbd
@item X u
-@kindex X u (Summary)
+@kindex X u @r{(Summary)}
@findex gnus-uu-decode-uu
@c @icon{gnus-uu-decode-uu}
Uudecodes the current series (@code{gnus-uu-decode-uu}).
@item X U
-@kindex X U (Summary)
+@kindex X U @r{(Summary)}
@findex gnus-uu-decode-uu-and-save
Uudecodes and saves the current series
(@code{gnus-uu-decode-uu-and-save}).
@item X v u
-@kindex X v u (Summary)
+@kindex X v u @r{(Summary)}
@findex gnus-uu-decode-uu-view
Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
@item X v U
-@kindex X v U (Summary)
+@kindex X v U @r{(Summary)}
@findex gnus-uu-decode-uu-and-save-view
Uudecodes, views and saves the current series
(@code{gnus-uu-decode-uu-and-save-view}).
@table @kbd
@item X s
-@kindex X s (Summary)
+@kindex X s @r{(Summary)}
@findex gnus-uu-decode-unshar
Unshars the current series (@code{gnus-uu-decode-unshar}).
@item X S
-@kindex X S (Summary)
+@kindex X S @r{(Summary)}
@findex gnus-uu-decode-unshar-and-save
Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
@item X v s
-@kindex X v s (Summary)
+@kindex X v s @r{(Summary)}
@findex gnus-uu-decode-unshar-view
Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
@item X v S
-@kindex X v S (Summary)
+@kindex X v S @r{(Summary)}
@findex gnus-uu-decode-unshar-and-save-view
Unshars, views and saves the current series
(@code{gnus-uu-decode-unshar-and-save-view}).
@table @kbd
@item X p
-@kindex X p (Summary)
+@kindex X p @r{(Summary)}
@findex gnus-uu-decode-postscript
Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
@item X P
-@kindex X P (Summary)
+@kindex X P @r{(Summary)}
@findex gnus-uu-decode-postscript-and-save
Unpack and save the current PostScript series
(@code{gnus-uu-decode-postscript-and-save}).
@item X v p
-@kindex X v p (Summary)
+@kindex X v p @r{(Summary)}
@findex gnus-uu-decode-postscript-view
View the current PostScript series
(@code{gnus-uu-decode-postscript-view}).
@item X v P
-@kindex X v P (Summary)
+@kindex X v P @r{(Summary)}
@findex gnus-uu-decode-postscript-and-save-view
View and save the current PostScript series
(@code{gnus-uu-decode-postscript-and-save-view}).
@table @kbd
@item X o
-@kindex X o (Summary)
+@kindex X o @r{(Summary)}
@findex gnus-uu-decode-save
Save the current series
(@code{gnus-uu-decode-save}).
@item X b
-@kindex X b (Summary)
+@kindex X b @r{(Summary)}
@findex gnus-uu-decode-binhex
Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
doesn't really work yet.
@table @kbd
@item W H a
-@kindex W H a (Summary)
+@kindex W H a @r{(Summary)}
@findex gnus-article-highlight
@findex gnus-article-maybe-highlight
Do much highlighting of the current article
text, the signature, and adds buttons to the body and the head.
@item W H h
-@kindex W H h (Summary)
+@kindex W H h @r{(Summary)}
@findex gnus-article-highlight-headers
@vindex gnus-header-face-alist
Highlight the headers (@code{gnus-article-highlight-headers}). The
@var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
@item W H c
-@kindex W H c (Summary)
+@kindex W H c @r{(Summary)}
@findex gnus-article-highlight-citation
Highlight cited text (@code{gnus-article-highlight-citation}).
@item W H s
-@kindex W H s (Summary)
+@kindex W H s @r{(Summary)}
@vindex gnus-signature-separator
@vindex gnus-signature-face
@findex gnus-article-highlight-signature
@cindex article emphasis
@findex gnus-article-emphasize
-@kindex W e (Summary)
+@kindex W e @r{(Summary)}
People commonly add emphasis to words in news articles by writing things
like @samp{_this_} or @samp{*this*} or @samp{/this/}. Gnus can make
this look nicer by running the article through the @kbd{W e}
@table @kbd
@item W W a
-@kindex W W a (Summary)
+@kindex W W a @r{(Summary)}
@findex gnus-article-hide
Do quite a lot of hiding on the article buffer
(@kbd{gnus-article-hide}). In particular, this function will hide
headers, PGP, cited text and the signature.
@item W W h
-@kindex W W h (Summary)
+@kindex W W h @r{(Summary)}
@findex gnus-article-hide-headers
Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding
Headers}.
@item W W b
-@kindex W W b (Summary)
+@kindex W W b @r{(Summary)}
@findex gnus-article-hide-boring-headers
Hide headers that aren't particularly interesting
(@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
@item W W s
-@kindex W W s (Summary)
+@kindex W W s @r{(Summary)}
@findex gnus-article-hide-signature
Hide signature (@code{gnus-article-hide-signature}). @xref{Article
Signature}.
@item W W l
-@kindex W W l (Summary)
+@kindex W W l @r{(Summary)}
@findex gnus-article-hide-list-identifiers
@vindex gnus-list-identifiers
Strip list identifiers specified in @code{gnus-list-identifiers}. These
@end table
@item W W p
-@kindex W W p (Summary)
+@kindex W W p @r{(Summary)}
@findex gnus-article-hide-pgp
@vindex gnus-article-hide-pgp-hook
Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). The
@end lisp
@item W W P
-@kindex W W P (Summary)
+@kindex W W P @r{(Summary)}
@findex gnus-article-hide-pem
Hide @sc{pem} (privacy enhanced messages) cruft
(@code{gnus-article-hide-pem}).
@item W W B
-@kindex W W B (Summary)
+@kindex W W B @r{(Summary)}
@findex gnus-article-strip-banner
@cindex banner
@cindex OneList
-@cindex stripping advertisments
-@cindex advertisments
+@cindex stripping advertisements
+@cindex advertisements
Strip the banner specified by the @code{banner} group parameter
(@code{gnus-article-strip-banner}). This is mainly used to hide those
annoying banners and/or signatures that some mailing lists and moderated
used.
@item W W c
-@kindex W W c (Summary)
+@kindex W W c @r{(Summary)}
@findex gnus-article-hide-citation
Hide citation (@code{gnus-article-hide-citation}). Some variables for
customizing the hiding:
@end table
@item W W C-c
-@kindex W W C-c (Summary)
+@kindex W W C-c @r{(Summary)}
@findex gnus-article-hide-citation-maybe
Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
@end table
@item W W C
-@kindex W W C (Summary)
+@kindex W W C @r{(Summary)}
@findex gnus-article-hide-citation-in-followups
Hide cited text in articles that aren't roots
(@code{gnus-article-hide-citation-in-followups}). This isn't very
something else'', but normally results in something looking better.
Cleaner, perhaps.
+@xref{Customizing Articles}, if you want to change how Gnus displays
+articles by default.
+
@table @kbd
+@item C-u g
+This is not really washing, it's sort of the opposite of washing. If
+you type this, you see the article exactly as it exists on disk or on
+the server.
+
@item W l
-@kindex W l (Summary)
+@kindex W l @r{(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
delimiters.
@item W r
-@kindex W r (Summary)
+@kindex W r @r{(Summary)}
@findex gnus-summary-caesar-message
@c @icon{gnus-summary-caesar-message}
Do a Caesar rotate (rot13) on the article buffer
Unreadable articles that tell you to read them with Caesar rotate or rot13.
(Typically offensive jokes and such.)
-It's commonly called ``rot13'' because each letter is rotated 13
+It's commonly called @dfn{rot13} because each letter is rotated 13
positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
#15). It is sometimes referred to as ``Caesar rotate'' because Caesar
is rumored to have employed this form of, uh, somewhat weak encryption.
@item W t
@item t
-@kindex W t (Summary)
-@kindex t (Summary)
+@kindex W t @r{(Summary)}
+@kindex t @r{(Summary)}
@findex gnus-summary-toggle-header
Toggle whether to display all headers in the article buffer
(@code{gnus-summary-toggle-header}).
@item W v
-@kindex W v (Summary)
+@kindex W v @r{(Summary)}
@findex gnus-summary-verbose-header
Toggle whether to display all headers in the article buffer permanently
(@code{gnus-summary-verbose-header}).
@item W o
-@kindex W o (Summary)
+@kindex W o @r{(Summary)}
@findex gnus-article-treat-overstrike
Treat overstrike (@code{gnus-article-treat-overstrike}).
@item W d
-@kindex W d (Summary)
+@kindex W d @r{(Summary)}
@findex gnus-article-treat-dumbquotes
@vindex gnus-article-dumbquotes-map
@cindex Smartquotes
whether a character is a sm*rtq**t* or not, so it should only be used
interactively.
+In reality, this function is translates a subset of the subset of the
+@code{cp1252} (or @code{Windows-1252}) character set that isn't in ISO
+Latin-1, including the quote characters @code{\222} and @code{\264}.
+Messages in this character set often have a MIME header saying that
+they are Latin-1.
+
@item W w
-@kindex W w (Summary)
+@kindex W w @r{(Summary)}
@findex gnus-article-fill-cited-article
Do word wrap (@code{gnus-article-fill-cited-article}).
when filling.
@item W Q
-@kindex W Q (Summary)
+@kindex W Q @r{(Summary)}
@findex gnus-article-fill-long-lines
Fill long lines (@code{gnus-article-fill-long-lines}).
@item W C
-@kindex W C (Summary)
+@kindex W C @r{(Summary)}
@findex gnus-article-capitalize-sentences
Capitalize the first word in each sentence
(@code{gnus-article-capitalize-sentences}).
@item W c
-@kindex W c (Summary)
+@kindex W c @r{(Summary)}
@findex gnus-article-remove-cr
Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF
(this takes care of DOS line endings), and then translate any remaining
(@code{gnus-article-remove-cr}).
@item W q
-@kindex W q (Summary)
+@kindex W q @r{(Summary)}
@findex gnus-article-de-quoted-unreadable
Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
Quoted-Printable is one common @sc{mime} encoding employed when sending
header that says that this encoding has been done.
@item W 6
-@kindex W 6 (Summary)
+@kindex W 6 @r{(Summary)}
@findex gnus-article-de-base64-unreadable
Treat base64 (@code{gnus-article-de-base64-unreadable}).
Base64 is one common @sc{mime} encoding employed when sending non-ASCII
been done.
@item W Z
-@kindex W Z (Summary)
+@kindex W Z @r{(Summary)}
@findex gnus-article-decode-HZ
Treat HZ or HZP (@code{gnus-article-decode-HZ}). HZ (or HZP) is one
common encoding employed when sending Chinese articles. It typically
makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
@item W h
-@kindex W h (Summary)
+@kindex W h @r{(Summary)}
@findex gnus-article-wash-html
Treat HTML (@code{gnus-article-wash-html}).
Note that the this is usually done automatically by Gnus if the message
has been done.
@item W f
-@kindex W f (Summary)
+@kindex W f @r{(Summary)}
@cindex x-face
@findex gnus-article-display-x-face
@findex gnus-article-x-face-command
\include{xface}
@end iflatex
@end iftex
+@anchor{X-Face}
Look for and display any X-Face headers
(@code{gnus-article-display-x-face}). The command executed by this
function is given by the @code{gnus-article-x-face-command} variable.
last.
@item W b
-@kindex W b (Summary)
+@kindex W b @r{(Summary)}
@findex gnus-article-add-buttons
Add clickable buttons to the article (@code{gnus-article-add-buttons}).
@xref{Article Buttons}.
@item W B
-@kindex W B (Summary)
+@kindex W B @r{(Summary)}
@findex gnus-article-add-buttons-to-head
Add clickable buttons to the article headers
(@code{gnus-article-add-buttons-to-head}).
@item W W H
-@kindex W W H (Summary)
+@kindex W W H @r{(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)
+@kindex W E l @r{(Summary)}
@findex gnus-article-strip-leading-blank-lines
Remove all blank lines from the beginning of the article
(@code{gnus-article-strip-leading-blank-lines}).
@item W E m
-@kindex W E m (Summary)
+@kindex W E m @r{(Summary)}
@findex gnus-article-strip-multiple-blank-lines
Replace all blank lines with empty lines and then all multiple empty
lines with a single empty line.
(@code{gnus-article-strip-multiple-blank-lines}).
@item W E t
-@kindex W E t (Summary)
+@kindex W E t @r{(Summary)}
@findex gnus-article-remove-trailing-blank-lines
Remove all blank lines at the end of the article
(@code{gnus-article-remove-trailing-blank-lines}).
@item W E a
-@kindex W E a (Summary)
+@kindex W E a @r{(Summary)}
@findex gnus-article-strip-blank-lines
Do all the three commands above
(@code{gnus-article-strip-blank-lines}).
@item W E A
-@kindex W E A (Summary)
+@kindex W E A @r{(Summary)}
@findex gnus-article-strip-all-blank-lines
Remove all blank lines
(@code{gnus-article-strip-all-blank-lines}).
@item W E s
-@kindex W E s (Summary)
+@kindex W E s @r{(Summary)}
@findex gnus-article-strip-leading-space
Remove all white space from the beginning of all lines of the article
body (@code{gnus-article-strip-leading-space}).
@item W E e
-@kindex W E e (Summary)
+@kindex W E e @r{(Summary)}
@findex gnus-article-strip-trailing-space
Remove all white space from the end of all lines of the article
body (@code{gnus-article-strip-trailing-space}).
People often include references to other stuff in articles, and it would
be nice if Gnus could just fetch whatever it is that people talk about
-with the minimum of fuzz when you hit @kbd{RET} or use the middle mouse
+with the minimum of fuzz when you hit @key{RET} or use the middle mouse
button on these references.
Gnus adds @dfn{buttons} to certain standard references by default:
@table @kbd
@item W T u
-@kindex W T u (Summary)
+@kindex W T u @r{(Summary)}
@findex gnus-article-date-ut
Display the date in UT (aka. GMT, aka ZULU)
(@code{gnus-article-date-ut}).
@item W T i
-@kindex W T i (Summary)
+@kindex W T i @r{(Summary)}
@findex gnus-article-date-iso8601
@cindex ISO 8601
Display the date in international format, aka. ISO 8601
(@code{gnus-article-date-iso8601}).
@item W T l
-@kindex W T l (Summary)
+@kindex W T l @r{(Summary)}
@findex gnus-article-date-local
Display the date in the local timezone (@code{gnus-article-date-local}).
@item W T s
-@kindex W T s (Summary)
+@kindex W T s @r{(Summary)}
@vindex gnus-article-time-format
@findex gnus-article-date-user
@findex format-time-string
for a list of possible format specs.
@item W T e
-@kindex W T e (Summary)
+@kindex W T e @r{(Summary)}
@findex gnus-article-date-lapsed
@findex gnus-start-date-timer
@findex gnus-stop-date-timer
(@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
command.
@item W T o
-@kindex W T o (Summary)
+@kindex W T o @r{(Summary)}
@findex gnus-article-date-original
Display the original date (@code{gnus-article-date-original}). This can
be useful if you normally use some other conversion function and are
@table @kbd
@item A t
-@kindex A t (Summary)
+@kindex A t @r{(Summary)}
@findex gnus-article-babel
Translate the article from one language to another
(@code{gnus-article-babel}).
@table @kbd
@item b
@itemx K v
-@kindex b (Summary)
-@kindex K v (Summary)
+@kindex b @r{(Summary)}
+@kindex K v @r{(Summary)}
View the @sc{mime} part.
@item K o
-@kindex K o (Summary)
+@kindex K o @r{(Summary)}
Save the @sc{mime} part.
@item K c
-@kindex K c (Summary)
+@kindex K c @r{(Summary)}
Copy the @sc{mime} part.
@item K e
-@kindex K e (Summary)
+@kindex K e @r{(Summary)}
View the @sc{mime} part externally.
@item K i
-@kindex K i (Summary)
+@kindex K i @r{(Summary)}
View the @sc{mime} part internally.
@item K |
-@kindex K | (Summary)
+@kindex K | @r{(Summary)}
Pipe the @sc{mime} part to an external command.
@end table
@table @kbd
@item K b
-@kindex K b (Summary)
+@kindex K b @r{(Summary)}
Make all the @sc{mime} parts have buttons in front of them. This is
mostly useful if you wish to save (or perform other actions) on inlined
parts.
@item K m
-@kindex K m (Summary)
+@kindex K m @r{(Summary)}
@findex gnus-summary-repair-multipart
Some multipart messages are transmitted with missing or faulty headers.
This command will attempt to ``repair'' these messages so that they can
(@code{gnus-summary-repair-multipart}).
@item X m
-@kindex X m (Summary)
+@kindex X m @r{(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)
+@kindex M-t @r{(Summary)}
@findex gnus-summary-display-buttonized
Toggle the buttonized display of the article buffer
(@code{gnus-summary-toggle-display-buttonized}).
@item W M w
-@kindex W M w (Summary)
+@kindex W M w @r{(Summary)}
Decode RFC 2047-encoded words in the article headers
(@code{gnus-article-decode-mime-words}).
@item W M c
-@kindex W M c (Summary)
+@kindex W M c @r{(Summary)}
Decode encoded article bodies as well as charsets
(@code{gnus-article-decode-charset}).
the required charset (@pxref{Group Parameters}).
@item W M v
-@kindex W M v (Summary)
+@kindex W M v @r{(Summary)}
View all the @sc{mime} parts in the current article
(@code{gnus-mime-view-all-parts}).
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
+aren't. These blithely 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
(define-coding-system-alias 'windows-1251 'cp1251)
@end lisp
+while if you use a non-Latin-1 language environment you could see the
+Latin-1 subset of @code{windows-1252} using:
+
+@lisp
+(define-coding-system-alias 'windows-1252 'latin-1)
+@end lisp
+
@node Article Commands
@section Article Commands
@item A P
@cindex PostScript
@cindex printing
-@kindex A P (Summary)
+@kindex A P @r{(Summary)}
@vindex gnus-ps-print-hook
@findex gnus-summary-print-article
Generate and print a PostScript image of the article buffer
@table @kbd
@item C-c C-s C-n
-@kindex C-c C-s C-n (Summary)
+@kindex C-c C-s C-n @r{(Summary)}
@findex gnus-summary-sort-by-number
Sort by article number (@code{gnus-summary-sort-by-number}).
@item C-c C-s C-a
-@kindex C-c C-s C-a (Summary)
+@kindex C-c C-s C-a @r{(Summary)}
@findex gnus-summary-sort-by-author
Sort by author (@code{gnus-summary-sort-by-author}).
@item C-c C-s C-s
-@kindex C-c C-s C-s (Summary)
+@kindex C-c C-s C-s @r{(Summary)}
@findex gnus-summary-sort-by-subject
Sort by subject (@code{gnus-summary-sort-by-subject}).
@item C-c C-s C-d
-@kindex C-c C-s C-d (Summary)
+@kindex C-c C-s C-d @r{(Summary)}
@findex gnus-summary-sort-by-date
Sort by date (@code{gnus-summary-sort-by-date}).
@item C-c C-s C-l
-@kindex C-c C-s C-l (Summary)
+@kindex C-c C-s C-l @r{(Summary)}
@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)
+@kindex C-c C-s C-c @r{(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)
+@kindex C-c C-s C-i @r{(Summary)}
@findex gnus-summary-sort-by-score
Sort by score (@code{gnus-summary-sort-by-score}).
@end table
@table @kbd
@item ^
-@kindex ^ (Summary)
+@kindex ^ @r{(Summary)}
@findex gnus-summary-refer-parent-article
If you'd like to read the parent of the current article, and it is not
displayed in the summary buffer, you might still be able to. That is,
@kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
article.
-@item A R (Summary)
+@item A R @r{(Summary)}
@findex gnus-summary-refer-references
-@kindex A R (Summary)
+@kindex A R @r{(Summary)}
Fetch all articles mentioned in the @code{References} header of the
article (@code{gnus-summary-refer-references}).
-@item A T (Summary)
+@item A T @r{(Summary)}
@findex gnus-summary-refer-thread
-@kindex A T (Summary)
+@kindex A T @r{(Summary)}
Display the full thread where the current article appears
(@code{gnus-summary-refer-thread}). This command has to fetch all the
headers in the current group to work, so it usually takes a while. If
the available headers will be fetched. This variable can be overridden
by giving the @kbd{A T} command a numerical prefix.
-@item M-^ (Summary)
+@item M-^ @r{(Summary)}
@findex gnus-summary-refer-article
-@kindex M-^ (Summary)
+@kindex M-^ @r{(Summary)}
@cindex Message-ID
@cindex fetching by Message-ID
You can also ask the @sc{nntp} server for an arbitrary article, no
by giving this command a prefix.
@vindex gnus-refer-article-method
-If the group you are reading is located on a backend that does not
+If the group you are reading is located on a back end that does not
support fetching by @code{Message-ID} very well (like @code{nnspool}),
you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It
would, perhaps, be best if the @sc{nntp} server you consult is the one
(nnweb "refer" (nnweb-type dejanews))))
@end lisp
-Most of the mail backends support fetching by @code{Message-ID}, but do
+Most of the mail back ends support fetching by @code{Message-ID}, but do
not do a particularly excellent job at it. That is, @code{nnmbox} and
@code{nnbabyl} are able to locate articles from any groups, while
@code{nnml} and @code{nnfolder} are only able to locate articles that
thread or article and pick it. (The line number is normally displayed
at the beginning of the summary pick lines.)
-@item SPACE
-@kindex SPACE (Pick)
+@item @key{SPC}
+@kindex @key{SPC} (Pick)
@findex gnus-pick-next-page
Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If
at the end of the buffer, start reading the picked articles.
just the article. You can give this key a numerical prefix to unpick
the thread or article at that line.
-@item RET
-@kindex RET (Pick)
+@item @key{RET}
+@kindex @key{RET} (Pick)
@findex gnus-pick-start-reading
@vindex gnus-pick-display-summary
Start reading the picked articles (@code{gnus-pick-start-reading}). If
@findex gnus-binary-mode
@kindex M-x gnus-binary-mode
If you spend much time in binary groups, you may grow tired of hitting
-@kbd{X u}, @kbd{n}, @kbd{RET} all the time. @kbd{M-x gnus-binary-mode}
+@kbd{X u}, @kbd{n}, @key{RET} all the time. @kbd{M-x gnus-binary-mode}
is a minor mode for summary buffers that makes all ordinary Gnus article
selection functions uudecode series of articles and display the result
instead of just displaying the articles the normal way.
@table @kbd
@item B e
-@kindex B e (Summary)
+@kindex B e @r{(Summary)}
@findex gnus-summary-expire-articles
Expire all expirable articles in the group
(@code{gnus-summary-expire-articles}).
-@item B M-C-e
-@kindex B M-C-e (Summary)
+@item B C-M-e
+@kindex B C-M-e @r{(Summary)}
@findex gnus-summary-expire-articles-now
Delete all the expirable articles in the group
(@code{gnus-summary-expire-articles-now}). This means that @strong{all}
articles eligible for expiry in the current group will
disappear forever into that big @file{/dev/null} in the sky.
-@item B DEL
-@kindex B DEL (Summary)
+@item B @key{DEL}
+@kindex B @key{DEL} @r{(Summary)}
@findex gnus-summary-delete-article
@c @icon{gnus-summary-mail-delete}
Delete the mail article. This is ``delete'' as in ``delete it from your
(@code{gnus-summary-delete-article}).
@item B m
-@kindex B m (Summary)
+@kindex B m @r{(Summary)}
@cindex move mail
@findex gnus-summary-move-article
@vindex gnus-preserve-marks
@var{gnus-preserve-marks} is non-@code{nil} (which is the default).
@item B c
-@kindex B c (Summary)
+@kindex B c @r{(Summary)}
@cindex copy mail
@findex gnus-summary-copy-article
@c @icon{gnus-summary-mail-copy}
@var{gnus-preserve-marks} is non-@code{nil} (which is the default).
@item B B
-@kindex B B (Summary)
+@kindex B B @r{(Summary)}
@cindex crosspost mail
@findex gnus-summary-crosspost-article
Crosspost the current article to some other group
be properly updated.
@item B i
-@kindex B i (Summary)
+@kindex B i @r{(Summary)}
@findex gnus-summary-import-article
Import an arbitrary file into the current mail newsgroup
(@code{gnus-summary-import-article}). You will be prompted for a file
name, a @code{From} header and a @code{Subject} header.
@item B r
-@kindex B r (Summary)
+@kindex B r @r{(Summary)}
@findex gnus-summary-respool-article
Respool the mail article (@code{gnus-summary-respool-article}).
@code{gnus-summary-respool-default-method} will be used as the default
@item B w
@itemx e
-@kindex B w (Summary)
-@kindex e (Summary)
+@kindex B w @r{(Summary)}
+@kindex e @r{(Summary)}
@findex gnus-summary-edit-article
-@kindex C-c C-c (Article)
+@kindex C-c C-c @r{(Article)}
Edit the current article (@code{gnus-summary-edit-article}). To finish
editing and make the changes permanent, type @kbd{C-c C-c}
(@kbd{gnus-summary-edit-article-done}). If you give a prefix to the
@kbd{C-c C-c} command, Gnus won't re-highlight the article.
@item B q
-@kindex B q (Summary)
+@kindex B q @r{(Summary)}
@findex gnus-summary-respool-query
If you want to re-spool an article, you might be curious as to what group
the article will end up in before you do the re-spooling. This command
will tell you (@code{gnus-summary-respool-query}).
@item B t
-@kindex B t (Summary)
+@kindex B t @r{(Summary)}
@findex gnus-summary-respool-trace
Similarly, this command will display all fancy splitting patterns used
when repooling, if any (@code{gnus-summary-respool-trace}).
@item B p
-@kindex B p (Summary)
+@kindex B p @r{(Summary)}
@findex gnus-summary-article-posted-p
Some people have a tendency to send you "courtesy" copies when they
follow up to articles you have posted. These usually have a
suggest where to put the articles. @code{gnus-move-split-methods} is a
variable that uses the same syntax as @code{gnus-split-methods}
(@pxref{Saving Articles}). You may customize that variable to create
-suggestions you find reasonable.
+suggestions you find reasonable. (Note that
+@code{gnus-move-split-methods} uses group names where
+@code{gnus-split-methods} uses file names.)
@lisp
(setq gnus-move-split-methods
@table @kbd
@item H f
-@kindex H f (Summary)
+@kindex H f @r{(Summary)}
@findex gnus-summary-fetch-faq
@vindex gnus-group-faq-directory
Try to fetch the FAQ (list of frequently asked questions) for the
be used for fetching the file.
@item H d
-@kindex H d (Summary)
+@kindex H d @r{(Summary)}
@findex gnus-summary-describe-group
Give a brief description of the current group
(@code{gnus-summary-describe-group}). If given a prefix, force
rereading the description from the server.
@item H h
-@kindex H h (Summary)
+@kindex H h @r{(Summary)}
@findex gnus-summary-describe-briefly
Give an extremely brief description of the most important summary
keystrokes (@code{gnus-summary-describe-briefly}).
@item H i
-@kindex H i (Summary)
+@kindex H i @r{(Summary)}
@findex gnus-info-find-node
Go to the Gnus info node (@code{gnus-info-find-node}).
@end table
@table @kbd
@item M-s
-@kindex M-s (Summary)
+@kindex M-s @r{(Summary)}
@findex gnus-summary-search-article-forward
Search through all subsequent articles for a regexp
(@code{gnus-summary-search-article-forward}).
@item M-r
-@kindex M-r (Summary)
+@kindex M-r @r{(Summary)}
@findex gnus-summary-search-article-backward
Search through all previous articles for a regexp
(@code{gnus-summary-search-article-backward}).
@item &
-@kindex & (Summary)
+@kindex & @r{(Summary)}
@findex gnus-summary-execute-command
This command will prompt you for a header, a regular expression to match
on this field, and a command to be executed if the match is made
string, the match is done on the entire article. If given a prefix,
search backward instead.
-For instance, @kbd{& RET some.*string #} will put the process mark on
+For instance, @kbd{& @key{RET} some.*string #} will put the process mark on
all articles that have heads or bodies that match @samp{some.*string}.
@item M-&
-@kindex M-& (Summary)
+@kindex M-& @r{(Summary)}
@findex gnus-summary-universal-argument
Perform any operation on all articles that have been marked with
the process mark (@code{gnus-summary-universal-argument}).
@table @kbd
@item Y g
-@kindex Y g (Summary)
+@kindex Y g @r{(Summary)}
@findex gnus-summary-prepare
Regenerate the current summary buffer (@code{gnus-summary-prepare}).
@item Y c
-@kindex Y c (Summary)
+@kindex Y c @r{(Summary)}
@findex gnus-summary-insert-cached-articles
Pull all cached articles (for the current group) into the summary buffer
(@code{gnus-summary-insert-cached-articles}).
@item A D
@itemx C-d
-@kindex C-d (Summary)
-@kindex A D (Summary)
+@kindex C-d @r{(Summary)}
+@kindex A D @r{(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
some format, you @kbd{C-d} and read these messages in a more convenient
fashion.
-@item M-C-d
-@kindex M-C-d (Summary)
+@item C-M-d
+@kindex C-M-d @r{(Summary)}
@findex gnus-summary-read-document
This command is very similar to the one above, but lets you gather
several documents into one biiig group
(@pxref{Process/Prefix}).
@item C-t
-@kindex C-t (Summary)
+@kindex C-t @r{(Summary)}
@findex gnus-summary-toggle-truncation
Toggle truncation of summary lines
(@code{gnus-summary-toggle-truncation}). This will probably confuse the
to have truncation switched off while reading articles.
@item =
-@kindex = (Summary)
+@kindex = @r{(Summary)}
@findex gnus-summary-expand-window
Expand the summary buffer window (@code{gnus-summary-expand-window}).
If given a prefix, force an @code{article} window configuration.
-@item M-C-e
-@kindex M-C-e (Summary)
+@item C-M-e
+@kindex C-M-e @r{(Summary)}
@findex gnus-summary-edit-parameters
Edit the group parameters (@pxref{Group Parameters}) of the current
group (@code{gnus-summary-edit-parameters}).
-@item M-C-a
-@kindex M-C-a (Summary)
+@item C-M-a
+@kindex C-M-a @r{(Summary)}
@findex gnus-summary-customize-parameters
Customize the group parameters (@pxref{Group Parameters}) of the current
group (@code{gnus-summary-customize-parameters}).
@item Z Z
@itemx q
-@kindex Z Z (Summary)
-@kindex q (Summary)
+@kindex Z Z @r{(Summary)}
+@kindex q @r{(Summary)}
@findex gnus-summary-exit
@vindex gnus-summary-exit-hook
@vindex gnus-summary-prepare-exit-hook
@item Z E
@itemx Q
-@kindex Z E (Summary)
-@kindex Q (Summary)
+@kindex Z E @r{(Summary)}
+@kindex Q @r{(Summary)}
@findex gnus-summary-exit-no-update
Exit the current group without updating any information on the group
(@code{gnus-summary-exit-no-update}).
@item Z c
@itemx c
-@kindex Z c (Summary)
-@kindex c (Summary)
+@kindex Z c @r{(Summary)}
+@kindex c @r{(Summary)}
@findex gnus-summary-catchup-and-exit
@c @icon{gnus-summary-catchup-and-exit}
Mark all unticked articles in the group as read and then exit
(@code{gnus-summary-catchup-and-exit}).
@item Z C
-@kindex Z C (Summary)
+@kindex Z C @r{(Summary)}
@findex gnus-summary-catchup-all-and-exit
Mark all articles, even the ticked ones, as read and then exit
(@code{gnus-summary-catchup-all-and-exit}).
@item Z n
-@kindex Z n (Summary)
+@kindex Z n @r{(Summary)}
@findex gnus-summary-catchup-and-goto-next-group
Mark all articles as read and go to the next group
(@code{gnus-summary-catchup-and-goto-next-group}).
@item Z R
-@kindex Z R (Summary)
+@kindex Z R @r{(Summary)}
@findex gnus-summary-reselect-current-group
Exit this group, and then enter it again
(@code{gnus-summary-reselect-current-group}). If given a prefix, select
@item Z G
@itemx M-g
-@kindex Z G (Summary)
-@kindex M-g (Summary)
+@kindex Z G @r{(Summary)}
+@kindex M-g @r{(Summary)}
@findex gnus-summary-rescan-group
@c @icon{gnus-summary-mail-get}
Exit the group, check for new articles in the group, and select the
articles, both read and unread.
@item Z N
-@kindex Z N (Summary)
+@kindex Z N @r{(Summary)}
@findex gnus-summary-next-group
Exit the group and go to the next group
(@code{gnus-summary-next-group}).
@item Z P
-@kindex Z P (Summary)
+@kindex Z P @r{(Summary)}
@findex gnus-summary-prev-group
Exit the group and go to the previous group
(@code{gnus-summary-prev-group}).
@item Z s
-@kindex Z s (Summary)
+@kindex Z s @r{(Summary)}
@findex gnus-summary-save-newsrc
Save the current number of read/marked articles in the dribble buffer
and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If
@table @kbd
@findex gnus-article-press-button
-@item RET (Article)
-@itemx BUTTON-2 (Article)
+@item @key{RET} @r{(Article)}
+@itemx Mouse-2 @r{(Article)}
Toggle displaying of the @sc{mime} object
(@code{gnus-article-press-button}).
@findex gnus-mime-view-part
-@item M-RET (Article)
-@itemx v (Article)
+@item M-@key{RET} @r{(Article)}
+@itemx v @r{(Article)}
Prompt for a method, and then view the @sc{mime} object using this
method (@code{gnus-mime-view-part}).
@findex gnus-mime-save-part
-@item o (Article)
+@item o @r{(Article)}
Prompt for a file name, and then save the @sc{mime} object
(@code{gnus-mime-save-part}).
@findex gnus-mime-copy-part
-@item c (Article)
+@item c @r{(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)
+@item t @r{(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)
+@item | @r{(Article)}
Output the @sc{mime} object to a process (@code{gnus-mime-pipe-part}).
@findex gnus-mime-inline-part
-@item i (Article)
+@item i @r{(Article)}
Insert the contents of the @sc{mime} object into the buffer
(@code{gnus-mime-inline-part}) as text/plain. If given a prefix, insert
-the raw contens without decoding. If given a numerical prefix, you can
+the raw contents without decoding. If given a numerical prefix, you can
do semi-manual charset stuff (see
@code{gnus-summary-show-article-charset-alist} in @pxref{Paging the
Article}).
@findex gnus-mime-action-on-part
-@item . (Article)
+@item . @r{(Article)}
Interactively run an action on the @sc{mime} object
(@code{gnus-mime-action-on-part}).
@table @kbd
-@item SPACE
-@kindex SPACE (Article)
+@item @key{SPC}
+@kindex @key{SPC} @r{(Article)}
@findex gnus-article-next-page
Scroll forwards one page (@code{gnus-article-next-page}).
-@item DEL
-@kindex DEL (Article)
+@item @key{DEL}
+@kindex @key{DEL} @r{(Article)}
@findex gnus-article-prev-page
Scroll backwards one page (@code{gnus-article-prev-page}).
@item C-c ^
-@kindex C-c ^ (Article)
+@kindex C-c ^ @r{(Article)}
@findex gnus-article-refer-article
If point is in the neighborhood of a @code{Message-ID} and you press
@kbd{C-c ^}, Gnus will try to get that article from the server
(@code{gnus-article-refer-article}).
@item C-c C-m
-@kindex C-c C-m (Article)
+@kindex C-c C-m @r{(Article)}
@findex gnus-article-mail
Send a reply to the address near point (@code{gnus-article-mail}). If
given a prefix, include the mail.
@item s
-@kindex s (Article)
+@kindex s @r{(Article)}
@findex gnus-article-show-summary
Reconfigure the buffers so that the summary buffer becomes visible
(@code{gnus-article-show-summary}).
@item ?
-@kindex ? (Article)
+@kindex ? @r{(Article)}
@findex gnus-article-describe-briefly
Give a very brief description of the available keystrokes
(@code{gnus-article-describe-briefly}).
@item TAB
-@kindex TAB (Article)
+@kindex TAB @r{(Article)}
@findex gnus-article-next-button
Go to the next button, if any (@code{gnus-article-next-button}). This
only makes sense if you have buttonizing turned on.
@item M-TAB
-@kindex M-TAB (Article)
+@kindex M-TAB @r{(Article)}
@findex gnus-article-prev-button
Go to the previous button, if any (@code{gnus-article-prev-button}).
@menu
* Mail:: Mailing and replying.
-* Post:: Posting and following up.
* Posting Server:: What server should you post via?
* Mail and Post:: Mailing and posting at the same time.
* Archived Messages:: Where Gnus stores the messages you've sent.
If non-@code{nil}, add a @code{to-list} group parameter to mail groups
that have none when you do a @kbd{a}.
-@item message-send-mail-partially-limit
-@vindex message-send-mail-partially-limit
-The limitation of messages sent as message/partial.
-The lower bound of message size in characters, beyond which the message
-should be sent in several parts. If it is nil, the size is unlimited.
-
-@end table
-
-
-@node Post
-@section Post
-
-Variables for composing news articles:
-
-@table @code
-@item gnus-sent-message-ids-file
-@vindex gnus-sent-message-ids-file
-Gnus will keep a @code{Message-ID} history file of all the mails it has
-sent. If it discovers that it has already sent a mail, it will ask the
-user whether to re-send the mail. (This is primarily useful when
-dealing with @sc{soup} packets and the like where one is apt to send the
-same packet multiple times.) This variable says what the name of this
-history file is. It is @file{~/News/Sent-Message-IDs} by default. Set
-this variable to @code{nil} if you don't want Gnus to keep a history
-file.
-
-@item gnus-sent-message-ids-length
-@vindex gnus-sent-message-ids-length
-This variable says how many @code{Message-ID}s to keep in the history
-file. It is 1000 by default.
-
@end table
@end lisp
You can, however, use any mail select method (@code{nnml},
-@code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method
+@code{nnmbox}, etc.). @code{nnfolder} is a quite likable select method
for doing this sort of thing, though. If you don't like the default
directory chosen, you could say something like:
((message-news-p)
(signature my-news-signature))
(header "From\\|To" "larsi.*org"
- (Organization "Somewhere, Inc."))
+ (Organization "Somewhere, Inc."))
((posting-from-work-p)
(signature-file "~/.work-signature")
(address "user@@bar.foo")
(body "You are fired.\n\nSincerely, your boss.")
(organization "Important Work, Inc"))
+ ("nnml:.*"
+ (From (save-excursion
+ (set-buffer gnus-article-buffer)
+ (message-fetch-field "to"))))
("^nn.+:"
(signature-file "~/.mail-signature"))))
@end lisp
+The @samp{nnml:.*} rule means that you use the @code{To} address as the
+@code{From} address in all your outgoing replies, which might be handy
+if you fill many roles.
+
@node Drafts
@section Drafts
A foreign group (or any group, really) is specified by a @dfn{name} and
a @dfn{select method}. To take the latter first, a select method is a
-list where the first element says what backend to use (e.g. @code{nntp},
+list where the first element says what back end to use (e.g. @code{nntp},
@code{nnspool}, @code{nnml}) and the second element is the @dfn{server
name}. There may be additional elements in the select method, where the
-value may have special meaning for the backend in question.
+value may have special meaning for the back end in question.
One could say that a select method defines a @dfn{virtual server}---so
we do just that (@pxref{The Server Buffer}).
-The @dfn{name} of the group is the name the backend will recognize the
+The @dfn{name} of the group is the name the back end will recognize the
group as.
For instance, the group @samp{soc.motss} on the @sc{nntp} server
@samp{some.where.edu} will have the name @samp{soc.motss} and select
method @code{(nntp "some.where.edu")}. Gnus will call this group
@samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp}
-backend just knows this group as @samp{soc.motss}.
+back end just knows this group as @samp{soc.motss}.
The different methods all have their peculiarities, of course.
Traditionally, a @dfn{server} is a machine or a piece of software that
one connects to, and then requests information from. Gnus does not
connect directly to any real servers, but does all transactions through
-one backend or other. But that's just putting one layer more between
+one back end or other. But that's just putting one layer more between
the actual media and Gnus, so we might just as well say that each
-backend represents a virtual server.
+back end represents a virtual server.
-For instance, the @code{nntp} backend may be used to connect to several
+For instance, the @code{nntp} back end may be used to connect to several
different actual @sc{nntp} servers, or, perhaps, to many different ports
-on the same actual @sc{nntp} server. You tell Gnus which backend to
+on the same actual @sc{nntp} server. You tell Gnus which back end to
use, and what parameters to set by specifying a @dfn{select method}.
These select method specifications can sometimes become quite
complicated---say, for instance, that you want to read from the
@sc{nntp} server @samp{news.funet.fi} on port number 13, which
hangs if queried for @sc{nov} headers and has a buggy select. Ahem.
-Anyways, if you had to specify that for each group that used this
+Anyway, if you had to specify that for each group that used this
server, that would be too much work, so Gnus offers a way of naming
select methods, which is what you do in the server buffer.
@table @samp
@item h
-How the news is fetched---the backend name.
+How the news is fetched---the back end name.
@item n
The name of this server.
@findex gnus-server-edit-server
Edit a server (@code{gnus-server-edit-server}).
-@item SPACE
-@kindex SPACE (Server)
+@item @key{SPC}
+@kindex @key{SPC} (Server)
@findex gnus-server-read-server
Browse the current server (@code{gnus-server-read-server}).
@findex gnus-server-regenerate-server
Request that the server regenerate all its data structures
(@code{gnus-server-regenerate-server}). This can be useful if you have
-a mail backend that has gotten out of synch.
+a mail back end that has gotten out of sync.
@end table
@end lisp
As you can see, the first element in a select method is the name of the
-backend, and the second is the @dfn{address}, or @dfn{name}, if you
+back end, and the second is the @dfn{address}, or @dfn{name}, if you
will.
After these two elements, there may be an arbitrary number of
(nntp "news.funet.fi" (nntp-port-number 15))
@end lisp
-You should read the documentation to each backend to find out what
+You should read the documentation to each back end to find out what
variables are relevant, but here's an @code{nnmh} example:
-@code{nnmh} is a mail backend that reads a spool-like structure. Say
+@code{nnmh} is a mail back end that reads a spool-like structure. Say
you have two structures that you wish to access: One is your private
mail spool, and the other is a public one. Here's the possible spec for
your private mail:
would probably be best to use @code{nnspool} to read the cache. You
could also use @code{nnml} or @code{nnmh}, though.
-Type @kbd{a nnspool RET cache RET}.
+Type @kbd{a nnspool @key{RET} cache @key{RET}}.
You should now have a brand new @code{nnspool} virtual server called
@samp{cache}. You now need to edit it to have the right definitions.
@end lisp
Type @kbd{C-c C-c} to return to the server buffer. If you now press
-@kbd{RET} over this virtual server, you should be entered into a browse
+@key{RET} over this virtual server, you should be entered into a browse
buffer, and you should be able to enter any of the groups displayed.
@node Server Variables
@subsection Server Variables
-One sticky point when defining variables (both on backends and in Emacs
+One sticky point when defining variables (both on back ends and in Emacs
in general) is that some variables are typically initialized from other
variables when the definition of the variables is being loaded. If you
change the "base" variable after the variables have been loaded, you
new virtual @code{nnml} server, it will @emph{not} suffice to set just
@code{nnml-directory}---you have to explicitly set all the file
variables to be what you want them to be. For a complete list of
-variables for each backend, see each backend's section later in this
+variables for each back end, see each back end's section later in this
manual, but here's an example @code{nnml} definition:
@lisp
@node Getting News
@section Getting News
@cindex reading news
-@cindex news backends
+@cindex news back ends
A newsreader is normally used for reading news. Gnus currently provides
only two methods of getting news---it can read from an @sc{nntp} server,
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. The
-valid tokens include @samp{machine}, @samp{login}, @samp{password},
-@samp{default}, @samp{port} and @samp{force}. (The latter is not a
-valid @file{.netrc}/@code{ftp} token, which is almost the only way the
-@file{.authinfo} file format deviates from the @file{.netrc} file
-format.)
+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
+in the original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
+@samp{force}. (This is the only way the @file{.authinfo} file format
+deviates from the @file{.netrc} file format.) @samp{port} is used to
+indicate what port on the server the credentials apply to and
+@samp{force} is explained below.
@end enumerate
@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
@item nntp-maximum-request
@vindex nntp-maximum-request
-If the @sc{nntp} server doesn't support @sc{nov} headers, this backend
+If the @sc{nntp} server doesn't support @sc{nov} headers, this back end
will collect headers by sending a series of @code{head} commands. To
-speed things up, the backend sends lots of these commands without
+speed things up, the back end sends lots of these commands without
waiting for reply, and then reads all the replies. This is controlled
by the @code{nntp-maximum-request} variable, and is 400 by default. If
your network is buggy, you should set this to 1.
responding properly, or being too loaded to reply within reasonable
time. This is can lead to awkward problems, which can be helped
somewhat by setting @code{nntp-connection-timeout}. This is an integer
-that says how many seconds the @code{nntp} backend should wait for a
+that says how many seconds the @code{nntp} back end should wait for a
connection before giving up. If it is @code{nil}, which is the default,
no timeouts are done.
@item nntp-open-ssl-stream
Opens a connection to a server over a @dfn{secure} channel. To use this
you must have SSLay installed
-(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distributeion, for instance). You then
+(@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
+;; "snews" is port 563 and is predefined
+;; in our /etc/services
;;
(nntp "snews.bar.com"
- (nntp-open-connection-function nntp-open-ssl-stream)
+ (nntp-open-connection-function
+ nntp-open-ssl-stream)
(nntp-port-number "snews")
(nntp-address "snews.bar.com"))
@end lisp
@item nntp-record-commands
@vindex nntp-record-commands
If non-@code{nil}, @code{nntp} will log all commands it sends to the
-@sc{nntp} server (along with a timestep) in the @samp{*nntp-log*}
+@sc{nntp} server (along with a timestamp) in the @samp{*nntp-log*}
buffer. This is useful if you are debugging a Gnus/@sc{nntp} connection
that doesn't seem to work.
contain very big articles---@samp{alt.binaries.pictures.furniture}, for
instance.
-Anyways, you just specify @code{nnspool} as the method and @code{""} (or
+Anyway, you just specify @code{nnspool} as the method and @code{""} (or
anything else) as the address.
If you have access to a local spool, you should probably use that as the
* 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.
+* Mail Back End 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.
* Duplicates:: Dealing with duplicated mail.
-* Not Reading Mail:: Using mail backends for reading other files.
-* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
+* Not Reading Mail:: Using mail back ends for reading other files.
+* Choosing a Mail Back End:: Gnus can read a variety of mail formats.
@end menu
@subsection Getting Started Reading Mail
It's quite easy to use Gnus to read your new mail. You just plonk the
-mail backend of your choice into @code{gnus-secondary-select-methods},
+mail back end of your choice into @code{gnus-secondary-select-methods},
and things will happen automatically.
For instance, if you want to use @code{nnml} (which is a "one file per
-mail" backend), you could put the following in your @file{.gnus} file:
+mail" back end), you could put the following in your @file{.gnus} file:
@lisp
(setq gnus-secondary-select-methods
'((nnml "private")))
@end lisp
-Now, the next time you start Gnus, this backend will be queried for new
+Now, the next time you start Gnus, this back end will be queried for new
articles, and it will move all the messages in your spool file to its
directory, which is @code{~/Mail/} by default. The new group that will
be created (@samp{mail.misc}) will be subscribed, and you can read it
This should be sufficient for reading mail with Gnus. You might want to
give the other sections in this part of the manual a perusal, though.
-Especially @pxref{Choosing a Mail Backend} and @pxref{Expiring Mail}.
+Especially @pxref{Choosing a Mail Back End} and @pxref{Expiring Mail}.
@node Splitting Mail
message. The function should return a list of group names that it
thinks should carry this mail message.
-Note that the mail backends are free to maul the poor, innocent,
+Note that the mail back ends are free to maul the poor, innocent,
incoming headers all they want to. They all add @code{Lines} headers;
some add @code{X-Gnus-Group} headers; most rename the Unix mbox
-@code{From<SPACE>} line to something else.
+@samp{From } line to something else.
@vindex nnmail-crosspost
-The mail backends all support cross-posting. If several regexps match,
+The mail back ends all support cross-posting. If several regexps match,
the mail will be ``cross-posted'' to all those groups.
@code{nnmail-crosspost} says whether to use this mechanism or not. Note
that no articles are crossposted to the general (@samp{}) group.
@code{MAILHOST} environment variable.
@item :port
-The port number of the POP server. This can be a number (eg,
-@samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a
+The port number of the POP server. This can be a number (e.g.@:
+@samp{:port 110}) or a string (e.g.@: @samp{:port "pop3"}). If it is a
string, it should be a service name as listed in @file{/etc/services} on
-Unix systems. The default is @samp{"pop3"}.
+Unix systems. The default is @samp{"pop3"}. On some systems you might
+need to specify it as @samp{"pop-3"} instead.
@item :user
The user name to give to the POP server. The default is the login
prompted.
@item :program
-The program to use to fetch mail from the POP server. This is should be
+The program to use to fetch mail from the POP server. This should be
a @code{format}-like string. Here's an example:
@example
Two example maildir mail sources:
@lisp
-(maildir :path "/home/user-name/Maildir/" :subdirs ("cur" "new"))
+(maildir :path "/home/user-name/Maildir/"
+ :subdirs ("cur" "new"))
@end lisp
@lisp
-(maildir :path "/user@@remotehost.org:~/Maildir/" :subdirs ("new"))
+(maildir :path "/user@@remotehost.org:~/Maildir/"
+ :subdirs ("new"))
@end lisp
@item imap
-Get mail from a @sc{imap} server. If you don't want to use @sc{imap} as
-intended, as a network mail reading protocol (ie with nnimap), for some
-reason or other, Gnus let you treat it similar to a POP server and
-fetches articles from a given @sc{imap} mailbox.
+Get mail from a @sc{imap} server. If you don't want to use @sc{imap}
+as intended, as a network mail reading protocol (ie with nnimap), for
+some reason or other, Gnus let you treat it similar to a POP server
+and fetches articles from a given @sc{imap} mailbox. @xref{IMAP}, for
+more information.
Keywords:
means @samp{kerberos4}, @samp{cram-md5}, @samp{anonymous} or the default
@samp{login}.
+@item :program
+When using the `shell' :stream, the contents of this variable is
+mapped into the `imap-shell-program' variable. This should be a
+@code{format}-like string (or list of strings). Here's an example:
+
+@example
+ssh %s imapd
+@end example
+
+The valid format specifier characters are:
+
+@table @samp
+@item s
+The name of the server.
+
+@item l
+User name from `imap-default-user'.
+
+@item p
+The port number of the server.
+@end table
+
+The values used for these specs are taken from the values you give the
+corresponding keywords.
+
@item :mailbox
The name of the mailbox to get mail from. The default is @samp{INBOX}
which normally is the mailbox which receive incoming mail.
An example @sc{imap} mail source:
@lisp
-(imap :server "mail.mycorp.com" :stream kerberos4 :fetchflag "\\Seen")
+(imap :server "mail.mycorp.com"
+ :stream kerberos4
+ :fetchflag "\\Seen")
@end lisp
@item webmail
An example webmail source:
@lisp
-(webmail :subtype 'hotmail :user "user-name" :password "secret")
+(webmail :subtype 'hotmail
+ :user "user-name"
+ :password "secret")
@end lisp
@end table
@end table
@end table
-@subsubheading Function Interface
+@subsubsection Function Interface
Some of the above keywords specify a Lisp function to be executed.
For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to
(@pxref{Mail Source Specifiers}).
If this variable (and the obsolescent @code{nnmail-spool-file}) is
-@code{nil}, the mail backends will never attempt to fetch mail by
+@code{nil}, the mail back ends will never attempt to fetch mail by
themselves.
If you want to fetch mail both from your local spool as well as a POP
@end lisp
-When you use a mail backend, Gnus will slurp all your mail from your
+When you use a mail back end, Gnus will slurp all your mail from your
inbox and plonk it down in your home directory. Gnus doesn't move any
-mail if you're not using a mail backend---you have to do a lot of magic
+mail if you're not using a mail back end---you have to do a lot of magic
invocations first. At the time when you have finished drawing the
pentagram, lightened the candles, and sacrificed the goat, you really
shouldn't be too surprised when Gnus moves your mail.
-@node Mail Backend Variables
-@subsection Mail Backend Variables
+@node Mail Back End Variables
+@subsection Mail Back End Variables
These variables are (for the most part) pertinent to all the various
-mail backends.
+mail back ends.
@table @code
@vindex nnmail-read-incoming-hook
@item nnmail-read-incoming-hook
-The mail backends all call this hook after reading new mail. You can
+The mail back ends all call this hook after reading new mail. You can
use this hook to notify any mail watch programs, if you want to.
@vindex nnmail-split-hook
@item nnmail-use-long-file-names
@vindex nnmail-use-long-file-names
-If non-@code{nil}, the mail backends will use long file and directory
+If non-@code{nil}, the mail back ends will use long file and directory
names. Groups like @samp{mail.misc} will end up in directories
-(assuming use of @code{nnml} backend) or files (assuming use of
-@code{nnfolder} backend) like @file{mail.misc}. If it is @code{nil},
+(assuming use of @code{nnml} back end) or files (assuming use of
+@code{nnfolder} back end) like @file{mail.misc}. If it is @code{nil},
the same group will end up in @file{mail/misc}.
@item nnmail-delete-file-function
@item nnmail-cache-accepted-message-ids
@vindex nnmail-cache-accepted-message-ids
If non-@code{nil}, put the @code{Message-ID}s of articles imported into
-the backend (via @code{Gcc}, for instance) into the mail duplication
+the back end (via @code{Gcc}, for instance) into the mail duplication
discovery cache. The default is @code{nil}.
@end table
When it has found a parent, it returns the corresponding group name. It
is recommended that you set @code{nnmail-message-id-cache-length} to a
somewhat higher number than the default so that the message ids are
-still in the cache. (A value of 5000 appears to create a file some
-300 kBytes in size.)
+still in the cache. (A value of 5000 appears to create a file some 300
+kBytes in size.)
+@vindex nnmail-cache-accepted-message-ids
+When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus
+also records the message ids of moved articles, so that the followup
+messages goes into the new group.
@node Group Mail Splitting
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.
+that group is used as the catch-all group. Even though this variable is
+often used just to name a group, it may also be set to an arbitrarily
+complex fancy split (after all, a group name is a fancy split), and this
+may be useful to split mail that doesn't go to any mailing list to
+personal mail folders. Note that this fancy split is added as the last
+element of a @code{|} split list that also contains a @code{&} split
+with the rules extracted from group parameters.
It's time for an example. Assume the following group parameters have
been defined:
@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
+single @code{|} split will be output. @var{catch-all} is the fallback
+fancy split, used like @var{gnus-group-split-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.
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
+used to enable @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
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),
+don't omit @var{catch-all} (it's optional, equivalent to @code{nil}),
@code{gnus-group-split-default-catch-all-group} will be set to its
value.
Most people have lots of old mail stored in various file formats. If
you have set up Gnus to read mail using one of the spiffy Gnus mail
-backends, you'll probably wish to have that old mail incorporated into
+back ends, you'll probably wish to have that old mail incorporated into
your mail groups.
Doing so can be quite easy.
Go to the group buffer.
@item
-Type `G f' and give the path to the mbox file when prompted to create an
+Type @kbd{G f} and give the path to the mbox file when prompted to create an
@code{nndoc} group from the mbox file (@pxref{Foreign Groups}).
@item
-Type `SPACE' to enter the newly created group.
+Type @key{SPC} to enter the newly created group.
@item
-Type `M P b' to process-mark all articles in this group's buffer
+Type @kbd{M P b} to process-mark all articles in this group's buffer
(@pxref{Setting Process Marks}).
@item
-Type `B r' to respool all the process-marked articles, and answer
+Type @kbd{B r} to respool all the process-marked articles, and answer
@samp{nnml} when prompted (@pxref{Mail Group Commands}).
@end enumerate
sure that all the mail has ended up where it should be.
Respooling is also a handy thing to do if you're switching from one mail
-backend to another. Just respool all the mail in the old mail groups
-using the new mail backend.
+back end to another. Just respool all the mail in the old mail groups
+using the new mail back end.
@node Expiring Mail
@item nnmail-remove-tabs
@findex nnmail-remove-tabs
-Translate all @samp{TAB} characters into @samp{SPACE} characters.
+Translate all tab characters into space characters.
@item nnmail-fix-eudora-headers
@findex nnmail-fix-eudora-headers
@node Not Reading Mail
@subsection Not Reading Mail
-If you start using any of the mail backends, they have the annoying
+If you start using any of the mail back ends, they have the annoying
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{mail-sources} and @code{nnmail-spool-file} to
-@code{nil}, none of the backends will ever attempt to read incoming
+@code{nil}, none of the back ends will ever attempt to read incoming
mail, which should help.
@vindex nnbabyl-get-new-mail
@vindex nnfolder-get-new-mail
This might be too much, if, for instance, you are reading mail quite
happily with @code{nnml} and just want to peek at some old @sc{rmail}
-file you have stashed away with @code{nnbabyl}. All backends have
-variables called backend-@code{get-new-mail}. If you want to disable
+file you have stashed away with @code{nnbabyl}. All back ends have
+variables called back-end-@code{get-new-mail}. If you want to disable
the @code{nnbabyl} mail reading, you edit the virtual server for the
group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}.
-All the mail backends will call @code{nn}*@code{-prepare-save-mail-hook}
+All the mail back ends will call @code{nn}*@code{-prepare-save-mail-hook}
narrowed to the article to be saved before saving it when reading
incoming mail.
-@node Choosing a Mail Backend
-@subsection Choosing a Mail Backend
+@node Choosing a Mail Back End
+@subsection Choosing a Mail Back End
Gnus will read the mail spool when you activate a mail group. The 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
+There are five different mail back ends in the standard Gnus, and more
+back ends are available separately. The mail back end most people use
(because it is the fastest and most flexible) is @code{nnml}
(@pxref{Mail Spool}).
* 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.
+* MH Spool:: An mhspool-like back end.
* Mail Folders:: Having one file for each group.
-* Comparing Mail Backends:: An in-depth looks at pros and cons.
+* Comparing Mail Back Ends:: An in-depth looks at pros and cons.
@end menu
@vindex nnmbox-active-file
@vindex nnmbox-mbox-file
-The @dfn{nnmbox} backend will use the standard Un*x mbox file to store
+The @dfn{nnmbox} back end will use the standard Un*x mbox file to store
mail. @code{nnmbox} will add extra headers to each mail article to say
which group it belongs in.
@vindex nnbabyl-active-file
@vindex nnbabyl-mbox-file
-The @dfn{nnbabyl} backend will use a babyl mail box (aka. @dfn{rmail
+The @dfn{nnbabyl} back end will use a babyl mail box (aka. @dfn{rmail
mbox}) to store mail. @code{nnbabyl} will add extra headers to each
mail article to say which group it belongs in.
format. It should be used with some caution.
@vindex nnml-directory
-If you use this backend, Gnus will split all incoming mail into files,
+If you use this back end, Gnus will split all incoming mail into files,
one file for each mail, and put the articles into the corresponding
directories under the directory specified by the @code{nnml-directory}
variable. The default value is @file{~/Mail/}.
care of all that.
If you have a strict limit as to how many files you are allowed to store
-in your account, you should not use this backend. As each mail gets its
+in your account, you should not use this back end. As each mail gets its
own file, you might very well occupy thousands of inodes within a few
weeks. If this is no problem for you, and it isn't a problem for you
having your friendly systems administrator walking around, madly,
know that this is probably the fastest format to use. You do not have
to trudge through a big mbox file just to read your new mail.
-@code{nnml} is probably the slowest backend when it comes to article
+@code{nnml} is probably the slowest back end when it comes to article
splitting. It has to create lots of files, and it also generates
@sc{nov} databases for the incoming mails. This makes it the fastest
-backend when it comes to reading mail.
+back end when it comes to reading mail.
Virtual server settings:
@item nnml-nov-is-evil
@vindex nnml-nov-is-evil
-If non-@code{nil}, this backend will ignore any @sc{nov} files.
+If non-@code{nil}, this back end will ignore any @sc{nov} files.
@item nnml-nov-file-name
@vindex nnml-nov-file-name
@code{nnmh} is just like @code{nnml}, except that is doesn't generate
@sc{nov} databases and it doesn't keep an active file. This makes
-@code{nnmh} a @emph{much} slower backend than @code{nnml}, but it also
+@code{nnmh} a @emph{much} slower back end than @code{nnml}, but it also
makes it easier to write procmail scripts for.
Virtual server settings:
@cindex mbox folders
@cindex mail folders
-@code{nnfolder} is a backend for storing each mail group in a separate
+@code{nnfolder} is a back end for storing each mail group in a separate
file. Each file is in the standard Un*x mbox format. @code{nnfolder}
will add extra headers to keep track of article numbers and arrival
dates.
@code{nnfolder-directory}. This only works if you use long file names,
though.
-@node Comparing Mail Backends
-@subsubsection Comparing Mail Backends
+@node Comparing Mail Back Ends
+@subsubsection Comparing Mail Back Ends
-First, just for terminology, the @dfn{backend} is the common word for a
+First, just for terminology, the @dfn{back end} 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
+and so selection of a suitable back end 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
articles lay (the machine which today we call an @sc{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
+@code{nnspool} back ends, 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
+The goal in selecting a mail back end 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:
@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
+this back end, 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
@item nnml
-@code{nnml} is the backend which smells the most as though you were
+@code{nnml} is the back end 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,
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
+It is also problematic using this back end if you are living in a
FAT16-based Windows world, since much space will be wasted on all these
tiny files.
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.
+friendly mail back end all over.
@end table
So---if web browsers suck at reading discussion forums, why not use Gnus
to do it instead?
-Gnus has been getting a bit of a collection of backends for providing
+Gnus has been getting a bit of a collection of back ends for providing
interfaces to these sources.
@menu
The main caveat with all these web sources is that they probably won't
work for a very long time. Gleaning information from the @sc{html} data
-is guesswork at best, and when the layout is altered, the Gnus backend
-will fail. If you have reasonably new versions of these backends,
+is guesswork at best, and when the layout is altered, the Gnus back end
+will fail. If you have reasonably new versions of these back ends,
though, you should be ok.
One thing all these Web methods have in common is that the Web sources
the commercials, so, like, with Gnus you can do @emph{rad}, rilly,
searches without having to use a browser.
-The @code{nnweb} backend allows an easy interface to the mighty search
+The @code{nnweb} back end allows an easy interface to the mighty search
engine. You create an @code{nnweb} group, enter a search pattern, and
then enter the group and read the articles like you would any normal
group. The @kbd{G w} command in the group buffer (@pxref{Foreign
@cindex Slashdot
@cindex nnslashdot
-Slashdot (@file{http://slashdot.org/}) is a popular news site, with
+Slashdot (@uref{http://slashdot.org/}) is a popular news site, with
lively discussion following the news articles. @code{nnslashdot} will
let you read this forum in a convenient manner.
'((nnslashdot "")))
@end lisp
-This will make Gnus query the @code{nnslashdot} backend for new comments
+This will make Gnus query the @code{nnslashdot} back end for new comments
and groups. The @kbd{F} command will subscribe each new news article as
a new Gnus group, and you can read the comments by entering these
groups. (Note that the default subscription method is to subscribe new
groups as zombies. Other methods are available (@pxref{Subscription
Methods}).
-If you want to remove an old @code{nnslashdot} group, the @kbd{G DEL}
+If you want to remove an old @code{nnslashdot} group, the @kbd{G @key{DEL}}
command is the most handy tool (@pxref{Foreign Groups}).
When following up to @code{nnslashdot} comments (or posting new
@item nnslashdot-directory
@vindex nnslashdot-directory
-Where @code{nnslashdot} will store its files. The default value is
+Where @code{nnslashdot} will store its files. The default is
@samp{~/News/slashdot/}.
@item nnslashdot-active-url
@vindex nnslashdot-active-url
-The @sc{url} format string that will be used to fetch the information on
-news articles and comments. The default is
+The @sc{url} format string that will be used to fetch the information on
+news articles and comments. Default:
@samp{http://slashdot.org/search.pl?section=&min=%d}.
@item nnslashdot-comments-url
@cindex nnultimate
@cindex Ultimate Bulletin Board
-The Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) is
+The Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) is
probably the most popular Web bulletin board system used. It has a
quite regular and nice interface, and it's possible to get the
information Gnus needs to keep groups updated.
The easiest way to get started with @code{nnultimate} is to say
-something like the following in the group buffer: @kbd{B nnultimate RET
-http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @sc{url}
+something like the following in the group buffer: @kbd{B nnultimate @key{RET}
+http://www.tcj.com/messboard/ubbcgi/ @key{RET}}. (Substitute the @sc{url}
(not including @samp{Ultimate.cgi} or the like at the end) for a forum
you're interested in; there's quite a list of them on the Ultimate web
site.) Then subscribe to the groups you're interested in from the
@cindex Web Archive
Some mailing lists only have archives on Web servers, such as
-@file{http://www.egroups.com/} and
-@file{http://www.mail-archive.com/}. It has a quite regular and nice
+@uref{http://www.egroups.com/} and
+@uref{http://www.mail-archive.com/}. It has a quite regular and nice
interface, and it's possible to get the information Gnus needs to keep
groups updated.
The easiest way to get started with @code{nnwarchive} is to say
something like the following in the group buffer: @kbd{M-x
-gnus-group-make-warchive-group RET an_egroup RET egroups RET
-www.egroups.com RET your@@email.address RET}. (Substitute the
+gnus-group-make-warchive-group @key{RET} an_egroup @key{RET} egroups @key{RET}
+www.egroups.com @key{RET} your@@email.address @key{RET}}. (Substitute the
@sc{an_egroup} with the mailing list you subscribed, the
@sc{your@@email.address} with your email address.), or to browse the
-backend by @kbd{B nnwarchive RET mail-archive RET}.
+back end by @kbd{B nnwarchive @key{RET} mail-archive @key{RET}}.
The following @code{nnwarchive} variables can be altered:
This might be an opportune moment to mention @code{ange-ftp} (and its
successor @code{efs}), that most wonderful of all wonderful Emacs
packages. When I wrote @code{nndir}, I didn't think much about it---a
-backend to read directories. Big deal.
+back end to read directories. Big deal.
@code{ange-ftp} changes that picture dramatically. For instance, if you
enter the @code{ange-ftp} file name
@code{nndir} will use @sc{nov} files if they are present.
-@code{nndir} is a ``read-only'' backend---you can't delete or expire
+@code{nndir} is a ``read-only'' back end---you can't delete or expire
articles with this method. You can use @code{nnmh} or @code{nnml} for
whatever you use @code{nndir} for, so you could switch to any of those
methods if you feel the need to have a non-read-only @code{nndir}.
@subsection Anything Groups
@cindex nneething
-From the @code{nndir} backend (which reads a single spool-like
+From the @code{nndir} back end (which reads a single spool-like
directory), it's just a hop and a skip to @code{nneething}, which
pretends that any arbitrary directory is a newsgroup. Strange, but
true.
group. And that's it.
If you have some old archived articles that you want to insert into your
-new & spiffy Gnus mail backend, @code{nndoc} can probably help you with
+new & spiffy Gnus mail back end, @code{nndoc} can probably help you with
that. Say you have an old @file{RMAIL} file with mail that you now want
to split into your new @code{nnml} groups. You look at that file using
@code{nndoc} (using the @kbd{G f} command in the group buffer
You put the packet in your home directory.
@item
-You fire up Gnus on your home machine using the @code{nnsoup} backend as
+You fire up Gnus on your home machine using the @code{nnsoup} back end as
the native or secondary server.
@item
@menu
* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A backend for reading @sc{soup} packets.
+* SOUP Groups:: A back end for reading @sc{soup} packets.
* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
@end menu
@table @kbd
@item G s b
-@kindex G s b (Group)
+@kindex G s b @r{(Group)}
@findex gnus-group-brew-soup
Pack all unread articles in the current group
(@code{gnus-group-brew-soup}). This command understands the
process/prefix convention.
@item G s w
-@kindex G s w (Group)
+@kindex G s w @r{(Group)}
@findex gnus-soup-save-areas
Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
@item G s s
-@kindex G s s (Group)
+@kindex G s s @r{(Group)}
@findex gnus-soup-send-replies
Send all replies from the replies packet
(@code{gnus-soup-send-replies}).
@item G s p
-@kindex G s p (Group)
+@kindex G s p @r{(Group)}
@findex gnus-soup-pack-packet
Pack all files into a @sc{soup} packet (@code{gnus-soup-pack-packet}).
@item G s r
-@kindex G s r (Group)
+@kindex G s r @r{(Group)}
@findex nnsoup-pack-replies
Pack all replies into a replies packet (@code{nnsoup-pack-replies}).
@item O s
-@kindex O s (Summary)
+@kindex O s @r{(Summary)}
@findex gnus-soup-add-article
This summary-mode command adds the current article to a @sc{soup} packet
(@code{gnus-soup-add-article}). It understands the process/prefix
@subsubsection @sc{soup} Groups
@cindex nnsoup
-@code{nnsoup} is the backend for reading @sc{soup} packets. It will
+@code{nnsoup} is the back end for reading @sc{soup} packets. It will
read incoming packets, unpack them, and put them in a directory where
you can read them at leisure.
If your local @code{nntp} server doesn't allow posting, for some reason
or other, you can post using one of the numerous mail-to-news gateways.
-The @code{nngateway} backend provides the interface.
+The @code{nngateway} back end provides the interface.
-Note that you can't read anything from this backend---it can only be
+Note that you can't read anything from this back end---it can only be
used to post with.
Server variables:
@lisp
(setq gnus-post-method
- '(nngateway "mail2news@@replay.com"
- (nngateway-header-transformation
- nngateway-mail2news-header-transformation)))
+ '(nngateway
+ "mail2news@@replay.com"
+ (nngateway-header-transformation
+ nngateway-mail2news-header-transformation)))
@end lisp
@end table
@cindex nnimap
@cindex @sc{imap}
-@sc{imap} is a network protocol for reading mail (or news, or ...),
-think of it as a modernized @sc{nntp}. Connecting to a @sc{imap} server
-is much similar to connecting to a news server, you just specify the
-network address of the server.
+@sc{imap} is a network protocol for reading mail (or news, or@dots{}),
+think of it as a modernized @sc{nntp}. Connecting to a @sc{imap}
+server is much similar to connecting to a news server, you just
+specify the network address of the server.
+
+@sc{imap} has two properties. First, @sc{imap} can do everything that
+POP can, it can hence be viewed as POP++. Secondly, @sc{imap} is a
+mail storage protocol, similar to @sc{nntp} being a news storage
+protocol. (@sc{imap} offers more features than @sc{nntp} because news
+is more or less read-only whereas mail is read-write.)
+
+If you want to use @sc{imap} as POP++, use an imap entry in
+mail-sources. With this, Gnus will fetch mails from the @sc{imap}
+server and store them on the local disk. This is not the usage
+described in this section. @xref{Mail Sources}.
+
+If you want to use @sc{imap} as a mail storage protocol, use an nnimap
+entry in gnus-secondary-select-methods. With this, Gnus will
+manipulate mails stored on the @sc{imap} server. This is the kind of
+usage explained in this section.
A server configuration in @code{~/.gnus} with a few @sc{imap} servers
might look something like this:
@itemize @bullet
@item
-@dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Require the
-@samp{imtest} program.
+@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5). Requires the
+@command{imtest} program.
@item
-@dfn{kerberos4:} Connect with kerberos 4. Require the @samp{imtest} program.
+@dfn{kerberos4:} Connect with Kerberos 4. Requires the
+@command{imtest} program.
@item
@dfn{starttls:} Connect via the STARTTLS extension (similar to
-SSL). Require the external library @samp{starttls.el} and program
-@samp{starttls}.
+SSL)@. Requires the library @file{starttls.el} and program
+@command{starttls}.
@item
-@dfn{ssl:} Connect through SSL. Require OpenSSL (the
-program @samp{openssl}) or SSLeay (@samp{s_client}).
+@dfn{ssl:} Connect through SSL@. Requires OpenSSL (the
+program @command{openssl}) or SSLeay (@command{s_client}).
@item
-@dfn{shell:} Use a shell command to start IMAP connection.
+@dfn{shell:} Use a shell command to start an @sc{imap} connection.
@item
@dfn{network:} Plain, TCP/IP network connection.
@end itemize
@vindex imap-kerberos4-program
-The @samp{imtest} program is shipped with Cyrus IMAPD, nnimap support
-both @samp{imtest} version 1.5.x and version 1.6.x. The variable
-@code{imap-kerberos4-program} contain parameters to pass to the imtest
-program.
+The @command{imtest} program is shipped with Cyrus IMAPD@. Nnimap supports
+both @command{imtest} version 1.5.x and version 1.6.x. The variable
+@code{imap-kerberos4-program} contains parameters to pass to the
+@command{imtest} program.
@vindex imap-ssl-program
For SSL connections, the OpenSSL program is available from
-@file{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
-and nnimap support it too - altough the most recent versions of
+@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
+and nnimap supports it too. However, the most recent versions of
SSLeay, 0.9.x, are known to have serious bugs making it
-useless. Earlier versions, especially 0.8.x, of SSLeay are known to
-work. The variable @code{imap-ssl-program} contain parameters to pass
+useless. Earlier versions, especially 0.8.x, of SSLeay are known to
+work. The variable @code{imap-ssl-program} contains parameters to pass
to OpenSSL/SSLeay.
@vindex imap-shell-program
@vindex imap-shell-host
-For IMAP connections using the @code{shell} stream, the variable
-@code{imap-shell-program} specify what program to call.
+For @sc{imap} connections using the @code{shell} stream, the variable
+@code{imap-shell-program} specifies what program to call.
@item nnimap-authenticator
@vindex nnimap-authenticator
The authenticator used to connect to the server. By default, nnimap
-will use the most secure authenticator your server is capable of.
+will use the most secure authenticator your server supports.
Example server specification:
@itemize @bullet
@item
-@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Require
-external program @code{imtest}.
+@dfn{gssapi:} GSSAPI (usually Kerberos 5) authentication. Requires the
+external program @command{imtest}.
@item
-@dfn{kerberos4:} Kerberos authentication. Require external program
-@code{imtest}.
+@dfn{kerberos4:} Kerberos authentication. Requires the external program
+@command{imtest}.
@item
-@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Require
-external library @code{digest-md5.el}.
+@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5@. Requires
+external library @command{digest-md5.el}.
@item
@dfn{cram-md5:} Encrypted username/password via CRAM-MD5.
@item
@dfn{login:} Plain-text username/password via LOGIN.
@item
-@dfn{anonymous:} Login as `anonymous', supplying your emailadress as password.
+@dfn{anonymous:} Login as `anonymous', supplying your email address as
+password.
@end itemize
@item nnimap-expunge-on-close
@cindex Expunging
@vindex nnimap-expunge-on-close
-Unlike Parmenides the @sc{imap} designers has decided that things that
-doesn't exist actually does exist. More specifically, @sc{imap} has
-this concept of marking articles @code{Deleted} which doesn't actually
+Unlike Parmenides, the @sc{imap} designers decided that things that
+don't exist actually do exist. More specifically, @sc{imap} has
+the concept of marking articles @code{Deleted} which doesn't actually
delete them, and this (marking them @code{Deleted}, that is) is what
-nnimap does when you delete a article in Gnus (with @kbd{G DEL} or
-similair).
+nnimap does when you delete a article in Gnus (with @kbd{G @key{DEL}} or
+similar).
Since the articles aren't really removed when we mark them with the
@code{Deleted} flag we'll need a way to actually delete them. Feel like
@table @code
@item always
-The default behaviour, delete all articles marked as "Deleted" when
+The default behavior, delete all articles marked as "Deleted" when
closing a mailbox.
@item never
Never actually delete articles. Currently there is no way of showing
@subsubsection Splitting in @sc{imap}
@cindex splitting imap mail
-Splitting is something Gnus users has loved and used for years, and now
-the rest of the world is catching up. Yeah, dream on, not many
-@sc{imap} server has server side splitting and those that have splitting
+Splitting is something Gnus users have loved and used for years, and now
+the rest of the world is catching up. Yeah, dream on; not many
+@sc{imap} servers have server side splitting and those that have splitting
seem to use some non-standard protocol. This means that @sc{imap}
-support for Gnus has to do it's own splitting.
+support for Gnus has to do its own splitting.
And it does.
@vindex nnimap-split-inbox
A string or a list of strings that gives the name(s) of @sc{imap}
-mailboxes to split from. Defaults to nil, which means that splitting is
-disabled!
+mailboxes to split from. Defaults to @code{nil}, which means that
+splitting is disabled!
@lisp
(setq nnimap-split-inbox
@lisp
(setq nnimap-split-rule
- '(("INBOX.nnimap" "^Sender: owner-nnimap@@vic20.globalcom.se")
+ '(("INBOX.nnimap"
+ "^Sender: owner-nnimap@@vic20.globalcom.se")
("INBOX.junk" "^Subject:.*MAKE MONEY")
("INBOX.private" "")))
@end lisp
INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line
into INBOX.spam and everything else in INBOX.private.
-The first string may contain `\\1' forms, like the ones used by
+The first string may contain @samp{\\@var{digit}} forms, like the ones used by
replace-match to insert sub-expressions from the matched text. For
instance:
Nnmail users might recollect that the last regexp had to be empty to
match all articles (like in the example above). This is not required in
nnimap. Articles not matching any of the regexps will not be moved out
-of your inbox. (This might might affect performance if you keep lots of
+of your inbox. (This might affect performance if you keep lots of
unread articles in your inbox, since the splitting code would go over
them every time you fetch new mail.)
These rules are processed from the beginning of the alist toward the
-end. The first rule to make a match will "win", unless you have
-crossposting enabled. In that case, all matching rules will "win".
+end. The first rule to make a match will `win', unless you have
+crossposting enabled. In that case, all matching rules will `win'.
This variable can also have a function as its value, the function will
-be called with the headers narrowed and should return a group where it
-thinks the article should be splitted to. See @code{nnimap-split-fancy}.
+be called with the headers narrowed and should return a group to where
+it thinks the article should be split. See @code{nnimap-split-fancy}.
-The splitting code tries to create mailboxes if it need too.
+The splitting code tries to create mailboxes if it needs too.
To allow for different split rules on different virtual servers, and
even different split rules in different inboxes on the same server,
-the syntax of this variable have been extended along the lines of:
+the syntax of this variable has been extended along the lines of:
@lisp
(setq nnimap-split-rule
@vindex nnimap-split-predicate
Mail matching this predicate in @code{nnimap-split-inbox} will be
-splitted, it is a string and the default is @samp{UNSEEN UNDELETED}.
+split; it is a string and the default is @samp{UNSEEN UNDELETED}.
This might be useful if you use another @sc{imap} client to read mail in
your inbox but would like Gnus to split all articles in the inbox
splitting. @xref{Fancy Mail Splitting}.
However, to be able to have different fancy split rules for nnmail and
-nnimap backends you can set @code{nnimap-split-rule} to
+nnimap back ends you can set @code{nnimap-split-rule} to
@code{nnimap-split-fancy} and define the nnimap specific fancy split
rule in @code{nnimap-split-fancy}.
@code{nnvirtual} can have both mail and news groups as component groups.
When responding to articles in @code{nnvirtual} groups, @code{nnvirtual}
-has to ask the backend of the component group the article comes from
-whether it is a news or mail backend. However, when you do a @kbd{^},
-there is typically no sure way for the component backend to know this,
+has to ask the back end of the component group the article comes from
+whether it is a news or mail back end. However, when you do a @kbd{^},
+there is typically no sure way for the component back end to know this,
and in that case @code{nnvirtual} tells Gnus that the article came from a
-not-news backend. (Just to be on the safe side.)
+not-news back end. (Just to be on the safe side.)
@kbd{C-c C-t} in the message buffer will insert the @code{Newsgroups}
line from the article you respond to in these cases.
@cindex kibozing
@dfn{Kibozing} is defined by @sc{oed} as ``grepping through (parts of)
-the news feed''. @code{nnkiboze} is a backend that will do this for
+the news feed''. @code{nnkiboze} is a back end that will do this for
you. Oh joy! Now you can grind any @sc{nntp} server down to a halt
with useless requests! Oh happiness!
-@kindex G k (Group)
+@kindex G k @r{(Group)}
To create a kibozed group, use the @kbd{G k} command in the group
buffer.
@item
Decide which servers should be covered by the Agent. If you have a mail
-backend, it would probably be nonsensical to have it covered by the
+back end, it would probably be nonsensical to have it covered by the
Agent. Go to the server buffer (@kbd{^} in the group buffer) and press
@kbd{J a} the server (or servers) that you wish to have covered by the
Agent (@pxref{Server Agent Commands}). This will typically be only the
Predicates of @code{high} or @code{low} download articles in respect of
their scores in relationship to @code{gnus-agent-high-score} and
-@code{gnus-agent-low-score} as descibed below.
+@code{gnus-agent-low-score} as described below.
To gain even finer control of what is to be regarded eligible for
download a predicate can consist of a number of predicates with logical
@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
@lisp
-(defvar gnus-category-predicate-alist
+(setq gnus-category-predicate-alist
(append gnus-category-predicate-alist
'((old . my-article-old-p))))
@end lisp
If/when using something like the above, be aware that there are many
misconfigured systems/mailers out there and so an article's date is not
always a reliable indication of when it was posted. Hell, some people
-just don't give a damm.
+just don't give a damn.
The above predicates apply to *all* the groups which belong to the
category. However, if you wish to have a specific predicate for an
@item
Use @code{normal} score files
-If you dont want to maintain two sets of scoring rules for a group, and
+If you don't want to maintain two sets of scoring rules for a group, and
your desired @code{downloading} criteria for a group are the same as your
@code{reading} criteria then you can tell the agent to refer to your
@code{normal} score files when deciding what to download.
These directives in either the category definition or a group's
parameters will cause the agent to read in all the applicable score
-files for a group, *filtering out* those those sections that do not
+files for a group, *filtering out* those sections that do not
relate to one of the permitted subset of scoring keywords.
@itemize @bullet
@node Agent and IMAP
@subsection Agent and IMAP
-The Agent work with any Gnus backend, including nnimap. However, since
-there are some conceptual differences between NNTP and IMAP, this
-section (should) provide you with some information to make Gnus Agent
-work smoother as a IMAP Disconnected Mode client.
+The Agent work with any Gnus back end, including nnimap. However,
+since there are some conceptual differences between @sc{nntp} and
+@sc{imap}, this section (should) provide you with some information to
+make Gnus Agent work smoother as a @sc{imap} Disconnected Mode client.
The first thing to keep in mind is that all flags (read, ticked, etc)
-are kept on the IMAP server, rather than in @code{.newsrc} as is the
+are kept on the @sc{imap} server, rather than in @file{.newsrc} as is the
case for nntp. Thus Gnus need to remember flag changes when
disconnected, and synchronize these flags when you plug back in.
Gnus keep track of flag changes when reading nnimap groups under the
Agent by default. When you plug back in, by default Gnus will check if
-you have any changed any flags and ask if you wish to synchronize theese
-with the server. This behaviour is customizable with
+you have any changed any flags and ask if you wish to synchronize these
+with the server. This behavior is customizable with
@code{gnus-agent-synchronize-flags}.
@vindex gnus-agent-synchronize-flags
in the group buffer by default.
Some things are currently not implemented in the Agent that you'd might
-expect from a disconnected IMAP client, including:
+expect from a disconnected @sc{imap} client, including:
@itemize @bullet
@table @kbd
@item V s
-@kindex V s (Summary)
+@kindex V s @r{(Summary)}
@findex gnus-summary-set-score
Set the score of the current article (@code{gnus-summary-set-score}).
@item V S
-@kindex V S (Summary)
+@kindex V S @r{(Summary)}
@findex gnus-summary-current-score
Display the score of the current article
(@code{gnus-summary-current-score}).
@item V t
-@kindex V t (Summary)
+@kindex V t @r{(Summary)}
@findex gnus-score-find-trace
Display all score rules that have been used on the current article
(@code{gnus-score-find-trace}).
@item V R
-@kindex V R (Summary)
+@kindex V R @r{(Summary)}
@findex gnus-summary-rescore
Run the current summary through the scoring process
(@code{gnus-summary-rescore}). This might be useful if you're playing
effect you're having.
@item V c
-@kindex V c (Summary)
+@kindex V c @r{(Summary)}
@findex gnus-score-change-score-file
Make a different score file the current
(@code{gnus-score-change-score-file}).
@item V e
-@kindex V e (Summary)
+@kindex V e @r{(Summary)}
@findex gnus-score-edit-current-scores
Edit the current score file (@code{gnus-score-edit-current-scores}).
You will be popped into a @code{gnus-score-mode} buffer (@pxref{Score
File Editing}).
@item V f
-@kindex V f (Summary)
+@kindex V f @r{(Summary)}
@findex gnus-score-edit-file
Edit a score file and make this score file the current one
(@code{gnus-score-edit-file}).
@item V F
-@kindex V F (Summary)
+@kindex V F @r{(Summary)}
@findex gnus-score-flush-cache
Flush the score cache (@code{gnus-score-flush-cache}). This is useful
after editing score files.
@item V C
-@kindex V C (Summary)
+@kindex V C @r{(Summary)}
@findex gnus-score-customize
Customize a score file in a visually pleasing manner
(@code{gnus-score-customize}).
@table @kbd
@item V m
-@kindex V m (Summary)
+@kindex V m @r{(Summary)}
@findex gnus-score-set-mark-below
Prompt for a score, and mark all articles with a score below this as
read (@code{gnus-score-set-mark-below}).
@item V x
-@kindex V x (Summary)
+@kindex V x @r{(Summary)}
@findex gnus-score-set-expunge-below
Prompt for a score, and add a score rule to the current score file to
expunge all articles below this score
@table @kbd
@item W f
-@kindex W f (Group)
+@kindex W f @r{(Group)}
@findex gnus-score-flush-cache
Gnus maintains a cache of score alists to avoid having to reload them
all the time. This command will flush the cache
For example, to do hierarchical scoring but use a non-server-specific
overall score file, you could use the value
@example
-(list (lambda (group) ("all.SCORE")) 'gnus-score-find-hierarchical)
+(list (lambda (group) ("all.SCORE"))
+ 'gnus-score-find-hierarchical)
@end example
@item gnus-score-expiry-days
(It's easy to get confused and think it's the other way around. But
it's not. I think.)
-When matching on @code{Lines}, be careful because some backends (like
+When matching on @code{Lines}, be careful because some back ends (like
@code{nndir}) do not generate @code{Lines} header, so every article ends
up being marked as having 0 lines. This can lead to strange results if
you happen to lower score of the articles with few lines.
might look something like this:
@lisp
-(defvar gnus-default-adaptive-score-alist
+(setq gnus-default-adaptive-score-alist
'((gnus-unread-mark)
(gnus-ticked-mark (from 4))
(gnus-dormant-mark (from 5))
@enumerate
@item
@code{(@var{regexp} @var{file-name})}. If the @var{regexp} matches the
-group name, the @var{file-name} will will be used as the home score file.
+group name, the @var{file-name} will be used as the home score file.
@item
A function. If the function returns non-nil, the result will be used as
@vindex message-sent-hook
These two functions are both primarily meant to be used in hooks like
-@code{message-sent-hook}.
+@code{message-sent-hook}, like this:
+@lisp
+(add-hook 'message-sent-hook 'gnus-score-followup-thread)
+@end lisp
+
If you look closely at your own @code{Message-ID}, you'll notice that
the first two or three characters are always the same. Here's two of
@lisp
("references"
- ("<x6[0-9a-z]+\\.fsf\\(_-_\\)?@@.*eyesore.no>"
+ ("<x6[0-9a-z]+\\.fsf\\(_-_\\)?@@.*eyesore\\.no>"
1000 nil r))
@end lisp
If you want to lower the score of articles that have been crossposted to
more than, say, 3 groups:
@lisp
-("xref" ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+" -1000 nil r))
+("xref"
+ ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+"
+ -1000 nil r))
@end lisp
@item Matching on the body
or each score file directory. Gnus will decide by itself what score
files are applicable to which group.
-Say you want to use the score file
+To use the score file
@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and
-all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
+all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory,
+say this:
@lisp
(setq gnus-global-score-files
@end lisp
@findex gnus-score-search-global-directories
+@noindent
Simple, eh? Directory names must end with a @samp{/}. These
directories are typically scanned only once during each Gnus session.
If you feel the need to manually re-scan the remote directories, you can
@table @kbd
@item M-k
-@kindex M-k (Summary)
+@kindex M-k @r{(Summary)}
@findex gnus-summary-edit-local-kill
Edit this group's kill file (@code{gnus-summary-edit-local-kill}).
@item M-K
-@kindex M-K (Summary)
+@kindex M-K @r{(Summary)}
@findex gnus-summary-edit-global-kill
Edit the general kill file (@code{gnus-summary-edit-global-kill}).
@end table
@table @kbd
@item M-k
-@kindex M-k (Group)
+@kindex M-k @r{(Group)}
@findex gnus-group-edit-local-kill
Edit this group's kill file (@code{gnus-group-edit-local-kill}).
@item M-K
-@kindex M-K (Group)
+@kindex M-K @r{(Group)}
@findex gnus-group-edit-global-kill
Edit the general kill file (@code{gnus-group-edit-global-kill}).
@end table
The kill to score conversion package isn't included in Gnus by default.
You can fetch it from
-@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
If your old kill files are very complex---if they contain more
non-@code{gnus-kill} forms than not, you'll have to convert them by
To use GroupLens you must register a pseudonym with your local Better
Bit Bureau (BBB).
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
+@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
better bit in town at the moment.
Once you have registered you'll need to set a couple of variables.
* NoCeM:: How to avoid spam and other fatty foods.
* Undo:: Some actions can be undone.
* Moderation:: What to do if you're a moderator.
+* Emacs Enhancements:: There can be more pictures and stuff under
+ Emacs 21.
* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
* Fuzzy Matching:: What's the big fuzz?
* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
that do explicitly say so in this manual. To apply the process/prefix
convention to commands that do not use it, you can use the @kbd{M-&}
command. For instance, to mark all the articles in the group as
-expirable, you could say `M P b M-& E'.
+expirable, you could say @kbd{M P b M-& E}.
@node Interactive
file, and you want Emacs to flash lights and play a nice tune at the
same time? You can't, and you're probably perfectly happy that way.
-@kindex M-i (Summary)
+@kindex M-i @r{(Summary)}
@findex gnus-symbolic-argument
I'm not, so I've added a second prefix---the @dfn{symbolic prefix}. The
prefix key is @kbd{M-i} (@code{gnus-symbolic-argument}), and the next
character typed in is the value. You can stack as many @kbd{M-i}
-prefixes as you want. @kbd{M-i a M-C-u} means ``feed the @kbd{M-C-u}
-command the symbolic prefix @code{a}''. @kbd{M-i a M-i b M-C-u} means
-``feed the @kbd{M-C-u} command the symbolic prefixes @code{a} and
+prefixes as you want. @kbd{M-i a C-M-u} means ``feed the @kbd{C-M-u}
+command the symbolic prefix @code{a}''. @kbd{M-i a M-i b C-M-u} means
+``feed the @kbd{C-M-u} command the symbolic prefixes @code{a} and
@code{b}''. You get the drift.
Typing in symbolic prefixes to commands that don't accept them doesn't
may look like:
@example
-split = frame | horizontal | vertical | buffer | form
-frame = "(frame " size *split ")"
-horizontal = "(horizontal " size *split ")"
-vertical = "(vertical " size *split ")"
-buffer = "(" buffer-name " " size *[ "point" ] *[ "frame-focus"] ")"
-size = number | frame-params
-buffer-name = group | article | summary ...
+split = frame | horizontal | vertical | buffer | form
+frame = "(frame " size *split ")"
+horizontal = "(horizontal " size *split ")"
+vertical = "(vertical " size *split ")"
+buffer = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")"
+size = number | frame-params
+buf-name = group | article | summary ...
@end example
The limitations are that the @code{frame} split can only appear as the
accomplish that, something like the following can be done:
@lisp
-(message (frame 1.0
- (if (not (buffer-live-p gnus-summary-buffer))
- (car (cdr (assoc 'group gnus-buffer-configuration)))
- (car (cdr (assoc 'summary gnus-buffer-configuration))))
- (vertical ((user-position . t) (top . 1) (left . 1)
- (name . "Message"))
- (message 1.0 point))))
+(message
+ (frame 1.0
+ (if (not (buffer-live-p gnus-summary-buffer))
+ (car (cdr (assoc 'group gnus-buffer-configuration)))
+ (car (cdr (assoc 'summary gnus-buffer-configuration))))
+ (vertical ((user-position . t) (top . 1) (left . 1)
+ (name . "Message"))
+ (message 1.0 point))))
@end lisp
@findex gnus-add-configuration
@cindex mouse
@cindex click
-Those new-fangled @dfn{mouse} contraptions is very popular with the
+Those new-fangled @dfn{mouse} contraptions are very popular with the
young, hep kids who don't want to learn the proper way to do things
these days. Why, I remember way back in the summer of '89, when I was
using Emacs on a Tops 20 system. Three hundred users on one single
Right.
@vindex gnus-carpal
-Well, you can make Gnus display bufferfuls of buttons you can click to
+Well, you can make Gnus display buffers full of buttons you can click to
do anything by setting @code{gnus-carpal} to @code{t}. Pretty simple,
really. Tell the chiropractor I sent you.
@findex gnus-undo
The undoability is provided by the @code{gnus-undo-mode} minor mode. It
is used if @code{gnus-use-undo} is non-@code{nil}, which is the
-default. The @kbd{M-C-_} key performs the @code{gnus-undo} command
+default. The @kbd{C-M-_} key performs the @code{gnus-undo}
command, which should feel kinda like the normal Emacs @code{undo}
command.
"^nnml:rec.zoofle$\\|^rec.zoofle$")
@end lisp
+@node Emacs Enhancements
+@section Emacs Enhancements
+@cindex Emacs 21
+
+Starting with version 21, Emacs is able to display pictures and stuff,
+so Gnus has taken advantage of that.
+
+Gnus-specific tool bars will be used if Tool Bar mode is on. Currently
+the group, summary and message buffers have tool bars defined.
+
+MIME image types may be displayed internally if Emacs was built with
+appropriate support (see variable @code{image-types}). `X-Face' headers
+may be rendered as images internally if you have appropriate support
+programs (@pxref{X-Face}). You can play sounds internally if Emacs was
+built with suitable audio support; otherwise Gnus will attempt to play
+sounds externally.
+
+@vindex gnus-treat-display-smileys
+A simplified version of the XEmacs Smiley support for @dfn{emoticons}
+(@pxref{Smileys}) is available on graphical displays under the control
+of @code{gnus-treat-display-smileys}. Text `smiley' faces---@samp{:-)},
+@samp{:-/}, @samp{:-(} and the like---are mapped to pictures which are
+displayed instead. The mapping is controlled by a list of regexps
+@vindex smiley-regexp-alist
+@code{smiley-regexp-alist} mapping matched text to image file names. It
+contains matches for `smiley', `wry' and `frowny' by default.
+
+There is currently no Emacs support for `Picons' (@pxref{Picons}), but
+there is no reason why it couldn't be added.
@node XEmacs Enhancements
@section XEmacs Enhancements
@end iflatex
@end iftex
-So... You want to slow down your news reader even more! This is a
+So@dots{} You want to slow down your news reader even more! This is a
good way to do so. Its also a great way to impress people staring
over your shoulder as you read news.
If you have a permanent connection to the Internet you can use Steve
Kinzler's Picons Search engine by setting
@code{gnus-picons-piconsearch-url} to the string @*
-@file{http://www.cs.indiana.edu/picons/search.html}.
+@uref{http://www.cs.indiana.edu/picons/search.html}.
@vindex gnus-picons-database
Otherwise you need a local copy of his database. For instructions on
obtaining and installing the picons databases, point your Web browser at @*
-@file{http://www.cs.indiana.edu/picons/ftp/index.html}. Gnus expects
+@uref{http://www.cs.indiana.edu/picons/ftp/index.html}. Gnus expects
picons to be installed into a location pointed to by
@code{gnus-picons-database}.
@item gnus-picons-piconsearch-url
@vindex gnus-picons-piconsearch-url
The URL for the web picons search engine. The only currently known
-engine is @file{http://www.cs.indiana.edu:800/piconsearch}. To
+engine is @uref{http://www.cs.indiana.edu:800/piconsearch}. To
workaround network delays, icons will be fetched in the background. If
this is @code{nil} 'the default), then picons are fetched from local
database indicated by @code{gnus-picons-database}.
has only an effect if `gnus-picons-display-where' has value `article'.
If @code{nil}, display the picons in the @code{From} and
-@code{Newsgroups} lines. This is the defailt.
+@code{Newsgroups} lines. This is the default.
@item gnus-picons-clear-cache-on-shutdown
@vindex gnus-picons-clear-cache-on-shutdown
put it in your @code{From} header of all your news articles. (I've
chosen @samp{larsi@@trym.ifi.uio.no}, but for many addresses on the form
@samp{larsi+usenet@@ifi.uio.no} will be a better choice. Ask your
-sysadm whether your sendmail installation accepts keywords in the local
+sysadmin whether your sendmail installation accepts keywords in the local
part of the mail address.)
@lisp
citizen, you can even send off complaints to the proper authorities on
each unsolicited commercial email---at your leisure.
-If you are also a lazy net citizen, you will probably prefer complaining
-automatically with the @file{gnus-junk.el} package, available FOR FREE
-at @* @file{<URL:http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html>}.
-Since most e-mail spam is sent automatically, this may reconcile the
-cosmic balance somewhat.
+If you are also a lazy net citizen, you will probably prefer
+complaining automatically with the @file{gnus-junk.el} package,
+available as free software at @*
+@uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html}. Since most
+e-mail spam is sent automatically, this may reconcile the cosmic
+balance somewhat.
This works for me. It allows people an easy way to contact me (they can
just press @kbd{r} in the usual way), and I'm not bothered at all with
@item gnus-verbose-backends
@vindex gnus-verbose-backends
This variable works the same way as @code{gnus-verbose}, but it applies
-to the Gnus backends instead of Gnus proper.
+to the Gnus back ends instead of Gnus proper.
@item nnheader-max-head-length
@vindex nnheader-max-head-length
-When the backends read straight heads of articles, they all try to read
+When the back ends read straight heads of articles, they all try to read
as little as possible. This variable (default 4096) specifies
-the absolute max length the backends will try to read before giving up
+the absolute max length the back ends will try to read before giving up
on finding a separator line between the head and the body. If this
variable is @code{nil}, there is no upper read bound. If it is
-@code{t}, the backends won't try to read the articles piece by piece,
+@code{t}, the back ends won't try to read the articles piece by piece,
but read the entire articles. This makes sense with some versions of
@code{ange-ftp} or @code{efs}.
@samp{:} in a group name, which is normally used to delimit method and
group).
-IMAP users might want to allow @samp{/} in group names though.
+@sc{imap} users might want to allow @samp{/} in group names though.
@end table
If you want to investigate the person responsible for this outrage,
you can point your (feh!) web browser to
-@file{http://quimby.gnus.org/~larsi/}. This is also the primary
+@uref{http://quimby.gnus.org/}. This is also the primary
distribution point for the new and spiffy versions of Gnus, and is
known as The Site That Destroys Newsrcs And Drives People Mad.
* 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.
@end menu
Gnus offers no real solutions to these questions, but I would very much
like to see Gnus being used as a testing ground for new methods of
reading and fetching news. Expanding on @sc{Umeda}-san's wise decision
-to separate the newsreader from the backends, Gnus now offers a simple
-interface for anybody who wants to write new backends for fetching mail
+to separate the newsreader from the back ends, Gnus now offers a simple
+interface for anybody who wants to write new back ends for fetching mail
and news from different sources. I have added hooks for customizations
everywhere I could imagine it being useful. By doing so, I'm inviting
every one of you to explore and invent.
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
+propose changes and new features, post patches and new back ends. 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
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
+usually keep up with these rapid changes, while people on the newsgroup
can't be assumed to do so.
@menu
* 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.
@end menu
These lists are, of course, just @emph{short} overviews of the
@emph{most} important new features. No, really. There are tons more.
Yes, we have feeping creaturism in full effect.
-
@node ding Gnus
@subsubsection (ding) Gnus
@item
You can read a number of different mail formats (@pxref{Getting Mail}).
-All the mail backends implement a convenient mail expiry scheme
+All the mail back ends implement a convenient mail expiry scheme
(@pxref{Expiring Mail}).
@item
else (@pxref{Document Groups}).
@item
-Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets
+Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets
(@pxref{SOUP}).
@item
Article headers can be buttonized (@pxref{Article Washing}).
@item
-All mail backends support fetching articles by @code{Message-ID}.
+All mail back ends support fetching articles by @code{Message-ID}.
@item
Duplicate mail can now be treated properly (@pxref{Duplicates}).
when generating lines in buffers (@pxref{Advanced Formatting}).
@item
-Several commands in the group buffer can be undone with @kbd{M-C-_}
+Several commands in the group buffer can be undone with @kbd{C-M-_}
(@pxref{Undo}).
@item
@item
A new command for reading collections of documents
-(@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d}
+(@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{C-M-d}
(@pxref{Really Various Summary Commands}).
@item
Marks}).
@item
-A new mail-to-news backend makes it possible to post even when the @sc{nntp}
+A new mail-to-news back end makes it possible to post even when the @sc{nntp}
server doesn't allow posting (@pxref{Mail-To-News Gateways}).
@item
-A new backend for reading searches from Web search engines
+A new back end for reading searches from Web search engines
(@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added
(@pxref{Web Searches}).
@pxref{Gnus Unplugged} for the full story.
@item
- The @code{nndraft} backend has returned, but works differently than
+ The @code{nndraft} back end has returned, but works differently than
before. All Message buffers are now also articles in the @code{nndraft}
group, which is created automatically.
limit.
@item
- @kbd{M-RET} is a new Message command for breaking cited text.
+ @kbd{M-@key{RET}} is a new Message command for breaking cited text.
@item
@samp{\\1}-expressions are now valid in @code{nnmail-split-methods}.
updated by the @code{gnus-start-date-timer} command.
@item
- Web listserv archives can be read with the @code{nnlistserv} backend.
+ Web listserv archives can be read with the @code{nnlistserv} back end.
@item
Old dejanews archives can now be read by @code{nnweb}.
@end itemize
+@node Pterodactyl Gnus
+@subsubsection Pterodactyl Gnus
-@node Newest Features
-@subsection Newest Features
-@cindex todo
-
-Also known as the @dfn{todo list}. Sure to be implemented before the
-next millennium.
-
-Be afraid. Be very afraid.
-
-(That a feature appears in this list doesn't necessarily mean that I've
-decided to actually implement it. It just means that I think it sounds
-interesting.)
-
-(Yes, this is the actual, up-to-the-second todo list.)
+New features in Gnus 5.8:
@itemize @bullet
-@item
- I would like the zombie-page to contain an URL to the source of the
-latest version of gnus or some explanation on where to find it.
+@item The mail-fetching functions have changed. See the manual for the
+many details. In particular, all procmail fetching variables are gone.
-@item
- A way to continue editing the latest Message composition.
+If you used procmail like in
-@item
- http://www.sonicnet.com/feature/ari3/
+@lisp
+(setq nnmail-use-procmail t)
+(setq nnmail-spool-file 'procmail)
+(setq nnmail-procmail-directory "~/mail/incoming/")
+(setq nnmail-procmail-suffix "\\.in")
+@end lisp
-@item
- facep is not declared.
+this now has changed to
-@item
- Include a section in the manual on why the number of articles
-isn't the same in the group buffer and on the SPC prompt.
+@lisp
+(setq mail-sources
+ '((directory :path "~/mail/incoming/"
+ :suffix ".in")))
+@end lisp
-@item
- Interacting with rmail fcc isn't easy.
+More information is available in the info doc at Select Methods ->
+Getting Mail -> Mail Sources
-@item
-@example
- Hypermail:
-<URL:http://www.falch.no/people/pepper/DSSSL-Lite/archives/>
-<URL:http://www.eit.com/software/hypermail/hypermail.html>
-<URL:http://homer.ncm.com/>
-<URL:http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/HTML_Converters/>
-http://www.uwsg.indiana.edu/hypermail/linux/kernel/9610/index.html
-<URL:http://union.ncsa.uiuc.edu/HyperNews/get/www/html/converters.html>
-http://www.miranova.com/gnus-list/
+@item Gnus is now a MIME-capable reader. This affects many parts of
+Gnus, and adds a slew of new commands. See the manual for details.
-@end example
+@item Gnus has also been multilingualized. This also affects too
+many parts of Gnus to summarize here, and adds many new variables.
-@item
-@samp{^-- } is made into - in LaTeX.
+@item @code{gnus-auto-select-first} can now be a function to be
+called to position point.
-@item
- gnus-kill is much slower than it was in GNUS 4.1.3.
+@item The user can now decide which extra headers should be included in
+summary buffers and NOV files.
-@item
- when expunging articles on low score, the sparse nodes keep hanging on?
-@item
- starting the first time seems to hang Gnus on some systems. Does
-NEWGROUPS answer too fast?
-@item
- nndir doesn't read gzipped files.
-@item
- FAQ doesn't have an up node?
-@item
- when moving mail from a procmail spool to the crash-box,
-the crash-box is only appropriate to one specific group.
-@item
- `t' `t' makes X-Faces disappear.
-@item
- nnmh-be-safe means that crossposted articles will
-be marked as unread.
-@item
- Orphan score entries don't show on "V t" score trace
-@item
- when clearing out data, the cache data should also be reset.
-@item
- rewrite gnus-summary-limit-children to be non-recursive
-to avoid exceeding lisp nesting on huge groups.
-@item
- expunged articles are counted when computing scores.
-@item
- implement gnus-batch-brew-soup
-@item
- ticked articles aren't easy to read in pick mode -- `n' and
-stuff just skips past them. Read articles are the same.
-@item
- topics that contain just groups with ticked
-articles aren't displayed.
-@item
- nndoc should always allocate unique Message-IDs.
-@item
- If there are mail groups the first time you use Gnus, Gnus'll
-make the mail groups killed.
-@item
- no "no news is good news" when using topics.
-@item
- when doing crosspost marking, the cache has to be consulted
-and articles have to be removed.
-@item
- nnweb should fetch complete articles when they are split into several
-parts.
-@item
- scoring on head immediate doesn't work.
-@item
- finding short score file names takes forever.
-@item
- canceling articles in foreign groups.
-@item
- nntp-open-rlogin no longer works.
-@item
- C-u C-x C-s (Summary) switches to the group buffer.
-@item
- move nnmail-split-history out to the backends.
-@item
- nnweb doesn't work properly.
-@item
- using a virtual server name as `gnus-select-method' doesn't work?
-@item
- when killing/yanking a group from one topic to another in a slave, the
-master will yank it first to one topic and then add it to another.
-Perhaps.
+@item @code{gnus-article-display-hook} has been removed. Instead, a number
+of variables starting with @code{gnus-treat-} have been added.
-@item
- warn user about `=' redirection of a group in the active file?
-@item
- take over the XEmacs menubar and offer a toggle between the XEmacs
-bar and the Gnus bar.
-@item
-@example
- push active file and NOV file parsing down into C code.
-`(canonize-message-id id)'
-`(mail-parent-message-id references n)'
-`(parse-news-nov-line &optional dependency-hashtb)'
-`(parse-news-nov-region beg end &optional dependency-hashtb fullp)'
-`(parse-news-active-region beg end hashtb)'
+@item The Gnus posting styles have been redone again and now works in a
+subtly different manner.
-@end example
+@item New web-based back ends have been added: @code{nnslashdot},
+@code{nnwarchive} and @code{nnultimate}. nnweb has been revamped,
+again, to keep up with ever-changing layouts.
-@item
- nnml .overview directory with splits.
-@item
- asynchronous cache
-@item
- postponed commands.
-@item
- the selected article show have its Subject displayed in its summary line.
-@item
- when entering groups, get the real number of unread articles from
-the server?
-@item
- sort after gathering threads -- make false roots have the
-headers of the oldest orphan with a 0 article number?
-@item
- nndoc groups should inherit the score files of their parents? Also
-inherit copy prompts and save files.
-@item
- command to start up Gnus (if not running) and enter a mail mode buffer.
-@item
- allow editing the group description from the group buffer
-for backends that support that.
-@item
-gnus-hide,show-all-topics
-@item
- groups and sub-topics should be allowed to mingle inside each topic,
-and not just list all subtopics at the end.
-@item
- a command to remove all read articles that are not needed to connect
-threads -- `gnus-summary-limit-to-sparse-unread'?
-@item
- a variable to turn off limiting/cutting of threads in the tree buffer.
-@item
- a variable to limit how many files are uudecoded.
-@item
- add zombie groups to a special "New Groups" topic.
-@item
- server mode command: close/open all connections
-@item
- put a file date in gnus-score-alist and check whether the file
-has been changed before using it.
-@item
- on exit from a digest group, go to the next article in the parent group.
-@item
- hide (sub)threads with low score.
-@item
- when expiring, remove all marks from expired articles.
-@item
- gnus-summary-limit-to-body
-@item
- a regexp alist that says what level groups are to be subscribed
-on. Eg. -- `(("nnml:" . 1))'.
-@item
- easier interface to nnkiboze to create ephemeral groups that
-contain groups that match a regexp.
-@item
- allow newlines in <URL:> urls, but remove them before using
-the URL.
-@item
- If there is no From line, the mail backends should fudge one from the
-"From " line.
-@item
- fuzzy simplifying should strip all non-alpha-numerical info
-from subject lines.
-@item
- gnus-soup-brew-soup-with-high-scores.
-@item
- nntp-ping-before-connect
-@item
- command to check whether NOV is evil. "list overview.fmt".
-@item
- when entering a group, Gnus should look through the score
-files very early for `local' atoms and set those local variables.
-@item
- message annotations.
-@item
- topics are always yanked before groups, and that's not good.
-@item
- (set-extent-property extent 'help-echo "String to display in minibuf")
-to display help in the minibuffer on buttons under XEmacs.
-@item
- allow group line format spec to say how many articles there
-are in the cache.
-@item
- AUTHINFO GENERIC
-@item
- `run-with-idle-timer' in gnus-demon.
-@item
- stop using invisible text properties and start using overlays instead
-@item
- C-c C-f C-e to add an Expires header.
-@item
- go from one group to the next; everything is expunged; go to the
-next group instead of going to the group buffer.
-@item
- gnus-renumber-cache -- to renumber the cache using "low" numbers.
-@item
- record topic changes in the dribble buffer.
-@item
- `nnfolder-generate-active-file' should look at the folders it
-finds and generate proper active ranges.
-@item
- nneething-look-in-files-for-article-heads variable to control
-whether nneething should sniff all files in the directories.
-@item
- gnus-fetch-article -- start Gnus, enter group, display article
-@item
- gnus-dont-move-articles-to-same-group variable when respooling.
-@item
- when messages are crossposted between several auto-expirable groups,
-articles aren't properly marked as expirable.
-@item
- nneething should allow deletion/moving.
-@item
- TAB on the last button should go to the first button.
-@item
- if the car of an element in `mail-split-methods' is a function,
-and the function returns non-nil, use that as the name of the group(s) to
-save mail in.
-@item
- command for listing all score files that have been applied.
-@item
- a command in the article buffer to return to `summary' config.
-@item
- `gnus-always-post-using-current-server' -- variable to override
-`C-c C-c' when posting.
-@item
- nnmail-group-spool-alist -- says where each group should use
-as a spool file.
-@item
- when an article is crossposted to an auto-expirable group, the article
-should be marker as expirable.
-@item
- article mode command/menu for "send region as URL to browser".
-@item
- on errors, jump to info nodes that explain the error. For instance,
-on invalid From headers, or on error messages from the nntp server.
-@item
- when gathering threads, make the article that has no "Re: " the parent.
-Also consult Date headers.
-@item
- a token in splits to call shrink-window-if-larger-than-buffer
-@item
- `1 0 A M' to do matches on the active hashtb.
-@item
- duplicates -- command to remove Gnus-Warning header, use the read
-Message-ID, delete the "original".
-@item
- when replying to several messages at once, put the "other" message-ids
-into a See-Also header.
-@item
- support setext: URL:http://www.bsdi.com/setext/
-@item
- support ProleText: <URL:http://proletext.clari.net/prole/proletext.html>
-@item
- when browsing a foreign server, the groups that are already subscribed
-should be listed as such and not as "K".
-@item
- generate font names dynamically.
-@item
- score file mode auto-alist.
-@item
- allow nndoc to change/add/delete things from documents. Implement
-methods for each format for adding an article to the document.
-@item
- `gnus-fetch-old-headers' `all' value to incorporate
-absolutely all headers there is.
-@item
- function like `|', but concatenate all marked articles
-and pipe them to the process.
-@item
- cache the list of killed (or active) groups in a separate file. Update
-the file whenever we read the active file or the list
-of killed groups in the .eld file reaches a certain length.
-@item
- function for starting to edit a file to put into
-the current mail group.
-@item
- score-find-trace should display the total score of the article.
-@item
- "ghettozie" -- score on Xref header and nix it out after using it
-to avoid marking as read in other groups it has been crossposted to.
-@item
- look at procmail splitting. The backends should create
-the groups automatically if a spool file exists for that group.
-@item
- function for backends to register themselves with Gnus.
-@item
- when replying to several process-marked articles,
-have all the From end up in Cc headers? Variable to toggle.
-@item
- command to delete a crossposted mail article from all
-groups it has been mailed to.
-@item
- `B c' and `B m' should be crosspost aware.
-@item
- hide-pgp should also hide PGP public key blocks.
-@item
- Command in the group buffer to respool process-marked groups.
-@item
- `gnus-summary-find-matching' should accept
-pseudo-"headers" like "body", "head" and "all"
-@item
- When buttifying <URL: > things, all white space (including
-newlines) should be ignored.
-@item
- Process-marking all groups in a topic should process-mark
-groups in subtopics as well.
-@item
- Add non-native groups to the list of killed groups when killing them.
-@item
- nntp-suggest-kewl-config to probe the nntp server and suggest
-variable settings.
-@item
- add edit and forward secondary marks.
-@item
- nnml shouldn't visit its .overview files.
-@item
- allow customizing sorting within gathered threads.
-@item
- `B q' shouldn't select the current article.
-@item
- nnmbox should support a newsgroups file for descriptions.
-@item
- allow fetching mail from several pop servers.
-@item
- Be able to specify whether the saving commands save the original
-or the formatted article.
-@item
- a command to reparent with the child process-marked (cf. `T ^'.).
-@item
- I think the possibility to send a password with nntp-open-rlogin
-should be a feature in Red Gnus.
-@item
- The `Z n' command should be possible to execute from a mouse click.
-@item
- more limiting functions -- date, etc.
-@item
- be able to limit on a random header; on body; using reverse matches.
-@item
- a group parameter (`absofucking-total-expiry') that will make Gnus expire
-even unread articles.
-@item
- a command to print the article buffer as postscript.
-@item
- variable to disable password fetching when opening by nntp-open-telnet.
-@item
- manual: more example servers -- nntp with rlogin, telnet
-@item
- checking for bogus groups should clean topic alists as well.
-@item
- canceling articles in foreign groups.
-@item
- article number in folded topics isn't properly updated by
-Xref handling.
-@item
- Movement in the group buffer to the next unread group should go to the
-next closed topic with unread messages if no group can be found.
-@item
- Extensive info pages generated on the fly with help everywhere --
-in the "*Gnus edit*" buffers, for instance.
-@item
- Topic movement commands -- like thread movement. Up, down, forward, next.
-@item
- a way to tick/mark as read Gcc'd articles.
-@item
- a way to say that all groups within a specific topic comes
-from a particular server? Hm.
-@item
- `gnus-article-fill-if-long-lines' -- a function to fill
-the article buffer if there are any looong lines there.
-@item
- `T h' should jump to the parent topic and fold it.
-@item
- a command to create an ephemeral nndoc group out of a file,
-and then splitting it/moving it to some other group/backend.
-@item
- a group parameter for nnkiboze groups that says that
-all kibozed articles should be entered into the cache.
-@item
- It should also probably be possible to delimit what
-`gnus-jog-cache' does -- for instance, work on just some groups, or on
-some levels, and entering just articles that have a score higher than
-a certain number.
-@item
- nnfolder should append to the folder instead of re-writing
-the entire folder to disk when accepting new messages.
-@item
- allow all backends to do the proper thing with .gz files.
-@item
- a backend for reading collections of babyl files nnbabylfolder?
-@item
- a command for making the native groups into foreign groups.
-@item
- server mode command for clearing read marks from all groups
-from a server.
-@item
- when following up multiple articles, include all To, Cc, etc headers
-from all articles.
-@item
- a command for deciding what the total score of the current
-thread is. Also a way to highlight based on this.
-@item
- command to show and edit group scores
-@item
- a gnus-tree-minimize-horizontal to minimize tree buffers
-horizontally.
-@item
- command to generate nnml overview file for one group.
-@item
- `C-u C-u a' -- prompt for many crossposted groups.
-@item
- keep track of which mail groups have received new articles (in this session).
-Be able to generate a report and perhaps do some marking in the group
-buffer.
-@item
- gnus-build-sparse-threads to a number -- build only sparse threads
-that are of that length.
-@item
- have nnmh respect mh's unseen sequence in .mh_profile.
-@item
- cache the newsgroups descriptions locally.
-@item
- asynchronous posting under nntp.
-@item
- be able to control word adaptive scoring from the score files.
-@item
- a variable to make `C-c C-c' post using the "current" select method.
-@item
- `limit-exclude-low-scored-articles'.
-@item
- if `gnus-summary-show-thread' is a number, hide threads that have
-a score lower than this number.
-@item
- split newsgroup subscription variable up into "order" and "method".
-@item
- buttonize ange-ftp file names.
-@item
- a command to make a duplicate copy of the current article
-so that each copy can be edited separately.
-@item
- nnweb should allow fetching from the local nntp server.
-@item
- record the sorting done in the summary buffer so that
-it can be repeated when limiting/regenerating the buffer.
-@item
- nnml-generate-nov-databses should generate for
-all nnml servers.
-@item
- when the user does commands in the group buffer, check
-the modification time of the .newsrc.eld file and use
-ask-user-about-supersession-threat. Also warn when trying
-to save .newsrc.eld and it has changed.
-@item
- M-g on a topic will display all groups with 0 articles in
-the topic.
-@item
- command to remove all topic stuff.
-@item
- allow exploding incoming digests when reading incoming mail
-and splitting the resulting digests.
-@item
- nnsoup shouldn't set the `message-' variables.
-@item
- command to nix out all nnoo state information.
-@item
- nnmail-process-alist that calls functions if group names
-matches an alist -- before saving.
-@item
- use buffer-invisibility-spec everywhere for hiding text.
-@item
- variable to activate each group before entering them
-to get the (new) number of articles. `gnus-activate-before-entering'.
-@item
- command to fetch a Message-ID from any buffer, even
-starting Gnus first if necessary.
-@item
- when posting and checking whether a group exists or not, just
-ask the nntp server instead of relying on the active hashtb.
-@item
- buttonize the output of `C-c C-a' in an apropos-like way.
-@item
- `G p' should understand process/prefix, and allow editing
-of several groups at once.
-@item
- command to create an ephemeral nnvirtual group that
-matches some regexp(s).
-@item
- nndoc should understand "Content-Type: message/rfc822" forwarded messages.
-@item
- it should be possible to score "thread" on the From header.
-@item
- hitting RET on a "gnus-uu-archive" pseudo article should unpack it.
-@item
- `B i' should display the article at once in the summary buffer.
-@item
- remove the "*" mark at once when unticking an article.
-@item
- `M-s' should highlight the matching text.
-@item
- when checking for duplicated mails, use Resent-Message-ID if present.
-@item
- killing and yanking groups in topics should be better. If killing one copy
-of a group that exists in multiple topics, only that copy should
-be removed. Yanking should insert the copy, and yanking topics
-should be possible to be interspersed with the other yankings.
-@item
- command for enter a group just to read the cached articles. A way to say
-"ignore the nntp connection; just read from the cache."
-@item
- `X u' should decode base64 articles.
-@item
- a way to hide all "inner" cited text, leaving just the most
-recently cited text.
-@item
- nnvirtual should be asynchronous.
-@item
- after editing an article, gnus-original-article-buffer should
-be invalidated.
-@item
- there should probably be a way to make Gnus not connect to the
-server and just read the articles in the server
-@item
- allow a `set-default' (or something) to change the default
-value of nnoo variables.
-@item
- a command to import group infos from a .newsrc.eld file.
-@item
- groups from secondary servers have the entire select method
-listed in each group info.
-@item
- a command for just switching from the summary buffer to the group
-buffer.
-@item
- a way to specify that some incoming mail washing functions
-should only be applied to some groups.
-@item
- Message `C-f C-t' should ask the user whether to heed
-mail-copies-to: never.
-@item
- new group parameter -- `post-to-server' that says to post
-using the current server. Also a variable to do the same.
-@item
- the slave dribble files should auto-save to the slave file names.
-@item
- a group parameter that says what articles to display on group entry, based
-on article marks.
-@item
- a way to visually distinguish slave Gnusae from masters. (Whip instead
-of normal logo?)
-@item
- Use DJ Bernstein "From " quoting/dequoting, where applicable.
-@item
- Why is hide-citation-maybe and hide-citation different? Also
-clear up info.
-@item
- group user-defined meta-parameters.
-
-
-
-From: John Griffith <griffith@@sfs.nphil.uni-tuebingen.de>
-@item
- I like the option for trying to retrieve the FAQ for a group and I was
-thinking it would be great if for those newsgroups that had archives
-you could also try to read the archive for that group. Part of the
-problem is that archives are spread all over the net, unlike FAQs.
-What would be best I suppose is to find the one closest to your site.
-
-In any case, there is a list of general news group archives at @*
-ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html
-
-
-
-
-@item
-@example
-From: Jason L Tibbitts III <tibbs@@hpc.uh.edu>
-(add-hook 'gnus-select-group-hook
- (lambda ()
- (gnus-group-add-parameter group
- (cons 'gnus-group-date-last-entered (list (current-time-string))))))
-
-(defun gnus-user-format-function-d (headers)
- "Return the date the group was last read."
- (cond ((car (gnus-group-get-parameter gnus-tmp-group 'gnus-group-date-last-entered)))
- (t "")))
-@end example
-
-@item
- tanken var at når du bruker `gnus-startup-file' som prefix (FOO) til å lete
-opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den være en
-liste hvor du bruker hvert element i listen som FOO, istedet. da kunne man
-hatt forskjellige serveres startup-filer forskjellige steder.
-
-
-@item
-LMI> Well, nnbabyl could alter the group info to heed labels like
-LMI> answered and read, I guess.
-
-It could also keep them updated (the same for the Status: header of
-unix mbox files).
-
-They could be used like this:
-
-
-@example
-`M l <name> RET' add label <name> to current message.
-`M u <name> RET' remove label <name> from current message.
-`/ l <expr> RET' limit summary buffer according to <expr>.
-
-<expr> would be a boolean expression on the labels, e.g.
-
-`/ l bug & !fixed RET'
-@end example
-
-would show all the messages which are labeled `bug' but not labeled
-`fixed'.
-
-One could also imagine the labels being used for highlighting, or
-affect the summary line format.
-
-
-@item
-Sender: abraham@@dina.kvl.dk
-
-I'd like a gnus-find-file which work like find file, except that it
-would recognize things that looks like messages or folders:
-
-- If it is a directory containing numbered files, create an nndir
-summary buffer.
-
-- For other directories, create a nneething summary buffer.
-
-- For files matching "\\`From ", create a nndoc/mbox summary.
-
-- For files matching "\\`BABYL OPTIONS:", create a nndoc/baby summary.
-
-- For files matching "\\`[^ \t\n]+:", create an *Article* buffer.
-
-- For other files, just find them normally.
-
-I'd like `nneething' to use this function, so it would work on a
-directory potentially containing mboxes or babyl files.
-
-@item
-Please send a mail to bwarsaw@@cnri.reston.va.us (Barry A. Warsaw) and
-tell him what you are doing.
-
-@item
-Currently, I get prompted:
-
-decend into sci?
-- type y
-decend into sci.something ?
-- type n
-decend into ucd?
-
-The problem above is that since there is really only one subsection of
-science, shouldn't it prompt you for only descending sci.something? If
-there was a sci.somethingelse group or section, then it should prompt
-for sci? first the sci.something? then sci.somethingelse?...
-
-@item
-Ja, det burde være en måte å si slikt. Kanskje en ny variabel?
-`gnus-use-few-score-files'? SÃ¥ kunne score-regler legges til den
-"mest" lokale score-fila. F. eks. ville no-gruppene betjenes av
-"no.all.SCORE", osv.
-
-@item
-What i want is for Gnus to treat any sequence or combination of the following
-as a single spoiler warning and hide it all, replacing it with a "Next Page"
-button:
-
-
-^L's
-
-more than n blank lines
-
-more than m identical lines
-(which should be replaced with button to show them)
-
-any whitespace surrounding any of the above
-
-
-@item
-Well, we could allow a new value to `gnus-thread-ignore-subject' --
-`spaces', or something. (We could even default to that.) And then
-subjects that differ in white space only could be considered the
-"same" subject for threading purposes.
-
-@item
-Modes to preprocess the contents (e.g. jka-compr) use the second form
-"(REGEXP FUNCTION NON-NIL)" while ordinary modes (e.g. tex) use the first
-form "(REGEXP . FUNCTION)", so you could use it to distinguish between
-those two types of modes. (auto-modes-alist, insert-file-contents-literally.)
-
-@item
- Under XEmacs -- do funny article marks:
-tick - thumb tack
-killed - skull
-soup - bowl of soup
-score below - dim light bulb
-score over - bright light bulb
-
-@item
-Yes. I think the algorithm is as follows:
-
-@example
-Group-mode
-
- show-list-of-articles-in-group
- if (key-pressed == SPACE)
- if (no-more-articles-in-group-to-select)
- if (articles-selected)
- start-reading-selected-articles;
- junk-unread-articles;
- next-group;
- else
- show-next-page;
-
- else if (key-pressed = '.')
- if (consolidated-menus) # same as hide-thread in Gnus
- select-thread-under-cursor;
- else
- select-article-under-cursor;
-
-
-Article-mode
- if (key-pressed == SPACE)
- if (more-pages-in-article)
- next-page;
- else if (more-selected-articles-to-read)
- next-article;
- else
- next-group;
-@end example
-
-@item
-My precise need here would have been to limit files to Incoming*.
-One could think of some `nneething-only-files' variable, but I guess
-it would have been unacceptable if one was using many unrelated such
-nneething groups.
-
-A more useful approach would be to, in response to the `G D' prompt, be
-allowed to say something like: `~/.mail/Incoming*', somewhat limiting
-the top-level directory only (in case directories would be matched by
-the wildcard expression).
-
-@item
-It would be nice if it also handled
-
- <URL:news://sunsite.auc.dk/>
-
-which should correspond to `B nntp RET sunsite.auc.dk' in *Group*.
-
-
-@item
-
- Take a look at w3-menu.el in the Emacs-W3 distribution - this works out
-really well. Each menu is 'named' by a symbol that would be on a
-gnus-*-menus (where * would be whatever, but at least group, summary, and
-article versions) variable.
-
- So for gnus-summary-menus, I would set to '(sort mark dispose ...)
-
- A value of '1' would just put _all_ the menus in a single 'GNUS' menu in
-the main menubar. This approach works really well for Emacs-W3 and VM.
-
-
-@item
- nndoc should take care to create unique Message-IDs for all its
-articles.
-@item
- gnus-score-followup-article only works when you have a summary buffer
-active. Make it work when posting from the group buffer as well.
-(message-sent-hook).
-@item
- rewrite gnus-demon to use run-with-idle-timers.
-
-@item
- * Enhancements to Gnus:
-
- Add two commands:
-
- * gnus-servers (gnus-start-server-buffer?)--enters Gnus and goes
- straight to the server buffer, without opening any connections to
- servers first.
-
- * gnus-server-read-server-newsrc--produces a buffer very similar to
- the group buffer, but with only groups from that server listed;
- quitting this buffer returns to the server buffer.
-
-@item
- add a command to check the integrity of an nnfolder folder --
-go through the article numbers and see that there are no duplicates,
-and stuff.
-
-@item
- `unsmileyfy-buffer' to undo smileification.
-
-@item
- a command to give all relevant info on an article, including all
-secondary marks.
-
-@item
- when doing `-request-accept-article', the backends should do
-the nnmail duplicate checking.
-
-@item
- allow `message-signature-file' to be a function to return the
-value of the signature file.
-
-@item
- In addition, I would love it if I could configure message-tab so that it
-could call `bbdb-complete-name' in other headers. So, some sort of
-interface like
-
-(setq message-tab-alist
- '((message-header-regexp message-expand-group)
- ("^\\(To\\|[cC]c\\|[bB]cc\\)" bbdb-complete-name)))
-
-then you could run the relevant function to complete the information in
-the header
-
-@item
- cache the newsgroups file locally to avoid reloading it all the time.
-
-@item
- a command to import a buffer into a group.
-
-@item
- nnweb should allow fetching by Message-ID from servers.
-
-@item
- point in the article buffer doesn't always go to the
-beginning of the buffer when selecting new articles.
-
-@item
- a command to process mark all unread articles.
-
-@item
- `gnus-gather-threads-by-references-and-subject' -- first
-do gathering by references, and then go through the dummy roots and
-do more gathering by subject.
-
-@item
- gnus-uu-mark-in-numerical-order -- process mark articles in
-article numerical order.
-
-@item
- (gnus-thread-total-score
- (gnus-id-to-thread (mail-header-id (gnus-summary-article-header))))
-bind to a key.
-
-@item
- sorting by score is wrong when using sparse threads.
-
-@item
- a command to fetch an arbitrary article -- without having to be
-in the summary buffer.
-
-@item
- a new nncvs backend. Each group would show an article, using
-version branches as threading, checkin date as the date, etc.
-
-@item
- http://www.dejanews.com/forms/dnsetfilter_exp.html ?
-This filter allows one to construct advance queries on the Dejanews
-database such as specifying start and end dates, subject, author,
-and/or newsgroup name.
-
-@item
- new Date header scoring type -- older, newer
-
-@item
- use the summary toolbar in the article buffer.
-
-@item
- a command to fetch all articles that are less than X days old.
-
-@item
- in pick mode, `q' should save the list of selected articles in the
-group info. The next time the group is selected, these articles
-will automatically get the process mark.
-
-@item
- Isn't it possible to (also?) allow M-^ to automatically try the
-default server if it fails on the current server? (controlled by a
-user variable, (nil, t, 'ask)).
-
-@item
- make it possible to cancel articles using the select method for the
-current group.
-
-@item
- `gnus-summary-select-article-on-entry' or something. It'll default
-to t and will select whatever article decided by `gnus-auto-select-first'.
-
-@item
- a new variable to control which selection commands should be unselecting.
-`first', `best', `next', `prev', `next-unread', `prev-unread' are
-candidates.
-
-@item
- be able to select groups that have no articles in them
-to be able to post in them (using the current select method).
-
-@item
- be able to post via DejaNews.
-
-@item
- `x' should retain any sortings that have been performed.
-
-@item
- allow the user to specify the precedence of the secondary marks. Also
-allow them to be displayed separately.
-
-@item
- gnus-summary-save-in-pipe should concatenate the results from
-the processes when doing a process marked pipe.
-
-@item
- a new match type, like Followup, but which adds Thread matches on all
-articles that match a certain From header.
-
-@item
- a function that can be read from kill-emacs-query-functions to offer
-saving living summary buffers.
-
-@item
- a function for selecting a particular group which will contain
-the articles listed in a list of article numbers/id's.
-
-@item
- a battery of character translation functions to translate common
-Mac, MS (etc) characters into ISO 8859-1.
-
-@example
-(defun article-fix-m$word ()
- "Fix M$Word smartquotes in an article."
- (interactive)
- (save-excursion
- (let ((buffer-read-only nil))
- (goto-char (point-min))
- (while (search-forward "\221" nil t)
- (replace-match "`" t t))
- (goto-char (point-min))
- (while (search-forward "\222" nil t)
- (replace-match "'" t t))
- (goto-char (point-min))
- (while (search-forward "\223" nil t)
- (replace-match "\"" t t))
- (goto-char (point-min))
- (while (search-forward "\224" nil t)
- (replace-match "\"" t t)))))
-@end example
-
-@item
-@example
- (add-hook 'gnus-exit-query-functions
-'(lambda ()
- (if (and (file-exists-p nnmail-spool-file)
- (> (nnheader-file-size nnmail-spool-file) 0))
- (yes-or-no-p "New mail has arrived. Quit Gnus anyways? ")
- (y-or-n-p "Are you sure you want to quit Gnus? "))))
-@end example
-
-@item
- allow message-default-headers to be a function.
-
-@item
- new Date score match types -- < > = (etc) that take floating point
-numbers and match on the age of the article.
-
-@item
-@example
-> > > If so, I've got one gripe: It seems that when I fire up gnus 5.2.25
-> > > under xemacs-19.14, it's creating a new frame, but is erasing the
-> > > buffer in the frame that it was called from =:-O
->
-> > Hm. How do you start up Gnus? From the toolbar or with
-> > `M-x gnus-other-frame'?
->
-> I normally start it up from the toolbar; at
-> least that's the way I've caught it doing the
-> deed before.
-@end example
-
-@item
- all commands that react to the process mark should push
-the current process mark set onto the stack.
-
-@item
- gnus-article-hide-pgp
-Selv ville jeg nok ha valgt å slette den dersom teksten matcher
-@example
-"\\(This\s+\\)?[^ ]+ has been automatically signed by"
-@end example
-og det er maks hundre tegn mellom match-end og ----linja. Men -det-
-er min type heuristikk og langt fra alles.
-
-@item
- `gnus-subscribe-sorted' -- insert new groups where they would have been
-sorted to if `gnus-group-sort-function' were run.
-
-@item
- gnus-(group,summary)-highlight should respect any `face' text props set
-on the lines.
-
-@item
- use run-with-idle-timer for gnus-demon instead of the
-home-brewed stuff for better reliability.
-
-@item
- add a way to select which NoCeM type to apply -- spam, troll, etc.
-
-@item
- nndraft-request-group should tally auto-save files.
-
-@item
- implement nntp-retry-on-break and nntp-command-timeout.
-
-@item
- gnus-article-highlight-limit that says when not to highlight (long)
-articles.
-
-@item
- (nnoo-set SERVER VARIABLE VALUE)
-
-@item
- nn*-spool-methods
-
-@item
- interrupitng agent fetching of articles should save articles.
-
-@item
- command to open a digest group, and copy all the articles there to the
-current group.
-
-@item
- a variable to disable article body highlights if there's more than
-X characters in the body.
-
-@item
- handle 480/381 authinfo requests separately.
-
-@item
- include the texi/dir file in the distribution.
-
-@item
- format spec to "tab" to a position.
-
-@item
- Move all prompting to the new `M-n' default style.
-
-@item
- command to display all dormant articles.
-
-@item
- gnus-auto-select-next makeover -- list of things it should do.
-
-@item
- a score match type that adds scores matching on From if From has replied
-to something someone else has said.
-
-@item
- Read Netscape discussion groups:
-snews://secnews.netscape.com/netscape.communicator.unix
-
-@item
-One command to edit the original version if an article, and one to edit
-the displayed version.
-
-@item
-@kbd{T v} -- make all process-marked articles the children of the
-current article.
-
-@item
-Switch from initial text to the new default text mechanism.
-
-@item
-How about making it possible to expire local articles? Will it be
-possible to make various constraints on when an article can be
-expired, e.g. (read), (age > 14 days), or the more interesting (read
-& age > 14 days)?
-
-@item
-New limit command---limit to articles that have a certain string
-in the head or body.
-
-@item
-Allow breaking lengthy @sc{nntp} commands.
-
-@item
-gnus-article-highlight-limit, to disable highlighting in big articles.
-
-@item
-Editing an article should put the article to be edited
-in a special, unique buffer.
-
-@item
-A command to send a mail to the admin-address group param.
-
-@item
-A Date scoring type that will match if the article
-is less than a certain number of days old.
-
-@item
-New spec: %~(tab 56) to put point on column 56
-
-@item
-Allow Gnus Agent scoring to use normal score files.
-
-@item
-Rething the Agent active file thing. `M-g' doesn't update the active
-file, for instance.
-
-@item
-With dummy roots, `^' and then selecing the first article
-in any other dummy thread will make Gnus highlight the
-dummy root instead of the first article.
-
-@item
-Propagate all group properties (marks, article numbers, etc) up to the
-topics for displaying.
-
-@item
-`n' in the group buffer with topics should go to the next group
-with unread articles, even if that group is hidden in a topic.
-
-@item
-gnus-posting-styles doesn't work in drafts.
-
-@item
-gnus-summary-limit-include-cached is slow when there are
-many articles in the cache, since it regenerates big parts of the
-summary buffer for each article.
-
-@item
-Implement gnus-batch-brew-soup.
-
-@item
-Group parameters and summary commands for un/subscribing to mailing
-lists.
-
-@item
-Introduce nnmail-home-directory.
-
-@item
-gnus-fetch-group and friends should exit Gnus when the user
-exits the group.
-
-@item
-The jingle is only played on the second invocation of Gnus.
-
-@item
-Bouncing articles should do MIME.
-
-@item
-Crossposted articles should "inherit" the % or @ mark from the other
-groups it has been crossposted to, or something. (Agent.)
-
-@item
-If point is on a group that appears multiple times in topics, and
-you press `l', point will move to the first instance of the group.
-
-@item
-A spec for the group line format to display the number of
-agent-downloaded articles in the group.
-
-@item
-Some nntp servers never respond when posting, so there should be a
-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
-Remove list identifiers from the subject in the summary when doing `^'
-and the like.
-
-@item
-Have the Agent write out articles, one by one, as it retrieves them,
-to avoid having to re-fetch them all if Emacs should crash while
-fetching.
-
-@item
-Be able to forward groups of messages as MIME digests.
-
-@item
-nnweb should include the "get whole article" article when getting articles.
-
-@item
-When I type W W c (gnus-article-hide-citation) in the summary
-buffer, the citations are revealed, but the [+] buttons don't turn
-into [-] buttons. (If I click on one of the [+] buttons, it does
-turn into a [-] button.)
-
-@item
-Perhaps there should be a command to "attach" a buffer of comments to
-a message? That is, `B WHATEVER', you're popped into a buffer, write
-something, end with `C-c C-c', and then the thing you've written gets
-to be the child of the message you're commenting.
-
-@item
-Handle external-body parts.
-
-@item
-When renaming a group name, nnmail-split-history does not get the group
-name renamed.
-
-@item
-Allow mail splitting on bodies when using advanced mail splitting.
-
-@lisp
- (body "whatever.text")
-@end lisp
-
-@item
-Be able to run `J u' from summary buffers.
-
-@item
-Solve the halting problem.
+@item Gnus can now read IMAP mail via @code{nnimap}.
-@c TODO
@end itemize
@iftex
Post an article to the current newsgroup responding to the article you
are reading.
-@item backend
-@cindex backend
-Gnus gets fed articles from a number of backends, both news and mail
-backends. Gnus does not handle the underlying media, so to speak---this
-is all done by the backends.
+@item back end
+@cindex back end
+Gnus gets fed articles from a number of back ends, both news and mail
+back ends. Gnus does not handle the underlying media, so to speak---this
+is all done by the back ends.
@item native
@cindex native
-Gnus will always use one method (and backend) as the @dfn{native}, or
+Gnus will always use one method (and back end) as the @dfn{native}, or
default, way of getting news.
@item foreign
@cindex foreign
You can also have any number of foreign groups active at the same time.
-These are groups that use non-native non-secondary backends for getting
+These are groups that use non-native non-secondary back ends for getting
news.
@item secondary
@cindex secondary
-Secondary backends are somewhere half-way between being native and being
+Secondary back ends are somewhere half-way between being native and being
foreign, but they mostly act like they are native.
@item article
@item @sc{nov}
@cindex nov
-When Gnus enters a group, it asks the backend for the headers of all
+When Gnus enters a group, it asks the back end for the headers of all
unread articles in the group. Most servers support the News OverView
format, which is more compact and much faster to read and parse than the
normal @sc{head} format.
@item select method
@cindex select method
-A structure that specifies the backend, the server and the virtual
+A structure that specifies the back end, the server and the virtual
server settings.
@item virtual server
@item gnus-read-active-file
Set this to @code{nil}, which will inhibit Gnus from requesting the
-entire active file from the server. This file is often v. large. You
+entire active file from the server. This file is often very large. You
also have to set @code{gnus-check-new-newsgroups} and
@code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
doesn't suddenly decide to fetch the active file anyway.
@kindex M-x gnus-bug
@findex gnus-bug
If you find a bug in Gnus, you can report it with the @kbd{M-x gnus-bug}
-command. @kbd{M-x set-variable RET debug-on-error RET t RET}, and send
+command. @kbd{M-x set-variable @key{RET} debug-on-error @key{RET} t @key{RET}}, and send
me the backtrace. I will fix bugs, but I can only fix them if you send
me a precise description as to how to reproduce the bug.
You can never expect the internals of a program not to change, but I
will be defining (in some details) the interface between Gnus and its
-backends (this is written in stone), the format of the score files
+back ends (this is written in stone), the format of the score files
(ditto), data structures (some are less likely to change than others)
and general methods of operation.
@menu
* Gnus Utility Functions:: Common functions and variable to use.
-* Backend Interface:: How Gnus communicates with the servers.
+* Back End Interface:: How Gnus communicates with the servers.
* Score File Syntax:: A BNF definition of the score file standard.
* Headers:: How Gnus stores headers internally.
* Ranges:: A handy format for storing mucho numbers.
@item gnus-news-group-p
@findex gnus-news-group-p
-Says whether @var{group} came from a news backend.
+Says whether @var{group} came from a news back end.
@item gnus-ephemeral-group-p
@findex gnus-ephemeral-group-p
@item gnus-check-backend-function
@findex gnus-check-backend-function
-Takes two parameters, @var{function} and @var{group}. If the backend
+Takes two parameters, @var{function} and @var{group}. If the back end
@var{group} comes from supports @var{function}, return non-@code{nil}.
@lisp
@end table
-@node Backend Interface
-@subsection Backend Interface
+@node Back End Interface
+@subsection Back End Interface
Gnus doesn't know anything about @sc{nntp}, spools, mail or virtual
groups. It only knows how to talk to @dfn{virtual servers}. A virtual
-server is a @dfn{backend} and some @dfn{backend variables}. As examples
+server is a @dfn{back end} and some @dfn{back end variables}. As examples
of the first, we have @code{nntp}, @code{nnspool} and @code{nnmbox}. As
examples of the latter we have @code{nntp-port-number} and
@code{nnmbox-directory}.
-When Gnus asks for information from a backend---say @code{nntp}---on
+When Gnus asks for information from a back end---say @code{nntp}---on
something, it will normally include a virtual server name in the
-function parameters. (If not, the backend should use the ``current''
+function parameters. (If not, the back end should use the ``current''
virtual server.) For instance, @code{nntp-request-list} takes a virtual
server as its only (optional) parameter. If this virtual server hasn't
been opened, the function should fail.
Here the virtual server name is @samp{odd-one} while the name of
the physical server is @samp{ifi.uio.no}.
-The backends should be able to switch between several virtual servers.
-The standard backends implement this by keeping an alist of virtual
+The back ends should be able to switch between several virtual servers.
+The standard back ends implement this by keeping an alist of virtual
server environments that they pull down/push up when needed.
There are two groups of interface functions: @dfn{required functions},
the function call. Functions that fail should return @code{nil} as the
return value.
-Some backends could be said to be @dfn{server-forming} backends, and
-some might be said not to be. The latter are backends that generally
+Some back ends could be said to be @dfn{server-forming} back ends, and
+some might be said not to be. The latter are back ends that generally
only operate on one group at a time, and have no concept of ``server''
-- they have a group, and they deliver info on that group and nothing
more.
-In the examples and definitions I will refer to the imaginary backend
+In the examples and definitions I will refer to the imaginary back end
@code{nnchoke}.
@cindex @code{nnchoke}
@menu
-* Required Backend Functions:: Functions that must be implemented.
-* Optional Backend Functions:: Functions that need not be implemented.
+* Required Back End Functions:: Functions that must be implemented.
+* Optional Back End Functions:: Functions that need not be implemented.
* Error Messaging:: How to get messages and report errors.
-* Writing New Backends:: Extending old backends.
-* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
-* Mail-like Backends:: Some tips on mail backends.
+* Writing New Back Ends:: Extending old back ends.
+* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
+* Mail-like Back Ends:: Some tips on mail back ends.
@end menu
-@node Required Backend Functions
-@subsubsection Required Backend Functions
+@node Required Back End Functions
+@subsubsection Required Back End Functions
@table @code
@item (nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD)
@var{articles} is either a range of article numbers or a list of
-@code{Message-ID}s. Current backends do not fully support either---only
-sequences (lists) of article numbers, and most backends do not support
+@code{Message-ID}s. Current back ends do not fully support either---only
+sequences (lists) of article numbers, and most back ends do not support
retrieval of @code{Message-ID}s. But they should try for both.
The result data should either be HEADs or NOV lines, and the result
headers", in some meaning of the word. This is generally done by
fetching (at most) @var{fetch-old} extra headers less than the smallest
article number in @code{articles}, and filling the gaps as well. The
-presence of this parameter can be ignored if the backend finds it
+presence of this parameter can be ignored if the back end finds it
cumbersome to follow the request. If this is non-@code{nil} and not a
number, do maximum fetches.
@var{server} is here the virtual server name. @var{definitions} is a
list of @code{(VARIABLE VALUE)} pairs that define this virtual server.
-If the server can't be opened, no error should be signaled. The backend
+If the server can't be opened, no error should be signaled. The back end
may then choose to refuse further attempts at connecting to this
server. In fact, it should do so.
@item (nnchoke-request-close)
-Close connection to all servers and free all resources that the backend
-have reserved. All buffers that have been created by that backend
+Close connection to all servers and free all resources that the back end
+have reserved. All buffers that have been created by that back end
should be killed. (Not the @code{nntp-server-buffer}, though.) This
function is generally only called when Gnus is shutting down.
@item (nnchoke-close-group GROUP &optional SERVER)
Close @var{group} and free any resources connected to it. This will be
-a no-op on most backends.
+a no-op on most back ends.
There should be no data returned.
@end table
-@node Optional Backend Functions
-@subsubsection Optional Backend Functions
+@node Optional Back End Functions
+@subsubsection Optional Back End Functions
@table @code
@item (nnchoke-request-update-info GROUP INFO &optional SERVER)
-A Gnus group info (@pxref{Group Info}) is handed to the backend for
-alterations. This comes in handy if the backend really carries all the
+A Gnus group info (@pxref{Group Info}) is handed to the back end for
+alterations. This comes in handy if the back end really carries all the
information (as is the case with virtual and imap groups). This
function should destructively alter the info to suit its needs, and
should return the (altered) group info.
Set/remove/add marks on articles. Normally Gnus handles the article
marks (such as read, ticked, expired etc) internally, and store them in
-@code{~/.newsrc.eld}. Some backends (such as @sc{imap}) however carry
+@code{~/.newsrc.eld}. Some back ends (such as @sc{imap}) however carry
all information about the articles on the server, so Gnus need to
propagate the mark information to the server.
mentioned) marks. Mark is a list of marks; where each mark is a symbol.
Currently used marks are @code{read}, @code{tick}, @code{reply},
@code{expire}, @code{killed}, @code{dormant}, @code{save},
-@code{download} and @code{unsend}, but your backend should, if possible,
+@code{download} and @code{unsend}, but your back end should, if possible,
not limit itself to these.
Given contradictory actions, the last action in the list should be the
@item (nnchoke-request-update-mark GROUP ARTICLE MARK)
-If the user tries to set a mark that the backend doesn't like, this
+If the user tries to set a mark that the back end doesn't like, this
function may change the mark. Gnus will use whatever this function
returns as the mark for @var{article} instead of the original
-@var{mark}. If the backend doesn't care, it must return the original
+@var{mark}. If the back end doesn't care, it must return the original
@var{mark}, and not @code{nil} or any other type of garbage.
The only use for this I can see is what @code{nnvirtual} does with
@item (nnchoke-request-scan &optional GROUP SERVER)
This function may be called at any time (by Gnus or anything else) to
-request that the backend check for incoming articles, in one way or
-another. A mail backend will typically read the spool file or query the
+request that the back end check for incoming articles, in one way or
+another. A mail back end will typically read the spool file or query the
POP server when this function is invoked. The @var{group} doesn't have
-to be heeded---if the backend decides that it is too much work just
+to be heeded---if the back end decides that it is too much work just
scanning for a single group, it may do a total scan of all groups. It
would be nice, however, to keep things local if that's practical.
This function should run the expiry process on all articles in the
@var{articles} range (which is currently a simple list of article
-numbers.) It is left up to the backend to decide how old articles
+numbers.) It is left up to the back end to decide how old articles
should be before they are removed by this function. If @var{force} is
non-@code{nil}, all @var{articles} should be deleted, no matter how new
they are.
@findex nnheader-report
@findex nnheader-get-report
-The backends should use the function @code{nnheader-report} to report
+The back ends should use the function @code{nnheader-report} to report
error conditions---they should not raise errors when they aren't able to
-perform a request. The first argument to this function is the backend
+perform a request. The first argument to this function is the back end
symbol, and the rest are interpreted as arguments to @code{format} if
there are multiple of them, or just a string if there is one of them.
This function must always returns @code{nil}.
Gnus, in turn, will call @code{nnheader-get-report} when it gets a
@code{nil} back from a server, and this function returns the most
-recently reported message for the backend in question. This function
+recently reported message for the back end in question. This function
takes one argument---the server symbol.
-Internally, these functions access @var{backend}@code{-status-string},
-so the @code{nnchoke} backend will have its error message stored in
+Internally, these functions access @var{back-end}@code{-status-string},
+so the @code{nnchoke} back end will have its error message stored in
@code{nnchoke-status-string}.
-@node Writing New Backends
-@subsubsection Writing New Backends
+@node Writing New Back Ends
+@subsubsection Writing New Back Ends
-Many backends are quite similar. @code{nnml} is just like
+Many back ends are quite similar. @code{nnml} is just like
@code{nnspool}, but it allows you to edit the articles on the server.
@code{nnmh} is just like @code{nnml}, but it doesn't use an active file,
and it doesn't maintain overview databases. @code{nndir} is just like
editing articles.
It would make sense if it were possible to ``inherit'' functions from
-backends when writing new backends. And, indeed, you can do that if you
+back ends when writing new back ends. And, indeed, you can do that if you
want to. (You don't have to if you don't want to, of course.)
-All the backends declare their public variables and functions by using a
+All the back ends declare their public variables and functions by using a
package called @code{nnoo}.
-To inherit functions from other backends (and allow other backends to
-inherit functions from the current backend), you should use the
+To inherit functions from other back ends (and allow other back ends to
+inherit functions from the current back end), you should use the
following macros:
@table @code
declared with @code{defvoo} instead of @code{defvar}.
In addition to the normal @code{defvar} parameters, it takes a list of
-variables in the parent backends to map the variable to when executing
-a function in those backends.
+variables in the parent back ends to map the variable to when executing
+a function in those back ends.
@lisp
(defvoo nndir-directory nil
of @code{nndir}. (The same with @code{nnmh}.)
@item nnoo-define-basics
-This macro defines some common functions that almost all backends should
+This macro defines some common functions that almost all back ends should
have.
@example
@item deffoo
This macro is just like @code{defun} and takes the same parameters. In
addition to doing the normal @code{defun} things, it registers the
-function as being public so that other backends can inherit it.
+function as being public so that other back ends can inherit it.
@item nnoo-map-functions
-This macro allows mapping of functions from the current backend to
-functions from the parent backends.
+This macro allows mapping of functions from the current back end to
+functions from the parent back ends.
@example
(nnoo-map-functions nndir
value of @code{nndir-current-group}.
@item nnoo-import
-This macro allows importing functions from backends. It should be the
+This macro allows importing functions from back ends. It should be the
last thing in the source file, since it will only define functions that
haven't already been defined.
@end table
-Below is a slightly shortened version of the @code{nndir} backend.
+Below is a slightly shortened version of the @code{nndir} back end.
@lisp
;;; nndir.el --- single directory newsgroup access for Gnus
"*Non-nil means that nndir will never retrieve NOV headers."
nnml-nov-is-evil)
-(defvoo nndir-current-group "" nil nnml-current-group nnmh-current-group)
+(defvoo nndir-current-group ""
+ nil
+ nnml-current-group nnmh-current-group)
(defvoo nndir-top-directory nil nil nnml-directory nnmh-directory)
(defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail)
(unless (assq 'nndir-directory defs)
(push `(nndir-directory ,server) defs))
(push `(nndir-current-group
- ,(file-name-nondirectory (directory-file-name nndir-directory)))
+ ,(file-name-nondirectory
+ (directory-file-name nndir-directory)))
defs)
(push `(nndir-top-directory
,(file-name-directory (directory-file-name nndir-directory)))
@end lisp
-@node Hooking New Backends Into Gnus
-@subsubsection Hooking New Backends Into Gnus
+@node Hooking New Back Ends Into Gnus
+@subsubsection Hooking New Back Ends Into Gnus
@vindex gnus-valid-select-methods
-Having Gnus start using your new backend is rather easy---you just
+Having Gnus start using your new back end is rather easy---you just
declare it with the @code{gnus-declare-backend} functions. This will
-enter the backend into the @code{gnus-valid-select-methods} variable.
+enter the back end into the @code{gnus-valid-select-methods} variable.
-@code{gnus-declare-backend} takes two parameters---the backend name and
+@code{gnus-declare-backend} takes two parameters---the back end name and
an arbitrary number of @dfn{abilities}.
Here's an example:
@table @code
@item mail
-This is a mailish backend---followups should (probably) go via mail.
+This is a mailish back end---followups should (probably) go via mail.
@item post
-This is a newsish backend---followups should (probably) go via news.
+This is a newsish back end---followups should (probably) go via news.
@item post-mail
-This backend supports both mail and news.
+This back end supports both mail and news.
@item none
-This is neither a post nor mail backend---it's something completely
+This is neither a post nor mail back end---it's something completely
different.
@item respool
It supports respooling---or rather, it is able to modify its source
articles and groups.
@item address
The name of the server should be in the virtual server name. This is
-true for almost all backends.
+true for almost all back ends.
@item prompt-address
The user should be prompted for an address when doing commands like
-@kbd{B} in the group buffer. This is true for backends like
+@kbd{B} in the group buffer. This is true for back ends like
@code{nntp}, but not @code{nnmbox}, for instance.
@end table
-@node Mail-like Backends
-@subsubsection Mail-like Backends
+@node Mail-like Back Ends
+@subsubsection Mail-like Back Ends
-One of the things that separate the mail backends from the rest of the
-backends is the heavy dependence by the mail backends on common
+One of the things that separate the mail back ends from the rest of the
+back ends is the heavy dependence by the mail back ends on common
functions in @file{nnmail.el}. For instance, here's the definition of
@code{nnml-request-scan}:
@table @var
@item method
-This should be a symbol to designate which backend is responsible for
+This should be a symbol to designate which back end is responsible for
the call.
@item exit-function
performed for one group only.
@end table
-@code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to
-save each article. @var{backend}@code{-active-number} will be called to
+@code{nnmail-get-new-mail} will call @var{back-end}@code{-save-mail} to
+save each article. @var{back-end}@code{-active-number} will be called to
find the article number assigned to this article.
The function also uses the following variables:
-@var{backend}@code{-get-new-mail} (to see whether to get new mail for
-this backend); and @var{backend}@code{-group-alist} and
-@var{backend}@code{-active-file} to generate the new active file.
-@var{backend}@code{-group-alist} should be a group-active alist, like
+@var{back-end}@code{-get-new-mail} (to see whether to get new mail for
+this back end); and @var{back-end}@code{-group-alist} and
+@var{back-end}@code{-active-file} to generate the new active file.
+@var{back-end}@code{-group-alist} should be a group-active alist, like
this:
@example
BNF definition of a score file:
@example
-score-file = "" / "(" *element ")"
-element = rule / atom
-rule = string-rule / number-rule / date-rule
-string-rule = "(" quote string-header quote space *string-match ")"
-number-rule = "(" quote number-header quote space *number-match ")"
-date-rule = "(" quote date-header quote space *date-match ")"
-quote = <ascii 34>
-string-header = "subject" / "from" / "references" / "message-id" /
- "xref" / "body" / "head" / "all" / "followup"
-number-header = "lines" / "chars"
-date-header = "date"
-string-match = "(" quote <string> quote [ "" / [ space score [ "" /
- space date [ "" / [ space string-match-t ] ] ] ] ] ")"
-score = "nil" / <integer>
-date = "nil" / <natural number>
-string-match-t = "nil" / "s" / "substring" / "S" / "Substring" /
- "r" / "regex" / "R" / "Regex" /
- "e" / "exact" / "E" / "Exact" /
- "f" / "fuzzy" / "F" / "Fuzzy"
-number-match = "(" <integer> [ "" / [ space score [ "" /
- space date [ "" / [ space number-match-t ] ] ] ] ] ")"
-number-match-t = "nil" / "=" / "<" / ">" / ">=" / "<="
-date-match = "(" quote <string> quote [ "" / [ space score [ "" /
- space date [ "" / [ space date-match-t ] ] ] ] ")"
-date-match-t = "nil" / "at" / "before" / "after"
-atom = "(" [ required-atom / optional-atom ] ")"
-required-atom = mark / expunge / mark-and-expunge / files /
- exclude-files / read-only / touched
-optional-atom = adapt / local / eval
-mark = "mark" space nil-or-number
-nil-or-number = "nil" / <integer>
-expunge = "expunge" space nil-or-number
+score-file = "" / "(" *element ")"
+element = rule / atom
+rule = string-rule / number-rule / date-rule
+string-rule = "(" quote string-header quote space *string-match ")"
+number-rule = "(" quote number-header quote space *number-match ")"
+date-rule = "(" quote date-header quote space *date-match ")"
+quote = <ascii 34>
+string-header = "subject" / "from" / "references" / "message-id" /
+ "xref" / "body" / "head" / "all" / "followup"
+number-header = "lines" / "chars"
+date-header = "date"
+string-match = "(" quote <string> quote [ "" / [ space score [ "" /
+ space date [ "" / [ space string-match-t ] ] ] ] ] ")"
+score = "nil" / <integer>
+date = "nil" / <natural number>
+string-match-t = "nil" / "s" / "substring" / "S" / "Substring" /
+ "r" / "regex" / "R" / "Regex" /
+ "e" / "exact" / "E" / "Exact" /
+ "f" / "fuzzy" / "F" / "Fuzzy"
+number-match = "(" <integer> [ "" / [ space score [ "" /
+ space date [ "" / [ space number-match-t ] ] ] ] ] ")"
+number-match-t = "nil" / "=" / "<" / ">" / ">=" / "<="
+date-match = "(" quote <string> quote [ "" / [ space score [ "" /
+ space date [ "" / [ space date-match-t ] ] ] ] ")"
+date-match-t = "nil" / "at" / "before" / "after"
+atom = "(" [ required-atom / optional-atom ] ")"
+required-atom = mark / expunge / mark-and-expunge / files /
+ exclude-files / read-only / touched
+optional-atom = adapt / local / eval
+mark = "mark" space nil-or-number
+nil-or-number = "nil" / <integer>
+expunge = "expunge" space nil-or-number
mark-and-expunge = "mark-and-expunge" space nil-or-number
-files = "files" *[ space <string> ]
-exclude-files = "exclude-files" *[ space <string> ]
-read-only = "read-only" [ space "nil" / space "t" ]
-adapt = "adapt" [ space "ignore" / space "t" / space adapt-rule ]
-adapt-rule = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")"
-local = "local" *[ space "(" <string> space <form> ")" ]
-eval = "eval" space <form>
-space = *[ " " / <TAB> / <NEWLINE> ]
+files = "files" *[ space <string> ]
+exclude-files = "exclude-files" *[ space <string> ]
+read-only = "read-only" [ space "nil" / space "t" ]
+adapt = "adapt" [ space "ignore" / space "t" / space adapt-rule ]
+adapt-rule = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")"
+local = "local" *[ space "(" <string> space <form> ")" ]
+eval = "eval" space <form>
+space = *[ " " / <TAB> / <NEWLINE> ]
@end example
Any unrecognized elements in a score file should be ignored, but not
@example
active = *group-line
-group-line = group space high-number space low-number space flag <NEWLINE>
+group-line = group spc high-number spc low-number spc flag <NEWLINE>
group = <non-white-space string>
-space = " "
+spc = " "
high-number = <non-negative integer>
low-number = <positive integer>
flag = "y" / "n" / "m" / "j" / "x" / "=" group
Believe it or not, but some people who use Gnus haven't really used
Emacs much before they embarked on their journey on the Gnus Love Boat.
-If you are one of those unfortunates whom ``@kbd{M-C-a}'', ``kill the
+If you are one of those unfortunates whom ``@kbd{C-M-a}'', ``kill the
region'', and ``set @code{gnus-flargblossen} to an alist where the key
is a regexp that is used for matching on the group name'' are magical
phrases with little or no meaning, then this appendix is for you. If
to the left hand side of the keyboard, usually on the bottom row.
Now, us Emacs people don't say ``press the meta-control-m key'',
-because that's just too inconvenient. We say ``press the @kbd{M-C-m}
+because that's just too inconvenient. We say ``press the @kbd{C-M-m}
key''. @kbd{M-} is the prefix that means ``meta'' and ``C-'' is the
prefix that means ``control''. So ``press @kbd{C-k}'' means ``press
down the control key, and hold it down while you press @kbd{k}''.
-``Press @kbd{M-C-k}'' means ``press down and hold down the meta key and
+``Press @kbd{C-M-k}'' means ``press down and hold down the meta key and
the control key and then press @kbd{k}''. Simple, ay?
This is somewhat complicated by the fact that not all keyboards have a