been synch'ed yet).
+2001-10-22 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/message.el (rfc822-goto-eoh): Remove.
+
+2001-10-19 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+ From Frank Schmitt <ich@Frank-Schmitt.net>.
+
+ * make-x.bat: Use correct directory structure for XEmacs on Windows.
+
2001-10-19 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/message.el (rfc822-goto-eoh): Define it when void.
+2001-10-21 Simon Josefsson <jas@extundo.com>
+
+ * nnimap.el (nnimap): Defgroup
+ (nnimap-strict-function, nnimap-strict-function-match): New
+ widget, from Per Abrahamsen <abraham@dina.kvl.dk>.
+ (nnimap-split-crosspost, nnimap-split-inbox)
+ (nnimap-split-rule, nnimap-split-predicate)
+ (nnimap-split-predicate): Defcustom.
+ (nnimap-split-inbox, nnimap-expunge-search-string)
+ (nnimap-importantize-dormant): Remove "*" from doc.
+
+2001-10-20 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus-sum.el (gnus-summary-limit-to-score): Prompt for score if
+ not supplied via prefix arg. From Lisp, make arg mandatory.
+ Suggested by Frank Schmitt.
+
+2001-10-20 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * message.el (message-do-auto-fill): Avoid calling
+ 'rfc822-goto-eoh'.
+
+2001-10-20 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+ From Paul Jarc <prj@po.cwru.edu>.
+
+ * message.el (message-get-reply-headers): Restructure the logic
+ and add comments. From Paul Jarc <prj@po.cwru.edu>.
+
+2001-10-20 Simon Josefsson <jas@extundo.com>
+
+ * message.el (message-cancel-news): Support cancel-locks.
+ Suggested by Per Abrahamsson.
+
+ * nnml.el (nnml-marks-changed-p): Use `equal' when comparing
+ conses. From David Z Maze <dmaze@MIT.EDU>.
+
+ * nnfolder.el (nnfolder-marks-changed-p): Ditto.
+
+2001-10-19 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * mm-decode.el (mm-default-directory): Fix customize type.
+
+ * message.el (message-setup-fill-variables): Kludge to use
+ normal-auto-fill-function even if auto fill is already activated.
+
2001-10-19 Per Abrahamsen <abraham@dina.kvl.dk>
* message.el (message-do-auto-fill): New version that does not
(gnus-summary-limit articles))
(gnus-summary-position-point)))
-(defun gnus-summary-limit-to-score (&optional score)
+(defun gnus-summary-limit-to-score (score)
"Limit to articles with score at or above SCORE."
- (interactive "P")
- (setq score (if score
- (prefix-numeric-value score)
- (or gnus-summary-default-score 0)))
+ (interactive "NLimit to articles with score of at least: ")
(let ((data gnus-newsgroup-data)
articles)
(while data
mail-aliases-setup mm-copy-tree
mule-write-region-no-coding-system put-image
ring-elements
+ canlock-verify
charsetp
coding-system-p
propertize make-mode-line-mouse2-map
(defcustom message-cite-prefix-regexp
(if (string-match "[[:digit:]]" "1") ;; support POSIX?
- "\\([ \t]*[-_.[:word:]]+>+\\|[ \t]*[]>»|:}+]\\)+"
+ "\\([ \t]*[-_.[:word:]]+>+\\|[ \t]*[]>~|:}+]\\)+"
;; ?-, ?_ or ?. MUST NOT be in syntax entry w.
- "\\([ \t]*\\(\\w\\|[-_.]\\)+>+\\|[ \t]*[]>»|:}+]\\)+")
+ "\\([ \t]*\\(\\w\\|[-_.]\\)+>+\\|[ \t]*[]>~|:}+]\\)+")
"*Regexp matching the longest possible citation prefix on a line."
:group 'message-insertion
:type 'regexp)
(unless (boundp 'adaptive-fill-first-line-regexp)
(setq adaptive-fill-first-line-regexp nil))
(make-local-variable 'adaptive-fill-first-line-regexp)
- (make-local-variable 'auto-fill-inhibit-regexp)
- (make-local-variable 'normal-auto-fill-function)
(let ((quote-prefix-regexp
;; User should change message-cite-prefix-regexp if
;; message-yank-prefix is set to an abnormal value.
(concat quote-prefix-regexp "\\|" adaptive-fill-regexp))
(setq adaptive-fill-first-line-regexp
(concat quote-prefix-regexp "\\|"
- adaptive-fill-first-line-regexp))
- ;;(setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:")
- (setq auto-fill-inhibit-regexp nil)
- (setq normal-auto-fill-function 'message-do-auto-fill)))
+ adaptive-fill-first-line-regexp)))
+ (make-local-variable 'auto-fill-inhibit-regexp)
+ ;;(setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:")
+ (setq auto-fill-inhibit-regexp nil)
+ (make-local-variable 'normal-auto-fill-function)
+ (setq normal-auto-fill-function 'message-do-auto-fill)
+ ;; KLUDGE: auto fill might already be turned on in `text-mode-hook'.
+ ;; In that case, ensure that it uses the right function. The real
+ ;; solution would be not to use `define-derived-mode', and run
+ ;; `text-mode-hook' ourself at the end of the mode.
+ ;; -- Per Abrahamsen <abraham@dina.kvl.dk> Date: 2001-10-19.
+ (when auto-fill-function
+ (setq auto-fill-function normal-auto-fill-function)))
\f
(message-newline-and-reformat arg t)
t))
-(defun-maybe rfc822-goto-eoh ()
- ;; Go to header delimiter line in a mail message, following RFC822 rules
- (goto-char (point-min))
- (while (looking-at "^[^: \n]+:\\|^[ \t]")
- (forward-line 1))
- (point))
-
(defun message-do-auto-fill ()
"Like `do-auto-fill', but don't fill in message header."
- (when (> (point) (save-excursion (rfc822-goto-eoh)))
+ (when (> (point) (save-excursion
+ (goto-char (point-min))
+ (if (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator)
+ "\n") nil t)
+ (match-beginning 0)
+ (point-max))))
(do-auto-fill)))
(defun message-insert-signature (&optional force)
(defcustom mm-default-directory nil
"The default directory where mm will save files.
If not set, `default-directory' will be used."
- :type 'directory
+ :type '(choice directory (const :tag "Default" nil))
:group 'mime-display)
(defcustom mm-external-terminal-program "xterm"
(let ((file (nnfolder-group-marks-pathname group)))
(if (null (gnus-gethash file nnfolder-marks-modtime))
t ;; never looked at marks file, assume it has changed
- (not (eq (gnus-gethash file nnfolder-marks-modtime)
- (nth 5 (file-attributes file)))))))
+ (not (equal (gnus-gethash file nnfolder-marks-modtime)
+ (nth 5 (file-attributes file)))))))
(defun nnfolder-save-marks (group server)
(let ((file-name-coding-system nnmail-pathname-coding-system)
(defconst nnimap-version "nnimap 1.0")
+(defgroup nnimap nil
+ "Reading IMAP mail with Gnus."
+ :group 'gnus)
+
(defvoo nnimap-address nil
"Address of physical IMAP server. If nil, use the virtual server's name.")
;; Splitting variables
-(defvar nnimap-split-crosspost t
+(defcustom nnimap-split-crosspost t
"If non-nil, do crossposting if several split methods match the mail.
-If nil, the first match found will be used.")
+If nil, the first match found will be used."
+ :group 'nnimap
+ :type 'boolean)
-(defvar nnimap-split-inbox nil
- "*Name of mailbox to split mail from.
+(defcustom nnimap-split-inbox nil
+ "Name of mailbox to split mail from.
Mail is read from this mailbox and split according to rules in
`nnimap-split-rule'.
-This can be a string or a list of strings.")
+This can be a string or a list of strings."
+ :group 'nnimap
+ :type '(choice (string)
+ (repeat string)))
+
+(define-widget 'nnimap-strict-function 'function
+ "This widget only matches values that are functionp.
-(defvar nnimap-split-rule nil
- "*Mail will be split according to theese rules.
+Warning: This means that a value that is the symbol of a not yet
+loaded function will not match. Use with care."
+ :match 'nnimap-strict-function-match)
+
+(defun nnimap-strict-function-match (widget value)
+ "Ignoring WIDGET, match if VALUE is a function."
+ (functionp value))
+
+(defcustom nnimap-split-rule nil
+ "Mail will be split according to theese rules.
Mail is read from mailbox(es) specified in `nnimap-split-inbox'.
everything else in the incoming mailbox, you could do something like
this:
-(setq nnimap-split-rule '((\"INBOX.gnus-imap\" \"From:.*gnus-imap\")
+\(setq nnimap-split-rule '((\"INBOX.gnus-imap\" \"From:.*gnus-imap\")
(\"INBOX.junk\" \"Subject:.*buy\")))
As you can see, `nnimap-split-rule' is a list of lists, where the first
even different split rules in different inboxes on the same server,
the syntax of this variable have been extended along the lines of:
-(setq nnimap-split-rule
+\(setq nnimap-split-rule
'((\"my1server\" (\".*\" ((\"ding\" \"ding@gnus.org\")
(\"junk\" \"From:.*Simon\")))
(\"my2server\" (\"INBOX\" nnimap-split-fancy))
\"my3server\" and \"my4server\" both use the same rules. Similarly,
the inbox string is also a regexp. The actual splitting rules are as
before, either a function, or a list with group/regexp or
-group/function elements.")
-
-(defvar nnimap-split-predicate "UNSEEN UNDELETED"
+group/function elements."
+ :group 'nnimap
+ :type '(choice :tag "Rule type"
+ (repeat :menu-tag "Single-server"
+ :tag "Single-server list"
+ (list (string :tag "Mailbox")
+ (choice :tag "Predicate"
+ (regexp :tag "A regexp")
+ (nnimap-strict-function :tag "A function"))))
+ (choice :menu-tag "A function"
+ :tag "A function"
+ (function-item nnimap-split-fancy)
+ (function-item nnmail-split-fancy)
+ (nnimap-strict-function :tag "User-defined function"))
+ (repeat :menu-tag "Multi-server (extended)"
+ :tag "Multi-server list"
+ (list (regexp :tag "Server regexp")
+ (list (regexp :tag "Incoming Mailbox regexp")
+ (repeat :tag "Rules for matching server(s) and mailbox(es)"
+ (list (string :tag "Destination mailbox")
+ (choice :tag "Predicate"
+ (regexp :tag "A Regexp")
+ (nnimap-strict-function :tag "A Function")))))))))
+
+(defcustom nnimap-split-predicate "UNSEEN UNDELETED"
"The predicate used to find articles to split.
If you use another IMAP client to peek on articles but always would
like nnimap to split them once it's started, you could change this to
\"UNDELETED\". Other available predicates are available in
-RFC2060 section 6.4.4.")
+RFC2060 section 6.4.4."
+ :group 'nnimap
+ :type 'string)
-(defvar nnimap-split-fancy nil
- "Like `nnmail-split-fancy', which see.")
+(defcustom nnimap-split-fancy nil
+ "Like `nnmail-split-fancy', which see."
+ :group 'nnimap
+ :type 'sexp)
;; Authorization / Privacy variables
use this to make replies go directly to the group.")
(defvoo nnimap-expunge-search-string "UID %s NOT SINCE %s"
- "*IMAP search command to use for articles that are to be expired.
+ "IMAP search command to use for articles that are to be expired.
The first %s is replaced by a UID set of articles to search on,
and the second %s is replaced by a date criterium.
2060 for more information on valid strings.")
(defvoo nnimap-importantize-dormant t
- "*If non-nil, mark \"dormant\" articles as \"ticked\" for other IMAP clients.
+ "If non-nil, mark \"dormant\" articles as \"ticked\" for other IMAP clients.
Note that within Gnus, dormant articles will still (only) be
marked as ticked. This is to make \"dormant\" articles stand out,
just like \"ticked\" articles, in other IMAP clients.")
(nnmail-group-pathname group nnml-directory))))
(if (null (gnus-gethash file nnml-marks-modtime))
t ;; never looked at marks file, assume it has changed
- (not (eq (gnus-gethash file nnml-marks-modtime)
- (nth 5 (file-attributes file)))))))
+ (not (equal (gnus-gethash file nnml-marks-modtime)
+ (nth 5 (file-attributes file)))))))
(defun nnml-save-marks (group server)
(let ((file-name-coding-system nnmail-pathname-coding-system)
@echo off\r
\r
+rem Modified once more by Frank Schmitt (ich@Frank-Schmitt.net)\r
rem Modified by ShengHuo Zhu (zsh@cs.rochester.edu)\r
rem Originally from make.bat by David Charlap (shamino@writeme.com)\r
rem\r
set PWD=\r
\r
if "%1" == "" goto usage\r
-if "%2" == "" goto usage\r
\r
set emacs=xemacs.exe\r
\r
cd lisp\r
-call %1\%2\%emacs% -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
-if not "%3" == "copy" goto info\r
-attrib -r %1\lisp\gnus\*\r
-copy *.el* %1\lisp\gnus\r
+call %1\%emacs% -batch -nw -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+if not "%2" == "copy" goto info\r
+attrib -r %1\..\..\xemacs-packages\lisp\gnus\*.*\r
+copy *.el* %1\..\..\xemacs-packages\lisp\gnus\r
\r
:info\r
-set EMACSINFO=call %1\%2\%emacs% -no-site-file -no-init-file -batch -q -l infohack.el -f batch-makeinfo\r
+set EMACSINFO=call %1\%emacs% -no-site-file -no-init-file -batch -nw -q -l infohack.el -f batch-makeinfo\r
cd ..\texi\r
%EMACSINFO% message.texi\r
%EMACSINFO% emacs-mime.texi\r
%EMACSINFO% gnus.texi\r
-if not "%3" == "copy" goto done\r
-copy gnus %1\info\r
-copy gnus-?? %1\info\r
-copy message %1\info\r
-copy emacs-mime %1\info\r
+if not "%2" == "copy" goto done\r
+copy gnus %1\..\..\xemacs-packages\info\r
+copy gnus-?? %1\..\..\xemacs-packages\info\r
+copy message %1\..\..\xemacs-packages\info\r
+copy emacs-mime %1\..\..\xemacs-packages\info\r
\r
:etc\r
cd ..\etc\r
-copy gnus-tut.txt %1\etc\r
+copy gnus-tut.txt %1\..\..\xemacs-packages\etc\r
\r
:done\r
cd ..\r
goto end\r
\r
:usage\r
-echo Usage: make :xemacs-dir: :xemacs-arch: [copy]\r
+echo Usage: make :xemacs-dir: [copy]\r
echo.\r
-echo where: :xemacs-dir: is the directory you installed xemacs in\r
-echo eg. C:\Progra~1\XEmacs\XEmacs-21.4.3\r
-echo :xemacs-arch: is the xemacs architecture you installed\r
-echo eg. i586-pc-win32\r
+echo where: :xemacs-dir: is the directory you installed xemacs in \r
+echo (the directory where xemacs.exe is situated)\r
+echo eg. C:\Programme\XEmacs\XEmacs-21.4.3\i586-pc-win32\r
echo copy indicates that the compiled files should be copied to your\r
echo emacs lisp, info, and etc directories\r
echo.\r
+2001-10-21 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Mail Source Specifiers): Explain more explicitly what
+ happens for the `directory' entries. Say that mail from foo.spool
+ goes in the group foo.
+
+2001-10-19 Simon Josefsson <jas@extundo.com>
+
+ * Makefile.in (clean): rm gnus.out.
+ (distclean): rm gnusconfig.tex (moved from "clean").
+
+ * gnus.texi (Using MIME): s/mime/MIME/ for PDF version.
+
+2001-10-19 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Finding the News): Disrecommend nnspool for Leafnode
+ users.
+
2001-10-17 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* gnus.texi (Archived Messages): Add new line after @item.
gnus.ilg gnus.ind gnus.[cgk]ind gnus.idx \
gnustmp.texi *.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \
gnus.latexi*~* xface.tex picons.tex smiley.tex *.latexi *.dvi-x \
- *.pdf-x gnusconfig.tex
+ *.pdf-x gnus.out
makeinfo:
makeinfo -o gnus gnus.texi
rm -f gnus.info-[0-9] gnus.info-[0-9][0-9] message.info-[0-9]
rm -f gnus-ja.info-[0-9] gnus-ja.info-[0-9][0-9] message-ja.info-[0-9]
rm -f $(INFO_DEPS_JA) $(INFO_DEPS_INFO) $(INFO_DEPS_JA_INFO)
+ rm -f gnusconfig.tex
install: $(INFO_DEPS)
$(SHELL) $(top_srcdir)/mkinstalldirs $(infodir)
\e$B$N$h$&$K$G$-$^$9!#\e(B
\e$B%m!<%+%k$N%9%W!<%k$r;H$($k$N$G$"$l$P!"$+$J$j$N3NN($G$=$NJ}$,$:$C$HB.$$$G\e(B
-\e$B$7$g$&$7!"$=$l$r;H$&$Y$-$G$7$g$&!#\e(B
+\e$B$7$g$&$7!"$=$l$r;H$&$Y$-$G$7$g$&!#$G$b!"$b$7$"$J$?$N%5!<%P!<\e(B
+\e$B$,\e(B Leafnode \e$B$G$"$k$J$i$P%m!<%+%k%9%W!<%k$r;H$C$F$O$$$1$^$;$s!#$3$N>l9g\e(B
+\e$B$O\e(B @code{(nntp "localhost")} \e$B$K$7$^$7$g$&!#\e(B
@vindex gnus-nntpserver-file
@cindex NNTPSERVER
\e$B$3$l$O$3$NJQ?t$N%G%#%U%)%k%HCM$G$b$"$j$^$9!#\e(B
@node Using MIME
-@section @sc{mime} \e$B$r;H$&\e(B
+@section MIME \e$B$r;H$&\e(B
@cindex @sc{mime}
\e$B%Q%s%H%^%$%`\e(B (mime) \e$B$H$O!"0UL#$bL5$/6uCf$G<j$r?6$k$b$N$H$7$F9-$/\e(B
@item directory
\e$B%G%#%l%/%H%j!<Cf$NJ#?t$N%U%!%$%k$+$i%a!<%k$r<hF@$7$^$9!#$3$l$OIaDL\e(B
\e$B$O\e(B procmail \e$B$K?7$7$$%a!<%k$r$$$/$D$+$N%U%!%$%k$KJ,3d$5$;$F$$$k$H$-$K;HMQ\e(B
-\e$B$5$l$^$9!#\e(B@code{nnmail-scan-directory-mail-source-once} \e$B$r\e(B @code{nil} \e$B0J\e(B
-\e$B30$K$9$k$H!"\e(Bgnus \e$B$O?7$7$$%a!<%k%=!<%9$r0l2s$@$1D4$Y$k$h$&$K$J$j$^$9!#$3\e(B
-\e$B$l$O!";XDj$7$?%l%Y%k$N%a!<%k%0%k!<%W$@$1$rD4$Y$?$$$H$-$K!"$H$j$o$1JXMx$G\e(B
-\e$B$9!#\e(B
+\e$B$5$l$^$9!#$9$J$o$A%U%!%$%k\e(B @file{foo.bar.spool} \e$B$K$"$k%a!<%k$O!"%0%k!<\e(B
+\e$B%W\e(B @code{foo.bar} \e$B$KCV$+$l$^$9\e(B (\e$B%5%U%#%C%/%9\e(B @code{.spool} \e$B$OJQ992DG=$G\e(B
+\e$B$9\e(B)\e$B!#\e(B@code{nnmail-scan-directory-mail-source-once} \e$B$r\e(B @code{nil} \e$B0J30$K\e(B
+\e$B$9$k$H!"\e(Bgnus \e$B$O?7$7$$%a!<%k%=!<%9$r0l2s$@$1D4$Y$k$h$&$K$J$j$^$9!#$3$l$O!"\e(B
+\e$B;XDj$7$?%l%Y%k$N%a!<%k%0%k!<%W$@$1$rD4$Y$?$$$H$-$K!"$H$j$o$1JXMx$G$9!#\e(B
\e$B%-!<%o!<%I\e(B:
@end lisp
If you can use a local spool, you probably should, as it will almost
-certainly be much faster.
+certainly be much faster. But do not use the local spool if your
+server is running Leafnode; in this case, use @code{(nntp "localhost")}.
@vindex gnus-nntpserver-file
@cindex NNTPSERVER
@node Using MIME
-@section Using @sc{mime}
+@section Using MIME
@cindex @sc{mime}
Mime is a standard for waving your hands through the air, aimlessly,
@item directory
-Get mail from several files in a directory. This is typically used when
-you have procmail split the incoming mail into several files. Setting
-@code{nnmail-scan-directory-mail-source-once} to non-nil forces Gnus to
-scan the mail source only once. This is particularly useful if you want
-to scan mail groups at a specified level.
+Get mail from several files in a directory. This is typically used
+when you have procmail split the incoming mail into several files.
+That is, mail from the file @file{foo.bar.spool} will be put in the
+group @code{foo.bar}. (You can change the suffix to be used instead
+of @code{.spool}.) Setting
+@code{nnmail-scan-directory-mail-source-once} to non-nil forces Gnus
+to scan the mail source only once. This is particularly useful if you
+want to scan mail groups at a specified level.
Keywords: