* gnus-registry.el (gnus-registry-unload-hook): uninstall all the
authorTeodor Zlatanov <tzz@lifelogs.com>
Fri, 30 May 2003 20:05:05 +0000 (20:05 +0000)
committerTeodor Zlatanov <tzz@lifelogs.com>
Fri, 30 May 2003 20:05:05 +0000 (20:05 +0000)
  hooks

* spam.el (spam-install-hooks-function, spam-unload-hook): new
functions so users that load spam.el for customization don't get
all the hooks installed
(spam-install-hooks): new variable, set to t by default if user
has one of the spam-use-* variables set

* spam-stat.el (spam-stat-install-hooks, spam-stat-unload-hook): new
functions so users that load spam-stat.el for customization don't get
all the hooks installed

lisp/ChangeLog
lisp/gnus-registry.el
lisp/spam-stat.el
lisp/spam.el

index 3788dd2..7ac7013 100644 (file)
@@ -4,6 +4,17 @@
        (gnus-registry-add-group): use it
        (gnus-registry-trim-articles-without-groups): new variable
        (gnus-registry-delete-group): use it
+       (gnus-registry-unload-hook): uninstall all the hooks
+
+       * spam.el (spam-install-hooks-function, spam-unload-hook): new
+       functions so users that load spam.el for customization don't get
+       all the hooks installed
+       (spam-install-hooks): new variable, set to t by default if user
+       has one of the spam-use-* variables set
+
+       * spam-stat.el (spam-stat-install-hooks, spam-stat-unload-hook): new
+       functions so users that load spam-stat.el for customization don't get
+       all the hooks installed
 
 2003-05-30  Dave Love  <fx@gnu.org>
 
index 7395281..4180aa1 100644 (file)
@@ -420,6 +420,19 @@ Returns the first place where the trail finds a group name."
 
   (add-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids))
 
+(defun gnus-registry-unload-hook ()
+  "Uninstall the registry hooks."
+  (interactive)
+  (remove-hook 'gnus-summary-article-move-hook 'gnus-register-action) 
+  (remove-hook 'gnus-summary-article-delete-hook 'gnus-register-action)
+  (remove-hook 'gnus-summary-article-expire-hook 'gnus-register-action)
+  (remove-hook 'nnmail-spool-hook 'gnus-register-spool-action)
+  
+  (remove-hook 'gnus-save-newsrc-hook 'gnus-registry-save)
+  (remove-hook 'gnus-read-newsrc-el-hook 'gnus-registry-read)
+
+  (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids))
+
 (when gnus-registry-install
   (gnus-registry-install-hooks))
 
