Synch to No Gnus 200411040624.
[elisp/gnus.git-] / lisp / nnrss.el
index 0662862..348cb85 100644 (file)
@@ -170,7 +170,7 @@ ARTICLE is the article number of the current headline.")
              (when text
                (insert text)
                (goto-char point)
-               (while (re-search-forward "\n" nil t)
+               (while (search-forward "\n" nil t)
                  (replace-match " "))
                (goto-char (point-max))
                (insert "\n\n"))
@@ -181,7 +181,7 @@ ARTICLE is the article number of the current headline.")
              (when text
                (insert "<html><head></head><body>\n" text "\n</body></html>")
                (goto-char point)
-               (while (re-search-forward "\n" nil t)
+               (while (search-forward "\n" nil t)
                  (replace-match " "))
                (goto-char (point-max))
                (insert "\n\n"))
@@ -253,31 +253,31 @@ ARTICLE is the article number of the current headline.")
 (defun nnrss-fetch (url &optional local)
   "Fetch URL and put it in a the expected Lisp structure."
   (with-temp-buffer
-  ;some CVS versions of url.el need this to close the connection quickly
-    (let* (xmlform htmlform)
+    ;;some CVS versions of url.el need this to close the connection quickly
+    (let (xmlform htmlform)
       ;; bit o' work necessary for w3 pre-cvs and post-cvs
       (if local
          (let ((coding-system-for-read 'binary))
            (insert-file-contents url))
        (mm-url-insert url))
 
-;; Because xml-parse-region can't deal with anything that isn't
-;; xml and w3-parse-buffer can't deal with some xml, we have to
-;; parse with xml-parse-region first and, if that fails, parse
-;; with w3-parse-buffer.  Yuck.  Eventually, someone should find out
-;; why w3-parse-buffer fails to parse some well-formed xml and
-;; fix it.
-
-    (condition-case err
-       (setq xmlform (xml-parse-region (point-min) (point-max)))
-      (error (if (fboundp 'w3-parse-buffer)
-                (setq htmlform (caddar (w3-parse-buffer
-                                        (current-buffer))))
-              (message "nnrss: Not valid XML and w3 parse not available (%s)"
-                       url))))
-    (if htmlform
-       htmlform
-      xmlform))))
+      ;; Because xml-parse-region can't deal with anything that isn't
+      ;; xml and w3-parse-buffer can't deal with some xml, we have to
+      ;; parse with xml-parse-region first and, if that fails, parse
+      ;; with w3-parse-buffer.  Yuck.  Eventually, someone should find out
+      ;; why w3-parse-buffer fails to parse some well-formed xml and
+      ;; fix it.
+
+      (condition-case err
+         (setq xmlform (xml-parse-region (point-min) (point-max)))
+       (error (if (fboundp 'w3-parse-buffer)
+                  (setq htmlform (caddar (w3-parse-buffer
+                                          (current-buffer))))
+                (message "nnrss: Not valid XML and w3 parse not available (%s)"
+                         url))))
+      (if htmlform
+         htmlform
+       xmlform))))
 
 (defun nnrss-possibly-change-group (&optional group server)
   (when (and server
@@ -290,9 +290,8 @@ ARTICLE is the article number of the current headline.")
 (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)))
+  (when (y-or-n-p "Fetch extra categories? ")
+    (mapc 'funcall nnrss-extra-categories))
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
@@ -331,7 +330,7 @@ ARTICLE is the article number of the current headline.")
       (let ((coding-system-for-read 'binary))
        (load file nil t t))
       (dolist (e nnrss-group-data)
-       (puthash (or (nth 2 e) (nth 3 e)) t nnrss-group-hashtb)
+       (puthash (or (nth 2 e) (nth 6 e)) t nnrss-group-hashtb)
        (when (and (car e) (> nnrss-group-min (car e)))
          (setq nnrss-group-min (car e)))
        (when (and (car e) (< nnrss-group-max (car e)))
@@ -424,10 +423,12 @@ ARTICLE is the article number of the current headline.")
                 (if (setq url (nnrss-decode-entities-unibyte-string
                                (nnrss-node-text rss-ns 'link (cddr item))))
                     (not (gethash url nnrss-group-hashtb))
-                  (setq subject (nnrss-node-text rss-ns 'title item))
-                  (not (gethash subject nnrss-group-hashtb))))
-       (setq subject (or subject (nnrss-node-text rss-ns 'title item)))
-       (setq extra (or (nnrss-node-text content-ns 'encoded item)
+                  (setq extra (or (nnrss-node-text content-ns 'encoded item)
+                                  (nnrss-node-text rss-ns 'description item)))
+                  (not (gethash extra nnrss-group-hashtb))))
+       (setq subject (nnrss-node-text rss-ns 'title item))
+       (setq extra (or extra
+                       (nnrss-node-text content-ns 'encoded item)
                        (nnrss-node-text rss-ns 'description item)))
        (setq author (or (nnrss-node-text rss-ns 'author item)
                         (nnrss-node-text dc-ns 'creator item)
@@ -445,9 +446,9 @@ ARTICLE is the article number of the current headline.")
          date
          (and extra (nnrss-decode-entities-unibyte-string extra)))
         nnrss-group-data)
-       (puthash (or url subject) t nnrss-group-hashtb)
+       (puthash (or url extra) t nnrss-group-hashtb)
        (setq changed t))
-       (setq subject nil))
+       (setq extra nil))
     (when changed
       (nnrss-save-group-data group server)
       (let ((pair (assoc group nnrss-server-data)))