]> git.eshelyaron.com Git - emacs.git/commitdiff
Unbreak `group' option for `mail-sources'
authorMichael Sperber <mike@xemacs.org>
Tue, 20 Oct 2015 06:10:37 +0000 (06:10 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 20 Oct 2015 06:10:37 +0000 (06:10 +0000)
* nnml.el (nnml-retrieve-groups, nnml-request-scan):
* nnmail.el (nnmail-get-new-mail-per-group):
(nnmail-get-new-mail-1): Unbreak `group' option for `mail-sources'.

lisp/gnus/nnmail.el
lisp/gnus/nnml.el

index 7efb154381565e5afd130b55fdaa5e3a6c1570ac..f3ba169b58cc3081a88e7f4b10920d00ef92f614 100644 (file)
@@ -1792,6 +1792,12 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
   "Read new incoming mail."
   (nnmail-get-new-mail-1 method exit-func temp group nil spool-func))
 
+(defun nnmail-get-new-mail-per-group ()
+  "Tell us whether the mail-sources specify that `nnmail-get-new-mail' should
+be called once per group or once for all groups."
+  (or (assq 'group mail-sources)
+      (assq 'directory mail-sources)))
+
 (defun nnmail-get-new-mail-1 (method exit-func temp
                              group in-group spool-func)
   (let* ((sources mail-sources)
@@ -1804,7 +1810,8 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
               sources)
       (while (setq source (pop sources))
        ;; Use group's parameter
-       (when (eq (car source) 'group)
+       (when (and (eq (car source) 'group)
+                  group)
          (let ((mail-sources
                 (list
                  (gnus-group-find-parameter
index c825e0974814d668e0056bb0b109a993d72291b8..33eae1c166ec1836036bca3ccbe5e7a523356236 100644 (file)
@@ -268,10 +268,35 @@ non-nil.")
                           (max (1+ (- (cdr active) (car active))) 0)
                           (car active) (cdr active) group)))))))
 
+(deffoo nnml-retrieve-groups (groups &optional server)
+  (when nnml-get-new-mail
+    (if (nnmail-get-new-mail-per-group)
+       (dolist (group groups)
+         (nnml-request-scan group server))
+      (nnml-request-scan nil server)))
+  (with-current-buffer nntp-server-buffer
+    (erase-buffer)
+    (dolist (group groups)
+      (let* ((entry (assoc group nnml-group-alist))
+            (active (nth 1 entry)))
+       (if (consp active)
+           (insert (format "211 %d %d %d %s\n"
+                           (max (1+ (- (cdr active) (car active))) 0)
+                           (car active) (cdr active) group))))))
+  'group)
+
 (deffoo nnml-request-scan (&optional group server)
   (setq nnml-article-file-alist nil)
   (nnml-possibly-change-directory group server)
-  (nnmail-get-new-mail 'nnml 'nnml-save-incremental-nov nnml-directory group))
+  (cond
+   (group
+    (nnmail-get-new-mail 'nnml 'nnml-save-incremental-nov nnml-directory group))
+   ((nnmail-get-new-mail-per-group)
+    (nnml-request-list)
+    (dolist (entry nnml-group-alist)
+      (nnml-request-scan (car entry) server)))
+   (t
+    (nnmail-get-new-mail 'nnml 'nnml-save-incremental-nov nnml-directory nil))))
 
 (deffoo nnml-close-group (group &optional server)
   (setq nnml-article-file-alist nil)