T-gnus 6.15.4 revision 00 (Synch with latest Oort Gnus)
authoryamaoka <yamaoka>
Mon, 7 May 2001 01:53:38 +0000 (01:53 +0000)
committeryamaoka <yamaoka>
Mon, 7 May 2001 01:53:38 +0000 (01:53 +0000)
18 files changed:
ChangeLog
README.T-gnus
lisp/ChangeLog
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-vers.el
lisp/gnus.el
lisp/mail-source.el
lisp/message.el
lisp/nnmail.el
lisp/nnrss.el
lisp/nnslashdot.el
lisp/nntp.el
lisp/nnultimate.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index 8788176..192b67d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-07  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * lisp/gnus-vers.el: T-gnus 6.15.4 revision 00.
+
 2001-04-27  Katsumi Yamaoka <yamaoka@jpl.org>
 
        * lisp/gnus-vers.el (gnus-revision-number): Increment to 01.
index 717b602..1966194 100644 (file)
@@ -33,6 +33,6 @@ NEWS:
 
 * T-gnus 6.15 - this is based on Oort Gnus.
 
-  The latest T-gnus is T-gnus 6.15.3 (based on Oort Gnus 0.03).  It
+  The latest T-gnus is T-gnus 6.15.4 (based on Oort Gnus 0.04).  It
   requires SEMI/WEMI (1.13.5 or later), FLIM (1.13.1 or later), and
   APEL (10.0 or later).
index 92fadbd..7d41394 100644 (file)
@@ -1,3 +1,95 @@
+2001-05-05 15:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnslashdot.el (nnslashdot-request-expire-articles): Fix.
+
+       * nnrss.el (nnrss-open-server): Read server data when it is called.
+       (nnrss-request-expire-articles): Fix.
+
+2001-05-05 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-do-send-housekeeping): mail-abbrevs may
+       rename buffer behind Gnus.
+
+2001-05-04 14:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-check-group): Use nnheader-translate-file-chars.
+       (nnrss-group-alist): Add more resources.
+       (nnrss-check-group): Ignore errors.
+
+2001-05-04 00:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-request-expire-articles): Correct the return value.
+
+       * nnslashdot.el (nnslashdot-request-list): Add time.
+       (nnslashdot-request-expire-articles): New.
+
+       * gnus-start.el (gnus-check-bogus-newsgroups): Remove bogus
+       secondary methods too.
+
+2001-05-03 23:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-use-followup-to): Set default value to t.
+
+2001-05-03  Florian Weimer  <fw@deneb.enyo.de>
+
+       * message.el (message-dont-reply-to-names): Fix documentation.
+       (message-get-reply-headers): Use Mail-Followup-To only for wide
+       replies.
+
+2001-05-03 12:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-request-expire-articles): Calculate # of days
+       correctly.
+       (nnrss-check-group): Use time.
+
+2001-05-01 19:21:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+       * gnus.el: Oort Gnus v0.03 is released.
+
+2001-05-01 19:06:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-topic-article-to-article): Use the
+       group.
+
+2001-04-24 19:50:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-srvr.el (gnus-server-insert-server-line): Add a space.
+
+2001-04-15 14:55:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-retrieve-headers): Return all
+       available headers. 
+
+       * gnus-sum.el (gnus-read-all-available-headers): New variable.
+       (gnus-get-newsgroup-headers-xover): Use it.
+
+2001-04-14 15:47:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-retrieve-headers): Clean up.
+
+2001-04-30 17:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nntp.el (nntp-retrieve-groups): Use throw instead of error.
+
+2001-04-29 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-insert-w3): Use cache before I figure out how to
+       disable it.
+
+       * gnus.el (gnus-info-nodes): Remove a few The's.
+
+2001-04-29 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mail-source.el (mail-source-movemail): Call-process may return a
+       signal description string.
+
+       * gnus-start.el (gnus-read-newsrc-el-file):
+       gnus-newsrc-file-version may be nil.
+
+       * nnmail.el (nnmail-get-new-mail): Use the exact file only.
+       Suggested by Michael Sperber [Mr. Preprocessor]  
+       <sperber@informatik.uni-tuebingen.de>.
+
 2001-04-25  Per Abrahamsen  <abraham@dina.kvl.dk>
 
        * mm-uu.el (mm-uu-configure-list): Fixed customize type.
