- (setq score-param
- (or (gnus-group-get-parameter group 'agent-score)
- (caddr category)))
- (when score-param
- (gnus-score-headers (list (list score-param))))
- (setq arts nil)
- (while (setq gnus-headers (pop gnus-newsgroup-headers))
- (setq gnus-score
- (or (cdr (assq (mail-header-number gnus-headers)
- gnus-newsgroup-scored))
- gnus-summary-default-score))
- (when (funcall predicate)
- (push (mail-header-number gnus-headers)
- arts)))
+ ;; Do we want to download everything, or nothing?
+ (if (or (eq (caaddr predicate) 'gnus-agent-true)
+ (eq (caaddr predicate) 'gnus-agent-false))
+ ;; Yes.
+ (setq arts (symbol-value
+ (cadr (assoc (caaddr predicate)
+ '((gnus-agent-true articles)
+ (gnus-agent-false nil))))))
+ ;; No, we need to decide what we want.
+ (setq score-param
+ (let ((score-method
+ (or
+ (gnus-group-get-parameter group 'agent-score t)
+ (caddr category))))
+ (when score-method
+ (require 'gnus-score)
+ (if (eq score-method 'file)
+ (let ((entries
+ (gnus-score-load-files
+ (gnus-all-score-files group)))
+ list score-file)
+ (while (setq list (car entries))
+ (push (car list) score-file)
+ (setq list (cdr list))
+ (while list
+ (when (member (caar list)
+ gnus-agent-scoreable-headers)
+ (push (car list) score-file))
+ (setq list (cdr list)))
+ (setq score-param
+ (append score-param (list (nreverse score-file)))
+ score-file nil entries (cdr entries)))
+ (list score-param))
+ (if (stringp (car score-method))
+ score-method
+ (list (list score-method)))))))
+ (when score-param
+ (gnus-score-headers score-param))
+ (setq arts nil)
+ (while (setq gnus-headers (pop gnus-newsgroup-headers))
+ (setq gnus-score
+ (or (cdr (assq (mail-header-number gnus-headers)
+ gnus-newsgroup-scored))
+ gnus-summary-default-score))
+ (when (funcall predicate)
+ (push (mail-header-number gnus-headers)
+ arts))))