-2004-12-17 Paul Jarc <prj@po.cwru.edu>
+2007-12-06 Christian Plate <cplate@web.de>
+
+ * 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 <prj@po.cwru.edu>
* nnmaildir.el (nnmaildir-request-list, nnmaildir-retrieve-groups,
nnmaildir-request-group, nnmaildir-retrieve-headers): Escape spaces in
(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)
(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))