X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fspam.el;h=5a47b7e1f0ac75174e37f6ce5cbf1d10653cae63;hb=4cacb5f23eb830e6950dba987063f413977708d7;hp=537bf55774e97d2730e86133b3f02c02958bf428;hpb=82acba9e2a085a5a8a4ef2bdf4c5a46949c80890;p=elisp%2Fgnus.git- diff --git a/lisp/spam.el b/lisp/spam.el index 537bf55..5a47b7e 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -1,8 +1,10 @@ ;;; spam.el --- Identifying spam -;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen -;; Keywords: network +;; Maintainer: Ted Zlatanov +;; Keywords: network, spam, mail, bogofilter, BBDB, dspam, dig, whitelist, blacklist, gmane, hashcash, spamassassin, bsfilter, ifile, stat, crm114, spamoracle ;; This file is part of GNU Emacs. @@ -18,8 +20,8 @@ ;; 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., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -40,6 +42,7 @@ (eval-when-compile (require 'cl)) (eval-when-compile (require 'spam-report)) +(eval-when-compile (require 'hashcash)) (require 'path-util) (require 'gnus-sum) @@ -58,6 +61,8 @@ ;; autoload spam-report (eval-and-compile (autoload 'spam-report-gmane "spam-report") + (autoload 'spam-report-gmane-spam "spam-report") + (autoload 'spam-report-gmane-ham "spam-report") (autoload 'spam-report-resend "spam-report")) ;; autoload gnus-registry @@ -80,7 +85,9 @@ Populated by spam-install-backend-super.") (defgroup spam nil "Spam configuration." - :version "21.4") + :version "22.1" + :group 'mail + :group 'news) (defcustom spam-summary-exit-behavior 'default "Exit behavior at the time of summary exit. @@ -350,7 +357,22 @@ Only meaningful if you enable `spam-use-blackholes'." :type '(radio (const nil) regexp) :group 'spam) -(defcustom spam-face 'gnus-splash-face +(defface spam + '((((class color) (type tty) (background dark)) + (:foreground "gray80" :background "gray50")) + (((class color) (type tty) (background light)) + (:foreground "gray50" :background "gray80")) + (((class color) (background dark)) + (:foreground "ivory2")) + (((class color) (background light)) + (:foreground "ivory4")) + (t :inverse-video t)) + "Face for spam-marked articles." + :group 'spam) +;; backward-compatibility alias +(put 'spam-face 'face-alias 'spam) + +(defcustom spam-face 'spam "Face for spam-marked articles." :type 'face :group 'spam) @@ -1037,11 +1059,10 @@ backends)." nil) (spam-install-nocheck-backend 'spam-use-gmane - nil + 'spam-report-gmane-unregister-routine 'spam-report-gmane-register-routine - ;; does Gmane support unregistration? - nil - nil) + 'spam-report-gmane-register-routine + 'spam-report-gmane-unregister-routine) (spam-install-nocheck-backend 'spam-use-resend 'spam-report-resend-register-ham-routine @@ -2003,18 +2024,10 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." ;;{{{ Hashcash. -(eval-when-compile - (autoload 'mail-check-payment "hashcash")) - -(condition-case nil - (progn - (require 'hashcash) - - (defun spam-check-hashcash () - "Check the headers for hashcash payments." - (mail-check-payment))) ;mail-check-payment returns a boolean +(defun spam-check-hashcash () + "Check the headers for hashcash payments." + (ignore-errors (mail-check-payment))) ;mail-check-payment returns a boolean - (file-error)) ;;}}} ;;{{{ BBDB @@ -2088,21 +2101,23 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (when spam-cache-lookups (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches)) (unless bbdb-cache - (setq bbdb-cache - ;; this is the expanded (bbdb-hashtable) macro - ;; without the debugging support - (with-current-buffer (bbdb-buffer) - (save-excursion - (save-window-excursion - (bbdb-records nil t) - bbdb-hashtable)))) + (setq bbdb-cache (make-vector 17 0)) ; a good starting hash value + ;; this is based on the expanded (bbdb-hashtable) macro + ;; without the debugging support + (with-current-buffer (bbdb-buffer) + (save-excursion + (save-window-excursion + (bbdb-records nil t) + (mapatoms + (lambda (symbol) + (intern (downcase (symbol-name symbol)) bbdb-cache)) + bbdb-hashtable)))) (puthash 'spam-use-BBDB bbdb-cache spam-caches))) (when who (setq who (nth 1 (gnus-extract-address-components who))) (if (if spam-cache-lookups - (symbol-value - (intern-soft who bbdb-cache)) + (intern-soft (downcase who) bbdb-cache) (bbdb-search-simple nil who)) t (if spam-use-BBDB-exclusive @@ -2415,7 +2430,11 @@ REMOVE not nil, remove the ADDRESSES." ;;{{{ Spam-report glue (gmane and resend reporting) (defun spam-report-gmane-register-routine (articles) (when articles - (apply 'spam-report-gmane articles))) + (apply 'spam-report-gmane-spam articles))) + +(defun spam-report-gmane-unregister-routine (articles) + (when articles + (apply 'spam-report-gmane-ham articles))) (defun spam-report-resend-register-ham-routine (articles) (spam-report-resend-register-routine articles t)) @@ -2864,8 +2883,8 @@ installed through spam-necessary-extra-headers." (add-to-list 'gnus-extra-headers header)) (setq spam-install-hooks t) - ;; TODO: How do we redo this every time spam-face is customized? - (push '((eq mark gnus-spam-mark) . spam-face) + ;; TODO: How do we redo this every time the `spam' face is customized? + (push '((eq mark gnus-spam-mark) . spam) gnus-summary-highlight) ;; Add hooks for loading and saving the spam stats (add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)