;; -*- emacs-lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; $Id: gnus_score.el,v 1.6 2006-11-06 21:02:42 rscholz Exp $
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Einstellungen für das Scoring
;;
;; Die offizielle Quelle dieser Datei ist
;;   <http://www.zonix.de/projects/emacs/config>
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Adaptive Scoring            (Info-goto-node "(Gnus)Adaptive Scoring")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Adaptive Scoring nutzen
(setq gnus-use-adaptive-scoring t)

;; Scores altern lassen
(setq gnus-decay-scores t)

;; Fine-Tune, die Voreinstellung ist leider suboptimal
(setq gnus-default-adaptive-score-alist
  '((gnus-unread-mark)
    (gnus-ticked-mark)
    (gnus-dormant-mark (from 5) (subject 5))
    (gnus-del-mark (from -5) (subject -5))
    (gnus-read-mark (from 1) (subject 1))
    (gnus-killed-mark (from -1) (subject -10))
    (gnus-kill-file-mark (from -10))
    (gnus-ancient-mark (from -1))
    (gnus-low-score-mark (from -1))
    (gnus-catchup-mark (subject -1) (from -1))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Nützliche Funktionen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Spammer endgültig auslöschen (von Robin S. Socha)
;; Die Zeile (files "~/News/SPAMMERS") in all.SCORE ist erforderlich.
(require 'gnus-score)
(defun gnus-scum-expunge ()
  "Remove this spammer from existance as much as possible."
  (interactive)
  (let* ((hdr (gnus-summary-article-header))
         (subj (aref hdr 1))
         (auth (aref hdr 2))
         (artid (aref hdr 4))
         (atsign (string-match "@" artid))
         (host (substring artid (+ atsign 1) (- (length artid) 1)))
         (oldscfile gnus-current-score-file))
    (gnus-score-change-score-file "SPAMMERS")
    ;;(gnus-summary-score-entry "Subject" subj 'S' -1000 nil)
    (gnus-summary-score-entry "From" auth 'S' -9999 nil)
    (message (concat "Expunging " auth "..."))
    ;;(gnus-summary-score-entry "Message-ID" host 'S' -9999 nil)
    (gnus-score-change-score-file oldscfile)
    (gnus-score-save)))

;; Alarmknopf
(define-key gnus-summary-mode-map "\C-cx" 'gnus-scum-expunge)