From: Paul Jarc Date: Thu, 6 Dec 2007 05:50:22 +0000 (+0000) Subject: * nnmaildir.el (nnmaildir-request-update-info): Improved performance. X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=b4955af63556b03c5d7cdf72f4497f35e5e3f4f1 * nnmaildir.el (nnmaildir-request-update-info): Improved performance. Call gnus-add-to-range ranges only once with a prepared article-list. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ad197a9c5..b7c2bca32 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,4 +1,9 @@ -2004-12-17 Paul Jarc +2007-12-06 Christian Plate + + * nnmaildir.el (nnmaildir-request-update-info): Improved performance. + Call gnus-add-to-range ranges only once with a prepared article-list. + +2007-12-06 Paul Jarc * nnmaildir.el (nnmaildir-request-list, nnmaildir-retrieve-groups, nnmaildir-request-group, nnmaildir-retrieve-headers): Escape spaces in diff --git a/lisp/nnmaildir.el b/lisp/nnmaildir.el index 7a268f21d..601e282fc 100644 --- a/lisp/nnmaildir.el +++ b/lisp/nnmaildir.el @@ -921,7 +921,8 @@ by nnmaildir-request-article.") (let ((group (nnmaildir--prepare server gname)) pgname flist always-marks never-marks old-marks dotfile num dir markdirs marks mark ranges markdir article read end new-marks ls - old-mmth new-mmth mtime mark-sym existing missing deactivate-mark) + old-mmth new-mmth mtime mark-sym existing missing deactivate-mark + article-list) (catch 'return (unless group (setf (nnmaildir--srv-error nnmaildir--cur-server) @@ -969,12 +970,13 @@ by nnmaildir-request-article.") (setq ranges (assq mark-sym old-marks)) (if ranges (setq ranges (cdr ranges))) (throw 'got-ranges nil)) + (setq article-list nil) (dolist (prefix (funcall ls markdir nil "\\`[^.]" 'nosort)) (setq article (nnmaildir--flist-art flist prefix)) (if article - (setq ranges - (gnus-add-to-range ranges - `(,(nnmaildir--art-num article))))))) + (setq article-list + (cons (nnmaildir--art-num article) article-list)))) + (setq ranges (gnus-add-to-range ranges (sort article-list '<)))) (if (eq mark-sym 'read) (setq read ranges) (if ranges (setq marks (cons (cons mark-sym ranges) marks))))) (gnus-info-set-read info (gnus-range-add read missing))