X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fspam-stat.el;h=b56d0c416efa456000666cae50ac02731f589473;hp=5b57f376cf897482c43f3d3e7f423c5a097834a8;hb=2a000c5fd3c6662f4f1487cac7a965c84502783c;hpb=9b139a13c0650a18872ebd64849560a97554afa8 diff --git a/lisp/spam-stat.el b/lisp/spam-stat.el index 5b57f376c..b56d0c416 100644 --- a/lisp/spam-stat.el +++ b/lisp/spam-stat.el @@ -1,6 +1,6 @@ ;;; spam-stat.el --- detecting spam based on statistics -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +;; Copyright (C) 2002-2011 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Keywords: network @@ -8,20 +8,18 @@ ;; This file is part of GNU Emacs. -;; This is free software; you can redistribute it and/or modify it -;; under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. -;; This is distributed in the hope that it will be useful, but WITHOUT -;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -;; License for more details. +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -182,7 +180,7 @@ no effect when spam-stat is invoked through spam.el." (defcustom spam-stat-score-buffer-user-functions nil "List of additional scoring functions. -Called one by one on the buffer. +Called one by one on the buffer. If all of these functions return non-nil answers, these numerical answers are added to the computed spam stat score on the buffer. If @@ -377,6 +375,8 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', (spam-stat-buffer-words)) (setq spam-stat-dirty t)) +(autoload 'gnus-message "gnus-util") + (defun spam-stat-buffer-change-to-spam () "Consider current buffer no longer normal mail but spam." (setq spam-stat-nbad (1+ spam-stat-nbad) @@ -442,12 +442,12 @@ spam-stat (spam-stat-to-hash-table '(" spam-stat-ngood spam-stat-nbad)) (null spam-stat-last-saved-at) (not (equal spam-stat-last-saved-at (nth 5 (file-attributes spam-stat-file))))) - (progn + (progn (load-file spam-stat-file) (setq spam-stat-dirty nil - spam-stat-last-saved-at + spam-stat-last-saved-at (nth 5 (file-attributes spam-stat-file))))) - (t (message "Spam stat file not loaded: no change in disk.."))))) + (t (message "Spam stat file not loaded: no change in disk."))))) (defun spam-stat-to-hash-table (entries) "Turn list ENTRIES into a hash table and store as `spam-stat'. @@ -503,11 +503,11 @@ where DIFF is the difference between SCORE and 0.5." (defun spam-stat-score-buffer () "Return a score describing the spam-probability for this buffer. Add user supplied modifications if supplied." - (interactive) ; helps in debugging. + (interactive) ; helps in debugging. (setq spam-stat-score-data (spam-stat-buffer-words-with-scores)) (let* ((probs (mapcar 'cadr spam-stat-score-data)) (prod (apply #'* probs)) - (score0 + (score0 (/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x)) probs))))) (score1s @@ -517,17 +517,17 @@ Add user supplied modifications if supplied." (error nil))) (ans (if score1s (+ score0 score1s) score0))) - (when (interactive-p) + (when (interactive-p) (message "%S" ans)) ans)) (defun spam-stat-score-buffer-user (&rest args) (let* ((scores - (mapcar - (lambda (fn) + (mapcar + (lambda (fn) (apply fn args)) spam-stat-score-buffer-user-functions))) - (if (memq nil scores) nil + (if (memq nil scores) nil (apply #'+ scores)))) (defun spam-stat-split-fancy () @@ -551,12 +551,14 @@ check the variable `spam-stat-score-data'." ;; Testing (defun spam-stat-strip-xref () - "Strip the the Xref header." + "Strip the Xref header." (save-restriction (mail-narrow-to-head) (when (re-search-forward "^Xref:.*\n" nil t) (delete-region (match-beginning 0) (match-end 0))))) +(autoload 'time-to-number-of-days "time-date") + (defun spam-stat-process-directory (dir func) "Process all the regular files in directory DIR using function FUNC." (let* ((files (directory-files dir t "^[^.]")) @@ -671,5 +673,4 @@ COUNT defaults to 5" (provide 'spam-stat) -;;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554 ;;; spam-stat.el ends here