*** empty log message ***
[gnus] / texi / gnus.texi
index 8af0dcb..98e5ac9 100644 (file)
@@ -1,7 +1,8 @@
+
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Pterodactyl Gnus 0.30 Manual
+@settitle Pterodactyl Gnus 0.83 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995,96,97,98 Free Software Foundation, Inc.
+Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -293,7 +294,7 @@ into another language, under the above conditions for modified versions.
 
 This file documents Gnus, the GNU Emacs newsreader.
 
-Copyright (C) 1995,96 Free Software Foundation, Inc.
+Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -318,13 +319,13 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Gnus 0.30 Manual
+@title Pterodactyl Gnus 0.83 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc.
+Copyright @copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -354,7 +355,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Pterodactyl Gnus 0.30.
+This manual corresponds to Pterodactyl Gnus 0.83.
 
 @end ifinfo
 
@@ -481,11 +482,15 @@ If @code{gnus-nntp-server} is set, this variable will override
 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
 
 @vindex gnus-secondary-servers
+@vindex gnus-nntp-server
 You can also make Gnus prompt you interactively for the name of an
 @sc{nntp} server.  If you give a non-numerical prefix to @code{gnus}
 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
 in the @code{gnus-secondary-servers} list (if any).  You can also just
-type in the name of any server you feel like visiting.
+type in the name of any server you feel like visiting.  (Note that this
+will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
+gnus} later in the same Emacs session, Gnus will contact the same
+server.)
 
 @findex gnus-group-browse-foreign-server
 @kindex B (Group)
@@ -702,7 +707,7 @@ Subscribe all new groups in alphabetical order.
 Subscribe all new groups hierarchically.  The difference between this
 function and @code{gnus-subscribe-alphabetically} is slight.
 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
-alphabetical fashion, while this function will enter groups into it's
+alphabetical fashion, while this function will enter groups into its
 hierarchy.  So if you want to have the @samp{rec} hierarchy before the
 @samp{comp} hierarchy, this function will not mess that configuration
 up.  Or something like that.
@@ -823,6 +828,10 @@ and read ranges have become worthless.  You can use the @kbd{M-x
 gnus-group-clear-data-on-native-groups} command to clear out all data
 that you have on your native groups.  Use with caution.
 
+After changing servers, you @strong{must} move the cache hierarchy away,
+since the cached articles will have wrong article numbers, which will
+affect which articles Gnus thinks are read.
+
 
 @node Startup Files
 @section Startup Files
@@ -850,11 +859,15 @@ never delete the @file{.newsrc.eld} file---it contains much information
 not stored in the @file{.newsrc} file.
 
 @vindex gnus-save-newsrc-file
+@vindex gnus-read-newsrc-file
 You can turn off writing the @file{.newsrc} file by setting
 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
 the file and save some space, as well as exiting from Gnus faster.
 However, this will make it impossible to use other newsreaders than
-Gnus.  But hey, who would want to, right?
+Gnus.  But hey, who would want to, right?  Similarly, setting
+@code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
+@file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
+convenient if you have a tendency to use Netscape once in a while.
 
 @vindex gnus-save-killed-list
 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
@@ -1018,8 +1031,8 @@ A hook run as the very last thing after starting up Gnus
 A hook that is run as the very last thing after starting up Gnus
 successfully.
 
-@item gnus-started-hook
-@vindex gnus-started-hook
+@item gnus-setup-news-hook
+@vindex gnus-setup-news-hook
 A hook that is run after reading the @file{.newsrc} file(s), but before
 generating the group buffer.
 
@@ -1495,8 +1508,26 @@ Select the first unread article when entering the group.
 @item best
 Select the highest scored article in the group when entering the
 group.
+
 @end table
 
+This variable can also be a function.  In that case, that function will
+be called to place point on a subject line, and/or select some article.
+Useful functions include:
+
+@table @code
+@item gnus-summary-first-unread-subject
+Place point on the subject line of the first unread article, but
+don't select the article.
+
+@item gnus-summary-first-unread-article
+Select the first unread article.
+
+@item gnus-summary-best-unread-article
+Select the highest-scored unread article.
+@end table
+
+
 If you want to prevent automatic selection in some group (say, in a
 binary group with Huge articles) you can set this variable to @code{nil}
 in @code{gnus-select-group-hook}, which is called when a group is
