Add hooks for gcc handling
[gnus] / lisp / spam-stat.el
index 6d6f87c..04f90ee 100644 (file)
@@ -1,6 +1,6 @@
 ;;; spam-stat.el --- detecting spam based on statistics
 
-;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2012  Free Software Foundation, Inc.
 
 ;; Author: Alex Schroeder <alex@gnu.org>
 ;; 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 2, 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 <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 ;;; Code:
 (require 'mail-parse)
 
+(defvar gnus-original-article-buffer)
+
 (defgroup spam-stat nil
   "Statistical spam detection for Emacs.
 Use the functions to build a dictionary of words and their statistical
@@ -138,12 +138,6 @@ See `spam-stat-to-hash-table' for the format of the file."
   :type 'file
   :group 'spam-stat)
 
-(defcustom spam-stat-install-hooks t
-  "Whether spam-stat should install its hooks in Gnus.
-This is set to nil if you use spam-stat through spam.el."
-  :type 'boolean
-  :group 'spam-stat)
-
 (defcustom spam-stat-unknown-word-score 0.2
   "The score to use for unknown words.
 Also used for words that don't appear often enough."
@@ -180,7 +174,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
@@ -375,6 +369,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)
@@ -440,12 +436,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'.
@@ -501,11 +497,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
@@ -515,17 +511,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 ()
@@ -549,12 +545,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 "^[^.]"))
@@ -654,9 +652,6 @@ COUNT defaults to 5"
   (add-hook 'gnus-select-article-hook
            'spam-stat-store-gnus-article-buffer))
 
-(when spam-stat-install-hooks
-  (spam-stat-install-hooks-function))
-
 (defun spam-stat-unload-hook ()
   "Uninstall the spam-stat function hooks."
   (interactive)
@@ -669,5 +664,4 @@ COUNT defaults to 5"
 
 (provide 'spam-stat)
 
-;;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554
 ;;; spam-stat.el ends here