diff lisp/gnus/gnus-start.el @ 111441:b527d5f89f7f

gnus-group.el (gnus-group-read-ephemeral-group, gnus-group-make-group): Remove superfluous ": " from the prompt. gnus-start.el (gnus-get-unread-articles, gnus-read-active-file): Ignore totally non-existent methods.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Mon, 08 Nov 2010 01:38:47 +0000
parents 0c7c9736f766
children db63bc492d85
line wrap: on
line diff
--- a/lisp/gnus/gnus-start.el	Sun Nov 07 10:45:45 2010 -0500
+++ b/lisp/gnus/gnus-start.el	Mon Nov 08 01:38:47 2010 +0000
@@ -1702,16 +1702,20 @@
       (destructuring-bind (method method-type infos dummy) elem
 	(when (and method infos
 		   (not (gnus-method-denied-p method)))
-	  (unless (gnus-server-opened method)
-	    (gnus-open-server method))
-	  (when (and
-		 (gnus-server-opened method)
-		 (gnus-check-backend-function
-		  'retrieve-group-data-early (car method)))
-	    (when (gnus-check-backend-function 'request-scan (car method))
-	      (gnus-request-scan nil method))
-	    (setcar (nthcdr 3 elem)
-		    (gnus-retrieve-group-data-early method infos))))))
+	  ;; If the open-server method doesn't exist, then the method
+	  ;; itself doesn't exist, so we ignore it.
+	  (if (not (ignore-errors (gnus-get-function method 'open-server)))
+	      (setq type-cache (delq elem type-cache))
+	    (unless (gnus-server-opened method)
+	      (gnus-open-server method))
+	    (when (and
+		   (gnus-server-opened method)
+		   (gnus-check-backend-function
+		    'retrieve-group-data-early (car method)))
+	      (when (gnus-check-backend-function 'request-scan (car method))
+		(gnus-request-scan nil method))
+	      (setcar (nthcdr 3 elem)
+		      (gnus-retrieve-group-data-early method infos)))))))
 
     ;; Do the rest of the retrieval.
     (dolist (elem type-cache)
@@ -1982,7 +1986,9 @@
       (while (setq method (pop methods))
 	;; Only do each method once, in case the methods appear more
 	;; than once in this list.
-	(unless (member method methods)
+	(when (and (not (member method methods))
+		   ;; Check whether the backend exists.
+		   (ignore-errors (gnus-get-function method 'open-server)))
 	  (if (or debug-on-error debug-on-quit)
 	      (gnus-read-active-file-1 method force)
 	    (condition-case ()