gnus-util.el (iswitchb-mode): Declare
[gnus] / lisp / gnus-sum.el
index c68d496..1d8ad8e 100644 (file)
@@ -9068,22 +9068,24 @@ non-numeric or nil fetch the number specified by the
                       (regexp-opt ',(append refs (list id subject)))))))
              (gnus-fetch-headers (list last) (if (numberp limit)
                                                  (* 2 limit) limit) t))))
-        article-ids)
+        article-ids new-unreads)
     (when (listp new-headers)
       (dolist (header new-headers)
-       (push (mail-header-number header) article-ids)
-       (when (member (mail-header-number header) gnus-newsgroup-unselected)
-          (push (mail-header-number header) gnus-newsgroup-unreads)
-          (setq gnus-newsgroup-unselected
-                (delete (mail-header-number header)
-                       gnus-newsgroup-unselected))))
+       (push (mail-header-number header) article-ids))
+      (setq article-ids (nreverse article-ids))
+      (setq new-unreads
+           (gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
+      (setq gnus-newsgroup-unselected
+           (gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
+      (setq gnus-newsgroup-unreads
+           (gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
       (setq gnus-newsgroup-headers
             (gnus-delete-duplicate-headers
              (gnus-merge
               'list gnus-newsgroup-headers new-headers
               'gnus-article-sort-by-number)))
       (setq gnus-newsgroup-articles
-           (gnus-sorted-nunion gnus-newsgroup-articles (nreverse article-ids)))
+           (gnus-sorted-nunion gnus-newsgroup-articles article-ids))
       (gnus-summary-limit-include-thread id)))
   (gnus-summary-show-thread))
 
@@ -9868,9 +9870,11 @@ invalid IDNA string (`xn--bar' is invalid).
 You must have GNU Libidn (URL `http://www.gnu.org/software/libidn/')
 installed for this command to work."
   (interactive "P")
-  (if (not (and (condition-case nil (require 'idna)
-                 (file-error))
-               (mm-coding-system-p 'utf-8)
+  (if (not (and (mm-coding-system-p 'utf-8)
+               (condition-case nil
+                   (require 'idna)
+                 (file-error)
+                 (invalid-operation))
                (symbol-value 'idna-program)
                (executable-find (symbol-value 'idna-program))))
       (gnus-message