@@ -1949,7 +1980,7 @@ Add the current group to an @code{nnvirtual} group
 (@code{gnus-group-add-to-virtual}).  Uses the process/prefix convention.
 @end table
 
-@xref{Select Methods} for more information on the various select
+@xref{Select Methods}, for more information on the various select
 methods.
 
 @vindex gnus-activate-foreign-newsgroups
@@ -1958,7 +1989,7 @@ Gnus will check all foreign groups with this level or lower at startup.
 This might take quite a while, especially if you subscribe to lots of
 groups from different @sc{nntp} servers.  Also @pxref{Group Levels};
 @code{gnus-activate-level} also affects activation of foreign
-newsgroups. 
+newsgroups.
 
 
 @node Group Parameters
@@ -2122,7 +2153,7 @@ groups.
 
 @item charset
 Elements that look like @code{(charset . iso-8859-1)} will make
-@code{iso-8859-1} the default charset; that is, the charset that will be 
+@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 form)}
@@ -2139,6 +2170,23 @@ 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 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
+@code{gnus-posting-styles} alist, except that there's no regexp matching
+the group name (of course). Style elements in this group parameter will
+take precedence over the ones found in @code{gnus-posting-styles}.
+
+For instance, if you want a funky name and signature in this group only,
+instead of hacking @code{gnus-posting-styles}, you could put something
+like this in the group parameters:
+
+@example
+(posting-style
+  (name "Funky Name")
+  (signature "Funky Signature"))
+@end example
+
 @end table
 
 Use the @kbd{G p} command to edit group parameters of a group.  You
@@ -2344,7 +2392,7 @@ All the commands below obeys the process/prefix convention
 (@pxref{Process/Prefix}).
 
 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
-commands will sort in reverse order.  
+commands will sort in reverse order.
 
 You can also sort a subset of the groups:
 
@@ -2681,7 +2729,7 @@ topics and wish to remove it from one of the topics.  You may also
 remove a group from all topics, but in that case, Gnus will add it to
 the root topic the next time you start Gnus.  In fact, all new groups
 (which, naturally, don't belong to any topic) will show up in the root
-topic. 
+topic.
 
 This command uses the process/prefix convention
 (@pxref{Process/Prefix}).
@@ -2716,17 +2764,6 @@ Mark all groups in the current topic with the process mark
 Remove the process mark from all groups in the current topic
 (@code{gnus-topic-unmark-topic}).
 
-@item RET
-@kindex RET (Topic)
-@findex gnus-topic-select-group
-@itemx SPACE
-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
-visible) or unfolded (if it was folded already).  So it's basically a
-toggling command on topics.  In addition, if you give a numerical
-prefix, group on that level (and lower) will be displayed.
-
 @item T TAB
 @itemx TAB
 @kindex T TAB (Topic)
@@ -2740,7 +2777,24 @@ previous topic (@code{gnus-topic-indent}).  If given a prefix,
 @kindex M-TAB (Topic)
 @findex gnus-topic-unindent
 ``Un-indent'' the current topic so that it becomes a sub-topic of the
-parent of its current parent (@code{gnus-topic-unindent}).  
+parent of its current parent (@code{gnus-topic-unindent}).
+
+@item RET
+@kindex RET (Topic)
+@findex gnus-topic-select-group
+@itemx SPACE
+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
+visible) or unfolded (if it was folded already).  So it's basically a
+toggling command on topics.  In addition, if you give a numerical
+prefix, group on that level (and lower) will be displayed.
+
+@item C-c C-x
+@kindex C-c C-x (Topic)
+@findex gnus-topic-expire-articles
+Run all expirable articles in the current group or topic through the expiry
+process (if any) (@code{gnus-topic-expire-articles}).
 
 @item C-k
 @kindex C-k (Topic)
