Function: gnus-score-find-trace
gnus-score-find-trace is an autoloaded, interactive and byte-compiled
function defined in gnus-score.el.gz.
Signature
(gnus-score-find-trace)
Documentation
Find all score rules that applies to the current article.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-score.el.gz
(defun gnus-score-find-trace ()
"Find all score rules that applies to the current article."
(interactive nil gnus-article-mode gnus-summary-mode)
(let ((old-scored gnus-newsgroup-scored))
(let ((gnus-newsgroup-headers
(list (gnus-summary-article-header)))
(gnus-newsgroup-scored nil)
;; Must be synced with `gnus-score-edit-file-at-point':
(frmt "%S [%s] -> %s\n")
trace
file)
(save-excursion
(nnheader-set-temp-buffer "*Score Trace*"))
(setq gnus-score-trace nil)
(gnus-possibly-score-headers 'trace)
(if (not (setq trace gnus-score-trace))
(gnus-error
1 "No score rules apply to the current article (default score %d)."
gnus-summary-default-score)
(set-buffer "*Score Trace*")
;; Use a keymap instead?
(local-set-key "q"
(lambda ()
(interactive)
(bury-buffer nil)
(gnus-summary-expand-window)))
(local-set-key "k"
(lambda ()
(interactive)
(kill-buffer (current-buffer))
(gnus-summary-expand-window)))
(local-set-key "e" (lambda ()
"Run `gnus-score-edit-file-at-point'."
(interactive)
(gnus-score-edit-file-at-point)))
(local-set-key "f" (lambda ()
"Run `gnus-score-edit-file-at-point'."
(interactive)
(gnus-score-edit-file-at-point 'format)))
(local-set-key "t" 'toggle-truncate-lines)
(setq truncate-lines t)
(dolist (entry trace)
(setq file (or (car entry)
;; Must be synced with
;; `gnus-score-edit-file-at-point':
"(non-file rule)"))
(insert
(format frmt
(cdr entry)
;; Don't use `file-name-sans-extension' to see .SCORE and
;; .ADAPT directly:
(file-name-nondirectory file)
(abbreviate-file-name file))))
(insert
(format "\nTotal score: %d"
(apply #'+ (mapcar
(lambda (s)
(or (caddr s)
gnus-score-interactive-default-score))
trace))))
(insert
(substitute-command-keys
"\n\nQuick help:
Type \\`e' to edit score file corresponding to the score rule on current line,
\\`f' to format (pretty print) the score file and edit it,
\\`t' toggle to truncate long lines in this buffer,
\\`q' to quit, \\`k' to kill score trace buffer.
The first sexp on each line is the score rule, followed by the file name of
the score file and its full name, including the directory."))
(goto-char (point-min))
(gnus-configure-windows 'score-trace)))
(set-buffer gnus-summary-buffer)
(setq gnus-newsgroup-scored old-scored)))