2001-09-04 Katsumi Yamaoka <yamaoka@jpl.org>
[gnus] / texi / gnus.texi
index 4cb7e8b..8eee5b5 100644 (file)
@@ -660,6 +660,7 @@ Getting Mail
 * 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.
+* Archiving Mail::              How to backup your mail.
 
 Mail Sources
 
@@ -2703,12 +2704,14 @@ Elements that look like @code{(adapt-file . "file")} will make
 All adaptive score entries will be put into this file.
 
 @item admin-address
+@cindex admin-address
 When unsubscribing from a mailing list you should never send the
 unsubscription notice to the mailing list itself.  Instead, you'd send
 messages to the administrative address.  This parameter allows you to
 put the admin address somewhere convenient.
 
 @item display
+@cindex display
 Elements that look like @code{(display . MODE)} say which articles to
 display on entering the group.  Valid values are:
 
@@ -2726,34 +2729,38 @@ Display articles that satisfy a predicate.
 Here are some examples:
 
 @table @code
-@item [unread]
-Display only unread articles.
+@item [read]
+Display only read articles.
 
 @item [not expire]
 Display everything except expirable articles.
 
-@item [and (not reply) (not expirable)]
+@item [and (not reply) (not expire)]
 Display everything except expirable and articles you've already
 responded to.
 @end table
 
 The available operators are @code{not}, @code{and} and @code{or}.
 Predicates include @code{tick}, @code{unsend}, @code{undownload},
-@code{unread}, @code{read}, @code{dormant}, @code{}, @code{}, @code{},
-@code{expire}, @code{reply}, @code{killed}, @code{bookmark},
-@code{score}, @code{save}, @code{cache}, @code{forward}, and
-@code{recent}.
+@code{read}, @code{dormant}, @code{expire}, @code{reply},
+@code{killed}, @code{bookmark}, @code{score}, @code{save},
+@code{cache}, @code{forward}, @code{seen} and @code{recent}.
 
 @end table
 
+The @code{display} parameter works by limiting the summary buffer to
+the subset specified.  You can pop the limit by using the @kbd{/ w}
+command (@pxref{Limiting}). 
 
 @item comment
+@cindex comment
 Elements that look like @code{(comment . "This is a comment")}
 are arbitrary comments on the group.  They are currently ignored by
 Gnus, but provide a place for you to store information on particular
 groups.
 
 @item charset
+@cindex 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
 used for all articles that do not specify a charset.
@@ -2761,13 +2768,15 @@ used for all articles that do not specify a charset.
 See also @code{gnus-group-charset-alist}.
 
 @item ignored-charsets