@@ -2830,7 +2884,7 @@ Sort the current topic alphabetically by backend name
 
 @end table
 
-@xref{Sorting Groups} for more information about group sorting.
+@xref{Sorting Groups}, for more information about group sorting.
 
 
 @node Topic Topology
@@ -3203,6 +3257,7 @@ You can have as many summary buffers open as you wish.
 * Decoding Articles::           Gnus can treat series of (uu)encoded articles.
 * Article Treatment::           The article buffer can be mangled at will.
 * MIME Commands::               Doing MIMEy things with the articles.
+* Charsets::                    Character set issues.
 * Article Commands::            Doing various things with the article buffer.
 * Summary Sorting::             Sorting the summary buffer in various ways.
 * Finding the Parent::          No child support? Get the parent.
@@ -3231,6 +3286,7 @@ You can have as many summary buffers open as you wish.
 
 @menu
 * Summary Buffer Lines::     You can specify how summary lines should look.
+* To From Newsgroups::       How to not display your own name.
 * Summary Buffer Mode Line:: You can say how the mode line should look.
 * Summary Highlighting::     Making the summary buffer all pretty and nice.
 @end menu
@@ -3245,7 +3301,12 @@ variable as a function for getting the name and address parts of a
 fast, and too simplistic solution; and
 @code{mail-extract-address-components}, which works very nicely, but is
 slower.  The default function will return the wrong answer in 5% of the