index 9d5648f..729899a 100644 (file)
@@ -189,7 +189,7 @@ The following commands are available:
         (gnus-tmp-agent (if (and gnus-agent
                                  (member method
                                          gnus-agent-covered-methods))
-                            "(agent)"
+                            " (agent)"
                           "")))
     (beginning-of-line)
     (gnus-add-text-properties
index 4839e7d..215540e 100644 (file)
@@ -1381,7 +1381,9 @@ newsgroup."
        (setq info (pop newsrc)
              group (gnus-info-group info))
        (unless (or (gnus-active group) ; Active
-                   (gnus-info-method info)) ; Foreign
+                   (and (gnus-info-method info)
+                        (not (gnus-secondary-method-p 
+                              (gnus-info-method info))))) ; Foreign
          ;; Found a bogus newsgroup.
          (push group bogus)))
       (if confirm
index d2be9e7..504b09b 100644 (file)
@@ -1008,6 +1008,13 @@ when prompting the user for which type of files to save."
   :group 'gnus-summary
   :type 'regexp)
 
+(defcustom gnus-read-all-available-headers nil
+  "Whether Gnus should parse all headers made available to it.
+This is mostly relevant for slow backends where the user may
+wish to widen the summary buffer to include all headers
+that were fetched.  Say, for nnultimate groups."
+  :group 'gnus-summary
+  :type '(choice boolean regexp))
 
 ;;; Internal variables
 
@@ -5143,6 +5150,13 @@ Return a list of headers that match SEQUENCE (see
        (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
        (cur nntp-server-buffer)
        (dependencies (or dependencies gnus-newsgroup-dependencies))
+       (allp (cond
+              ((eq gnus-read-all-available-headers t)
+               t)
+              ((stringp gnus-read-all-available-headers)
+               (string-match gnus-read-all-available-headers group))
+              (t
+               nil)))
        number headers header)
     (save-excursion
       (set-buffer nntp-server-buffer)
@@ -5152,19 +5166,22 @@ Return a list of headers that match SEQUENCE (see
       (goto-char (point-min))
       (while (not (eobp))
        (condition-case ()
-           (while (and sequence (not (eobp)))
+           (while (and (or sequence allp)
+                       (not (eobp)))
              (setq number (read cur))
-             (while (and sequence
-                         (< (car sequence) number))
-               (setq sequence (cdr sequence)))
-             (and sequence
-                  (eq number (car sequence))
-                  (progn
-                    (setq sequence (cdr sequence))
-                    (setq header (inline
-                                   (gnus-nov-parse-line
-                                    number dependencies force-new))))
-                  (push header headers))
+             (when (not allp)
+               (while (and sequence
+                           (< (car sequence) number))
+                 (setq sequence (cdr sequence))))
+             (when (and (or allp
+                            (and sequence
+                                 (eq number (car sequence))))
+                        (progn
+                          (setq sequence (cdr sequence))
+                          (setq header (inline
+                                         (gnus-nov-parse-line
+                                          number dependencies force-new)))))
+               (push header headers))
              (forward-line 1))
          (error
           (gnus-error 4 "Strange nov line (%d)"
index 84cc3ee..9828206 100644 (file)
 (require 'product)
 (provide 'gnus-vers)
 
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "00"
   "Revision number for this version of gnus.")
 
 ;; Product information of this gnus.
 (product-provide 'gnus-vers
   (product-define "T-gnus" nil
-                 (list 6 15 3
+                 (list 6 15 4
                        (string-to-number gnus-revision-number))))
 
-(defconst gnus-original-version-number "0.03"
+(defconst gnus-original-version-number "0.04"
   "Version number for this version of Gnus.")
 
 (provide 'running-pterodactyl-gnus-0_73-or-later)
index 9538a62..4f4dca2 100644 (file)
@@ -1822,10 +1822,10 @@ This variable can be nil, gnus or gnus-ja."
                 (const :tag "Japanese" gnus-ja)))
 
 (defvar gnus-info-nodes
-  '((gnus-group-mode "The Group Buffer")
-    (gnus-summary-mode "The Summary Buffer")
-    (gnus-article-mode "The Article Buffer")
-    (gnus-server-mode "The Server Buffer")
+  '((gnus-group-mode "Group Buffer")
+    (gnus-summary-mode "Summary Buffer")
+    (gnus-article-mode "Article Buffer")
+    (gnus-server-mode "Server Buffer")
     (gnus-browse-mode "Browse Foreign Server")
     (gnus-tree-mode "Tree Display"))
   "Alist of major modes and related Info nodes.")
index e4df22c..22aec7a 100644 (file)
@@ -541,8 +541,9 @@ Pass INFO on to CALLBACK."
                  (goto-char (point-min))
                  (when (looking-at "movemail: ")
                    (delete-region (point-min) (match-end 0)))
+                 ;; Result may be a signal description string.
                  (unless (yes-or-no-p
-                          (format "movemail: %s (%d return).  Continue? "
+                          (format "movemail: %s (%s return).  Continue? "
                                   (buffer-string) result))
                    (error "%s" (buffer-string)))
                  (setq to nil)))))))
index 240caaa..3ef64c8 100644 (file)
@@ -508,7 +508,7 @@ and respond with new To and Cc headers."
   :group 'message-interface
   :type '(choice function (const nil)))
 
-(defcustom message-use-followup-to 'ask
+(defcustom message-use-followup-to t
   "*Specifies what to do with Followup-To header.
 If nil, always ignore the header.  If it is t, use its value, but
 query before using the \"poster\" value.  If it is the symbol `ask',
@@ -516,6 +516,7 @@ always query the user whether to use the value.  If it is the symbol
 `use', always use the value."
   :group 'message-interface
   :type '(choice (const :tag "ignore" nil)
+                (const :tag "use & query" t)
                 (const :tag "maybe" t)
                 (const :tag "always" use)
                 (const :tag "ask" ask)))
@@ -896,8 +897,8 @@ Valid valued are `unique' and `unsent'."
 
 (defcustom message-dont-reply-to-names
   (and (boundp 'rmail-dont-reply-to-names) rmail-dont-reply-to-names)
-  "*A regexp specifying names to prune when doing wide replies.
-A value of nil means exclude your own name only."
+  "*A regexp specifying addresses to prune when doing wide replies.
+A value of nil means exclude your own user name only."
   :version "21.1"
   :group 'message
   :type '(choice (const :tag "Yourself" nil)
@@ -4557,11 +4558,14 @@ than 988 characters long, and if they are not, trim them until they are."
   ;; Rename the buffer.
   (if message-send-rename-function
       (funcall message-send-rename-function)
-    (when (string-match "\\`\\*\\(sent \\|unsent \\)?\\(.+\\)\\*[^\\*]*"
-                       (buffer-name))
+    ;; Note: mail-abbrevs of XEmacs renames buffer name behind Gnus.
+    (when (string-match
+          "\\`\\*\\(sent \\|unsent \\)?\\(.+\\)\\*[^\\*]*\\|\\`mail to "
+          (buffer-name))
       (let ((name (match-string 2 (buffer-name)))
            to group)
-       (if (not (or (string-equal name "mail")
+       (if (not (or (null name)
+                    (string-equal name "mail")
                     (string-equal name "news")))
            (setq name (concat "*sent " name "*"))
          (setq to (message-fetch-field "to"))
@@ -4846,6 +4850,7 @@ that further discussion should take place only in "
          (message-set-work-buffer)
          (if (and mft
                   message-use-followup-to
+                  wide
                   (or (not (eq message-use-followup-to 'ask))
                       (message-y-or-n-p "Obey Mail-Followup-To? " t "\
 You should normally obey the Mail-Followup-To: header.  In this
index 912a232..939d853 100644 (file)
@@ -1576,11 +1576,9 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
                                 (list
                                  :predicate
                                  `(lambda (file)
-                                    (string-match
-                                     ,(concat
-                                       (regexp-quote (concat group suffix))
-                                       "$")
-                                     file)))))))
+                                    (string-equal
+                                     ,(concat group suffix)
+                                     (file-name-nondirectory file))))))))
        (when nnmail-fetched-sources
          (if (member source nnmail-fetched-sources)
              (setq source nil)
index e8f3332..a174995 100644 (file)
@@ -33,6 +33,7 @@
 (require 'mm-util)
 (require 'gnus-util)
 (require 'time-date)
+(require 'rfc2231)
 (eval-when-compile
   (ignore-errors
     (require 'xml)
@@ -66,7 +67,8 @@
 
 (defvar nnrss-group-alist
   '(("MacWeek"
-     "http://macweek.zdnet.com/macweek.xml")
+     "http://macweek.zdnet.com/macweek.xml"
+     "The Macintosh news authority.")
     ("Linux.Weekly.News"
      "http://lwn.net/headlines/rss")
     ("Motley.Fool"
     ("Slashdot"
      "http://www.slashdot.com/slashdot.rdf")
     ("CNN"
-     "http://www.cnn.com/cnn.rss")
+     "http://www.cnn.com/cnn.rss"
+     "The world's news leader.")
     ("FreshMeat"
-     "http://freshmeat.net/backend/fm.rdf")
+     "http://freshmeat.net/backend/fm.rdf"
+     "The one-stop-shop for all your Linux software needs.")
     ("The.Guardian.newspaper"
-     "http://www.guardianunlimited.co.uk/rss/1,,,00.xml")
+     "http://www.guardianunlimited.co.uk/rss/1,,,00.xml"
+     "Intelligent news and comment throughout the day from The Guardian newspaper.")
     ("MonkeyFist.rdf"
-     "http://monkeyfist.com/rdf.php3")
+     "http://monkeyfist.com/rdf.php3"
+     "News and opinion on politics, technology, and eclectic miscellany.")
     ("NewsForge"
      "http://www.newsforge.com/newsforge.rss")
     ("Reuters.Health"
-     "http://www.reutershealth.com/eline.rss")
+     "http://www.reutershealth.com/eline.rss"
+     "Consumer-oriented health-related news stories.")
     ("Salon"
      "http://www.salon.com/feed/RDF/salon_use.rdf")
     ("Wired"
     ("ITN"
      "http://www.itn.co.uk/itn.rdf")
     ("Meerkat"
-     "http://www.oreillynet.com/meerkat/?_fl=rss10")
+     "http://www.oreillynet.com/meerkat/?_fl=rss10"
+     "An Open Wire Service")
     ("MonkeyFist"
-     "http://monkeyfist.com/rss1.php3")
+     "http://monkeyfist.com/rss1.php3"
+     "News and opinion on politics, technology, and eclectic miscellany.")
     ("Reuters.Health.rdf"
-     "http://www.reutershealth.com/eline.rdf")))
+     "http://www.reutershealth.com/eline.rdf"
+     "Consumer-oriented health-related news stories.")
+    ;;("4xt" "http://4xt.org/news/general.rss10" "Resources for XT users.")
+    ("Aaronland" "http://aaronland.net/xml/abhb.rdf" "A boy and his basement.")
+    ("Art of the Mix" "http://www.artofthemix.org/xml/rss.asp" "A website devoted to the art of making mixed tapes and cds.")
+    ("Dave Beckett's RDF Resource Guide" "http://www.ilrt.bristol.ac.uk/discovery/rdf/resources/rss.rdf" "A comprehensive guide to resources about RDF.")
+    ("David Chess" "http://www.davidchess.com/words/log.rss" "Mostly-daily musings on philosophy, children, culture, technology, the emergence of life from matter, chocolate, Nomic, and all that sort of thing.")
+    ;;("Dublin Core Metadata Intitiative" "http://www.dublincore.org/news.rss" "Latest news from DCMI.")
+    ("Figby Articles" "http://www.figby.com/index-rss.php" "A weblog with daily stories about technology, books and publishing, privacy, science, and occasional humor.")
+    ;;("Figby News" "http://www.figby.com/news.php" "Categorized RSS feeds from various sources.")
+    ("Figby Quickies" "http://www.figby.com/quickies-rss.php" "Quick commented links to other sites from Figby.com.")
+    ("Flutterby!" "http://www.flutterby.com/main.rdf" "News and views from Dan Lyke.")
+    ("Groovelog" "http://groovelog.agora.co.uk/groove+log/groovelog.nsf/today.rss.xml" "The open-access groove users' weblog.")
+    ;;("Groovelog.rss10" "http://groovelog.agora.co.uk/groove+log/groovelog.nsf/today.rss10.xml" "The open-access groove users' weblog.")
+    ("Hit or Miss" "http://hit-or-miss.org/rss/" "Daily weblog and journal.")
+    ;;("Internet.com Feeds" "http://www.webreference.com/services/news/" "News from ")
+    ("Larkfarm News" "http://www.larkfarm.com/Larkfarm.rdf" "Mike Gunderloy's web site.")
+    ("Latest RFCs" "http://x42.com/rss/rfc.rss")
+    ("Linux Today" "http://linuxtoday.com/backend/biglt.rss")
+    ("Linux Today.rdf" "http://linuxtoday.com/backend/my-netscape10.rdf")
+    ("More Like This WebLog" "http://www.whump.com/moreLikeThis/RSS" "Because the more you know, the more jokes you get.")
+    ("Motivational Quotes of the Day" "http://www.quotationspage.com/data/mqotd.rss" "Four motivational quotations each day from the Quotations Page.")
+    ;;("My Netscape Network" "http://www.dmoz.org/Netscape/My_Netscape_Network/")
+    ;;("My UserLand" "http://my.userland.com/choose")
+    ("Network World Fusion NetFlash" "http://www.nwfusion.com/netflash.rss" "Daily breaking news about networking products, technologies and services.")
+    ;;("News Feeds" "http://newsfeeds.manilasites.com/" "Jeff Barr highlights high quality RSS feeds.")
+    ;;("News Is Free Export" "http://www.newsisfree.com/export.php3")
+    ("News Is Free" "http://www.newsisfree.com/news.rdf.php3")
+    ;;("News is Free XML Export" "http://www.newsisfree.com/ocs/directory.xml")
+    ("O'Reilly Network Articles" "http://www.oreillynet.com/cs/rss/query/q/260?x-ver=1.0")
+    ("Quotes of the Day" "http://www.quotationspage.com/data/qotd.rss" "Four humorous quotations each day from the Quotations Page.")
+    ("RDF Interest Group" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=www-rdf-interest" "An experimental channel scraped from the RDF Interest Group mail archives.")
+    ("RDF Logic List" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=www-rdf-logic" "An experimental channel scraped from the RDF Logic mail archives.")
+    ("RSS Info" "http://www.blogspace.com/rss/rss10" "News and information on the RSS format")
+    ;;("RSS-DEV listing" "http://www.egroups.com/links/rss-dev/Feeds_000966335046/" "A listing of RSS files from the RSS-DEV list.")
+    ("Semantic Web List" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=semantic-web" "An experimental channel scraped from the W3C's Semantic Web mail archives.")
+    ;;("Sherch!" "http://www.sherch.com/~pldms/cgi-bin/sherch.pl" "Sherlock for the rest of us.")
+    ;;("Street Fusion Archived Financial Webcasts" "http://partners.streetfusion.com/rdf/archive.rdf")
+    ;;("Street Fusion Upcoming Financial Webcasts" "http://partners.streetfusion.com/rdf/live.rdf")
+    ;;("TNL.net newsletter" "http://www.tnl.net/newsletter/channel100.asp" "A newsletter about Internet technology and issues.")
+    ("W3C" "http://www.w3.org/2000/08/w3c-synd/home.rss" "The latest news at the World Wide Web Consortium.")
+    ;;("XML News: RSS Live Content" "http://www.xmlnews.org/RSS/content.html" "A listing of well-known RSS feeds.")
+    ("XMLfr" "http://xmlfr.org/actualites/general.rss10" "French speaking portal site dedicated to XML.")
+    ("XMLhack" "http://xmlhack.com/rss10.php" "Developer news from the XML community.")))
 
 (defvar nnrss-use-local nil)
 
   t)
 
 (deffoo nnrss-open-server (server &optional defs connectionless)
+  (nnrss-read-server-data server)
   (nnoo-change-server 'nnrss server defs)
   t)
 
 (deffoo nnrss-request-expire-articles
     (articles group &optional server force)
   (nnrss-possibly-change-group group server)
-  (let (e changed days)
+  (let (e days not-expirable changed)
     (dolist (art articles)
-      (when (setq e (assq art nnrss-group-data))
-      (if (nnmail-expired-article-p
-          group
-          (if (listp (setq days (nth 1 e))) days (days-to-time days))
-          force)
+      (if (and (setq e (assq art nnrss-group-data))
+              (nnmail-expired-article-p
+               group
+               (if (listp (setq days (nth 1 e))) days 
+                 (days-to-time (- days (time-to-days '(0 0)))))
+               force))
          (setq nnrss-group-data (delq e nnrss-group-data)
-               changed t))))
+               changed t)
+       (push art not-expirable)))
     (if changed
-       (nnrss-save-group-data group server))))
+       (nnrss-save-group-data group server))
+    not-expirable))
 
 (deffoo nnrss-request-delete-group (group &optional force server)
   (nnrss-possibly-change-group group server)
   (setq nnrss-server-data
        (delq (assoc group nnrss-server-data) nnrss-server-data))
   (nnrss-save-server-data server)
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el") nnrss-directory)))
-    (delete-file file))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el")) nnrss-directory)))
+    (ignore-errors
+      (delete-file file)))
+  t)
+
+(deffoo nnrss-request-list-newsgroups (&optional server)
+  (nnrss-possibly-change-group nil server)
+  (save-excursion
+    (set-buffer nntp-server-buffer)
+    (erase-buffer)
+    (dolist (elem nnrss-group-alist)
+      (if (third elem)
+         (insert (car elem) "\t" (third elem) "\n"))))
   t)
 
 (nnoo-define-skeleton nnrss)
 (defun nnrss-possibly-change-group (&optional group server)
   (when (and server
             (not (nnrss-server-opened server)))
-    (nnrss-read-server-data server)
     (nnrss-open-server server))
   (when (and group (not (equal group nnrss-group)))
     (nnrss-read-group-data group server)
     (setq nnrss-group group)))
 
+(defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories))
+
 (defun nnrss-generate-active ()
+  (if (y-or-n-p "Fetch extra categories?")
+      (dolist (func nnrss-extra-categories)
+       (funcall func)))
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
 
 (defun nnrss-read-server-data (server)
   (setq nnrss-server-data nil)
-  (let ((file (expand-file-name (concat "nnrss" (and server
-                                                    (not (equal server ""))
-                                                    "-")
-                                       server
-                                       ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat "nnrss" (and server
+                                    (not (equal server ""))
+                                    "-")
+                       server
+                       ".el"))
+              nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
        (let ((coding-system-for-read 'binary))
          (insert-file-contents file))
+       (emacs-lisp-mode)
        (goto-char (point-min))
        (eval-buffer)))))
 
 (defun nnrss-save-server-data (server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name (concat "nnrss" (and server
-                                                    (not (equal server ""))
-                                                    "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat "nnrss" (and server
+                                    (not (equal server ""))
+                                    "-")
+                       server ".el"))
+              nnrss-directory)))
     (let ((coding-system-for-write 'binary))
       (with-temp-file file
        (insert "(setq nnrss-server-data '"
   (let ((pair (assoc group nnrss-server-data)))
     (setq nnrss-group-max (or (cadr pair) 0))
     (setq nnrss-group-min (+ nnrss-group-max 1)))
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el"))
+              nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
        (let ((coding-system-for-read 'binary))
          (insert-file-contents file))
+       (emacs-lisp-mode)
        (goto-char (point-min))
        (eval-buffer))
       (dolist (e nnrss-group-data)
 
 (defun nnrss-save-group-data (group server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el"))
+              nnrss-directory)))
     (let ((coding-system-for-write 'binary))
       (with-temp-file file
        (insert "(setq nnrss-group-data '"
 (defun nnrss-no-cache (url)
   "")
 
+;; TODO:: disable cache.
+;;
+;; (defun nnrss-insert-w3 (url)
+;;   (require 'url)
+;;   (require 'url-cache)
+;;   (let ((url-cache-creation-function 'nnrss-no-cache))
+;;     (mm-with-unibyte-current-buffer
+;;       (nnweb-insert url))))
+
 (defun nnrss-insert-w3 (url)
-  (require 'url)
-  (require 'url-cache)
-  (let ((url-cache-creation-function 'nnrss-no-cache))
-    (mm-with-unibyte-current-buffer
-      (nnweb-insert url))))
+  (mm-with-unibyte-current-buffer
+    (nnweb-insert url)))
 
 (defun nnrss-decode-entities-unibyte-string (string)
   (mm-with-unibyte-buffer
 (defun nnrss-check-group (group server)
   (let ((w3-html-entities (cons '(nbsp . 32) w3-html-entities))
        file xml subject url extra changed author date)
-    (mm-with-unibyte-buffer
-      (if (and nnrss-use-local
-              (file-exists-p (setq file (expand-file-name
-                                         (concat group ".xml")
+    (condition-case err
+       (mm-with-unibyte-buffer
+         (if (and nnrss-use-local
+                  (file-exists-p (setq file (expand-file-name
+                                         (nnrss-translate-file-chars
+                                          (concat group ".xml"))
                                          nnrss-directory))))
-         (insert-file-contents file)
-       (setq url (or (nth 2 (assoc group nnrss-server-data))
-                     (second (assoc group nnrss-group-alist))))
-       (unless url
-         (setq url
+             (insert-file-contents file)
+           (setq url (or (nth 2 (assoc group nnrss-server-data))
+                         (second (assoc group nnrss-group-alist))))
+           (unless url
+             (setq url
                (read-string (format "RSS url of %s: " group "http://")))
-         (let ((pair (assoc group nnrss-server-data)))
-           (if pair
-               (setcdr (cdr pair) (list url))
-             (push (list group nnrss-group-max url) nnrss-server-data)))
-         (setq changed t))
-       (nnrss-insert url))
-      (goto-char (point-min))
-      (while (re-search-forward "\r\n?" nil t)
-       (replace-match "\n"))
-      (goto-char (point-min))
-      (if (re-search-forward "<rdf\\|<rss" nil t)
-         (goto-char (match-beginning 0)))
-      (setq xml (xml-parse-region (point) (point-max))))
+             (let ((pair (assoc group nnrss-server-data)))
+               (if pair
+                   (setcdr (cdr pair) (list url))
+                 (push (list group nnrss-group-max url) nnrss-server-data)))
+             (setq changed t))
+           (nnrss-insert url))
+         (goto-char (point-min))
+         (while (re-search-forward "\r\n?" nil t)
+           (replace-match "\n"))
+         (goto-char (point-min))
+         (if (re-search-forward "<rdf\\|<rss" nil t)
+             (goto-char (match-beginning 0)))
+         (setq xml (xml-parse-region (point) (point-max))))
+      (error 
+       (nnheader-message 1 "Error in group %s: %s" group (cadr err))))
     (while (and xml (not (assq 'item xml)))
       (unless (listp (car (setq xml (cddar xml))))
        (setq xml nil)))
         (push
          (list
           (incf nnrss-group-max)
-          (time-to-days (current-time))
+          (current-time)
           url
           (and subject (nnrss-decode-entities-unibyte-string subject))
           (and author (nnrss-decode-entities-unibyte-string author))
            (push (list group nnrss-group-max) nnrss-server-data)))
        (nnrss-save-server-data server))))
 
+(defun nnrss-generate-download-script ()
+  "Generate a download script in the current buffer.
+It is useful when `(setq nnrss-use-local t)'."
+  (interactive)
+  (insert "#!/bin/sh\n")
+  (insert "WGET=wget\n")
+  (insert "RSSDIR='" (expand-file-name nnrss-directory) "'\n")
+  (dolist (elem nnrss-server-data)
+    (let ((url (or (nth 2 elem)
+                  (second (assoc (car elem) nnrss-group-alist)))))
+    (insert "$WGET -q -O \"$RSSDIR\"/'" 
+           (nnrss-translate-file-chars (concat (car elem) ".xml"))
+           "' '" url "'\n"))))
+
+(defun nnrss-translate-file-chars (name)
+  (let ((nnheader-file-name-translation-alist
+        (append nnheader-file-name-translation-alist '((?' . ?_)))))
+    (nnheader-translate-file-chars name)))
+
+(defvar nnrss-moreover-url 
+  "http://w.moreover.com/categories/category_list_rss.html"
+  "The url of moreover.com categories.")
+
+(defun nnrss-snarf-moreover-categories ()
+  "Snarf RSS links from moreover.com."
+  (interactive)
+  (let (category name url changed)
+    (with-temp-buffer
+      (nnrss-insert nnrss-moreover-url)
+      (goto-char (point-min))
+      (while (re-search-forward 
+             "<A NAME=\"\\([^\"]+\\)\">\\|<A HREF=\"\\(http://[^\"]*moreover\\.com[^\"]+page\\?c=\\([^\"&]+\\)&o=rss\\)" nil t)
+       (if (match-string 1)
+           (setq category (match-string 1))
+         (setq url (match-string 2)
+               name (nnweb-decode-entities-string
+                     (rfc2231-decode-encoded-string 
+                      (match-string 3))))
+         (if category
+             (setq name (concat category "." name)))
+         (unless (assoc name nnrss-server-data)
+           (setq changed t)
+           (push (list name 0 url) nnrss-server-data)))))
+    (if changed
+       (nnrss-save-server-data ""))))
+
 (provide 'nnrss)
 
 ;;; nnrss.el ends here
index dab4d90..b122cd7 100644 (file)
              (setq gname (concat description " (" sid ")"))
              (if (setq elem (assoc gname nnslashdot-groups))
                  (setcar (cdr elem) articles)
-               (push (list gname articles sid) nnslashdot-groups))
+               (push (list gname articles sid (current-time)) 
+                     nnslashdot-groups))
              (goto-char (point-max))
              (widen)))
          ;; Then do the older groups.
                  (setq gname (concat description " (" sid ")"))
                  (if (setq elem (assoc gname nnslashdot-groups))
                      (setcar (cdr elem) articles)
-                   (push (list gname articles sid) nnslashdot-groups)))))
+                   (push (list gname articles sid (current-time)) 
+                         nnslashdot-groups)))))
            (incf number 30)))
       (search-failed (nnslashdot-lose why)))
     (nnslashdot-write-groups)
   (setq nnslashdot-headers nil
        nnslashdot-groups nil))
 
+(deffoo nnslashdot-request-expire-articles
+    (articles group &optional server force)
+  (nnslashdot-possibly-change-server group server)
+  (let ((item (assoc group nnslashdot-groups)))
+    (when item
+      (if (fourth item)
+         (when (and (>= (length articles) (cadr item)) ;; All are expirable.
+                    (nnmail-expired-article-p 
+                     group
+                     (fourth item) 
+                     force))
+           (setq nnslashdot-groups (delq item nnslashdot-groups))
+           (nnslashdot-write-groups)
+           (setq articles nil)) ;; all expired.
+       (setcdr (cddr item) (list (current-time)))
+       (nnslashdot-write-groups))))
+  articles)
+
 (nnoo-define-skeleton nnslashdot)
 
 ;;; Internal functions
index a1ea1e7..092e8a2 100644 (file)
@@ -532,84 +532,85 @@ noticing asynchronous data.")
   "Retrieve group info on GROUPS."
   (nntp-possibly-change-group nil server)
   (when (nntp-find-connection-buffer nntp-server-buffer)
-    (save-excursion
-      ;; Erase nntp-server-buffer before nntp-inhibit-erase.
-      (set-buffer nntp-server-buffer)
-      (erase-buffer)
-      (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
-      ;; The first time this is run, this variable is `try'.  So we
-      ;; try.
-      (when (eq nntp-server-list-active-group 'try)
-       (nntp-try-list-active (car groups)))
-      (erase-buffer)
-      (let ((count 0)
-           (received 0)
-           (last-point (point-min))
-           (nntp-inhibit-erase t)
-           (buf (nntp-find-connection-buffer nntp-server-buffer))
-           (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
-       (while groups
-         ;; Send the command to the server.
-         (nntp-send-command nil command (pop groups))
-         (incf count)
-         ;; Every 400 requests we have to read the stream in
-         ;; order to avoid deadlocks.
-         (when (or (null groups)       ;All requests have been sent.
-                   (zerop (% count nntp-maximum-request)))
-           (nntp-accept-response)
+    (catch 'done
+      (save-excursion
+       ;; Erase nntp-server-buffer before nntp-inhibit-erase.
+       (set-buffer nntp-server-buffer)
+       (erase-buffer)
+       (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
+       ;; The first time this is run, this variable is `try'.  So we
+       ;; try.
+       (when (eq nntp-server-list-active-group 'try)
+         (nntp-try-list-active (car groups)))
+       (erase-buffer)
+       (let ((count 0)
+             (received 0)
+             (last-point (point-min))
+             (nntp-inhibit-erase t)
+             (buf (nntp-find-connection-buffer nntp-server-buffer))
+             (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
+         (while groups
+           ;; Send the command to the server.
+           (nntp-send-command nil command (pop groups))
+           (incf count)
+           ;; Every 400 requests we have to read the stream in
+           ;; order to avoid deadlocks.
+           (when (or (null groups)     ;All requests have been sent.
+                     (zerop (% count nntp-maximum-request)))
+             (nntp-accept-response)
+             (while (and (gnus-buffer-live-p buf)
+                         (progn
+                           ;; Search `blue moon' in this file for the
+                           ;; reason why set-buffer here.
+                           (set-buffer buf)
+                           (goto-char last-point)
+                           ;; Count replies.
+                           (while (re-search-forward "^[0-9]" nil t)
+                             (incf received))
+                           (setq last-point (point))
+                           (< received count)))
+               (nntp-accept-response))))
+         
+         ;; Wait for the reply from the final command.
+         (unless (gnus-buffer-live-p buf)
+           (nnheader-report 'nntp "Connection to %s is closed." server)
+           (throw 'done nil))
+         (set-buffer buf)
+         (goto-char (point-max))
+         (re-search-backward "^[0-9]" nil t)
+         (when (looking-at "^[23]")
            (while (and (gnus-buffer-live-p buf)
                        (progn
-                         ;; Search `blue moon' in this file for the
-                         ;; reason why set-buffer here.
                          (set-buffer buf)
-                         (goto-char last-point)
-                         ;; Count replies.
-                         (while (re-search-forward "^[0-9]" nil t)
-                           (incf received))
-                         (setq last-point (point))
-                         (< received count)))
-             (nntp-accept-response))))
-
-       ;; Wait for the reply from the final command.
-       (unless (gnus-buffer-live-p buf)
-         (error
-          (nnheader-report 'nntp "Connection to %s is closed." server)))
-       (set-buffer buf)
-       (goto-char (point-max))
-       (re-search-backward "^[0-9]" nil t)
-       (when (looking-at "^[23]")
-         (while (and (gnus-buffer-live-p buf)
-                     (progn
-                       (set-buffer buf)
-                       (goto-char (point-max))
-                       (if (not nntp-server-list-active-group)
-                           (not (re-search-backward "\r?\n" (- (point) 3) t))
-                         (not (re-search-backward "^\\.\r?\n"
-                                                  (- (point) 4) t)))))
-                     (nntp-accept-response)))
-
-       ;; Now all replies are received.  We remove CRs.
-       (unless (gnus-buffer-live-p buf)
-         (error
-          (nnheader-report 'nntp "Connection to %s is closed." server)))
-       (set-buffer buf)
-       (goto-char (point-min))
-       (while (search-forward "\r" nil t)
-         (replace-match "" t t))
-
-       (if (not nntp-server-list-active-group)
-           (progn
-             (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-             'group)
-         ;; We have read active entries, so we just delete the
-         ;; superfluous gunk.
+                         (goto-char (point-max))
+                         (if (not nntp-server-list-active-group)
+                             (not (re-search-backward "\r?\n" (- (point) 3) t))
+                           (not (re-search-backward "^\\.\r?\n"
+                                                    (- (point) 4) t)))))
+             (nntp-accept-response)))
+         
+         ;; Now all replies are received.  We remove CRs.
+         (unless (gnus-buffer-live-p buf)
+           (nnheader-report 'nntp "Connection to %s is closed." server)
+           (throw 'done nil))
+         (set-buffer buf)
          (goto-char (point-min))
-         (while (re-search-forward "^[.2-5]" nil t)
-           (delete-region (match-beginning 0)
-                          (progn (forward-line 1) (point))))
-         (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-         'active)))))
-
+         (while (search-forward "\r" nil t)
+           (replace-match "" t t))
+         
+         (if (not nntp-server-list-active-group)
+             (progn
+               (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+               'group)
+           ;; We have read active entries, so we just delete the
+           ;; superfluous gunk.
+           (goto-char (point-min))
+           (while (re-search-forward "^[.2-5]" nil t)
+             (delete-region (match-beginning 0)
+                            (progn (forward-line 1) (point))))
+           (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+           'active))))))
+  
 (deffoo nntp-retrieve-articles (articles &optional group server)
   (nntp-possibly-change-group group server)
   (save-excursion
index 4ed3377..3f69d36 100644 (file)
@@ -86,6 +86,8 @@
       (setq map mapping)
       (while (and (setq article (car articles))
                  map)
+       ;; Skip past the articles in the map until we reach the
+       ;; article we're looking for.
        (while (and map
                    (or (> article (caar map))
                        (< (cadar map) (caar map))))
              (setq contents (cdr (nth 2 (car (nth 2 table)))))
              (setq total-contents (nconc total-contents contents))
              (incf current-page))
-           ;;(setq total-contents (nreverse total-contents))
-           (dolist (art (cdr elem))
-             (if (not (nth (1- (cdr art)) total-contents))
-                 ()                    ;(debug)
-               (push (list (car art)
-                           (nth (1- (cdr art)) total-contents)
-                           subject)
-                     nnultimate-articles)))))
+           (when t
+             (let ((i 0))
+               (dolist (co total-contents)
+                 (push (list (or (nnultimate-topic-article-to-article
+                                  group (car elem) (incf i))
+                                 1)
+                             co subject)
+                       nnultimate-articles))))
+           (when nil
+             (dolist (art (cdr elem))
+               (when (nth (1- (cdr art)) total-contents)
+                 (push (list (car art)
+                             (nth (1- (cdr art)) total-contents)
+                             subject)
+                       nnultimate-articles))))))
        (setq nnultimate-articles
              (sort nnultimate-articles 'car-less-than-car))
        ;; Now we have all the articles, conveniently in an alist
             from (or date "")
             (concat "<" (number-to-string sid) "%"
                     (number-to-string article)
-                    "@ultimate>")
+                    "@ultimate." server ">")
             "" 0
             (/ (length (mapconcat
                         'identity
              (nnheader-insert-nov (cdr header))))))
       'nov)))
 
+(defun nnultimate-topic-article-to-article (group topic article)
+  (catch 'found
+    (dolist (elem (nth 5 (assoc group nnultimate-groups)))
+      (when (and (= topic (nth 2 elem))
+                (>= article (nth 3 elem))
+                (< article (+ (- (nth 1 elem) (nth 0 elem)) 1
+                              (nth 3 elem))))
+       (throw 'found
+              (+ (nth 0 elem) (- article (nth 3 elem))))))))
+
 (deffoo nnultimate-request-group (group &optional server dont-check)
   (nnultimate-possibly-change-server nil server)
   (when (not nnultimate-groups)
index fe59443..232c225 100644 (file)
@@ -1,3 +1,44 @@
+2001-05-05  Florian Weimer  <fw@deneb.enyo.de>
+
+       * gnus.texi (IMAP): Remove double paragraph (suggest by Norbert
+       Koch), fix NNTP reference.
+
+2001-05-04 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+       Suggested by Dan Christensen <jdc@uwo.ca>
+
+       * gnus.texi (Mail Group Commands): Add pxref.
+       (Group Maintenance): Ditto.
+       (Topic Commands): Ditto.
+       (Expiring Mail): Typo.
+
+2001-05-04 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+       From Raymond Scholz <ray-2001@zonix.de>
+
+       * gnus.texi (Summary Buffer Lines): Mention the meaning of a
+       colon.
+
+2001-05-03 07:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+       From Sriram Karra <karra@cs.utah.edu>.
+
+       * gnus.texi: Add default value.
+
+2001-05-03 06:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Using GPG): Use example environment.
+
+2001-05-02 17:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Expunging mailboxes): Typo.
+
+2001-04-15 19:38:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Mail and Post): Fix.
+
+2001-04-29 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi: Remove a few The's.
+       (RSS): New.
+
 2001-04-26  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 
        * gnus.texi (Unread Articles): Say that dormants are similar to
index 5ae0c55..b485f82 100644 (file)
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000 
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
 Free Software Foundation, Inc.
 
 
@@ -494,7 +494,7 @@ New Groups
 * Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
 * Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
 
-The Group Buffer
+Group Buffer
 
 * Group Buffer Format::   \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
 * Group Maneuvering::     \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
@@ -535,7 +535,7 @@ Misc Group Stuff
 * Group Timestamp::       Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
 * File Commands::         Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
 
-The Summary Buffer
+Summary Buffer
 
 * Summary Buffer Format::      \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
 * Summary Maneuvering::        \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
@@ -648,7 +648,7 @@ Various Summary Stuff
 * Summary Generation Commands::     \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
 * Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
 
-The Article Buffer
+Article Buffer
 
 * Hiding Headers::       \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
 * Using MIME::           @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
@@ -677,7 +677,7 @@ Select Methods
 * Combined Groups::   \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
 * Gnus Unplugged::    \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
 
-The Server Buffer
+Server Buffer
 
 * Server Buffer Format::      \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
 * Server Commands::           \e$B%5!<%P!<$rA`$kL?Na\e(B
@@ -735,6 +735,7 @@ Browsing the Web
 * Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
 * Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
 * Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::            RDF Site Summary \e$B$rFI$`\e(B
 * Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 
 Other Sources
@@ -3089,13 +3090,15 @@ kill \e$B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9\e(B (@code{gnus-group-list-killed})\e$B!#@\
 @kindex C-c C-x (Group)
 @findex gnus-group-expire-articles
 \e$B8=:_$N%0%k!<%W$N%(%/%9%Q%$%"5-;v$KBP$7$F\e(B (\e$B$b$7$"$l$P\e(B) \e$BA4$F%(%/%9%Q%$%"=h\e(B
-\e$BM}$r9T$$$^$9\e(B (@code{gnus-group-expire-articles})\e$B!#\e(B
+\e$BM}$r9T$$$^$9\e(B (@code{gnus-group-expire-articles})\e$B!#$3$l$O!"$=$N%0%k!<%W$K\e(B
+\e$B$7$P$i$/B8:_$7$F$$$?4|8B@Z$l:o=|2DG=$J$9$Y$F$N5-;v$r>C5n$9$k$H$$$&$3$H$G\e(B
+\e$B$9!#\e(B(@pxref{Expiring Mail})\e$B!#\e(B
 
 @item C-c M-C-x
 @kindex C-c M-C-x (Group)
 @findex gnus-group-expire-all-groups
-\e$BA4$F$N%0%k!<%W$NA4$F$N5-;v$KBP$7$F!"%(%/%9%Q%$%"=hM}$r9T$$$^\e(B
-\e$B$9\e(B (@code{gnus-group-expire-all-groups})\e$B!#\e(B
+\e$BA4$F$N%0%k!<%W$NA4$F$N4|8B@Z$l:o=|2DG=$J5-;v$KBP$7$F!"%(%/%9%Q%$%"=hM}$r\e(B
+\e$B9T$$$^$9!#\e(B(@code{gnus-group-expire-all-groups})\e$B!#\e(B
 
 @end table
 
@@ -3434,7 +3437,7 @@ Gnus
 @kindex C-c C-x (Topic)
 @findex gnus-topic-expire-articles
 (\e$B$b$7$"$l$P\e(B) \e$B8=:_$N%0%k!<%W$+%H%T%C%/$+$NA4$F$N;~8B>C5n2DG=5-;v$r;~8B>C\e(B
-\e$B5n$7$^$9\e(B (@code{gnus-topic-expire-articles})\e$B!#\e(B
+\e$B5n$7$^$9\e(B (@code{gnus-topic-expire-articles})\e$B!#\e(B(@pxref{Expiring Mail})\e$B!#\e(B
 
 @item C-k
 @kindex C-k (Topic)
@@ -3994,6 +3997,9 @@ Gnus \e$B$OJQ?t\e(B @code{gnus-extract-address-components} \e$B$NCM$r\e(B @code{From
 \e$BD%\e(B (@pxref{Formatting Variables}) \e$B$r=|$$$F!"IaDL$N\e(B @code{format} \e$BJ8;zNs\e(B
 \e$B$HF1$8$h$&$KF0:n$7$^$9!#\e(B
 
+\e$B9T$K$O>o$K%3%m%s$,B8:_$7$F$$$J$1$l$P$J$j$^$;$s!#A`:n$7$?8e$K!"%+!<%=%k$O\e(B
+\e$B$$$D$b%3%m%s$N>l=j$K0\F0$7$^$9!#\e(B
+
 \e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n} \e$B$G$9!#\e(B
 
 \e$B0J2<$NMM<0;X<(J8;z$r;H$&$3$H$,$G$-$^$9\e(B:
@@ -5725,6 +5731,17 @@ gnus \e$B$OA4$F$N5-;v$N40A4$J\e(B @code{References} \e$BMs$r8+$F!"F1$8%9%l%C%I$KB0$
 \e$B!X$:$l!Y$r%9%l%C%I$rJd40$9$k$N$KLr$KN)$D$+$r9MN8$;$:$KI=<($7$^$9!#:G8e$K!"\e(B
 \e$B$3$NJQ?t$,\e(B @code{more} \e$B$G$"$k$H!"\e(Bgnus \e$B$O$I$3$K$b$D$J$,$C$F$$$J$$;^MU$N$^\e(B
 \e$B$P$i$J@a$r@Z$jMn$H$7$^$;$s!#$3$NJQ?t$O%G%#%U%)%k%H$G$O\e(B @code{nil} \e$B$G$9!#\e(B
+
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+\e$B$3$l$O$I$A$i$+$H8@$($P$"$^$jLr$KN)$?$J$$JQ?t$G$9!#%K%e!<%9$G$O$J$$%0%k!<\e(B
+\e$B%W$K$*$$$F35N,%P%C%U%!$,$H$F$bBg$-$/$J$j!"$7$+$b?F5-;v$rC)$k$3$H$,$G$-$J\e(B
+\e$B$$>l9g$K;H$&$3$H$rA[Dj$7$F$$$^$9!#$=$l$O<g$K\e(B @code{nnultimate} \e$B%0%k!<%W\e(B
+\e$B$N$h$&$J!"%&%'%V$K4p$E$$$?%0%k!<%W$G$9!#\e(B
+
+\e$B$3$l$r;H$o$J$$>l9g$O%G%#%U%)%k%H$N\e(B @code{nil} \e$B$N$^$^$K$7$F$*$/$N$,L5Fq$G\e(B
+\e$B$9!#;H$$$?$$>l9g$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$+!"$9$Y$F$N%0%k!<%WL>$K9g\e(B
+\e$BCW$9$k\e(B @code{t} \e$B$K$7$F2<$5$$!#\e(B
 @end table
 
 @node More Threading
@@ -8152,8 +8169,10 @@ Line Formatting})\e$B!#%G%#%U%)%k%H$O\e(B @samp{Gnus: %%b %S %Z} \e$B$G$9!#;HMQ2DG=
 @item B e
 @kindex B e (\e$B35N,\e(B)
 @findex gnus-summary-expire-articles
-\e$B%0%k!<%W$N$9$Y$F$N4|8B:o=|2DG=$J5-;v$r4|8B@Z$l:o=|$7$^\e(B
-\e$B$9\e(B (@code{gnus-summary-expire-articles})\e$B!#\e(B
+\e$B8=:_$N%0%k!<%W$N$9$Y$F$N4|8B:o=|2DG=$J5-;v$K$D$$$F!"4|8B:o=|$N=h\e(B
+\e$BM}\e(B (@code{gnus-summary-expire-articles}) \e$B$r9T$J$$$^$9!#$3$l$O!"$=$N%0%k!<\e(B
+\e$B%W$K$7$P$i$/B8:_$7$F$$$?4|8B@Z$l:o=|2DG=$J$9$Y$F$N5-;v$r>C5n$9$k$H$$$&$3\e(B
+\e$B$H$G$9!#\e(B(@pxref{Expiring Mail})\e$B!#\e(B
 
 @item B M-C-e
 @kindex B M-C-e (\e$B35N,\e(B)
@@ -8732,7 +8751,7 @@ Gnus is able to verify PGP or S/MIME signed messages or decrypt PGP
 encrypted messages.
 
 @enumerate
-@item 
+@item
 To verify or decrypt PGP messages, you have to install mailcrypt or
 gpg.el.
 
@@ -9299,12 +9318,13 @@ gnus \e$B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#\e(B
 
 @lisp
 (add-hook 'gnus-select-group-hook
-          (lambda ()
-            (cond
-             ((string-match "^de\\." gnus-newsgroup-name)
-              (ispell-change-dictionary "deutsch"))
-             (t
-              (ispell-change-dictionary "english")))))
+         (lambda ()
+           (cond
+            ((string-match
+              "^de\\." (gnus-group-real-name gnus-newsgroup-name))
+             (ispell-change-dictionary "deutsch"))
+            (t
+             (ispell-change-dictionary "english")))))
 @end lisp
 
 \e$B$"$J$?$NI,MW$K1~$8$FJQ99$7$F2<$5$$!#\e(B
@@ -9669,10 +9689,10 @@ to 700, for your own safety.
 If you want to benefit of PGP2.6 compatibility, you might create a script named
 @file{gpg-2comp} with these instructions:
 
-@code{
+@example
 #!/bin/sh
 exec gpg --rfc1991 "$@@"
-}
+@end example
 
 If you don't want to use such compatibility, you can add the following line to
 your @file{~/.emacs} or @file{~/.gnus}:
@@ -11711,10 +11731,10 @@ Gnus \e$B$KK>$^$7$/$J$$%a!<%k$r:o=|$5$;$k$?$a$K$O!"5-;v$r\e(B @dfn{\e$B4|8B@Z$l>C5n
 
 \e$B<+F04|8B@Z$l>C5n2DG=%0%k!<%W$r:n$k;v$O!"A4$F$N4{FI5-;v$,4|8B@Z$l>C5n$5$l\e(B
 \e$B$k;v$G$O$J$$;v$K5$$rIU$1$F$/$@$5$$\e(B---\e$B4|8B@Z$l>C5n2DG=$H$7$F0u$NIU$$$?5-\e(B
-\e$B;v$@$1$,4|8B@Z$l>C5n$5$l$^$9!#L?Na\e(B @kbd{d}\e$B$,<+F0E*$K%0%k!<%W$r4|8B@Z$l>C\e(B
-\e$B5n2DG=$K$9$k$N$G$OL5$$$H$$$&;v$K$b5$$rIU$1$F$/$@$5$$\e(B---\e$BH><+F0$N!"<+F04|\e(B
-\e$B8B@Z$l>C5n2DG=%0%k!<%W$G5-;v$r4{FI$K0uIU$1$k$3$H$@$1$,5-;v$r4|8B@Z$l>C5n\e(B
-\e$B2DG=$K$7$^$9!#\e(B
+\e$B;v$@$1$,4|8B@Z$l>C5n$5$l$^$9!#L?Na\e(B @kbd{d}\e$B$,<+F0E*$K5-;v$r4|8B@Z$l>C5n2D\e(B
+\e$BG=$K$9$k$N$G$OL5$$$H$$$&;v$K$b5$$rIU$1$F$/$@$5$$\e(B---\e$BH><+F0$N!"<+F04|8B@Z\e(B
+\e$B$l>C5n2DG=%0%k!<%W$G5-;v$r4{FI$K0uIU$1$k$3$H$@$1$,5-;v$r4|8B@Z$l>C5n2DG=\e(B
+\e$B$K$7$^$9!#\e(B
 
 @lisp
 (setq gnus-auto-expirable-newsgroups
@@ -12020,16 +12040,18 @@ Gnus \e$B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#\e(B
 @table @code
 @item nnmbox-mbox-file
 @vindex nnmbox-mbox-file
-\e$BMxMQ<T$N%[!<%`%G%#%l%/%H%j!<$N%a!<%k%\%C%/%9$NL>A0!#\e(B
+\e$BMxMQ<T$N%[!<%`%G%#%l%/%H%j!<$N%a!<%k%\%C%/%9$NL>A0!#4{DjCM\e(B
+\e$B$O\e(B @file{~/mbox} \e$B$G$9!#\e(B
 
 @item nnmbox-activate-file
 @vindex nnmbox-active-file
-\e$B%a!<%k%\%C%/%9$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
+\e$B%a!<%k%\%C%/%9$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM\e(B
+\e$B$O\e(B @file{~/.mbox-active} \e$B$G$9!#\e(B
 
 @item nnmbox-get-new-mail
 @vindex nnmbox-get-new-mail
 @code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnmbox} \e$B$OF~$C$FMh$?%a!<%k$rFI$_9~$s$G%0%k!<\e(B
-\e$B%W$KJ,3d$7$^$9!#\e(B
+\e$B%W$KJ,3d$7$^$9!#4{DjCM$O\e(B @code{t} \e$B$G$9!#\e(B
 @end table
 
 @node Rmail Babyl
@@ -12048,15 +12070,17 @@ Gnus \e$B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#\e(B
 @table @code
 @item nnbabyl-mbox-file
 @vindex nnbabyl-mbox-file
-rmail mbox \e$B%U%!%$%k$NL>A0\e(B
+rmail mbox \e$B%U%!%$%k$NL>A0!#4{DjCM$O\e(B @file{~/RMAIL} \e$B$G$9!#\e(B
 
 @item nnbabyl-active-file
 @vindex nnbabyl-active-file
-rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
+rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM\e(B
+\e$B$O\e(B @file{~/.rmail-active} \e$B$G$9!#\e(B
 
 @item nnbabyl-get-new-mail
 @vindex nnbabyl-get-new-mail
 @code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnbabyl} \e$B$OF~$C$F$/$k%a!<%k$rFI$_9~$_$^$9!#\e(B
+\e$B4{DjCM$O\e(B @code{t} \e$B$G$9!#\e(B
 @end table
 
 @node Mail Spool
@@ -12096,23 +12120,27 @@ rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
 @item nnml-directory
 @vindex nnml-directory
 \e$BA4$F$N\e(B @code{nnml} \e$B%G%#%l%/%H%j!<$O$3$N%G%#%l%/%H%j!<$N2<$KCV$+$l$^$9!#\e(B
+\e$B4{DjCM$O\e(B `message-directory' \e$B$NCM\e(B (\e$B$=$N4{DjCM$O\e(B @file{~/Mail}) \e$B$G$9!#\e(B
 
 @item nnml-active-file
 @vindex nnml-active-file
-@code{nnml} \e$B%5!<%P!<$N$?$a$N%"%/%F%#%V%U%!%$%k!#\e(B
+@code{nnml} \e$B%5!<%P!<$N$?$a$N%"%/%F%#%V%U%!%$%k!#4{DjCM\e(B
+\e$B$O\e(B @file{~/Mail/active"} \e$B$G$9!#\e(B
 
 @item nnml-newsgroups-file
 @vindex nnml-newgroups-file
-@code{nnml} \e$B%0%k!<%W5-=R%U%!%$%k!#\e(B@xref{Newsgroups File Format}\e$B!#\e(B
+@code{nnml} \e$B%0%k!<%W5-=R%U%!%$%k!#\e(B@xref{Newsgroups File Format}\e$B!#4{DjCM\e(B
+\e$B$O\e(B @file{~/Mail/newsgroups"} \e$B$G$9!#\e(B
 
 @item nnml-get-new-mail
 @vindex nnml-get-new-mail
-@code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnml} \e$B$OF~$C$FMh$?%a!<%kFI$_9~$_$^$9!#\e(B
+@code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnml} \e$B$OF~$C$FMh$?%a!<%kFI$_9~$_$^$9!#4{Dj\e(B
+\e$BCM$O\e(B @code{t} \e$B$G$9!#\e(B
 
 @item nnml-nov-is-evil
 @vindex nnml-nov-is-evil
 @code{nil} \e$B$G$J$1$l$P!"$3$N%P%C%/%(%s%I$O$I$N\e(B @sc{nov} \e$B%U%!%$%k$bL5;k$7\e(B
-\e$B$^$9!#\e(B
+\e$B$^$9!#4{DjCM$O\e(B @code{nil} \e$B$G$9!#\e(B
 
 @item nnml-nov-file-name
 @vindex nnml-nov-file-name
@@ -12149,10 +12177,12 @@ rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
 @item nnmh-directory
 @vindex nnmh-directory
 \e$BA4$F$N\e(B @code{nnmh} \e$B%G%#%l%/%H%j!<$O$3$N%G%#%l%/%H%j!<$N2<$KCV$+$l$^$9!#\e(B
+\e$B4{DjCM$O\e(B @code{message-directory} \e$B$NCM\e(B (\e$B$=$N4{DjCM$O\e(B @file{~/Mail}) \e$B$G$9!#\e(B
 
 @item nnmh-get-new-mail
 @vindex nnmh-get-new-mail
-@code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnmh} \e$B$OF~$C$F$/$k%a!<%k$rFI$_9~$_$^$9!#\e(B
+@code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnmh} \e$B$OF~$C$F$/$k%a!<%k$rFI$_9~$_$^$9!#4{\e(B
+\e$BDjCM$O\e(B @code{t} \e$B$G$9!#\e(B
 
 @item nnmh-be-safe
 @vindex nnmh-be-safe
@@ -12161,7 +12191,7 @@ rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
 \e$BF|IU$HL\$KF~$kA4$F$N>pJs$rD4$Y$^$9$N$G!"$3$l$r\e(B @code{t} \e$B$K@_Dj$9$k;v$O?<\e(B
 \e$B9o$JB.EYDc2<$,5/$3$k$H$$$&;v$G$9!#$b$7\e(B @code{nnmh} \e$B5-;v$rFI$`$N\e(B
 \e$B$K\e(B gnus \e$B0J30$N$b$N$r;H$C$F$$$J$$$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{t} \e$B$K@_Dj$9\e(B
-\e$B$kI,MW$O$"$j$^$;$s!#\e(B
+\e$B$kI,MW$O$"$j$^$;$s!#4{DjCM$O\e(B @code{nil} \e$B$G$9!#\e(B
 @end table
 
 @node Mail Folders
@@ -12181,19 +12211,22 @@ rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
 @item nnfolder-directory
 @vindex nnfolder-directory
 \e$BA4$F$N\e(B @code{nnfolder} \e$B%a!<%k%\%C%/%9$O$3$N%G%#%l%/%H%j!<$N2<$KCV$+$l$^\e(B
-\e$B$9!#\e(B
+\e$B$9!#4{DjCM$O\e(B @code{message-directory} \e$B$NCM\e(B (\e$B$=$N4{DjCM\e(B
+\e$B$O\e(B @file{~/Mail}) \e$B$G$9!#\e(B
 
 @item nnfolder-active-file
 @vindex nnfolder-active-file
-\e$B%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
+\e$B%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM$O\e(B @file{~/Mail/active} \e$B$G$9!#\e(B
 
 @item nnfolder-newgroups-file
 @vindex nnfolder-newsgroups-file
-\e$B%0%k!<%W5-=R%U%!%$%k$NL>A0!#\e(B@xref{Newsgroups File Format}\e$B!#\e(B
+\e$B%0%k!<%W5-=R%U%!%$%k$NL>A0!#\e(B@xref{Newsgroups File Format}\e$B!#4{DjCM\e(B
+\e$B$O\e(B @file{~/Mail/newsgroups"} \e$B$G$9!#\e(B
 
 @item nnfolder-get-new-mail
 @vindex nnfolder-get-new-mail
 @code{nil} \e$B$G$J$1$l$P!"\e(B@code{nnfolder} \e$B$OF~$C$F$/$k%a!<%k$rFI$_9~$_$^$9!#\e(B
+\e$B4{DjCM$O\e(B @code{t} \e$B$G$9!#\e(B
 
 @item nnfolder-save-buffer-hook
 @vindex nnfolder-save-buffer-hook
@@ -12219,6 +12252,7 @@ rmail box \e$B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#\e(B
 @item nnfolder-nov-is-evil
 @vindex nnfolder-nov-is-evil
 \e$B$b$7Hs\e(B@code{nil}\e$B$J$i!"$3$N%P%C%/%(%s%I$O\e(B @sc{nov} \e$B%U%!%$%k$rL5;k$7$^$9!#\e(B
+\e$B4{DjCM$O\e(B @code{nil} \e$B$G$9!#\e(B
 
 @end table
 
@@ -12372,6 +12406,7 @@ Gnus \e$B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j\e(B
 * Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
 * Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
 * Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::            RDF Site Summary \e$B$rFI$`\e(B
 * Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 @end menu
 
@@ -12659,6 +12694,28 @@ asahi RET an_group RET}\e$B!#\e(B(@sc{an_group} \e$B$r1\Mw$7$?$$5-;v%0%k!<%W$KCV$-4
 (nnshimbun "asahi" (nnshimbun-url "http://iij.asahi.com/"))
 @end lisp
 
+@node RSS
+@subsection RSS
+@cindex nnrss
+@cindex RSS
+
+\e$B$$$/$D$+$N%5%$%H$O\e(B RDF site summary (RSS) \e$B$r;}$C$F$$$^\e(B
+\e$B$9\e(B @uref{http://purl.org/rss/1.0/spec}\e$B!#$3$l$O$H$F$b5,B'E*$+$DNI<A$J%$%s\e(B
+\e$B%?!<%U%'!<%9$G!"\e(Bgnus \e$B$,%0%k!<%W$r>o$K?7$7$/$7$F$*$/$?$a$N>pJs$rF@$k$3$H\e(B
+\e$B$,$G$-$^$9!#\e(B
+
+\e$B4JC1$K\e(B @code{nnrss} \e$B$r;H$$;O$a$k$K$O!"%0%k!<%W%P%C%U%!\e(B
+\e$B$G\e(B @kbd{B nnrss RET RET} \e$B$H%?%$%W$7$F!"%0%k!<%W$r9VFI$7$F2<$5$$!#\e(B
+
+\e$B0J2<$N\e(B @code{nnrss} \e$BJQ?t$,JQ992DG=$G$9\e(B:
+
+@table @code
+@item nnrss-directory
+@vindex nnrss-directory
+@code{nnrss} \e$B$,%U%!%$%k$r=q$-9~$`%G%#%l%/%H%j!<$G!"%G%#%U%)%k%H\e(B
+\e$B$O\e(B @samp{~/News/rss/} \e$B$G$9!#\e(B
+@end table
+
 @node Customizing w3
 @subsection w3 \e$B$N%+%9%?%^%$%:\e(B
 @cindex w3
@@ -13593,8 +13650,8 @@ nnimap \e$B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"\e(BSSLeay \e$B$N:G?7HG$G$"$k\e(B 0.9.x \e
 
 \e$B%5!<%P$K%m%0%$%s$9$k$?$a$K;H$&G'>Z>pJs\e(B (authinfo) \e$B$r4^$`%U%!%$%k$G$9!#$=\e(B
 \e$B$N7A<0$O\e(B (\e$B$[$H$s$I\e(B) @code{ftp} \e$B$N\e(B @file{~/.netrc} \e$B%U%!%$%k$HF1$8$G$9!#87\e(B
-\e$BL)$JDj5A$O!"JQ?t\e(B @code{nntp-authinfo-file} \e$B$*$h$S\e(B @xref{NNTP} \e$B$r8+$F2<$5\e(B
-\e$B$$!#\e(B
+\e$BL)$JDj5A$O!"JQ?t\e(B @code{nntp-authinfo-file} \e$B$r8+$F2<$5$$!#$=$7\e(B
+\e$B$F\e(B @ref{NNTP} \e$B$b8+$F2<$5$$!#\e(B
 
 @end table
 
@@ -13792,9 +13849,9 @@ ACL \e$B$O\e(B Access Control List (\e$B;HMQ@)8B0lMw\e(B) \e$B$NN,$G$9!#\e(BIMAP \e$B$G
 @kindex G x
 @findex gnus-group-nnimap-expunge
 
-@code{nnimap-expunge-close} \e$B$K\e(B @code{never} \e$B$r@_Dj$7$F$$$l$P!"%a!<%k%\%C\e(B
-\e$B%/%9$NA4$F$N>C5n$5$l$?5-;v$r<jF0$G:o=|$7$?$$$H;W$&$G$7$g$&!#\e(B@kbd{G x} \e$B$,\e(B
-\e$B$^$5$K$3$N$3$H$r$7$^$9!#\e(B
+@code{nnimap-expunge-on-close} \e$B$K\e(B @code{never} \e$B$r@_Dj$7$F$$$l$P!"%a!<%k\e(B
+\e$B%\%C%/%9$NA4$F$N>C5n$5$l$?5-;v$r<jF0$G:o=|$7$?$$$H;W$&$G$7$g$&!#\e(B
+@kbd{G x} \e$B$,$^$5$K$3$N$3$H$r$7$^$9!#\e(B
 
 \e$B8=;~E@$G$O!">C5n$5$l$?5-;v$rI=<($9$kJ}K!$O$"$j$^$;$s!#$?$@>C5n$G$-$k$@$1\e(B
 \e$B$G$9!#\e(B
@@ -19682,7 +19739,7 @@ M******** sm*rtq**t*s \e$B$rE,@Z$JJ8>O$KK]0F$9$k?7$7$$L?Na$,$"$j$^$9\e(B---
 @subsubsection Pterodactyl Gnus
 
 Gnus 5.8 \e$B$N?7$7$$5!G=\e(B:
-  
+
 @itemize @bullet
 
 @item \e$B%a!<%k$r<h$j9~$`5!G=$,JQ$o$j$^$7$?!#$?$/$5$s$N>\:Y$K$D$$$F$O%^%K%e\e(B
index 0f4bb5c..91cc23f 100644 (file)
@@ -440,7 +440,7 @@ New Groups
 * Subscription Methods::     What Gnus should do with new groups.
 * Filtering New Groups::     Making Gnus ignore certain new groups.
 
-The Group Buffer
+Group Buffer
 
 * Group Buffer Format::    Information listed and how you can change it.
 * Group Maneuvering::      Commands for moving in the group buffer.
@@ -481,7 +481,7 @@ Misc Group Stuff
 * Group Timestamp::       Making Gnus keep track of when you last read a group.
 * File Commands::         Reading and writing the Gnus files.
 
-The Summary Buffer
+Summary Buffer
 
 * Summary Buffer Format::       Deciding how the summary buffer is to look.
 * Summary Maneuvering::         Moving around the summary buffer.
@@ -591,7 +591,7 @@ Various Summary Stuff
 * Summary Generation Commands::       (Re)generating the summary buffer.
 * Really Various Summary Commands::   Those pesky non-conformant commands.
 
-The Article Buffer
+Article Buffer
 
 * Hiding Headers::        Deciding what headers should be displayed.
 * Using MIME::            Pushing articles through @sc{mime} before reading them.
@@ -620,7 +620,7 @@ Select Methods
 * Combined Groups::       Combining groups into one group.
 * Gnus Unplugged::        Reading news and mail offline.
 
-The Server Buffer
+Server Buffer
 
 * Server Buffer Format::      You can customize the look of this buffer.
 * Server Commands::           Commands to manipulate servers.
@@ -672,6 +672,8 @@ Browsing the Web
 * Slashdot::              Reading the Slashdot comments.
 * Ultimate::              The Ultimate Bulletin Board systems.
 * Web Archive::           Reading mailing list archived on web.
+* RSS::                   Reading RDF site summary.
+* Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
 
 Other Sources
 
@@ -3058,12 +3060,14 @@ zombies.
 @kindex C-c C-x (Group)
 @findex gnus-group-expire-articles
 Run all expirable articles in the current group through the expiry
-process (if any) (@code{gnus-group-expire-articles}).
+process (if any) (@code{gnus-group-expire-articles}).  That is, delete
+all expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
 
 @item C-c M-C-x
 @kindex C-c M-C-x (Group)
 @findex gnus-group-expire-all-groups
-Run all articles in all groups through the expiry process
+Run all expirable articles in all groups through the expiry process
 (@code{gnus-group-expire-all-groups}).
 
 @end table
@@ -3407,8 +3411,9 @@ 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}).
+Run all expirable articles in the current group or topic through the
+expiry process (if any)
+(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
 
 @item C-k
 @kindex C-k (Topic)
@@ -3973,6 +3978,9 @@ the @code{gnus-summary-line-format} variable.  It works along the same
 lines as a normal @code{format} string, with some extensions
 (@pxref{Formatting Variables}).
 
+There should always be a colon on the line; the cursor always moves to
+the colon after performing an operation. 
+
 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
 
 The following format specification characters are understood:
@@ -5792,6 +5800,18 @@ thread or not.  Finally, if this variable is @code{more}, gnus won't cut
 off sparse leaf nodes that don't lead anywhere.  This variable is
 @code{nil} by default.
 
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+This is a rather obscure variable that few will find useful.  It's
+intended for those non-news newsgroups where the backend has to fetch
+quite a lot to present the summary buffer, and where it's impossible to
+go back to parents of articles.  This is mostly the case in the
+web-based groups, like the @code{nnultimate} groups.
+
+If you don't use those, then it's safe to leave this as the default
+@code{nil}.  If you want to use this variable, it should be a regexp
+that matches the group name, or @code{t} for all groups.
+
 @end table
 
 
@@ -8552,8 +8572,10 @@ process/prefix convention (@pxref{Process/Prefix}).
 @item B e
 @kindex B e (Summary)
 @findex gnus-summary-expire-articles
-Expire all expirable articles in the group
-(@code{gnus-summary-expire-articles}).
+Run all expirable articles in the current group through the expiry
+process (@code{gnus-summary-expire-articles}).  That is, delete all
+expirable articles in the group that have been around for a while.
+(@pxref{Expiring Mail}).
 
 @item B M-C-e
 @kindex B M-C-e (Summary)
@@ -9736,7 +9758,8 @@ you're in, you could say something like the following:
 (add-hook 'gnus-select-group-hook
           (lambda ()
             (cond
-             ((string-match "^de\\." gnus-newsgroup-name)
+             ((string-match
+               "^de\\." (gnus-group-real-name gnus-newsgroup-name))
               (ispell-change-dictionary "deutsch"))
              (t
               (ispell-change-dictionary "english")))))
@@ -10111,10 +10134,10 @@ to 700, for your own safety.
 If you want to benefit of PGP2.6 compatibility, you might create a script named
 @file{gpg-2comp} with these instructions:
 
-@code{
+@example
 #!/bin/sh
 exec gpg --rfc1991 "$@@"
-}
+@end example
 
 If you don't want to use such compatibility, you can add the following line to
 your @file{~/.emacs} or @file{~/.gnus}:
@@ -12216,7 +12239,7 @@ automatically, you can put something like the following in your
 Note that making a group auto-expirable doesn't mean that all read
 articles are expired---only the articles marked as expirable
 will be expired.  Also note that using the @kbd{d} command won't make
-groups expirable---only semi-automatic marking of articles as read will
+articles expirable---only semi-automatic marking of articles as read will
 mark the articles as expirable in auto-expirable groups.
 
 Let's say you subscribe to a couple of mailing lists, and you want the
@@ -12539,16 +12562,18 @@ Virtual server settings:
 @table @code
 @item nnmbox-mbox-file
 @vindex nnmbox-mbox-file
-The name of the mail box in the user's home directory.
+The name of the mail box in the user's home directory.  Default is
+@file{~/mbox}.
 
 @item nnmbox-active-file
 @vindex nnmbox-active-file
-The name of the active file for the mail box.
+The name of the active file for the mail box.  Default is
+@file{~/.mbox-active}. 
 
 @item nnmbox-get-new-mail
 @vindex nnmbox-get-new-mail
 If non-@code{nil}, @code{nnmbox} will read incoming mail and split it
-into groups.
+into groups.  Default is @code{t}.
 @end table
 
 
@@ -12568,15 +12593,17 @@ Virtual server settings:
 @table @code
 @item nnbabyl-mbox-file
 @vindex nnbabyl-mbox-file
-The name of the rmail mbox file.
+The name of the rmail mbox file.  The default is @file{~/RMAIL}
 
 @item nnbabyl-active-file
 @vindex nnbabyl-active-file
-The name of the active file for the rmail box.
+The name of the active file for the rmail box.  The default is
+@file{~/.rmail-active}
 
 @item nnbabyl-get-new-mail
 @vindex nnbabyl-get-new-mail
-If non-@code{nil}, @code{nnbabyl} will read incoming mail.
+If non-@code{nil}, @code{nnbabyl} will read incoming mail.  Default is
+@code{t}
 @end table
 
 
@@ -12617,23 +12644,28 @@ Virtual server settings:
 @item nnml-directory
 @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})
 
 @item nnml-active-file
 @vindex nnml-active-file
-The active file for the @code{nnml} server.
+The active file for the @code{nnml} server.  The default is
+@file{~/Mail/active"}.
 
 @item nnml-newsgroups-file
 @vindex nnml-newsgroups-file
 The @code{nnml} group descriptions file.  @xref{Newsgroups File
-Format}.
+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.
+If non-@code{nil}, @code{nnml} will read incoming mail.  The default is
+@code{t}
 
 @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 backend will ignore any @sc{nov} files.  The
+default is @code{nil}
 
 @item nnml-nov-file-name
 @vindex nnml-nov-file-name
@@ -12670,11 +12702,14 @@ Virtual server settings:
 @table @code
 @item nnmh-directory
 @vindex nnmh-directory
-All @code{nnmh} directories will be located under this directory.
+All @code{nnmh} directories will be located under this directory.  The
+default is the value of @code{message-directory} (whose default is
+@file{~/Mail})
 
 @item nnmh-get-new-mail
 @vindex nnmh-get-new-mail
-If non-@code{nil}, @code{nnmh} will read incoming mail.
+If non-@code{nil}, @code{nnmh} will read incoming mail.  The default is
+@code{t}.
 
 @item nnmh-be-safe
 @vindex nnmh-be-safe
@@ -12683,7 +12718,7 @@ sure that the articles in the folder are actually what Gnus thinks they
 are.  It will check date stamps and stat everything in sight, so
 setting this to @code{t} will mean a serious slow-down.  If you never
 use anything but Gnus to read the @code{nnmh} articles, you do not have
-to set this variable to @code{t}.
+to set this variable to @code{t}.  The default is @code{nil}.
 @end table
 
 
@@ -12704,18 +12739,22 @@ Virtual server settings:
 @item nnfolder-directory
 @vindex nnfolder-directory
 All the @code{nnfolder} mail boxes will be stored under this directory.
+The default is the value of @code{message-directory} (whose default is
+@file{~/Mail})
 
 @item nnfolder-active-file
 @vindex nnfolder-active-file
-The name of the active file.
+The name of the active file.  The default is @file{~/Mail/active}.
 
 @item nnfolder-newsgroups-file
 @vindex nnfolder-newsgroups-file
-The name of the group descriptions file.  @xref{Newsgroups File Format}.
+The name of the group descriptions file.  @xref{Newsgroups File
+Format}.  The default is @file{~/Mail/newsgroups"}
 
 @item nnfolder-get-new-mail
 @vindex nnfolder-get-new-mail
-If non-@code{nil}, @code{nnfolder} will read incoming mail.
+If non-@code{nil}, @code{nnfolder} will read incoming mail.  The default
+is @code{t}
 
 @item nnfolder-save-buffer-hook
 @vindex nnfolder-save-buffer-hook
@@ -12740,7 +12779,8 @@ extract some information from it before removing it.
 
 @item nnfolder-nov-is-evil
 @vindex nnfolder-nov-is-evil
-If non-@code{nil}, this backend will ignore any @sc{nov} files.
+If non-@code{nil}, this backend will ignore any @sc{nov} files.  The
+default is @code{nil}.
 
 @end table
 
@@ -12906,6 +12946,7 @@ interfaces to these sources.
 * Slashdot::              Reading the Slashdot comments.
 * Ultimate::              The Ultimate Bulletin Board systems.
 * Web Archive::           Reading mailing list archived on web.
+* RSS::                   Reading RDF site summary.
 * Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
 @end menu
 
@@ -13167,6 +13208,29 @@ The account name on the web server.
 The password for your account on the web server.
 @end table
 
+@node RSS
+@subsection RSS
+@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.
+
+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.
+
+The following @code{nnrss} variables can be altered:
+
+@table @code
+@item nnrss-directory
+@vindex nnrss-directory
+The directory where @code{nnrss} stores its files.  The default is
+@samp{~/News/rss/}.
+
+@end table
 
 @node Customizing w3
 @subsection Customizing w3
@@ -14106,14 +14170,10 @@ articles or not.
 @item nnimap-authinfo-file
 @vindex nnimap-authinfo-file
 
-A file containing credentials used to log in on servers.  The format
-is (almost) the same as the @code{ftp} @file{~/.netrc} file.  See
-`nntp-authinfo-file' for exact syntax.
-
 A file containing credentials used to log in on servers.  The format is
 (almost) the same as the @code{ftp} @file{~/.netrc} file.  See the
 variable @code{nntp-authinfo-file} for exact syntax; also see
-@xref{NNTP}.
+@ref{NNTP}.
 
 @end table
 
@@ -14319,7 +14379,7 @@ INBOX.mailbox).
 @kindex G x
 @findex gnus-group-nnimap-expunge
 
-If you're using the @code{never} setting of @code{nnimap-expunge-close},
+If you're using the @code{never} setting of @code{nnimap-expunge-on-close},
 you may want the option of expunging all deleted articles in a mailbox
 manually.  This is exactly what @kbd{G x} does.