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
	 "\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)))