From: Michael Sperber Date: Tue, 20 Oct 2015 06:10:37 +0000 (+0000) Subject: Unbreak `group' option for `mail-sources' X-Git-Tag: emacs-25.0.90~1084 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=10df0310cb8f43818eace6288cadaae62bd82eb6;p=emacs.git Unbreak `group' option for `mail-sources' * 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'. --- diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index 7efb1543815..f3ba169b58c 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -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 diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el index c825e097481..33eae1c166e 100644 --- a/lisp/gnus/nnml.el +++ b/lisp/gnus/nnml.el @@ -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)