+2004-01-07 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus-sum.el (gnus-summary-limit-to-replied): New command.
+ (gnus-summary-limit-map): Add it.
+ (gnus-summary-make-menu-bar): do.
+
+2004-01-06 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * spam.el (spam-cache-lookups, spam-caches, spam-clear-cache):
+ first attempt at some caching support (done for BBDB only now)
+ (spam-find-spam): set spam-cache-lookups if there are more than 2
+ addresses to be checked
+ (spam-clear-cache-BBDB): new function, to be invoked by
+ bbdb-change-hook, and triggering spam-clear-cache of 'spam-use-BBDB
+ (spam-check-BBDB): check and use the caches, if
+ spam-cache-lookups is on
+ remove superfluous (provide)
+
+2004-01-06 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-art.el (gnus-treat-ansi-sequences): Changed default.
+
+2004-01-07 Steve Youngs <sryoungs@bigpond.net.au>
+
+ * run-at-time.el (run-at-time-saved): Move to after the definition
+ of `run-at-time'.
+
+ * dgnushack.el: Autoload `font-lock-fontify-buffer' in XEmacs.
+
2004-01-06 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-article-wash-html-with-w3m): Don't use
(autoload 'dolist "cl-macs" nil nil 'macro)
(autoload 'enriched-decode "enriched")
(autoload 'executable-find "executable")
+ (autoload 'font-lock-fontify-buffer "font-lock" nil t)
(autoload 'info "info" nil t)
(autoload 'make-annotation "annotations")
(autoload 'make-display-table "disp-table")
:type gnus-article-treat-custom)
(put 'gnus-treat-overstrike 'highlight t)
-(defcustom gnus-treat-ansi-sequences t
+(defcustom gnus-treat-ansi-sequences (if (locate-library "ansi-color") t)
"Treat ANSI SGR control sequences.
Valid values are nil, t, `head', `last', an integer or a predicate.
See Info node `(gnus)Customizing Articles' for details."
"c" gnus-summary-limit-exclude-childless-dormant
"C" gnus-summary-limit-mark-excluded-as-read
"o" gnus-summary-insert-old-articles
- "N" gnus-summary-insert-new-articles)
+ "N" gnus-summary-insert-new-articles
+ "r" gnus-summary-limit-to-replied)
(gnus-define-keys (gnus-summary-goto-map "G" gnus-summary-mode-map)
"n" gnus-summary-next-unread-article
["Display Predicate" gnus-summary-limit-to-display-predicate t]
["Unread" gnus-summary-limit-to-unread t]
["Unseen" gnus-summary-limit-to-unseen t]
+ ["Replied" gnus-summary-limit-to-replied t]
["Non-dormant" gnus-summary-limit-exclude-dormant t]
["Next articles" gnus-summary-limit-to-articles t]
["Pop limit" gnus-summary-pop-limit t]
gnus-duplicate-mark gnus-souped-mark)
'reverse)))
+(defun gnus-summary-limit-to-replied (&optional unreplied)
+ "Limit the summary buffer to replied articles.
+If UNREPLIED (the prefix), limit to unreplied articles."
+ (interactive "P")
+ (if unreplied
+ (gnus-summary-limit
+ (gnus-set-difference gnus-newsgroup-articles
+ gnus-newsgroup-replied))
+ (gnus-summary-limit gnus-newsgroup-replied))
+ (gnus-summary-position-point))
+
(defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks)
(make-obsolete 'gnus-summary-delete-marked-with
'gnus-summary-limit-exclude-marks)
;; XEmacs has a buggy version of run-at-time. This file defines a
;; non-buggy version of the same.
-(defvar run-at-time-saved (symbol-function 'run-at-time))
-
(require 'itimer)
(eval-and-compile
1e-9 (if time (max time 1e-9) 1e-9)
nil t itimers repeat function args))))))))
+(defvar run-at-time-saved (symbol-function 'run-at-time))
+
(provide 'run-at-time)
;;; run-at-time.el ends here
"Msx" gnus-summary-mark-as-spam
"\M-d" gnus-summary-mark-as-spam)
+(defvar spam-cache-lookups nil
+ "Whether spam.el will try to cache lookups using spam-caches.")
+
+(defvar spam-caches (make-hash-table
+ :size 10
+ :test 'equal)
+ "Cache of spam detection entries.")
+
(defvar spam-old-ham-articles nil
"List of old ham articles, generated when a group is entered.")
finds ham or spam.")
;; convenience functions
+(defun spam-clear-cache (symbol)
+ (remhash symbol spam-caches))
+
(defun spam-xor (a b)
"Logical exclusive `or'."
(and (or a b) (not (and a b))))
(let* ((group gnus-newsgroup-name)
(autodetect (gnus-parameter-spam-autodetect group))
(methods (gnus-parameter-spam-autodetect-methods group))
- (first-method (nth 0 methods)))
- (when (and autodetect
- (not (equal first-method 'none)))
+ (first-method (nth 0 methods))
+ (articles (if spam-autodetect-recheck-messages
+ gnus-newsgroup-articles
+ gnus-newsgroup-unseen))
+ (spam-cache-lookups (< 2 (length articles))))
+
+ (when (and autodetect
+ (not (equal first-method 'none)))
(mapcar
(lambda (article)
(let ((id (spam-fetch-field-message-id-fast article))
(when (zerop (gnus-registry-group-count id))
(gnus-registry-add-group
id group subject sender))
-
+
(spam-log-processing-to-registry
id
'incoming
split-return
spam-split-last-successful-check
group))))))
- (if spam-autodetect-recheck-messages
- gnus-newsgroup-articles
- gnus-newsgroup-unseen)))))
+ articles))))
(defvar spam-registration-functions
;; first the ham register, second the spam register function
(require 'bbdb)
(require 'bbdb-com)
+ ;; when the BBDB changes, we want to clear out our cache
+ (defun spam-clear-cache-BBDB (&rest immaterial)
+ (spam-clear-cache 'spam-use-BBDB))
+
+ (add-hook 'bbdb-change-hook 'spam-clear-cache-BBDB)
+
(defun spam-enter-ham-BBDB (addresses &optional remove)
"Enter an address into the BBDB; implies ham (non-spam) sender"
(dolist (from addresses)
(let ((who (nnmail-fetch-field "from"))
(spam-split-group (if spam-split-symbolic-return
'spam
- spam-split-group)))
+ spam-split-group))
+ bbdb-cache)
+
+ (when spam-cache-lookups
+ (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches))
+ (unless bbdb-cache
+ (setq bbdb-cache (bbdb-hashtable))
+ (puthash 'spam-use-BBDB bbdb-cache spam-caches)))
+
(when who
(setq who (nth 1 (gnus-extract-address-components who)))
- (if (bbdb-search-simple nil who)
+ (if
+ (if spam-cache-lookups
+ (bbdb-gethash who bbdb-cache)
+ (bbdb-search-simple nil who))
t
(if spam-use-BBDB-exclusive
spam-split-group
(file-error (progn
(defalias 'bbdb-search-simple 'ignore)
+ (defalias 'bbdb-hashtable 'ignore)
+ (defalias 'bbdb-gethash 'ignore)
(defalias 'spam-check-BBDB 'ignore)
(defalias 'spam-BBDB-register-routine 'ignore)
(defalias 'spam-enter-ham-BBDB 'ignore)
(provide 'spam)
;;; spam.el ends here.
-
-(provide 'spam)
-
-;;; spam.el ends here
+2004-01-07 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus.texi (Limiting): Add gnus-summary-limit-to-replied.
+
+ * gnusref.tex: do.
+
+2004-01-06 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (SpamOracle): Fixed typo.
+ (Article Washing): Add `gnus-article-treat-ansi-sequences'.
+
+ * gnus-news.texi, gnus-news.el: New files.
+
+ * Makefile.in: Use `gnus-news.*' to create GNUS-NEWS.
+
+ * gnus.texi (No Gnus): New node. Includes `gnus-news.texi'.
+
2004-01-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi: Fix the last commit.
$(MAKEINFO) -I $(srcdir) -o $* $<; \
fi
+# Files included in gnus.texi
+gnus.texi: gnus-faq.texi gnus-news.texi
+
+# FIXME: Target should be in parent directory. A cvs commit script could
+# automatically create it.
+GNUS-NEWS: gnus-news.texi
+ $(EMACSCOMP) -l $(srcdir)/gnus-news.el -f batch-gnus-news $< $@
+
dvi: gnus.dvi message.dvi refcard.dvi emacs-mime.dvi sieve.dvi
pdf: gnus.pdf message.pdf refcard.pdf emacs-mime.pdf sieve.pdf
\e$B$3$N%U%!%$%k$O\e(B GNU Emacs \e$B$N%K%e!<%9%j!<%@$G$"$k\e(B gnus \e$B$K4X$9$k@bL@=q$G$9!#\e(B
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@vskip 0pt plus 1filll
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003
+2002, 2003, 2004
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
* Oort Gnus:: \e$B5pBg$J!#1s$/MZ$+$J!#\e(BGnus 5.10\e$B!#\e(B
+* No Gnus:: Lars \e$B$5$s!"D>$7$F\e(B!
Customization
\e$B@)8B$7$^$9\e(B (@code{gnus-summary-limit-to-display-predicate})\e$B!#$3$N=R8l$K\e(B
\e$B4X$9$k>\:Y$O\e(B @ref{Group Parameters} \e$B$r;2>H$7$F2<$5$$!#\e(B
+@item / r
+@kindex / r (\e$B35N,\e(B)
+@findex gnus-summary-limit-to-replied
+\e$B35N,%P%C%U%!$rJV?.$7$?5-;v$@$1$K@)8B$7$^\e(B
+\e$B$9\e(B (@code{gnus-summary-limit-to-replied})\e$B!#@\F,<-$,M?$($i$l$?>l9g$O!"JV\e(B
+\e$B?.$7$?5-;v0J30$N5-;v$K@)8B$7$^$9!#\e(B
+
@item / E
@itemx M S
@kindex M S (\e$B35N,\e(B)
\e$B$K;H$o$l$k0lHLE*$JId9f$G$9!#$3$l$O\e(B @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}} \e$B$N\e(B
\e$B$h$&$JE57?E*$JJ8;zNs$r:n$j$^$9!#\e(B
+@item W A
+@kindex W A (\e$B35N,\e(B)
+@findex gnus-article-treat-ansi-sequences
+ANSI SGR \e$B%7!<%1%s%9$r\e(B overlay \e$B$^$?$O\e(B extent \e$B$KJQ49$7$^\e(B
+\e$B$9\e(B (@code{gnus-article-treat-ansi-sequences})\e$B!#\e(BANSI \e$B%7!<%1%s%9$OCf9q8l$N\e(B
+\e$B%K%e!<%9%0%k!<%W$G6/D4I=<($K;H$o$l$F$$$^$9!#\e(B
+
@item W u
@kindex W u (\e$B35N,\e(B)
@findex gnus-article-unsplit-urls
* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
* Oort Gnus:: \e$B5pBg$J!#1s$/MZ$+$J!#\e(BGnus 5.10\e$B!#\e(B
+* No Gnus:: Lars \e$B$5$s!"D>$7$F\e(B!
@end menu
\e$B$3$N%j%9%H$O!"$b$A$m$s!"\e(B@emph{\e$B$?$$$F$$$N\e(B} \e$B=EMW$J?7$7$$5!G=$K4X$9\e(B
\e$B$k$H$-$O\e(B @acronym{MML} \e$B$O;H$o$l$^$;$s!#\e(B
@end itemize
+@node No Gnus
+@subsubsection No Gnus
+@cindex No Gnus
+
+No Gnus \e$B$N?7$7$$5!G=\e(B:
+@c FIXME: Gnus 5.12?
+
+@include gnus-news.texi
+
@iftex
@page
--- /dev/null
+;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source
+;; Copyright (C) 2004 Free Software Foundation, Inc.
+
+;; Author: Reiner Steib <Reiner.Steib@gmx.de>
+;; Keywords: tools
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; 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.
+
+;;; Commentary:
+
+;;; Code:
+
+(defvar gnus-news-header-disclaimer
+"GNUS NEWS -- history of user-visible changes.
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+See the end for copying conditions.
+
+Please send Gnus bug reports to bugs\@gnus.org.
+
+\f
+* Changes in No Gnus
+
+")
+
+(defvar gnus-news-trailer
+"\f
+* For older news, see Gnus info node \"New Features\".
+
+----------------------------------------------------------------------
+Copyright information:
+
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ Permission is granted to anyone to make or distribute verbatim copies
+ of this document as received, in any medium, provided that the
+ copyright notice and this permission notice are preserved,
+ thus giving the recipient permission to redistribute in turn.
+
+ Permission is granted to distribute modified versions
+ of this document, or of portions of it,
+ under the above conditions, provided also that they
+ carry prominent notices stating who last changed them.
+\f\nLocal variables:\nmode: outline
+paragraph-separate: \"[ \f]*$\"\nend:\n")
+
+(defvar gnus-news-makeinfo-command "makeinfo")
+
+(defvar gnus-news-fill-column 72)
+
+(defvar gnus-news-makeinfo-switches
+ (concat " --no-headers --paragraph-indent=0"
+ " --fill-column=" (number-to-string
+ (+ 3 ;; will strip leading spaces later
+ (or gnus-news-fill-column 80)))))
+
+(defun batch-gnus-news ()
+ "Make GNUS-NEWS in batch mode."
+ (let (infile outfile)
+ (setq infile (car command-line-args-left)
+ command-line-args-left (cdr command-line-args-left)
+ outfile (car command-line-args-left)
+ command-line-args-left nil)
+ (if (and infile outfile)
+ (message "Creating `%s' from `%s'..." outfile infile)
+ (error "Not enough files given."))
+ (gnus-news-translate-file infile outfile)))
+
+(defun gnus-news-translate-file (infile outfile)
+ "Translate INFILE (texinfo) to OUTFILE (GNUS-NEWS)."
+ (let* ((dir (concat (or (getenv "srcdir") ".") "/"))
+ (infile (concat dir infile))
+ (buffer (find-file-noselect (concat dir outfile))))
+ (with-temp-buffer
+ ;; Could be done using `texinfmt' stuff as in `infohack.el'.
+ (insert
+ (shell-command-to-string
+ (concat gnus-news-makeinfo-command " "
+ gnus-news-makeinfo-switches " " infile)))
+ (goto-char (point-max))
+ (delete-char -1)
+ (goto-char (point-min))
+ (save-excursion
+ (while (re-search-forward "^ \\* " nil t)
+ (replace-match "** ")))
+ (save-excursion
+ (while (re-search-forward "^ " nil t)
+ (replace-match "")))
+ (goto-char (point-min))
+ (insert gnus-news-header-disclaimer)
+ (goto-char (point-max))
+ (insert gnus-news-trailer)
+ (write-region (point-min) (point-max) outfile))))
+
+;;; gnus-news.el ends here
--- /dev/null
+@c -*-texinfo-*-
+
+@c Copyright (C) 2004 Free Software Foundation, Inc.
+
+@c Permission is granted to anyone to make or distribute verbatim copies
+@c of this document as received, in any medium, provided that the
+@c copyright notice and this permission notice are preserved,
+@c thus giving the recipient permission to redistribute in turn.
+
+@c Permission is granted to distribute modified versions
+@c of this document, or of portions of it,
+@c under the above conditions, provided also that they
+@c carry prominent notices stating who last changed them.
+
+This file contains a list of news features Gnus. It is supposed to be
+included in `gnus.texi'. `GNUS-NEWS' is automatically generated from
+this file (see `gnus-news.el').
+
+@itemize @bullet
+
+@item @kbd{/ r} limits the summary buffer to replied articles.
+
+@item @acronym{ANSI} @acronym{SGR} control sequences can be transformed
+using @kbd{W A}.
+
+@acronym{ANSI} sequences are used in some Chinese hierarchies for
+highlighting articles (@code{gnus-article-treat-ansi-sequences}).
+
+@item Gnus includes an Emacs Lisp @acronym{SASL} library.
+
+This provide a clean @acronym{API} to @acronym{SASL} mechanisms from
+within Emacs. The user visible aspects of this, compared to the earlier
+situation, include support for @acronym{DIGEST}-@acronym{MD5} and
+@acronym{NTLM}.
+
+@item ManageSieve connections uses the @acronym{SASL} library by default.
+
+The primary change this brings is support for @acronym{DIGEST-MD5} and
+@acronym{NTLM}, when the server support it.
+
+@item Gnus include a password cache mechanism in password.el.
+
+It is enabled by default (see @code{password-cache}), with a short
+timeout of 16 seconds (see @code{password-cache-expiry}). If
+@acronym{PGG} is used as the @acronym{PGP} backend, the @acronym{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.
+
+@item @acronym{IMAP} identity (@acronym{RFC} 2971) is supported.
+
+By default, Gnus do not send any information about itself, but you can
+customize it using @code{nnimap-id}.
+
+@item The @file{all.SCORE} file can now be edited from the group buffer
+using @kbd{W e}.
+
+@end itemize
+
+@c gnus-news.texi ends here.
This file documents gnus, the GNU Emacs newsreader.
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@vskip 0pt plus 1filll
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003
+2002, 2003, 2004
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
* Oort Gnus:: It's big. It's far out. Gnus 5.10.
+* No Gnus:: Lars, FIXME!
Customization
(@code{gnus-summary-limit-to-display-predicate}). @xref{Group
Parameters}, for more on this predicate.
+@item / r
+@kindex / r (Summary)
+@findex gnus-summary-limit-to-replied
+Limit the summary buffer to replied articles
+(@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
+replied articles.
+
@item / E
@itemx M S
@kindex M S (Summary)
common encoding employed when sending Chinese articles. It typically
makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
+@item W A
+@kindex W A (Summary)
+@findex gnus-article-treat-ansi-sequences
+Translate ANSI SGR control sequences into overlays or extents
+(@code{gnus-article-treat-ansi-sequences}). ANSI sequences are used in
+some Chinese hierarchies for highlighting.
+
@item W u
@kindex W u (Summary)
@findex gnus-article-unsplit-urls
Add this symbol to a group's @code{spam-process} parameter by
customizing the group parameter or the
@code{gnus-spam-process-newsgroups} variable. When this symbol is added
-to a grup's @code{spam-process} parameter, the ham-marked articles in
+to a group's @code{spam-process} parameter, the ham-marked articles in
@emph{ham} groups will be sent to the SpamOracle as samples of ham
messages. Note that this ham processor has no effect in @emph{spam} or
@emph{unclassified} groups.
* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
* Oort Gnus:: It's big. It's far out. Gnus 5.10.
+* No Gnus:: Lars, FIXME!
@end menu
These lists are, of course, just @emph{short} overviews of the
invalidate the digital signature.
@end itemize
+@node No Gnus
+@subsubsection No Gnus
+@cindex No Gnus
+
+New features in No Gnus:
+@c FIXME: Gnus 5.12?
+
+@include gnus-news.texi
+
@iftex
@page
%% include file for the Gnus refcard and booklet
\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
-\def\date{Oct, 2003}
+\def\date{Jan, 2004}
\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
%%
Copyright \copyright\ 1995 Vladimir Alexiev
$<$vladimir@cs.ualberta.ca$>$.\\*
Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\*
- Copyright \copyright\ 2001, 2002, 2003 \author.\\*
+ Copyright \copyright\ 2001, 2002, 2003, 2004 \author.\\*
Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne
Ingebrigtsen.\\*
and the Emacs Help Bindings feature (C-h b).\\*
/o & Insert all {\bf old} articles. [Prefix: how many]\\
/N & Insert all {\bf new} articles.\\
/p & Limit to articles {\bf predicated} in the `display' group parameter.\\
+ /r & Limit to {\bf replied} articles. [Prefix: unreplied]\\
\end{keys}
}
}