index 96df016..dcebb70 100644 (file)
@@ -238,12 +238,6 @@ This uses `gnus-article-buffer'."
     (set-buffer gnus-original-article-buffer)
     (spam-stat-store-current-buffer)))
 
-(when spam-stat-install-hooks
-  (add-hook 'nnmail-prepare-incoming-message-hook
-           'spam-stat-store-current-buffer)
-  (add-hook 'gnus-select-article-hook
-           'spam-stat-store-gnus-article-buffer))
-
 ;; Data -- not using defstruct in order to save space and time
 
 (defvar spam-stat (make-hash-table :test 'equal)
@@ -567,6 +561,25 @@ COUNT defaults to 5"
               (remhash key spam-stat)))
           spam-stat))
 
+(defun spam-stat-install-hooks-function ()
+  "Install the spam-stat function hooks"
+  (interactive)
+  (add-hook 'nnmail-prepare-incoming-message-hook
+           'spam-stat-store-current-buffer)
+  (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)
+  (remove-hook 'nnmail-prepare-incoming-message-hook
+              'spam-stat-store-current-buffer)
+  (remove-hook 'gnus-select-article-hook
+              'spam-stat-store-gnus-article-buffer))
+
 (provide 'spam-stat)
 
 ;;; spam-stat.el ends here
index 5518eb1..c563413 100644 (file)
@@ -182,6 +182,25 @@ considered spam."
   :type 'boolean
   :group 'spam)
 
+(defcustom spam-install-hooks (or
+                              spam-use-dig
+                              spam-use-blacklist
+                              spam-use-whitelist 
+                              spam-use-whitelist-exclusive 
+                              spam-use-blackholes 
+                              spam-use-hashcash 
+                              spam-use-regex-headers 
+                              spam-use-bogofilter-headers 
+                              spam-use-bogofilter 
+                              spam-use-BBDB 
+                              spam-use-BBDB-exclusive 
+                              spam-use-ifile 
+                              spam-use-stat)
+  "Whether the spam hooks should be installed, default to t if one of
+the spam-use-* variables is set."
+  :group 'gnus-registry
+  :type 'boolean)
+
 (defcustom spam-split-group "spam"
   "Group name where incoming spam should be put by spam-split."
   :type 'string
@@ -387,8 +406,6 @@ your main source of newsgroup names."
 (defun spam-summary-prepare ()
   (spam-mark-junk-as-spam-routine))
 
-(add-hook 'gnus-summary-prepare-hook 'spam-summary-prepare)
-
 ;; The spam processors are invoked for any group, spam or ham or neither
 (defun spam-summary-prepare-exit ()
   (unless gnus-group-is-exiting-without-update-p
@@ -456,8 +473,6 @@ your main source of newsgroup names."
       (spam-ham-move-routine
        (gnus-parameter-ham-process-destination gnus-newsgroup-name)))))
 
-(add-hook 'gnus-summary-prepare-exit-hook 'spam-summary-prepare-exit)
-
 (defun spam-mark-junk-as-spam-routine ()
   ;; check the global list of group names spam-junk-mailgroups and the
   ;; group parameters
@@ -645,8 +660,6 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
     (when (symbol-value check)
       (setq nnimap-split-download-body-default t))))
 
-(add-hook 'gnus-get-new-news-hook 'spam-setup-widening)
-
 \f
 ;;;; Regex headers
 
@@ -875,14 +888,11 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
        (when spam-use-stat (spam-stat-load)))
       
       (defun spam-maybe-spam-stat-save ()
-       (when spam-use-stat (spam-stat-save)))
-
-      ;; Add hooks for loading and saving the spam stats
-      (add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)
-      (add-hook 'gnus-get-top-new-news-hook 'spam-maybe-spam-stat-load)
-      (add-hook 'gnus-startup-hook 'spam-maybe-spam-stat-load))
+       (when spam-use-stat (spam-stat-save))))
 
   (file-error (progn
+               (defalias 'spam-maybe-spam-stat-load 'ignore)
+               (defalias 'spam-maybe-spam-stat-save 'ignore)
                (defalias 'spam-stat-register-ham-routine 'ignore)
                (defalias 'spam-stat-register-spam-routine 'ignore)
                (defalias 'spam-stat-buffer-is-spam 'ignore)
@@ -1063,6 +1073,34 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
      (spam-bogofilter-register-with-bogofilter
       (spam-get-article-as-string article) nil))))
 
+\f
+;;;; Hooks
+
+(defun spam-install-hooks-function ()
+  "Install the spam.el hooks"
+  (interactive)
+  ;; Add hooks for loading and saving the spam stats
+  (when spam-use-stat
+    (add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)
+    (add-hook 'gnus-get-top-new-news-hook 'spam-maybe-spam-stat-load)
+    (add-hook 'gnus-startup-hook 'spam-maybe-spam-stat-load))
+  (add-hook 'gnus-summary-prepare-exit-hook 'spam-summary-prepare-exit)
+  (add-hook 'gnus-summary-prepare-hook 'spam-summary-prepare)
+  (add-hook 'gnus-get-new-news-hook 'spam-setup-widening))
+
+(defun spam-unload-hook ()
+  "Uninstall the spam.el hooks"
+  (interactive)
+  (remove-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)
+  (remove-hook 'gnus-get-top-new-news-hook 'spam-maybe-spam-stat-load)
+  (remove-hook 'gnus-startup-hook 'spam-maybe-spam-stat-load)
+  (remove-hook 'gnus-summary-prepare-exit-hook 'spam-summary-prepare-exit)
+  (remove-hook 'gnus-summary-prepare-hook 'spam-summary-prepare)
+  (remove-hook 'gnus-get-new-news-hook 'spam-setup-widening))
+
+(when spam-install-hooks
+  (spam-install-hooks-function))
+
 (provide 'spam)
 
 ;;; spam.el ends here.