-cases.  If this is unacceptable to you, use the other function instead.
+cases.  If this is unacceptable to you, use the other function instead:
+
+@lisp
+(setq gnus-extract-address-components
+      'mail-extract-address-components)
+@end lisp
 
 @vindex gnus-summary-same-subject
 @code{gnus-summary-same-subject} is a string indicating that the current
@@ -3279,6 +3340,9 @@ had a different subject, @code{gnus-summary-same-subject} otherwise.
 Full @code{From} header.
 @item n
 The name (from the @code{From} header).
+@item f
+The name, code @code{To} header or the @code{Newsgroups} header
+(@pxref{To From Newsgroups}).
 @item a
 The name (from the @code{From} header).  This differs from the @code{n}
 spec in that it uses the function designated by the
@@ -3312,7 +3376,7 @@ Unread.
 @item R
 This misleadingly named specifier is the @dfn{secondary mark}.  This
 mark will say whether the article has been replied to, has been cached,
-or has been saved.  
+or has been saved.
 
 @item i
 Score as a number (@pxref{Scoring}).
@@ -3368,6 +3432,87 @@ The smart choice is to have these specs as far to the left as possible.
 This restriction may disappear in later versions of Gnus.
 
 
+@node To From Newsgroups
+@subsection To From Newsgroups
+@cindex To
+@cindex Newsgroups
+
+In some groups (particularly in archive groups), the @code{From} header
+isn't very interesting, since all the articles there are written by
+you.  To display the information in the @code{To} or @code{Newsgroups}
+headers instead, you need to decide three things: What information to
+gather; where to display it; and when to display it.
+
+@enumerate
+@item
+@vindex gnus-extra-headers
+The reading of extra header information is controlled by the
+@code{gnus-extra-headers}.  This is a list of header symbols.  For
+instance:
+
+@lisp
+(setq gnus-extra-headers
+      '(To Newsgroups X-Newsreader))
+@end lisp
+
+This will result in Gnus trying to obtain these three headers, and
+storing it in header structures for later easy retrieval.
+
+@item
+@findex gnus-extra-header
+The value of these extra headers can be accessed via the
+@code{gnus-extra-header} function.  Here's a format line spec that will
+access the @code{X-Newsreader} header:
+
+@example
+"%~(form (gnus-extra-header 'X-Newsreader))@@"
+@end example
+
+@item
+@vindex gnus-ignored-from-addresses
+The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
+summary line spec returns the @code{To}, @code{Newsreader} or
+@code{From} header.  If this regexp matches the contents of the
+@code{From} header, the value of the @code{To} or @code{Newsreader}
+headers are used instead.
+
+@end enumerate
+
+@vindex nnmail-extra-headers
+A related variable is @code{nnmail-extra-headers}, which controls when
+to include extra headers when generating overview (@sc{nov}) files.  If
+you have old overview files, you should regenerate them after changing
+this variable.
+
+@vindex gnus-summary-line-format
+You also have to instruct Gnus to display the data by changing the
+@code{%n} spec to the @code{%f} spec in the
+@code{gnus-summary-line-format} variable.
+
+In summary, you'd typically do something like the following:
+
+@lisp
+(setq gnus-extra-headers
+      '(To Newsgroups))
+(setq nnmail-extra-headers gnus-extra-headers)
+(setq gnus-summary-line-format
+      "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+(setq gnus-ignored-from-addresses
+      "Your Name Here")
+@end lisp
+
+Now, this is mostly useful for mail groups, where you have control over
+the @sc{nov} files that are created.  However, if you can persuade your
+nntp admin to add:
+
+@example
+Newsgroups:full
+@end example
+
+to the end of her @file{overview.fmt} file, then you can use that just
+as you would the extra headers from the mail groups.
+
+
 @node Summary Buffer Mode Line
 @subsection Summary Buffer Mode Line
 
@@ -3546,6 +3691,9 @@ action.  This will also inhibit horizontal re-centering of the summary
 buffer, which might make it more inconvenient to read extremely long
 threads.
 
+This variable can also be a number.  In that case, center the window at
+the given number of lines from the top.
+
 @end table
 
 
@@ -3807,7 +3955,7 @@ goes out to all people listed in the @code{To}, @code{From} (or
 @kindex S W (Summary)
 @findex gnus-summary-wide-reply-with-original
 Mail a wide reply to the current article and include the original
-message (@code{gnus-summary-reply-with-original}).  This command uses
+message (@code{gnus-summary-wide-reply-with-original}).  This command uses
 the process/prefix convention.
 
 @item S o m
@@ -4045,8 +4193,9 @@ There's a plethora of commands for manipulating these marks:
 @end ifinfo
 
 @menu
-* Setting Marks::           How to set and remove marks.
-* Setting Process Marks::   How to mark articles for later processing.
+* Setting Marks::             How to set and remove marks.
+* Generic Marking Commands::  How to customize the marking.
+* Setting Process Marks::     How to mark articles for later processing.
 @end menu
 
 
@@ -4175,7 +4324,7 @@ You can set a bookmark in the current article.  Say you are reading a
 long thesis on cats' urinary tracts, and have to go home for dinner
 before you've finished reading the thesis.  You can then set a bookmark
 in the article, and Gnus will jump to this bookmark the next time it
-encounters the article.  @xref{Setting Marks}
+encounters the article.  @xref{Setting Marks}.
 
 @item
 @vindex gnus-replied-mark
@@ -4186,7 +4335,7 @@ answered) will be marked with an @samp{A} in the second column
 @item
 @vindex gnus-cached-mark
 Articles stored in the article cache will be marked with an @samp{*} in
-the second column (@code{gnus-cached-mark}).  @xref{Article Caching}
+the second column (@code{gnus-cached-mark}).  @xref{Article Caching}.
 
 @item
 @vindex gnus-saved-mark
@@ -4243,7 +4392,7 @@ article as unread.
 @kindex M t (Summary)
 @findex gnus-summary-tick-article-forward
 Tick the current article (@code{gnus-summary-tick-article-forward}).
-@xref{Article Caching}
+@xref{Article Caching}.
 
 @item M ?
 @itemx ?
@@ -4251,7 +4400,7 @@ Tick the current article (@code{gnus-summary-tick-article-forward}).
 @kindex M ? (Summary)
 @findex gnus-summary-mark-as-dormant
 Mark the current article as dormant
-(@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}
+(@code{gnus-summary-mark-as-dormant}).  @xref{Article Caching}.
 
 @item M d
 @itemx d
@@ -4364,6 +4513,44 @@ one line up or down.  As a special case, if this variable is
 The default is @code{t}.
 
 
+@node Generic Marking Commands
+@subsection Generic Marking Commands
+
+Some people would like the command that ticks an article (@kbd{!}) go to
+the next article.  Others would like it to go to the next unread
+article.  Yet others would like it to stay on the current article.  And
+even though I haven't heard of anybody wanting it to go the the
+previous (unread) article, I'm sure there are people that want that as
+well.
+
+Multiply these five behaviours with five different marking commands, and
+you get a potentially complex set of variable to control what each
+command should do.
+
+To sidestep that mess, Gnus provides commands that do all these
+different things.  They can be found on the @kbd{M M} map in the summary
+buffer.  Type @kbd{M M C-h} to see them all---there are too many of them
+to list in this manual.
+
+While you can use these commands directly, most users would prefer
+altering the summary mode keymap.  For instance, if you would like the
+@kbd{!} command to go the the next article instead of the next unread
+article, you could say something like:
+
+@lisp
+(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
+(defun my-alter-summary-map ()
+  (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
+@end lisp
+
+or
+
+@lisp
+(defun my-alter-summary-map ()
+  (local-set-key "!" "MM!n"))
+@end lisp
+
+
 @node Setting Process Marks
 @subsection Setting Process Marks
 @cindex setting process marks
@@ -4567,6 +4754,11 @@ Include all cached articles in the limit
 Exclude all dormant articles from the limit
 (@code{gnus-summary-limit-exclude-dormant}).
 
+@item / M
+@kindex / M (Summary)
+@findex gnus-summary-limit-exclude-marks
+Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}). 
+
 @item / T
 @kindex / T (Summary)
 @findex gnus-summary-limit-include-thread
@@ -5091,7 +5283,10 @@ Matching}).
 @findex gnus-thread-sort-by-number
 @vindex gnus-thread-sort-functions
 If you are using a threaded summary display, you can sort the threads by
-setting @code{gnus-thread-sort-functions}, which is a list of functions.
+setting @code{gnus-thread-sort-functions}, which can be either a single
+function, a list of functions, or a list containing functions and
+@code{(not some-function)} elements.
+
 By default, sorting is done on article numbers.  Ready-made sorting
 predicate functions include @code{gnus-thread-sort-by-number},
 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
@@ -5100,22 +5295,23 @@ predicate functions include @code{gnus-thread-sort-by-number},
 
 Each function takes two threads and returns non-@code{nil} if the first
 thread should be sorted before the other.  Note that sorting really is
-normally done by looking only at the roots of each thread.  If you use
-more than one function, the primary sort key should be the last function
-in the list.  You should probably always include
+normally done by looking only at the roots of each thread.
+
+If you use more than one function, the primary sort key should be the
+last function in the list.  You should probably always include
 @code{gnus-thread-sort-by-number} in the list of sorting
 functions---preferably first.  This will ensure that threads that are
 equal with respect to the other sort criteria will be displayed in
 ascending article order.
 
-If you would like to sort by score, then by subject, and finally by
-number, you could do something like:
+If you would like to sort by reverse score, then by subject, and finally
+by number, you could do something like:
 
 @lisp
 (setq gnus-thread-sort-functions
       '(gnus-thread-sort-by-number
         gnus-thread-sort-by-subject
-        gnus-thread-sort-by-total-score))
+        (not gnus-thread-sort-by-total-score)))
 @end lisp
 
 The threads that have highest score will be displayed first in the
@@ -5314,7 +5510,7 @@ not then be downloaded by this command.
 It is likely that you do not want caching on all groups.  For instance,
 if your @code{nnml} mail is located under your home directory, it makes no
 sense to cache it somewhere else under your home directory.  Unless you
-feel that it's neat to use twice as much space.  
+feel that it's neat to use twice as much space.
 
 To limit the caching, you could set @code{gnus-cacheable-groups} to a
 regexp of groups to cache, @samp{^nntp} for instance, or set the
@@ -5875,7 +6071,7 @@ for instance, @code{sox} to convert an @samp{.au} sound file, you could
 say something like:
 @lisp
 (setq gnus-uu-user-view-rules
-      (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
+      (list '(&q