- (let* ((list gnus-summary-highlight)
- (beg (gnus-point-at-bol))
- (article (gnus-summary-article-number))
- (score (or (cdr (assq (or article gnus-current-article)
- gnus-newsgroup-scored))
- gnus-summary-default-score 0))
- (mark (or (gnus-summary-article-mark) gnus-unread-mark))
- (inhibit-read-only t)
- (default gnus-summary-default-score)
- (default-high gnus-summary-default-high-score)
- (default-low gnus-summary-default-low-score))
- ;; Eval the cars of the lists until we find a match.
- (while (and list
- (not (eval (caar list))))
- (setq list (cdr list)))
- (let ((face (cdar list)))
+ (let*
+ ((list gnus-summary-highlight)
+ (beg (gnus-point-at-bol))
+ (article (gnus-summary-article-number))
+ (score (or (cdr (assq (or article gnus-current-article)
+ gnus-newsgroup-scored))
+ gnus-summary-default-score 0))
+ (mark (or (gnus-summary-article-mark) gnus-unread-mark))
+ (inhibit-read-only t)
+ (default gnus-summary-default-score)
+ (default-high gnus-summary-default-high-score)
+ (default-low gnus-summary-default-low-score)
+ (downloaded
+ (and
+ (boundp 'gnus-agent-article-alist)
+ gnus-agent-article-alist
+ (gnus-agent-group-covered-p gnus-newsgroup-name)
+ ;; Optimized for when gnus-summary-highlight-line is
+ ;; called multiple times for articles in ascending
+ ;; order (i.e. initial generation of summary buffer).
+ (progn
+ (unless (and
+ (eq gnus-summary-highlight-line-downloaded-alist
+ gnus-agent-article-alist)
+ (<= (caar gnus-summary-highlight-line-downloaded-cached)
+ article))
+ (setq gnus-summary-highlight-line-downloaded-alist
+ gnus-agent-article-alist)
+ (setq gnus-summary-highlight-line-downloaded-cached
+ gnus-agent-article-alist))
+ (let (n)
+ (while (and (< (caar gnus-summary-highlight-line-downloaded-cached)
+ article)
+ (setq n (cdr gnus-summary-highlight-line-downloaded-cached)))
+ (setq gnus-summary-highlight-line-downloaded-cached n)))
+ (and (eq (caar gnus-summary-highlight-line-downloaded-cached)
+ article)
+ (cdar gnus-summary-highlight-line-downloaded-cached))))))
+ (let ((face (funcall (gnus-summary-highlight-line-0))))