-Elements that look like @code{(ignored-charsets x-known iso-8859-1)}
+@cindex ignored-charset
+Elements that look like @code{(ignored-charsets x-unknown 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
+@cindex 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
@@ -2790,6 +2799,7 @@ If it is set, the value is used as the method for posting message
 instead of @code{gnus-post-method}.
 
 @item banner
+@cindex 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
@@ -4102,12 +4112,13 @@ the @code{a} spec.
 @item L
 Number of lines in the article.
 @item c
-Number of characters in the article. This specifier is not supported in some
-methods (like nnfolder).
+Number of characters in the article. This specifier is not supported
+in some methods (like nnfolder).
 @item I
 Indentation based on thread level (@pxref{Customizing Threading}).
 @item B
-A complex trn-style thread tree, showing response-connecting trace lines.
+A complex trn-style thread tree, showing response-connecting trace
+lines.
 @item T
 Nothing if the article is a root and lots of spaces if it isn't (it
 pushes everything after it off the screen).
@@ -5096,9 +5107,6 @@ In addition, you also have marks that do not affect readedness.
 * Unread Articles::             Marks for unread articles.
 * Read Articles::               Marks for read articles.
 * Other Marks::                 Marks that do not affect readedness.
-* Setting Marks::               
-* Generic Marking Commands::    
-* Setting Process Marks::       
 @end menu
 
 @ifinfo
@@ -5680,6 +5688,14 @@ the stack.
 Limit the summary buffer to articles that have a score at or above some
 score (@code{gnus-summary-limit-to-score}).
 
+@item / p
+@kindex / p (Summary)
+@findex gnus-summary-limit-to-display-parameter
+Limit the summary buffer to articles that satisfy the @code{display}
+group parameter predicate
+(@code{gnus-summary-limit-to-display-parameter}).  See @pxref{Group
+Parameters} for more on this predicate.
+
 @item / E
 @itemx M S
 @kindex M S (Summary)
@@ -11460,6 +11476,7 @@ course.
 * 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.
+* Archiving Mail::              How to backup your mail.
 @end menu
 
 
@@ -12395,9 +12412,10 @@ string into the subject line, you have to resort to manually moving the
 messages into the right group.  With this function, you only have to do
 it once per thread.
 
-To use this feature, you have to set @code{nnmail-treat-duplicates} to a
-non-nil value.  And then you can include
-@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+To use this feature, you have to set @code{nnmail-treat-duplicates} and
+@code{nnmail-cache-accepted-message-ids} to a non-nil value.  And then
+you can include @code{nnmail-split-fancy-with-parent} using the colon
+feature, like so:
 @lisp
 (setq nnmail-split-fancy
       '(| (: nnmail-split-fancy-with-parent)
@@ -13052,6 +13070,17 @@ 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.
 
+@cindex self contained nnml servers
+When the marks file is used (which it is by default), @code{nnml}
+servers have the property that you may backup them using @code{tar} or
+similar, and later be able to restore them into Gnus (by adding the
+proper @code{nnml} server) and have all your marks be preserved.  Marks
+for a group is usually stored in the @code{.marks} file (but see
+@code{nnml-marks-file-name}) within each @code{nnml} group's directory.
+Individual @code{nnml} groups are also possible to backup, use @kbd{G m}
+to restore the group (after restoring the backup into the nnml
+directory).
+
 Virtual server settings:
 
 @table @code
@@ -13059,7 +13088,7 @@ Virtual server settings:
 @vindex nnml-directory
 All @code{nnml} directories will be placed under this directory.
 The default is the value of `message-directory' (whose default value is
-@file{~/Mail})
+@file{~/Mail}).
 
 @item nnml-active-file
 @vindex nnml-active-file
@@ -13074,12 +13103,12 @@ Format}.  The default is @file{~/Mail/newsgroups"}.
 @item nnml-get-new-mail
 @vindex nnml-get-new-mail
 If non-@code{nil}, @code{nnml} will read incoming mail.  The default is
-@code{t}
+@code{t}.
 
 @item nnml-nov-is-evil
 @vindex nnml-nov-is-evil
 If non-@code{nil}, this backend will ignore any @sc{nov} files.  The
-default is @code{nil}
+default is @code{nil}.
 
 @item nnml-nov-file-name
 @vindex nnml-nov-file-name
@@ -13089,6 +13118,15 @@ The name of the @sc{nov} files.  The default is @file{.overview}.
 @vindex nnml-prepare-save-mail-hook
 Hook run narrowed to an article before saving.
 
+@item nnml-marks-is-evil
+@vindex nnml-marks-is-evil
+If non-@code{nil}, this backend will ignore any @sc{marks} files.  The
+default is @code{nil}.
+
+@item nnml-marks-file-name
+@vindex nnml-marks-file-name
+The name of the @sc{marks} files.  The default is @file{.marks}.
+
 @end table
 
 @findex nnml-generate-nov-databases
@@ -13107,9 +13145,9 @@ Commands}).
 @cindex mh-e mail spool
 
 @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
-makes it easier to write procmail scripts for.
+@sc{nov} databases and it doesn't keep an active file or marks file.
+This makes @code{nnmh} a @emph{much} slower backend than @code{nnml},
+but it also makes it easier to write procmail scripts for.
 
 Virtual server settings:
 
@@ -13147,6 +13185,18 @@ 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.
 
+@cindex self contained nnfolder servers
+When the marks file is used (which it is by default), @code{nnfolder}
+servers have the property that you may backup them using @code{tar} or
+similar, and later be able to restore them into Gnus (by adding the
+proper @code{nnfolder} server) and have all your marks be preserved.
+Marks for a group is usually stored in a file named as the mbox file
+with @code{.mrk} concatenated to it (but see
+@code{nnfolder-marks-file-suffix}) within the @code{nnfolder} directory.
+Individual @code{nnfolder} groups are also possible to backup, use
+@kbd{G m} to restore the group (after restoring the backup into the
+@code{nnfolder} directory).
+
 Virtual server settings:
 
 @table @code
@@ -13196,6 +13246,19 @@ extract some information from it before removing it.
 If non-@code{nil}, this backend will ignore any @sc{nov} files.  The
 default is @code{nil}.
 
+@item nnfolder-nov-file-suffix
+@vindex nnfolder-nov-file-suffix
+The extension for @sc{nov} files.  The default is @file{.nov}.
+
+@item nnfolder-marks-is-evil
+@vindex nnfolder-marks-is-evil
+If non-@code{nil}, this backend will ignore any @sc{marks} files.  The
+default is @code{nil}.
+
+@item nnfolder-marks-file-suffix
+@vindex nnfolder-marks-file-suffix
+The extension for @sc{marks} files.  The default is @file{.mrk}.
+
 @end table
 
 
@@ -13378,6 +13441,35 @@ cases, it makes a lot of sense to let the Gnus Agent (@pxref{Gnus
 Unplugged}) handle downloading articles, and then you can read them at
 leisure from your local disk.  No more World Wide Wait for you.
 
+@node Archiving Mail
+@subsection Archiving Mail
+@cindex archiving mail
+@cindex backup of mail
+
+Some of the backends, notably nnml and nnfolder, now actually store
+the article marks with each group.  For these servers, archiving and
+restoring a group while preserving marks is fairly simple.
+
+(Preserving the group level and group parameters as well still
+requires ritual dancing and sacrifices to the @code{.newsrc.eld} deity
+though.)
+
+To archive an entire @code{nnml} or @code{nnfolder} server, take a
+recursive copy of the server directory.  There is no need to shut down
+Gnus, so archiving may be invoked by @code{cron} or similar.  You
+restore the data by restoring the directory tree, and adding a server
+definition pointing to that directory in Gnus. The @ref{Article
+Backlog}, @ref{Asynchronous Fetching} and other things might interfer
+with overwriting data, so you may want to shut down Gnus before you
+restore the data.
+
+It is also possible to archive individual @code{nnml} or
+@code{nnfolder} groups, while preserving marks.  For @code{nnml}, you
+copy all files in the group's directory.  For @code{nnfolder} you need
+to copy both the base folder file itself (@code{FOO}, say), and the
+marks file (@code{FOO.mrk} in this example).  Restoring the group is
+done with @kbd{G m} from the Group buffer.  The last step makes Gnus
+notice the new directory.
 
 @node Web Searches
 @subsection Web Searches
@@ -16307,13 +16399,14 @@ can't have score files like @file{all.SCORE}, but you can have
 server.
 
 @end table
-This variable can also be a list of functions.  In that case, all these
-functions will be called with the group name as argument, and all the
-returned lists of score files will be applied.  These functions can also
-return lists of score alists directly.  In that case, the functions that
-return these non-file score alists should probably be placed before the
-``real'' score file functions, to ensure that the last score file
-returned is the local score file.  Phu.
+This variable can also be a list of functions.  In that case, all
+these functions will be called with the group name as argument, and
+all the returned lists of score files will be applied.  These
+functions can also return lists of lists of score alists directly.  In
+that case, the functions that return these non-file score alists
+should probably be placed before the ``real'' score file functions, to
+ensure that the last score file returned is the local score file.
+Phu.
 
 For example, to do hierarchical scoring but use a non-server-specific
 overall score file, you could use the value
@@ -19958,6 +20051,9 @@ well as numerous other things).
 @item
 Luis Fernandes---design and graphics.
 
+@item
+Joe Reiss---creator of the smiley faces.
+
 @item
 Justin Sheehy--the FAQ maintainer.
 
@@ -22035,8 +22131,18 @@ description-buffer = *description-line
 @item (nnchoke-request-newgroups DATE &optional SERVER)
 
 The result data from this function should be all groups that were
-created after @samp{date}, which is in normal human-readable date
-format.  The data should be in the active buffer format.
+created after @samp{date}, which is in normal human-readable date format
+(i.e., the date format used in mail and news headers, and returned by
+the function @code{message-make-date} by default).  The data should be
+in the active buffer format.
+
+It is okay for this function to return `too many' groups; some backends
+might find it cheaper to return the full list of groups, rather than
+just the new groups.  But don't do this for backends with many groups.
+Normally, if the user creates the groups herself, there won't be too
+many groups, so nnml and the like are probably safe.  But for backends
+like nntp, where the groups have been created by the server, it is quite
+likely that there can be many groups.
 
 
 @item (nnchoke-request-create-group GROUP &optional SERVER)
@@ -22326,6 +22432,7 @@ Below is a slightly shortened version of the @code{nndir} backend.
 @subsubsection Hooking New Backends Into Gnus
 
 @vindex gnus-valid-select-methods
+@findex gnus-declare-backend
 Having Gnus start using your new backend 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.
@@ -22339,6 +22446,8 @@ Here's an example:
 (gnus-declare-backend "nnchoke" 'mail 'respool 'address)
 @end lisp
 
+The above line would then go in the @file{nnchoke.el} file.
+
 The abilities can be:
 
 @table @code