(cond
;; Fuzzy matches. We save these for later.
((= dmt ?f)
- (push entries fuzzies))
+ (push (cons entries alist) fuzzies))
;; Word matches. Save these for even later.
((= dmt ?w)
- (push entries words))
+ (push (cons entries alist) words))
;; Exact matches.
((= dmt ?e)
;; Do exact matching.
(when fuzzies
;; Simplify the entire buffer for easy matching.
(gnus-simplify-buffer-fuzzy)
- (while (setq kill (cadar fuzzies))
+ (while (setq kill (cadaar fuzzies))
(let* ((match (nth 0 kill))
(type (nth 3 kill))
(score (or (nth 1 kill) gnus-score-interactive-default-score))
(while (setq art (pop arts))
(setcdr art (+ score (cdr art)))
(push (cons
- (car-safe (rassq alist gnus-score-cache)) kill)
+ (car-safe (rassq (cdar fuzzies) gnus-score-cache))
+ kill)
gnus-score-trace))
;; Found a match, update scores.
(while (setq art (pop arts))
)
;; Match, update date.
((and found gnus-update-score-entry-dates)
- (gnus-score-set 'touched '(t) alist)
+ (gnus-score-set 'touched '(t) (cdar fuzzies))
(setcar (nthcdr 2 kill) now))
;; Old entry, remove.
((and expire (< date expire))
- (gnus-score-set 'touched '(t) alist)
- (setcdr (car fuzzies) (cddar fuzzies))))
+ (gnus-score-set 'touched '(t) (cdar fuzzies))
+ (setcdr (caar fuzzies) (cddaar fuzzies))))
(setq fuzzies (cdr fuzzies)))))
(when words
(let ((hashtb (gnus-make-hashtable
(* 10 (count-lines (point-min) (point-max))))))
(gnus-enter-score-words-into-hashtb hashtb)
- (while (setq kill (cadar words))
+ (while (setq kill (cadaar words))
(let* ((score (or (nth 1 kill) gnus-score-interactive-default-score))
(date (nth 2 kill))
found)
(if trace
(while (setq art (pop arts))
(setcdr art (+ score (cdr art)))
- (push (cons (car-safe (rassq alist gnus-score-cache)) kill)
+ (push (cons
+ (car-safe (rassq (cdar words) gnus-score-cache))
+ kill)
gnus-score-trace))
;; Found a match, update scores.
(while (setq art (pop arts))
)
;; Match, update date.
((and found gnus-update-score-entry-dates)
- (gnus-score-set 'touched '(t) alist)
+ (gnus-score-set 'touched '(t) (cdar words))
(setcar (nthcdr 2 kill) now))
;; Old entry, remove.
((and expire (< date expire))
- (gnus-score-set 'touched '(t) alist)
- (setcdr (car words) (cddar words))))
+ (gnus-score-set 'touched '(t) (cdar words))
+ (setcdr (caar words) (cddaar words))))
(setq words (cdr words))))))
nil))
(setq funcs (list funcs)))
;; Get the initial score files for this group.
(when funcs
- (setq score-files (gnus-score-find-alist group)))
+ (setq score-files (nreverse (gnus-score-find-alist group))))
;; Add any home adapt files.
(let ((home (gnus-home-score-file group t)))
(when home
(while funcs
(when (gnus-functionp (car funcs))
(setq score-files
- (nconc score-files (funcall (car funcs) group))))
+ (nconc score-files (nreverse (funcall (car funcs) group)))))
(setq funcs (cdr funcs)))
;; Add any home score files.
(let ((home (gnus-home-score-file group)))
(let ((files score-files))
(while files
(when (stringp (car files))
- (setcar files (expand-file-name (car files))))
+ (setcar files (expand-file-name (car files)
+ gnus-kill-files-directory)))
(pop files)))
+ (setq score-files (nreverse score-files))
;; Remove any duplicate score files.
(while (and score-files
(member (car score-files) (cdr score-files)))