Function: gnus-all-score-files

gnus-all-score-files is a byte-compiled function defined in gnus-score.el.gz.

Signature

(gnus-all-score-files &optional GROUP)

Documentation

Return a list of all score files for the current group.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-score.el.gz
(defun gnus-all-score-files (&optional group)
  "Return a list of all score files for the current group."
  (let ((funcs gnus-score-find-score-files-function)
	(group (or group gnus-newsgroup-name))
	score-files)
    (when group
      (setq funcs (ensure-list funcs))
      (when gnus-score-use-all-scores
	;; Get the initial score files for this group.
	(when funcs
	  (setq score-files (copy-sequence (gnus-score-find-alist group))))
	;; Add any home adapt files.
	(let ((home (gnus-home-score-file group t)))
	  (when home
	    (push home score-files)
	    (setq gnus-newsgroup-adaptive-score-file home)))
	;; Check whether there is a `adapt-file' group parameter.
	(let ((param-file (gnus-group-find-parameter group 'adapt-file)))
	  (when param-file
	    (push param-file score-files)
	    (setq gnus-newsgroup-adaptive-score-file param-file))))
      ;; Go through all the functions for finding score files (or actual
      ;; scores) and add them to a list.
      (while funcs
	(when (functionp (car funcs))
	  (setq score-files
		(append score-files
			(nreverse (funcall (car funcs) group)))))
	(setq funcs (cdr funcs)))
      (when gnus-score-use-all-scores
	;; Add any home score files.
	(let ((home (gnus-home-score-file group)))
	  (when home
	    (push home score-files)))
	;; Check whether there is a `score-file' group parameter.
	(let ((param-file (gnus-group-find-parameter group 'score-file)))
	  (when param-file
	    (push param-file score-files))))
      ;; Expand all files names.
      (let ((files score-files))
	(while files
	  (when (stringp (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)))
	(pop score-files))
      (let ((files score-files))
	(while (cdr files)
	  (if (member (cadr files) (cddr files))
	      (setcdr files (cddr files))
	    (pop files))))
      ;; Do the scoring if there are any score files for this group.
      score-files)))