Mercurial > emacs
diff lisp/gnus/gnus-sum.el @ 78598:2d4fbb82deec
Merge from gnus--rel--5.10
Patches applied:
* gnus--rel--5.10 (patch 245)
- Update from CVS
2007-08-17 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus/gnus-art.el (gnus-article-summary-command-nosave)
(gnus-article-read-summary-keys): Don't use 3rd arg of pop-to-buffer.
2007-08-14 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus/gnus.el (gnus-maximum-newsgroup): New variable.
* lisp/gnus/gnus-agent.el (gnus-agent-fetch-headers): Limit the range of articles
according to gnus-maximum-newsgroup.
* lisp/gnus/gnus-sum.el (gnus-articles-to-read, gnus-list-of-unread-articles)
(gnus-list-of-read-articles, gnus-sequence-of-unread-articles): Limit
the range of articles according to gnus-maximum-newsgroup.
2007-08-14 Katsumi Yamaoka <yamaoka@jpl.org>
* man/gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.
Revision: emacs@sv.gnu.org/emacs--rel--22--patch-96
author | Miles Bader <miles@gnu.org> |
---|---|
date | Tue, 21 Aug 2007 04:52:22 +0000 |
parents | 24202b793a08 |
children | 65ad63ddd4f6 aaccdab0ee26 |
line wrap: on
line diff
--- a/lisp/gnus/gnus-sum.el Mon Aug 20 15:52:47 2007 +0000 +++ b/lisp/gnus/gnus-sum.el Tue Aug 21 04:52:22 2007 +0000 @@ -5472,7 +5472,13 @@ ;; articles in the group, or (if that's nil), the ;; articles in the cache. (or - (gnus-uncompress-range (gnus-active group)) + (if gnus-maximum-newsgroup + (let ((active (gnus-active group))) + (gnus-uncompress-range + (cons (max (car active) + (- (cdr active) gnus-maximum-newsgroup -1)) + (cdr active)))) + (gnus-uncompress-range (gnus-active group))) (gnus-cache-articles-in-group group)) ;; Select only the "normal" subset of articles. (gnus-sorted-nunion @@ -6534,23 +6540,26 @@ (let* ((read (gnus-info-read (gnus-get-info group))) (active (or (gnus-active group) (gnus-activate-group group))) (last (cdr active)) + (bottom (if gnus-maximum-newsgroup + (max (car active) (- last gnus-maximum-newsgroup -1)) + (car active))) first nlast unread) ;; If none are read, then all are unread. (if (not read) - (setq first (car active)) + (setq first bottom) ;; If the range of read articles is a single range, then the ;; first unread article is the article after the last read ;; article. Sounds logical, doesn't it? (if (and (not (listp (cdr read))) - (or (< (car read) (car active)) + (or (< (car read) bottom) (progn (setq read (list read)) nil))) - (setq first (max (car active) (1+ (cdr read)))) + (setq first (max bottom (1+ (cdr read)))) ;; `read' is a list of ranges. (when (/= (setq nlast (or (and (numberp (car read)) (car read)) (caar read))) 1) - (setq first (car active))) + (setq first bottom)) (while read (when first (while (< first nlast) @@ -6575,7 +6584,12 @@ (gnus-list-range-difference (gnus-list-range-difference (gnus-sorted-complement - (gnus-uncompress-range active) + (gnus-uncompress-range + (if gnus-maximum-newsgroup + (cons (max (car active) + (- (cdr active) gnus-maximum-newsgroup -1)) + (cdr active)) + active)) (gnus-list-of-unread-articles group)) (cdr (assq 'dormant marked))) (cdr (assq 'tick marked)))))) @@ -6587,23 +6601,26 @@ (let* ((read (gnus-info-read (gnus-get-info group))) (active (or (gnus-active group) (gnus-activate-group group))) (last (cdr active)) + (bottom (if gnus-maximum-newsgroup + (max (car active) (- last gnus-maximum-newsgroup -1)) + (car active))) first nlast unread) ;; If none are read, then all are unread. (if (not read) - (setq first (car active)) + (setq first bottom) ;; If the range of read articles is a single range, then the ;; first unread article is the article after the last read ;; article. Sounds logical, doesn't it? (if (and (not (listp (cdr read))) - (or (< (car read) (car active)) + (or (< (car read) bottom) (progn (setq read (list read)) nil))) - (setq first (max (car active) (1+ (cdr read)))) + (setq first (max bottom (1+ (cdr read)))) ;; `read' is a list of ranges. (when (/= (setq nlast (or (and (numberp (car read)) (car read)) (caar read))) 1) - (setq first (car active))) + (setq first bottom)) (while read (when first (push (cons first nlast) unread))