Synch to Gnus 200311300454.
[elisp/gnus.git-] / texi / gnus.texi
index d0cd440..9a640c1 100644 (file)
@@ -737,6 +737,7 @@ Browsing the Web
 * Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
 * Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
 * A note on namespaces::        How to (not) use @acronym{IMAP} namespace in Gnus.
+* Debugging IMAP::              What to do when things don't work.
 
 Other Sources
 
@@ -2654,6 +2655,13 @@ If you use the @code{google} search engine, you can limit the search
 to a particular group by using a match string like
 @samp{shaving group:alt.sysadmin.recovery}.
 
+@item G R
+@kindex G R (Group)
+@findex gnus-group-make-rss-group
+Make a group based on an @acronym{RSS} feed
+(@code{gnus-group-make-rss-group}).  You will be prompted for an URL.
+@xref{RSS}.
+
 @item G DEL
 @kindex G DEL (Group)
 @findex gnus-group-delete-group
@@ -2662,7 +2670,7 @@ This function will delete the current group
 actually delete all the articles in the group, and forcibly remove the
 group itself from the face of the Earth.  Use a prefix only if you are
 absolutely sure of what you are doing.  This command can't be used on
-read-only groups (like @code{nntp} group), though.
+read-only groups (like @code{nntp} groups), though.
 
 @item G V
 @kindex G V (Group)
@@ -9621,10 +9629,10 @@ then ask Google if that fails:
         (nnweb "google" (nnweb-type google))))
 @end lisp
 
-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},
-@code{nnbabyl}, and @code{nnmaildir} are able to locate articles from
-any groups, while @code{nnml}, @code{nnfolder}, and @code{nnimap} are
+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},
+@code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
+articles from any groups, while @code{nnfolder}, and @code{nnimap} are
 only able to locate articles that have been posted to the current group.
 (Anything else would be too time consuming.)  @code{nnmh} does not
 support this at all.
@@ -10784,7 +10792,7 @@ variable, will be displayed in random order after all the headers listed in this
 You can hide further boring headers by setting
 @code{gnus-treat-hide-boring-headers} to @code{head}.  What this function
 does depends on the @code{gnus-boring-article-headers} variable.  It's a
-list, but this list doesn't actually contain header names.  Instead is
+list, but this list doesn't actually contain header names.  Instead it
 lists various @dfn{boring conditions} that Gnus can check and remove
 from sight.
 
@@ -10796,9 +10804,9 @@ Remove all empty headers.
 Remove the @code{Followup-To} header if it is identical to the
 @code{Newsgroups} header.
 @item reply-to
-Remove the @code{Reply-To} header if it lists the same address as the
-@code{From} header, or if the @code{broken-reply-to} group parameter is
-set.
+Remove the @code{Reply-To} header if it lists the same addresses as
+the @code{From} header, or if the @code{broken-reply-to} group
+parameter is set.
 @item newsgroups
 Remove the @code{Newsgroups} header if it only contains the current group
 name.
@@ -15633,18 +15641,18 @@ Where @code{nnslashdot} will store its files.  The default is
 
 @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 @acronym{URL} format string that will be used to fetch the
+information on news articles and comments.  The default is@*
 @samp{http://slashdot.org/search.pl?section=&min=%d}.
 
 @item nnslashdot-comments-url
 @vindex nnslashdot-comments-url
-The @sc{url} format string that will be used to fetch comments.
+The @acronym{URL} format string that will be used to fetch comments.
 
 @item nnslashdot-article-url
 @vindex nnslashdot-article-url
-The @sc{url} format string that will be used to fetch the news article.  The
-default is
+The @acronym{URL} format string that will be used to fetch the news
+article.  The default is
 @samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}.
 
 @item nnslashdot-threshold
@@ -15672,7 +15680,7 @@ 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}
+http://www.tcj.com/messboard/ubbcgi/ RET}.  (Substitute the @acronym{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
@@ -15730,14 +15738,21 @@ The password for your account on the web server.
 @cindex nnrss
 @cindex RSS
 
