+2004-12-06 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * GNUS-NEWS: Generated.
+
2004-11-14 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/encrypt.el: Bind password-cache-expiry when compiling.
** The nntp back end store article marks in `~/News/marks'.
The directory can be changed using the (customizable) variable
-`nntp-marks-directory', and marks can be disabled using the (backend)
-variable `nntp-marks-is-evil'. The advantage of this is that you can
-copy `~/News/marks' (using rsync, scp or whatever) to another Gnus
-installation, and it will realize what articles you have read and
-marked. The data in `~/News/marks' has priority over the same data
-in `~/.newsrc.eld'.
+`nntp-marks-directory', and marks can be disabled using the (back
+end) variable `nntp-marks-is-evil'. The advantage of this is that
+you can copy `~/News/marks' (using rsync, scp or whatever) to another
+Gnus installation, and it will realize what articles you have read
+and marked. The data in `~/News/marks' has priority over the same
+data in `~/.newsrc.eld'.
** Picons can be displayed right from the textual address, see
`gnus-picon-style'
It is enabled by default (see `password-cache'), with a short timeout
of 16 seconds (see `password-cache-expiry'). If PGG is used as the
-PGP backend, the PGP passphrase is managed by this mechanism.
+PGP back end, the PGP passphrase is managed by this mechanism.
Passwords for ManageSieve connections are managed by this mechanism,
after quering the user about whether to do so.
the Gnus manual, section Hashcash, for more information. Use (setq
message-generate-hashcash t) to enable.
+** Gnus supports new limiting commands in the Summary buffer: `/ r'
+(`gnus-summary-limit-to-replied') and `/ R'
+(`gnus-summary-limit-to-recipient').
+
+** Gnus supports a new sort command in the Summary buffer: `C-c C-s C-t'
+(`gnus-summary-sort-by-recipient').
+
\f
* For older news, see Gnus info node "New Features".
+2004-12-05 Nelson Ferreira <nelson.ferreira@ieee.org>
+
+ * spam-stat.el (spam-stat-save): Load the hashtable from disk only
+ if there is no hashtable in memory or file modification time is
+ newer than cached timestamp.
+
2004-12-03 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-sum.el (gnus-summary-limit-to-recipient): Implement
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)
(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'.
+2004-12-06 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-news.texi: Mention `gnus-summary-limit-to-recipient' and
+ `gnus-summary-sort-by-recipient'.
+
+ * gnus.texi (Filtering Spam Using The Spam ELisp Package): Index
+ `spam-initialize'.
+ (Limiting): Add `gnus-summary-limit-to-recipient'.
+ (Summary Sorting): Add `gnus-summary-sort-by-recipient'.
+
2004-11-30 Simon Josefsson <jas@extundo.com>
* gnus.texi (Misc Article): Add, suggested by Reiner Steib
\e$B$9\e(B (@code{gnus-summary-limit-to-author})\e$B!#$b$7@\F,<-$,M?$($i$l$l$P!"9gCW\e(B
\e$B$9$k5-;v$r=|30$7$^$9!#\e(B
+@item / R
+@kindex / R (\e$B35N,\e(B)
+@findex gnus-summary-limit-to-recipient
+\e$B35N,%P%C%U%!$r$$$/$D$+$N<u?.<T$K9gCW$9$k5-;v$@$1$K@)8B$7$^\e(B
+\e$B$9\e(B (@code{gnus-summary-limit-to-recipient})\e$B!#$b$7@\F,<-$,M?$($i$l$l$P!"\e(B
+\e$B9gCW$9$k5-;v$r=|30$7$^$9!#\e(B
+
@item / x
@kindex / x (\e$B35N,\e(B)
@findex gnus-summary-limit-to-extra
@findex gnus-thread-sort-by-score
@findex gnus-thread-sort-by-subject
@findex gnus-thread-sort-by-author
+@c @findex gnus-thread-sort-by-recipient
@findex gnus-thread-sort-by-number
@findex gnus-thread-sort-by-random
@vindex gnus-thread-sort-functions
@findex gnus-summary-sort-by-author
\e$BCx<T$K$h$C$FJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-author})\e$B!#\e(B
+@item C-c C-s C-t
+@kindex C-c C-s C-t (\e$B35N,\e(B)
+@findex gnus-summary-sort-by-recipient
+\e$B<u?.<T$K$h$C$FJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-recipient})\e$B!#\e(B
+
@item C-c C-s C-s
@kindex C-c C-s C-s (\e$B35N,\e(B)
@findex gnus-summary-sort-by-subject
@code{spam.el} \e$B%7!<%1%s%9$N%$%Y%s%H$N9`$r$A$c$s$HFI$_$^$7$g$&!#\e(B
@ref{Spam ELisp Package Sequence of Events} \e$B$r;2>H$7$F2<$5$$!#\e(B
+@cindex spam-initialize
@code{spam.el} \e$B$r;H$&$K$O!"\e(B@code{spam.el} \e$B$r<+F0FI$_9~$_\e(B (autoload) \e$B$7\e(B
\e$B$F\e(B @code{spam.el} \e$B$N3F%U%C%/$r%$%s%9%H!<%k$9$k$?$a$K!"4X\e(B
\e$B?t\e(B @code{spam-initialize} \e$B$r\e(B @strong{\e$B<B9T$7$J$1$l$P$J$j$^$;$s\e(B}\e$B!#0l$DNc30\e(B
See the Gnus manual, section Hashcash, for more information. Use
(setq message-generate-hashcash t) to enable.
+@item Gnus supports new limiting commands in the Summary buffer:
+@kbd{/ r} (@code{gnus-summary-limit-to-replied}) and @kbd{/ R}
+(@code{gnus-summary-limit-to-recipient}).
+
+@item Gnus supports a new sort command in the Summary buffer:
+@kbd{C-c C-s C-t} (@code{gnus-summary-sort-by-recipient}).
+
@end itemize
@c gnus-news.texi ends here.
(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
matching articles.
+@item / R
+@kindex / R (Summary)
+@findex gnus-summary-limit-to-recipient
+Limit the summary buffer to articles that match some recipient
+(@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
+matching articles.
+
@item / x
@kindex / x (Summary)
@findex gnus-summary-limit-to-extra
@findex gnus-thread-sort-by-score
@findex gnus-thread-sort-by-subject
@findex gnus-thread-sort-by-author
+@c @findex gnus-thread-sort-by-recipient
@findex gnus-thread-sort-by-number
@findex gnus-thread-sort-by-random
@vindex gnus-thread-sort-functions
@findex gnus-summary-sort-by-author
Sort by author (@code{gnus-summary-sort-by-author}).
+@item C-c C-s C-t
+@kindex C-c C-s C-t (Summary)
+@findex gnus-summary-sort-by-recipient
+Sort by recipient (@code{gnus-summary-sort-by-recipient}).
+
@item C-c C-s C-s
@kindex C-c C-s C-s (Summary)
@findex gnus-summary-sort-by-subject
Make sure you read the section on the @code{spam.el} sequence of
events. See @xref{Spam ELisp Package Sequence of Events}.
+@cindex spam-initialize
To use @code{spam.el}, you @strong{must} run the function
@code{spam-initialize} to autoload @code{spam.el} and to install the
@code{spam.el} hooks. There is one exception: if you use the