+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
(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)
;; 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))))))))
(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
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."