-Some sites have RDF site summary (RSS)
-@uref{http://purl.org/rss/1.0/spec}.  It has a quite regular and nice
-interface, and it's possible to get the information Gnus needs to keep
-groups updated.
+Some web sites have an RDF Site Summary (@acronym{RSS}).
+@acronym{RSS} is a format for summarizing headlines from news related
+sites (such as BBC or CNN).  But basically anything list-like can be
+presented as an @acronym{RSS} feed: weblogs, changelogs or recent
+changes to a wiki (e.g. @url{http://cliki.net/recent-changes.rdf}).
 
-The easiest way to get started with @code{nnrss} is to say something
-like the following in the group buffer: @kbd{B nnrss RET RET}, then
-subscribe groups.
+@acronym{RSS} has a quite regular and nice interface, and it's
+possible to get the information Gnus needs to keep groups updated.
+
+Use @kbd{G R} from the summary buffer to subscribe to a feed---you
+will be prompted for the location of the feed.
+
+An easy way to get started with @code{nnrss} is to say something like
+the following in the group buffer: @kbd{B nnrss RET y}, then
+subscribe to groups.
 
 The following @code{nnrss} variables can be altered:
 
@@ -15747,6 +15762,13 @@ The following @code{nnrss} variables can be altered:
 The directory where @code{nnrss} stores its files.  The default is
 @file{~/News/rss/}.
 
+@item nnrss-use-local
+@vindex nnrss-use-local
+@findex nnrss-generate-download-script
+If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read
+the feeds from local files in @code{nnrss-directory}.  You can use
+the command @code{nnrss-generate-download-script} to generate a
+download script using @command{wget}.
 @end table
 
 The following code may be helpful, if you want to show the description in
@@ -16127,6 +16149,7 @@ Courier 1.7.1 did.
 * Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
 * Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
 * A note on namespaces::        How to (not) use @acronym{IMAP} namespace in Gnus.
+* Debugging IMAP::              What to do when things don't work.
 @end menu
 
 
@@ -16430,6 +16453,40 @@ See the UoW IMAPD documentation for the @code{#driver.*/} prefix
 for more information on how to use the prefixes.  They are a power
 tool and should be used only if you are sure what the effects are.
 
+@node Debugging IMAP
+@subsection Debugging IMAP
+@cindex IMAP debugging
+@cindex protocol dump (IMAP)
+
+@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or
+@acronym{POP3}.  Implementation bugs are not unlikely, and we do our
+best to fix them right away.  If you encounter odd behaviour, chances
+are that either the server or Gnus is buggy.
+
+If you are familiar with network protocols in general, you will
+probably be able to extract some clues from the protocol dump of the
+exchanges between Gnus and the server.  Even if you are not familiar
+with network protocols, when you include the protocol dump in
+@acronym{IMAP}-related bug reports you are helping us with data
+critical to solving the problem.  Therefore, we strongly encourage you
+to include the protocol dump when reporting IMAP bugs in Gnus.
+
+
+@vindex imap-log
+Because the protocol dump, when enabled, generates lots of data, it is
+disabled by default.  You can enable it by setting @code{imap-log} as
+follows: 
+
+@lisp
+(setq imap-log t)
+@end lisp
+
+This instructs the @code{imap.el} package to log any exchanges with
+the server.  The log is stored in the buffer @samp{*imap-log*}.  Look
+for error messages, which sometimes are tagged with the keyword
+@code{BAD} - but when submitting a bug, make sure to include all the
+data.
+
 @node Other Sources
 @section Other Sources
 
@@ -20304,16 +20361,21 @@ definition of that function:
 
 @lisp
 (defun gnus-decay-score (score)
-  "Decay SCORE.
-This is done according to `gnus-score-decay-constant'
+  "Decay SCORE according to `gnus-score-decay-constant'
 and `gnus-score-decay-scale'."
-  (floor
-   (- score
-      (* (if (< score 0) 1 -1)
-         (min (abs score)
-              (max gnus-score-decay-constant
-                   (* (abs score)
-                      gnus-score-decay-scale)))))))
+  (let ((n (- score
+              (* (if (< score 0) -1 1)
+                 (min (abs score)
+                      (max gnus-score-decay-constant
+                           (* (abs score)
+                              gnus-score-decay-scale)))))))
+    (if (and (featurep 'xemacs)
+             ;; XEmacs' floor can handle only the floating point
+             ;; number below the half of the maximum integer.
+             (> (abs n) (lsh -1 -2)))
+        (string-to-number
+         (car (split-string (number-to-string n) "\\.")))
+      (floor n))))
 @end lisp
 
 @vindex gnus-score-decay-scale
@@ -22342,13 +22404,16 @@ non-spam messages.
 
 First of all, you @strong{must} run the function
 @code{spam-initialize} to autoload @code{spam.el} and to install the
-@code{spam.el} hooks:
+@code{spam.el} hooks.  There is one exception: if you use the
+@code{spam-use-stat} (@pxref{spam-stat spam filtering}) setting, you
+should turn it on before @code{spam-initialize}:
 
 @example
+(setq spam-use-stat t) ;; if needed
 (spam-initialize)
 @end example
 
-So, what happens when you load @file{spam.el}?  
+So, what happens when you load @file{spam.el}?
 
 You get the following keyboard commands:
 
@@ -22465,9 +22530,12 @@ determined by either the @code{ham-process-destination} group
 parameter or a match in the @code{gnus-ham-process-destinations}
 variable, which is a list of regular expressions matched with group
 names (it's easiest to customize this variable with
-@code{customize-variable gnus-ham-process-destinations}).  The ultimate
-location is a group name.  If the @code{ham-process-destination}
-parameter is not set, ham articles are left in place.  If the
+@code{customize-variable gnus-ham-process-destinations}).  Each
+newsgroup specification has the format (REGEXP PROCESSOR) in a
+standard Lisp list, if you prefer to customize the variable manually.
+The ultimate location is a group name.  If the
+@code{ham-process-destination} parameter is not set, ham articles are
+left in place.  If the
 @code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
 set, the ham articles are marked as unread before being moved.
 
@@ -22494,9 +22562,12 @@ the @code{spam-process-destination} group parameter or a match in the
 @code{gnus-spam-process-destinations} variable, which is a list of
 regular expressions matched with group names (it's easiest to
 customize this variable with @code{customize-variable
-gnus-spam-process-destinations}).  The ultimate location is a group
-name.  If the @code{spam-process-destination} parameter is not set,
-the spam articles are only expired.
+gnus-spam-process-destinations}).  Each newsgroup specification has
+the repeated format (REGEXP PROCESSOR) and they are all in a standard
+Lisp list, if you prefer to customize the variable manually.  The
+ultimate location is a group name.  If the
+@code{spam-process-destination} parameter is not set, the spam
+articles are only expired.
 
 To use the @file{spam.el} facilities for incoming mail filtering, you
 must add the following to your fancy split list
@@ -22513,7 +22584,14 @@ nnimap back ends to retrieve your mail.
 The @code{spam-split} function will process incoming mail and send the
 mail considered to be spam into the group name given by the variable
 @code{spam-split-group}.  By default that group name is @samp{spam},
-but you can customize @code{spam-split-group}.
+but you can customize @code{spam-split-group}.  Make sure the contents
+of @code{spam-split-group} are an @emph{unqualified} group name, for
+instance in an @code{nnimap} server @samp{your-server} the value
+@samp{spam} will turn out to be @samp{nnimap+your-server:spam}.  The
+value @samp{nnimap+server:spam}, therefore, is wrong and will
+actually give you the group
+@samp{nnimap+your-server:nnimap+server:spam} which may or may not
+work depending on your server's tolerance for strange group names.
 
 You can also give @code{spam-split} a parameter,
 e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}.  Why is
@@ -26062,8 +26140,7 @@ Gnus will work.
 @item
 Try doing an @kbd{M-x gnus-version}.  If you get something that looks
 like @samp{T-gnus 6.16.* (based on Gnus v5.10.*; for SEMI 1.1*, FLIM
-1.1*)} you have the right files loaded.  If, on the other hand, you get
-something like @samp{NNTP 3.x} or @samp{nntp flee}, you have some old
+1.1*)} you have the right files loaded.  Otherwise you have some old
 @file{.el} files lying around.  Delete these.
 
 @item