Commit e7b07d2f authored by Ted Zlatanov's avatar Ted Zlatanov Committed by Katsumi Yamaoka
Browse files

spam.el: Reindent and fix long lines.

 (spam-copy-or-move-routine): Exclude invalid move destinations.
parent 8151d490
2010-12-14 Teodor Zlatanov <tzz@lifelogs.com>
* spam.el: Reindent and fix long lines.
(spam-copy-or-move-routine): Exclude invalid move destinations.
2010-12-14 Andrew Cohen <cohen@andy.bu.edu>
 
* nnir.el (nnir-mode): Don't install registry hooks if user hasn't
......
......@@ -45,9 +45,9 @@
(eval-when-compile (require 'cl))
(require 'message) ;for the message-fetch-field functions
(require 'message) ;for the message-fetch-field functions
(require 'gnus-sum)
(require 'gnus-uu) ; because of key prefix issues
(require 'gnus-uu) ; because of key prefix issues
;;; for the definitions of group content classification and spam processors
(require 'gnus)
......@@ -93,12 +93,16 @@ Populated by `spam-install-backend-super'.")
"Exit behavior at the time of summary exit.
Note that setting the `spam-use-move' or `spam-use-copy' backends on
a group through group/topic parameters overrides this mechanism."
:type '(choice (const 'default :tag
"Move spam out of all groups. Move ham out of spam groups.")
(const 'move-all :tag
"Move spam out of all groups. Move ham out of all groups.")
(const 'move-none :tag
"Never move spam or ham out of any groups."))
:type '(choice
(const
'default
:tag "Move spam out of all groups and ham out of spam groups.")
(const
'move-all
:tag "Move spam out of all groups and ham out of all groups.")
(const
'move-none
:tag "Never move spam or ham out of any groups."))
:group 'spam)
(defcustom spam-directory (nnheader-concat gnus-directory "spam/")
......@@ -296,27 +300,27 @@ them."
:group 'spam)
(defcustom spam-install-hooks (or
spam-use-dig
spam-use-gmane-xref
spam-use-blacklist
spam-use-whitelist
spam-use-whitelist-exclusive
spam-use-blackholes
spam-use-hashcash
spam-use-regex-headers
spam-use-regex-body
spam-use-bogofilter
spam-use-bogofilter-headers
spam-use-spamassassin
spam-use-spamassassin-headers
spam-use-bsfilter
spam-use-bsfilter-headers
spam-use-BBDB
spam-use-BBDB-exclusive
spam-use-ifile
spam-use-stat
spam-use-spamoracle
spam-use-crm114)
spam-use-dig
spam-use-gmane-xref
spam-use-blacklist
spam-use-whitelist
spam-use-whitelist-exclusive
spam-use-blackholes
spam-use-hashcash
spam-use-regex-headers
spam-use-regex-body
spam-use-bogofilter
spam-use-bogofilter-headers
spam-use-spamassassin
spam-use-spamassassin-headers
spam-use-bsfilter
spam-use-bsfilter-headers
spam-use-BBDB
spam-use-BBDB-exclusive
spam-use-ifile
spam-use-stat
spam-use-spamoracle
spam-use-crm114)
"Whether the spam hooks should be installed.
Default to t if one of the spam-use-* variables is set."
:group 'spam
......@@ -330,8 +334,8 @@ Default to t if one of the spam-use-* variables is set."
;;; TODO: deprecate this variable, it's confusing since it's a list of strings,
;;; not regular expressions
(defcustom spam-junk-mailgroups (cons
spam-split-group
'("mail.junk" "poste.pourriel"))
spam-split-group
'("mail.junk" "poste.pourriel"))
"Mailgroups with spam contents.
All unmarked article in such group receive the spam mark on group entry."
:type '(repeat (string :tag "Group"))
......@@ -345,7 +349,7 @@ Only meaningful if you enable `spam-use-gmane-xref'."
:group 'spam)
(defcustom spam-blackhole-servers '("bl.spamcop.net" "relays.ordb.org"
"dev.null.dk" "relays.visi.com")
"dev.null.dk" "relays.visi.com")
"List of blackhole servers.
Only meaningful if you enable `spam-use-blackholes'."
:type '(repeat (string :tag "Server"))
......@@ -405,9 +409,9 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-summary-score-preferred-header nil
"Preferred header to use for `spam-summary-score'."
:type '(choice :tag "Header name"
(symbol :tag "SpamAssassin etc" X-Spam-Status)
(symbol :tag "Bogofilter" X-Bogosity)
(const :tag "No preference, take best guess." nil))
(symbol :tag "SpamAssassin etc" X-Spam-Status)
(symbol :tag "Bogofilter" X-Bogosity)
(const :tag "No preference, take best guess." nil))
:group 'spam)
(defgroup spam-ifile nil
......@@ -419,7 +423,7 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-ifile-program (executable-find "ifile")
"Name of the ifile program."
:type '(choice (file :tag "Location of ifile")
(const :tag "ifile is not installed"))
(const :tag "ifile is not installed"))
:group 'spam-ifile)
(make-obsolete-variable 'spam-ifile-database-path 'spam-ifile-database
......@@ -427,7 +431,7 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-ifile-database nil
"File name of the ifile database."
:type '(choice (file :tag "Location of the ifile database")
(const :tag "Use the default"))
(const :tag "Use the default"))
:group 'spam-ifile)
(defcustom spam-ifile-spam-category "spam"
......@@ -439,7 +443,7 @@ Only meaningful if you enable `spam-use-regex-body'."
"Name of the ham ifile category.
If nil, the current group name will be used."
:type '(choice (string :tag "Use a fixed category")
(const :tag "Use the current group name"))
(const :tag "Use the current group name"))
:group 'spam-ifile)
(defcustom spam-ifile-all-categories nil
......@@ -458,7 +462,7 @@ your main source of newsgroup names."
(defcustom spam-bogofilter-program (executable-find "bogofilter")
"Name of the Bogofilter program."
:type '(choice (file :tag "Location of bogofilter")
(const :tag "Bogofilter is not installed"))
(const :tag "Bogofilter is not installed"))
:group 'spam-bogofilter)
(defvar spam-bogofilter-valid 'unknown "Is the bogofilter version valid?")
......@@ -497,8 +501,8 @@ your main source of newsgroup names."
"Location of the Bogofilter database.
When nil, use the default location."
:type '(choice (directory
:tag "Location of the Bogofilter database directory")
(const :tag "Use the default"))
:tag "Location of the Bogofilter database directory")
(const :tag "Use the default"))
:group 'spam-bogofilter)
(defgroup spam-bsfilter nil
......@@ -510,7 +514,7 @@ When nil, use the default location."
(defcustom spam-bsfilter-program (executable-find "bsfilter")
"Name of the Bsfilter program."
:type '(choice (file :tag "Location of bsfilter")
(const :tag "Bsfilter is not installed"))
(const :tag "Bsfilter is not installed"))
:group 'spam-bsfilter)
(defcustom spam-bsfilter-header "X-Spam-Flag"
......@@ -546,8 +550,8 @@ When nil, use the default location."
(defcustom spam-bsfilter-database-directory nil
"Directory path of the Bsfilter databases."
:type '(choice (directory
:tag "Location of the Bsfilter database directory")
(const :tag "Use the default"))
:tag "Location of the Bsfilter database directory")
(const :tag "Use the default"))
:group 'spam-bsfilter)
(defgroup spam-spamoracle nil
......@@ -558,13 +562,13 @@ When nil, use the default location."
"Location of spamoracle database file.
When nil, use the default spamoracle database."
:type '(choice (directory :tag "Location of spamoracle database file.")
(const :tag "Use the default"))
(const :tag "Use the default"))
:group 'spam-spamoracle)
(defcustom spam-spamoracle-binary (executable-find "spamoracle")
"Location of the spamoracle binary."
:type '(choice (directory :tag "Location of the spamoracle binary")
(const :tag "Use the default"))
(const :tag "Use the default"))
:group 'spam-spamoracle)
(defgroup spam-spamassassin nil
......@@ -578,7 +582,7 @@ When nil, use the default spamoracle database."
Hint: set this to \"spamc\" if you have spamd running. See the spamc and
spamd man pages for more information on these programs."
:type '(choice (file :tag "Location of spamc")
(const :tag "spamassassin is not installed"))
(const :tag "spamassassin is not installed"))
:group 'spam-spamassassin)
(defcustom spam-spamassassin-arguments ()
......@@ -608,7 +612,7 @@ identification"
(defcustom spam-sa-learn-program (executable-find "sa-learn")
"Name of the sa-learn program."
:type '(choice (file :tag "Location of spamassassin")
(const :tag "spamassassin is not installed"))
(const :tag "spamassassin is not installed"))
:group 'spam-spamassassin)
(defcustom spam-sa-learn-rebuild t
......@@ -642,7 +646,7 @@ order for SpamAssassin to recognize the new registered spam."
(defcustom spam-crm114-program (executable-find "mailfilter.crm")
"File path of the CRM114 Mailfilter executable program."
:type '(choice (file :tag "Location of CRM114 Mailfilter")
(const :tag "CRM114 Mailfilter is not installed"))
(const :tag "CRM114 Mailfilter is not installed"))
:group 'spam-crm114)
(defcustom spam-crm114-header "X-CRM114-Status"
......@@ -678,8 +682,8 @@ order for SpamAssassin to recognize the new registered spam."
(defcustom spam-crm114-database-directory nil
"Directory path of the CRM114 Mailfilter databases."
:type '(choice (directory
:tag "Location of the CRM114 Mailfilter database directory")
(const :tag "Use the default"))
:tag "Location of the CRM114 Mailfilter database directory")
(const :tag "Use the default"))
:group 'spam-crm114)
;;; Key bindings for spam control.
......@@ -696,8 +700,8 @@ order for SpamAssassin to recognize the new registered spam."
"Whether spam.el will try to cache lookups using `spam-caches'.")
(defvar spam-caches (make-hash-table
:size 10
:test 'equal)
:size 10
:test 'equal)
"Cache of spam detection entries.")
(defvar spam-old-articles nil
......@@ -736,11 +740,11 @@ When either list is nil, the other is returned."
(if (and list1 list2)
;; we have two non-nil lists
(progn
(dolist (item (append list1 list2))
(when (and (memq item list1) (memq item list2))
(setq list1 (delq item list1))
(setq list2 (delq item list2))))
(append list1 list2))
(dolist (item (append list1 list2))
(when (and (memq item list1) (memq item list2))
(setq list1 (delq item list1))
(setq list2 (delq item list2))))
(append list1 list2))
;; if either of the lists was nil, return the other one
(if list1 list1 list2)))
......@@ -748,9 +752,9 @@ When either list is nil, the other is returned."
"Checks if MARK is considered a ham mark in GROUP."
(when (stringp group)
(let* ((marks (spam-group-ham-marks group spam))
(marks (if (symbolp mark)
marks
(mapcar 'symbol-value marks))))
(marks (if (symbolp mark)
marks
(mapcar 'symbol-value marks))))
(memq mark marks))))
(defun spam-group-spam-mark-p (group mark)
......@@ -761,10 +765,10 @@ When either list is nil, the other is returned."
"In GROUP, get all the ham marks."
(when (stringp group)
(let* ((marks (if spam
(gnus-parameter-spam-marks group)
(gnus-parameter-ham-marks group)))
(marks (car marks))
(marks (if (listp (car marks)) (car marks) marks)))
(gnus-parameter-spam-marks group)
(gnus-parameter-ham-marks group)))
(marks (car marks))
(marks (if (listp (car marks)) (car marks) marks)))
marks)))
(defun spam-group-spam-marks (group)
......@@ -775,15 +779,15 @@ When either list is nil, the other is returned."
"Is GROUP a spam group?"
(if (and (stringp group) (< 0 (length group)))
(or (member group spam-junk-mailgroups)
(memq 'gnus-group-spam-classification-spam
(gnus-parameter-spam-contents group)))
(memq 'gnus-group-spam-classification-spam
(gnus-parameter-spam-contents group)))
nil))
(defun spam-group-ham-contents-p (group)
"Is GROUP a ham group?"
(if (stringp group)
(memq 'gnus-group-spam-classification-ham
(gnus-parameter-spam-contents group))
(gnus-parameter-spam-contents group))
nil))
(defun spam-classifications ()
......@@ -812,20 +816,20 @@ When either list is nil, the other is returned."
(defun spam-list-articles (articles classification)
(let ((mark-check (if (eq classification 'spam)
'spam-group-spam-mark-p
'spam-group-ham-mark-p))
alist mark-cache-yes mark-cache-no)
'spam-group-spam-mark-p
'spam-group-ham-mark-p))
alist mark-cache-yes mark-cache-no)
(dolist (article articles)
(let ((mark (gnus-summary-article-mark article)))
(unless (or (memq mark mark-cache-yes)
(memq mark mark-cache-no))
(if (funcall mark-check
gnus-newsgroup-name
mark)
(push mark mark-cache-yes)
(push mark mark-cache-no)))
(when (memq mark mark-cache-yes)
(push article alist))))
(unless (or (memq mark mark-cache-yes)
(memq mark mark-cache-no))
(if (funcall mark-check
gnus-newsgroup-name
mark)
(push mark mark-cache-yes)
(push mark mark-cache-no)))
(when (memq mark mark-cache-yes)
(push article alist))))
alist))
;;}}}
......@@ -841,13 +845,13 @@ backend is STATISTICAL."
(setq spam-backends (add-to-list 'spam-backends backend))
(while properties
(let ((property (pop properties))
(value (pop properties)))
(value (pop properties)))
(if (spam-backend-property-valid-p property)
(put backend property value)
(gnus-error
5
"spam-install-backend-super got an invalid property %s"
property)))))
(put backend property value)
(gnus-error
5
"spam-install-backend-super got an invalid property %s"
property)))))
(defun spam-backend-list (&optional type)
"Return a list of all the backend symbols, constrained by TYPE.
......@@ -856,16 +860,16 @@ When TYPE is 'mover, only mover backends are returned."
(let (list)
(dolist (backend spam-backends)
(when (or
(null type) ;either no type was requested
;; or the type is 'mover and the backend is a mover
(and
(eq type 'mover)
(spam-backend-mover-p backend))
;; or the type is 'non-mover and the backend is not a mover
(and
(eq type 'non-mover)
(not (spam-backend-mover-p backend))))
(push backend list)))
(null type) ;either no type was requested
;; or the type is 'mover and the backend is a mover
(and
(eq type 'mover)
(spam-backend-mover-p backend))
;; or the type is 'non-mover and the backend is not a mover
(and
(eq type 'non-mover)
(not (spam-backend-mover-p backend))))
(push backend list)))
list))
(defun spam-backend-check (backend)
......@@ -889,16 +893,16 @@ that the message is definitely a spam."
"Return information about BACKEND."
(if (spam-backend-valid-p backend)
(let (info)
(setq info (format "Backend %s has the following properties:\n"
backend))
(dolist (property (spam-backend-properties))
(setq info (format "%s%s=%s\n"
info
property
(get backend property))))
info)
(setq info (format "Backend %s has the following properties:\n"
backend))
(dolist (property (spam-backend-properties))
(setq info (format "%s%s=%s\n"
info
property
(get backend property))))
info)
(gnus-error 5 "spam-backend-info was asked about an invalid backend %s"
backend)))
backend)))
(defun spam-backend-function (backend classification type)
"Get the BACKEND function for CLASSIFICATION and TYPE.
......@@ -908,11 +912,11 @@ CLASSIFICATION is 'ham or 'spam."
(spam-classification-valid-p classification)
(spam-backend-function-type-valid-p type))
(let ((retrieval
(intern
(format "spam-backend-%s-%s-function"
classification
type))))
(funcall retrieval backend))
(intern
(format "spam-backend-%s-%s-function"
classification
type))))
(funcall retrieval backend))
(gnus-error
5
"%s was passed invalid backend %s, classification %s, or type %s"
......@@ -922,15 +926,15 @@ CLASSIFICATION is 'ham or 'spam."
type)))
(defun spam-backend-article-list-property (classification
&optional unregister)
&optional unregister)
"Property name of article list with CLASSIFICATION and UNREGISTER."
(let* ((r (if unregister "unregister" "register"))
(prop (format "%s-%s" classification r)))
(prop (format "%s-%s" classification r)))
prop))
(defun spam-backend-get-article-todo-list (backend
classification
&optional unregister)
classification
&optional unregister)
"Get the articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, get articles to be unregistered.
This is a temporary storage function - nothing here persists."
......@@ -938,7 +942,8 @@ This is a temporary storage function - nothing here persists."
backend
(intern (spam-backend-article-list-property classification unregister))))
(defun spam-backend-put-article-todo-list (backend classification list &optional unregister)
(defun spam-backend-put-article-todo-list (backend classification list
&optional unregister)
"Set the LIST of articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, set articles to be unregistered.
This is a temporary storage function - nothing here persists."
......@@ -1036,125 +1041,125 @@ backends)."
;;{{{ backend installations
(spam-install-checkonly-backend 'spam-use-blackholes
'spam-check-blackholes)
'spam-check-blackholes)
(spam-install-checkonly-backend 'spam-use-hashcash
'spam-check-hashcash)
'spam-check-hashcash)
(spam-install-checkonly-backend 'spam-use-spamassassin-headers
'spam-check-spamassassin-headers)
'spam-check-spamassassin-headers)
(spam-install-checkonly-backend 'spam-use-bogofilter-headers
'spam-check-bogofilter-headers)
'spam-check-bogofilter-headers)
(spam-install-checkonly-backend 'spam-use-bsfilter-headers
'spam-check-bsfilter-headers)
'spam-check-bsfilter-headers)
(spam-install-checkonly-backend 'spam-use-gmane-xref
'spam-check-gmane-xref)
'spam-check-gmane-xref)
(spam-install-checkonly-backend 'spam-use-regex-headers
'spam-check-regex-headers)
'spam-check-regex-headers)
(spam-install-statistical-checkonly-backend 'spam-use-regex-body
'spam-check-regex-body)
'spam-check-regex-body)
;; TODO: NOTE: spam-use-ham-copy is now obsolete, use (ham spam-use-copy) instead
;; TODO: NOTE: spam-use-ham-copy is now obsolete, use (ham spam-use-copy)
(spam-install-mover-backend 'spam-use-move
'spam-move-ham-routine
'spam-move-spam-routine
nil
nil)
'spam-move-ham-routine
'spam-move-spam-routine
nil
nil)
(spam-install-nocheck-backend 'spam-use-copy
'spam-copy-ham-routine
'spam-copy-spam-routine
nil
nil)
'spam-copy-ham-routine
'spam-copy-spam-routine
nil
nil)
(spam-install-nocheck-backend 'spam-use-gmane
'spam-report-gmane-unregister-routine
'spam-report-gmane-register-routine
'spam-report-gmane-register-routine
'spam-report-gmane-unregister-routine)
'spam-report-gmane-unregister-routine
'spam-report-gmane-register-routine
'spam-report-gmane-register-routine
'spam-report-gmane-unregister-routine)
(spam-install-nocheck-backend 'spam-use-resend
'spam-report-resend-register-ham-routine
'spam-report-resend-register-routine
nil
nil)
'spam-report-resend-register-ham-routine
'spam-report-resend-register-routine
nil
nil)
(spam-install-backend 'spam-use-BBDB
'spam-check-BBDB
'spam-BBDB-register-routine
nil
'spam-BBDB-unregister-routine
nil)
'spam-check-BBDB
'spam-BBDB-register-routine
nil
'spam-BBDB-unregister-routine
nil)
(spam-install-backend-alias 'spam-use-BBDB 'spam-use-BBDB-exclusive)
(spam-install-backend 'spam-use-blacklist
'spam-check-blacklist
nil
'spam-blacklist-register-routine
nil
'spam-blacklist-unregister-routine)
'spam-check-blacklist
nil
'spam-blacklist-register-routine
nil
'spam-blacklist-unregister-routine)
(spam-install-backend 'spam-use-whitelist
'spam-check-whitelist
'spam-whitelist-register-routine
nil
'spam-whitelist-unregister-routine
nil)
'spam-check-whitelist
'spam-whitelist-register-routine
nil
'spam-whitelist-unregister-routine
nil)
(spam-install-statistical-backend 'spam-use-ifile
'spam-check-ifile
'spam-ifile-register-ham-routine
'spam-ifile-register-spam-routine
'spam-ifile-unregister-ham-routine
'spam-ifile-unregister-spam-routine)
'spam-check-ifile
'spam-ifile-register-ham-routine
'spam-ifile-register-spam-routine
'spam-ifile-unregister-ham-routine
'spam-ifile-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-spamoracle
'spam-check-spamoracle
'spam-spamoracle-learn-ham
'spam-spamoracle-learn-spam
'spam-spamoracle-unlearn-ham
'spam-spamoracle-unlearn-spam)
'spam-check-spamoracle
'spam-spamoracle-learn-ham
'spam-spamoracle-learn-spam
'spam-spamoracle-unlearn-ham
'spam-spamoracle-unlearn-spam)
(spam-install-statistical-backend 'spam-use-stat
'spam-check-stat
'spam-stat-register-ham-routine
'spam-stat-register-spam-routine
'spam-stat-unregister-ham-routine
'spam-stat-unregister-spam-routine)
'spam-check-stat
'spam-stat-register-ham-routine
'spam-stat-register-spam-routine
'spam-stat-unregister-ham-routine
'spam-stat-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-spamassassin
'spam-check-spamassassin
'spam-spamassassin-register-ham-routine
'spam-spamassassin-register-spam-routine
'spam-spamassassin-unregister-ham-routine
'spam-spamassassin-unregister-spam-routine)
'spam-check-spamassassin
'spam-spamassassin-register-ham-routine
'spam-spamassassin-register-spam-routine
'spam-spamassassin-unregister-ham-routine
'spam-spamassassin-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-bogofilter
'spam-check-bogofilter
'spam-bogofilter-register-ham-routine
'spam-bogofilter-register-spam-routine
'spam-bogofilter-unregister-ham-routine
'spam-bogofilter-unregister-spam-routine)
'spam-check-bogofilter
'spam-bogofilter-register-ham-routine
'spam-bogofilter-register-spam-routine
'spam-bogofilter-unregister-ham-routine