Synch to No Gnus 200406170516.
authoryamaoka <yamaoka>
Thu, 17 Jun 2004 05:17:08 +0000 (05:17 +0000)
committeryamaoka <yamaoka>
Thu, 17 Jun 2004 05:17:08 +0000 (05:17 +0000)
lisp/ChangeLog
lisp/gnus-group.el
lisp/gnus-srvr.el
lisp/gnus-start.el

index e44e8a9..32b9ca5 100644 (file)
@@ -1,3 +1,14 @@
+2004-06-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-group.el (gnus-group-get-new-news-this-group): Pass the
+       already-computed method to gnus-activate-group.
+
+       * gnus-start.el (gnus-make-hashtable-from-newsrc-alist): Make the
+       same select-methods identical Lisp objects.
+
+       * gnus-srvr.el (gnus-server-set-info): Don't make a new Lisp
+       object when modifying the info.
+
 2004-06-16  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus-srvr.el (gnus-server-set-info): Remove the server from
index 63ff24e..31a7f5f 100644 (file)
@@ -3685,7 +3685,7 @@ If DONT-SCAN is non-nil, scan non-activated groups as well."
       (gnus-group-remove-mark group)
       ;; Bypass any previous denials from the server.
       (gnus-remove-denial (setq method (gnus-find-method-for-group group)))
-      (if (gnus-activate-group group (if dont-scan nil 'scan))
+      (if (gnus-activate-group group (if dont-scan nil 'scan) nil method)
          (progn
            (gnus-get-unread-articles-in-group
             (gnus-get-info group) (gnus-active group) t)
index 856b514..84da431 100644 (file)
@@ -396,7 +396,9 @@ The following commands are available:
            ;; Remove the server from `gnus-opened-servers' since
            ;; it has never been opened with the new `info' yet.
            (gnus-opened-servers-remove (cdr entry))
-           (setcdr entry info))
+           ;; Don't make a new Lisp object.
+           (setcar (cdr entry) (car info))
+           (setcdr (cdr entry) (cdr info)))
        (setq gnus-server-alist
              (nconc gnus-server-alist (list (cons server info))))))))
 
index d2b716f..068074d 100644 (file)
@@ -1799,7 +1799,7 @@ If SCAN, request a scan of that group as well."
 (defun gnus-make-hashtable-from-newsrc-alist ()
   (let ((alist gnus-newsrc-alist)
        (ohashtb gnus-newsrc-hashtb)
-       prev)
+       prev info method rest methods)
     (setq gnus-newsrc-hashtb (gnus-make-hashtable (length alist)))
     (setq alist
          (setq prev (setq gnus-newsrc-alist
@@ -1808,14 +1808,26 @@ If SCAN, request a scan of that group as well."
                               gnus-newsrc-alist
                             (cons (list "dummy.group" 0 nil) alist)))))
     (while alist
+      (setq info (car alist))
+      ;; Make the same select-methods identical Lisp objects.
+      (when (setq method (gnus-info-method info))
+       (if (setq rest (member method methods))
+           (gnus-info-set-method info (car rest))
+         (push method methods)))
       (gnus-sethash
-       (caar alist)
+       (car info)
        ;; Preserve number of unread articles in groups.
-       (cons (and ohashtb (car (gnus-gethash (caar alist) ohashtb)))
+       (cons (and ohashtb (car (gnus-gethash (car info) ohashtb)))
             prev)
        gnus-newsrc-hashtb)
       (setq prev alist
-           alist (cdr alist)))))
+           alist (cdr alist)))
+    ;; Make the same select-methods in `gnus-server-alist' identical
+    ;; as well.
+    (while methods
+      (setq method (pop methods))
+      (when (setq rest (rassoc method gnus-server-alist))
+       (setcdr rest method)))))
 
 (defun gnus-make-hashtable-from-killed ()
   "Create a hash table from the killed and zombie lists."