X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fspam-stat.el;h=fcee567f9fd861bf4ffd30086dc5d53c001da601;hb=e405b22c6b46721607c5e6c712a4705c23dee751;hp=d84ac23ca08a576bd09c013dedca117b81ea49bb;hpb=96d4a7cc3dda58f46de9f03c18f91f8a59e4a8e5;p=gnus diff --git a/lisp/spam-stat.el b/lisp/spam-stat.el index d84ac23ca..fcee567f9 100644 --- a/lisp/spam-stat.el +++ b/lisp/spam-stat.el @@ -129,7 +129,7 @@ Use the functions to build a dictionary of words and their statistical distribution in spam and non-spam mails. Then use a function to determine whether a buffer contains spam or not." - :version "21.4" + :version "22.1" :group 'gnus) (defcustom spam-stat-file "~/.spam-stat.el" @@ -186,6 +186,9 @@ been touched in this many days will be considered. Without this filter, re-training spam-stat with several thousand messages will start to take a very long time.") +(defvar spam-stat-last-saved-at nil + "Time stamp of last change of spam-stat-file on this run") + (defvar spam-stat-syntax-table (let ((table (copy-syntax-table text-mode-syntax-table))) (modify-syntax-entry ?- "w" table) @@ -401,14 +404,25 @@ spam-stat (spam-stat-to-hash-table '(" spam-stat-ngood spam-stat-nbad)) (spam-stat-bad entry)))) spam-stat) (insert ")))")))) - (setq spam-stat-dirty nil))) + (message "Saved %s." spam-stat-file) + (setq spam-stat-dirty nil + spam-stat-last-saved-at (nth 5 (file-attributes spam-stat-file))))) (defun spam-stat-load () "Read the `spam-stat' hash table from disk." ;; TODO: maybe we should warn the user if spam-stat-dirty is t? (let ((coding-system-for-read spam-stat-coding-system)) - (load-file spam-stat-file)) - (setq spam-stat-dirty nil)) + (cond (spam-stat-dirty (message "Spam stat not loaded: spam-stat-dirty t")) + ((or (not (boundp 'spam-stat-last-saved-at)) + (null spam-stat-last-saved-at) + (not (equal spam-stat-last-saved-at + (nth 5 (file-attributes spam-stat-file))))) + (progn + (load-file spam-stat-file) + (setq spam-stat-dirty nil + spam-stat-last-saved-at + (nth 5 (file-attributes spam-stat-file))))) + (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'.