Use all refer methods if cannot find the article.
authorShengHuo ZHU <zsh@cs.rochester.edu>
Tue, 14 Dec 1999 15:46:41 +0000 (15:46 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Tue, 14 Dec 1999 15:46:41 +0000 (15:46 +0000)
lisp/ChangeLog
lisp/gnus-art.el

index 1333f31..27dde9f 100644 (file)
@@ -1,3 +1,8 @@
+1999-12-14 10:40:33  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-art.el (gnus-request-article-this-buffer): Use all refer
+       method if cannot find the article.
+
 1999-12-14 01:13:50  Shenghuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus-art.el (gnus-request-article-this-buffer): Don't use refer
index 32031b9..2ea5188 100644 (file)
@@ -3731,22 +3731,35 @@ If given a prefix, show the hidden text instead."
            'article)
           ;; Get the article and put into the article buffer.
           ((or (stringp article) (numberp article))
-           (let ((gnus-override-method
-                  (or gnus-override-method
-                      (and (stringp article) 
-                           (car (gnus-refer-article-methods)))))
+           (let ((gnus-override-method gnus-override-method)
+                 (methods (and (stringp article) 
+                               gnus-refer-article-method))
+                 result
                  (buffer-read-only nil))
-             (erase-buffer)
-             (gnus-kill-all-overlays)
-             (let ((gnus-newsgroup-name group))
-               (gnus-check-group-server))
-             (when (gnus-request-article article group (current-buffer))
-               (when (numberp article)
-                 (gnus-async-prefetch-next group article gnus-summary-buffer)
-                 (when gnus-keep-backlog
-                   (gnus-backlog-enter-article
-                    group article (current-buffer))))
-               'article)))
+             (setq methods
+                   (if (listp methods)
+                       (delq 'current methods)
+                     (list methods)))
+             (if (and (null gnus-override-method) methods)
+                 (setq gnus-override-method (pop methods)))
+             (while (not result)
+               (erase-buffer)
+               (gnus-kill-all-overlays)
+               (let ((gnus-newsgroup-name group))
+                 (gnus-check-group-server))
+               (when (gnus-request-article article group (current-buffer))
+                 (when (numberp article)
+                   (gnus-async-prefetch-next group article 
+                                             gnus-summary-buffer)
+                   (when gnus-keep-backlog
+                     (gnus-backlog-enter-article
+                      group article (current-buffer))))
+                 (setq result 'article))
+               (if (not result)
+                   (if methods
+                       (setq gnus-override-method (pop methods))
+                     (setq result 'done))))
+             (and (eq result 'article) 'article)))
           ;; It was a pseudo.
           (t article)))