(gnus-similar-server-opened): Refactor a bit and add comments.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sun, 19 Sep 2010 14:40:25 +0000 (16:40 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sun, 19 Sep 2010 14:40:25 +0000 (16:40 +0200)
lisp/ChangeLog
lisp/gnus.el

index 20bbe97..31e0338 100644 (file)
@@ -1,5 +1,8 @@
 2010-09-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus.el (gnus-similar-server-opened): Refactor a bit and add
+       comments.
+
        * gnus-start.el (gnus-get-unread-articles): Make sure that we call
        `gnus-open-server' on each method before trying to scan them etc.  This
        ensures that all the backend parameters are set correctly.
index 9d8efab..9b35dd4 100644 (file)
@@ -4141,13 +4141,19 @@ If NEWSGROUP is nil, return the global kill file name instead."
                      gnus-valid-select-methods)))
 
 (defun gnus-similar-server-opened (method)
-  (let ((opened gnus-opened-servers))
+  "Return non-nil if we have a similar server opened.
+This is defined as a server with the same name, but different
+parameters."
+  (let ((opened gnus-opened-servers)
+       open)
     (while (and method opened)
-      (when (and (equal (cadr method) (cadaar opened))
-                (equal (car method) (caaar opened))
-                (not (equal method (caar opened))))
-       (setq method nil))
-      (pop opened))
+      (setq open (car (pop opened)))
+      ;; Type and name are the same...
+      (when (and (equal (car method) (car open))
+                (equal (cadr method) (cadr open))
+                ;; ... but the rest of the parameters differ.
+                (not (equal method open)))
+       (setq method nil)))
     (not method)))
 
 (defun gnus-server-extend-method (group method)