* elmo-multi.el (elmo-folder-process-crosspost): Follow the change in API.
* elmo-nntp.el (elmo-folder-process-crosspost): Ditto.
* elmo.el (elmo-folder-process-crosspost): Remove optional argument.
(elmo-folder-list-message-entities): Added argument in-msgdb and numbers.
(elmo-folder-synchronize): Define as a method.
+2003-06-05 TAKAHASHI Kaoru <kaoru@kaisei.org>
+
+ * WL-MK: Remove comment out code. Fix indent.
+
+2003-04-08 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * WL-MK: Nil for wl-info-lang means do nothing on info.
+
2003-02-05 Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
* WL-MK (make-wl-news): Replace "^(" by "\\\\(" to avoid font-lock
(a) XEmacs 21.1 or later
- APEL 10.4, FLIM 1.14.5, SEMI 1.14.5
+ APEL 10.5, FLIM 1.14.5, SEMI 1.14.5
Installation as a XEmacs package, If possible.
(b) Emacs 20.4 or later
- APEL 10.4, FLIM 1.14.5, SEMI 1.14.5
+ APEL 10.5, FLIM 1.14.5, SEMI 1.14.5
(c) Emacs 20.1 to 20.3
- APEL 10.4, CLIME 1.14.5, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, SEMI 1.14.5
Use CLIME instead of FLIM. FLIM does not support Emacs 20.3 or
earlier.
(d) Emacs 19.34 (Mule 2.3)
- APEL 10.4, CLIME 1.14.5, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, SEMI 1.14.5
Mule based on Emacs 19.34 can also run SEMI. See the following web
page to get more information (in Japanese).
latest versions should work. For example, the following combinations
are confirmed to work:
- APEL 10.4, SLIM 1.14.9, SEMI 1.14.5
- APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
+ APEL 10.5, SLIM 1.14.9, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, EMIKO 1.14.1
You have to re-install Wanderlust if you upgraded APEL, FLIM, or SEMI.
- Do following, running environment test included APEL, FLIM, and SEMI
- version check. You can specify the emacs command name.
+
+Check Environment
+=================
+
+ Before going to the next step, we recommend you to run tests by
% make check
+ or
% make EMACS=xemacs check
+ to check running environment including the version of APEL, FLIM, and
+ SEMI. Note that even if you have installed new APEL/FLIM/SEMI, old
+ ones in load-path may cause trouble. To find duplicated files in the
+ load-path, M-x list-load-path-shadows will help you.
+
+
Installation
============
-(a) Edit Makefile
+(a) Edit Makefile, WL-CFG
Edit EMACS, LISPDIR, and so on in Makefile.
If LISPDIR is not specified (or NONE by default), it is automatically
detected.
+ Edit WL-CFG if you need. You can specify language for INFO, etc.
+
(b) Bytecompile and Install
Please do following.
packages. After installation as a XEmacs package, you do not need
configurations of autoload, icon path in your own .emacs file.
-(a) Edit Makefile
+(a) Edit Makefile, WL-CFG
Edit XEMACS, PACKAGEDIR, and so on in Makefile.
If PACKAGEDIR is not specified (NONE by default) and the SEMI
modules have been installed, it is automatically detected.
+ Edit WL-CFG if you need. You can specify language for INFO, etc.
+
(b) Bytecompile and Install
Please do following.
(a) XEmacs 21.1 \e$B0J9_\e(B
- APEL 10.4, FLIM 1.14.5, SEMI 1.14.5
+ APEL 10.5, FLIM 1.14.5, SEMI 1.14.5
\e$B2DG=$J$i$P\e(B XEmacs \e$B$N%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$9$k$3$H$r$*4+$a$7$^$9!#\e(B
(b) Emacs 20.4 \e$B0J9_\e(B
- APEL 10.4, FLIM 1.14.5, SEMI 1.14.5
+ APEL 10.5, FLIM 1.14.5, SEMI 1.14.5
(c) Emacs 20.1\e$B!A\e(B20.3
- APEL 10.4, CLIME 1.14.5, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, SEMI 1.14.5
FLIM \e$B$,F0$-$^$;$s$N$G!"Be$o$j$K\e(B CLIME \e$B$r%$%s%9%H!<%k$7$F$/$@$5$$!#\e(B
(d) Emacs 19.34 (Mule 2.3)
- APEL 10.4, CLIME 1.14.5, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, SEMI 1.14.5
Emacs 19.34 \e$B%Y!<%9$N\e(B Mule \e$B$G$O\e(B SEMI \e$B$rF0:n$5$;$k$3$H$,2DG=$G$9!#2<5-\e(B
\e$B$N%Z!<%8$,;29M$K$J$j$^$9!#\e(B
\e$BNc$($P!"0J2<$NAH9g$;$NF0:n$,3NG'$5$l$F$$$^$9!#\e(B
- APEL 10.4, SLIM 1.14.9, SEMI 1.14.5
- APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
+ APEL 10.5, SLIM 1.14.9, SEMI 1.14.5
+ APEL 10.5, CLIME 1.14.5, EMIKO 1.14.1
APEL, FLIM, SEMI \e$B$N%P!<%8%g%s%"%C%W$r9T$C$?>l9g$O!"\e(BWanderlust \e$B$r%$%s%9\e(B
\e$B%H!<%k$7D>$7$F$/$@$5$$!#\e(B
- \e$B0J2<$r<B9T$9$k$3$H$K$h$j!"\e(BAPEL, FLIM, SEMI \e$B$N%A%'%C%/$r4^$s$@4D6-%F%9\e(B
- \e$B%H$,9T$($^$9!#\e(BEMACS \e$B$G\e(B emacs \e$B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#\e(B
+
+\e$B4D6-$N3NG'\e(B
+==========
+
+ Wanderlust \e$B$N%$%s%9%H!<%k$NA0$K4D6-$N3NG'$r$9$k$3$H$r?d>)$7$^$9!#\e(B
% make check
+ \e$B$^$?$O\e(B
% make EMACS=xemacs check
+ \e$B$G\e(B APEL, FLIM, SEMI \e$B$N%A%'%C%/$r4^$s$@4D6-%F%9%H$,9T$($^$9!#\e(B
+
+ \e$B?7$7$$\e(B APEL, FLIM, SEMI \e$B$,%$%s%9%H!<%k$5$l$F$$$F$b!"\e(Bload-path \e$B>e$K8E$$\e(B
+ \e$B$b$N$,;D$C$F$$$k>l9g$K$O%H%i%V%k$N860x$H$J$j$^$9!#\e(Bload-path \e$B>e$G=EJ#$7\e(B
+ \e$B$?%U%!%$%k$rC5$9$K$O\e(B M-x list-load-path-shadows \e$B$,JXMx$G$9!#\e(B
+
\e$BDL>o$N%$%s%9%H!<%k\e(B
==================
-(a)Makefile \e$B$NJT=8\e(B
+(a)Makefile, WL-CFG \e$B$NJT=8\e(B
Makefile \e$B$O!"\e(BEMACS, LISPDIR \e$B$NItJ,$rJT=8$7$F$/$@$5$$!#\e(B
LISPDIR \e$B$OFC$K;XDj$7$J$/$F$b\e(B (NONE \e$B$N$^$^$G$b\e(B) \e$B<+F0E*$K%$%s%9%H!<%k\e(B
\e$B@h$r8!=P$7$^$9!#\e(B
+ \e$BI,MW$J$i\e(B WL-CFG \e$B$rJT=8$7$F$/$@$5$$!#\e(B INFO \e$B$N8@8l$N;XDj$J$I$,$G$-$^$9!#\e(B
+
(b)\e$B%P%$%H%3%s%Q%$%k!&%$%s%9%H!<%k\e(B
\e$B0J2<$r<B9T$7$F$/$@$5$$!#\e(B
\e$B$N@_Dj!"%"%$%3%s$N%Q%9@_Dj$r8D?M$N\e(B .emacs \e$B$K5-=R$7$J$/$F$b\e(B
Wanderlust \e$B$r@5>o$K5/F0$G$-$k$h$&$K$J$j$^$9!#\e(B
-(a)Makefile \e$B$NJT=8\e(B
+(a)Makefile, WL-CFG \e$B$NJT=8\e(B
Makefile \e$B$O!"\e(BXEMACS, PACKAGEDIR \e$B$NItJ,$rJT=8$7$F$/$@$5$$!#\e(B
PACKAGEDIR \e$B$OFC$K;XDj$7$J$/$F$b\e(B (NONE \e$B$N$^$^$G$b\e(B)\e$B!"\e(BSEMI \e$B$,%$%s%9%H!<\e(B
\e$B%k$5$l$F$$$l$P<+F0E*$K8!=P$5$l$^$9!#\e(B
+ \e$BI,MW$J$i\e(B WL-CFG \e$B$rJT=8$7$F$/$@$5$$!#\e(B INFO \e$B$N8@8l$N;XDj$J$I$,$G$-$^$9!#\e(B
(b)\e$B%P%$%H%3%s%Q%$%k!&%$%s%9%H!<%k\e(B
Wanderlust NEWS -- User-visible changes in Wanderlust.
+** Default value of wl-folder-hierarchy-access-folders has been changed.
+
+** Access group "@/" of shimbun folders can be used now.
+
** Show contents of NEWS(.ja) when you start Wanderlust newer than the
one you used previously.
** Commands to verify/decrypt non-MIME PGP message are added.
C-c:v, C-c:d in message buffer to verify or decrypt respectively.
+* Changes in 2.10.1 from 2.10.0
+ Version 2.10.1 is a bug fix version of 2.10.0.
+
+** Fixed the problem that msgdb be destroyed when print-length or
+ print-level has Non-nil value.
+
+** wl-summary-pack-number in pipe folder is disabled temporarily
+ since it didn't work. Invoke it in destination folder instead.
+
+** Fixed a problem that wl-folder-move-cur-folder doesn't work.
+
+** Fixed a problem that wl-draft-reedit doesn't work properly on Meadow.
+
+** Fixed a problem that wl-summary-pack-number doesn't work on Maildir and
+ shimbun folders.
+
+** Fixed a problem that cache file is not protected even if it is marked
+ as important.
+
+** Fixed a problem that %# in wl-summary-line-format cannot handle large
+ number.
+
+** Fixed a problem to remove password even if SMTP AUTH failed at non-auth
+ phase.
+
+** Default value of wl-message-buffer-prefetch-folder-type-list,
+ wl-message-buffer-prefetch-idle-time, and
+ wl-message-buffer-prefetch-depth are changed.
+
+** Fixed to compile on XEmacs without mule feature.
+
* Changes in 2.10.0 from 2.8.1
** You can alter the format of summary lines.
Wanderlust NEWS (\e$BF|K\8lHG\e(B) -- User-visible changes in Wanderlust.
+** wl-folder-hierarchy-access-folders \e$B$N=i4|CM$,JQ99$5$l$^$7$?!#\e(B
+
+** \e$B?7J9%U%)%k%@$N%"%/%;%9%0%k!<%W\e(B "@/" \e$B$,;H$($k$h$&$K$J$j$^$7$?!#\e(B
+
** \e$BA0$K;H$C$F$$$?$b$N$h$j?7$7$$\e(B Wanderlust \e$B$r5/F0$9$k$H\e(B NEWS(.ja) \e$B$NFbMF$r\e(B
\e$BI=<($7$^$9!#\e(B
** non-MIME PGP \e$B%a%C%;!<%8$N8!>Z!"I|9f2=$N$?$a$N%3%^%s%I$,DI2C$5$l$^$7$?!#\e(B
\e$B%a%C%;!<%8%P%C%U%!$K$*$$$F\e(B C-c:v, C-c:d \e$B$G$=$l$>$l8!>Z!"I|9f2=$7$^$9!#\e(B
+* 2.10.0 \e$B$+$i\e(B 2.10.1 \e$B$X$NJQ99E@\e(B
+ 2.10.1 \e$B$O\e(B 2.10.0 \e$B$N%P%0=$@5HG$G$9!#\e(B
+
+** print-length \e$B$d\e(B print-level \e$B$,\e(B Non-nil \e$B$N$H$-$K\e(B msgdb \e$B$,2u$l$kLdBj$,\e(B
+ \e$B=$@5$5$l$^$7$?!#\e(B
+
+** \e$B%Q%$%W%U%)%k%@$K$*$$$F\e(B wl-summary-pack-number \e$B$,$&$^$/F0$+$J$+$C$?\e(B
+ \e$B$?$a8z$+$J$/$7$F$"$j$^$9!#I,MW$G$"$l$P<h$j9~$_@h%U%)%k%@$NJ}$G<B9T\e(B
+ \e$B$7$F2<$5$$!#\e(B
+
+** wl-folder-move-cur-folder \e$B$,8z$$$F$$$J$+$C$?LdBj$,=$@5$5$l$^$7$?!#\e(B
+
+** Meadow \e$B>e$G\e(B wl-draft-reedit \e$B$,$&$^$/F0$+$J$$LdBj$,=$@5$5$l$^$7$?!#\e(B
+
+** wl-summary-pack-number \e$B$,\e(B Maildir \e$B$d\e(B shimbun \e$B%U%)%k%@$GF0$+$J$$\e(B
+ \e$BLdBj$,=$@5$5$l$^$7$?!#\e(B
+
+** \e$B=EMW%^!<%/$D$-%a%C%;!<%8$N%-%c%C%7%e$KBP$9$kJ]8n5!G=$,F/$+$J$$\e(B
+ \e$BIT6q9g$,=$@5$5$l$^$7$?!#\e(B
+
+** wl-summary-line-format \e$B$N\e(B %# \e$B$GBg$-$J?tCM$r@5$7$/07$($J$$IT6q9g\e(B
+ \e$B$,=$@5$5$l$^$7$?!#\e(B
+
+** SMTP AUTH \e$B$GG'>Z0J30$N%(%i!<$G$b%Q%9%o!<%I>C5n$5$l$kIT6q9g$,=$\e(B
+ \e$B@5$5$l$^$7$?!#\e(B
+
+** wl-message-buffer-prefetch-folder-type-list,
+ wl-message-buffer-prefetch-idle-time,
+ wl-message-buffer-prefetch-depth \e$B$N%G%U%)%k%HCM$,JQ99$5$l$^$7$?!#\e(B
+
+** XEmacs without mule \e$B$G%3%s%Q%$%k$G$-$J$$LdBj$,=$@5$5$l$^$7$?!#\e(B
+
* 2.8.1 \e$B$+$i\e(B 2.10.0 \e$B$X$NJQ99E@\e(B
** \e$B%5%^%j9T$NI=<(7A<0$rJQ99$G$-$k$h$&$K$J$j$^$7$?!#\e(B
;(setq wl-info-lang "en")
;; Set language for news file ("ja" or "en", both in default).
-;(setq wl-news-lang '("ja" "en"))
+;(setq wl-news-lang '("ja" "en")) ; order sensitive
;; if you want to install wl modules to the subdirectory other than "wl"
;; under LISPDIR, set following variables.
(defun wl-texinfo-format ()
(wl-detect-info-directory)
- (cond ((listp wl-info-lang)
+ (cond ((null wl-info-lang))
+ ((listp wl-info-lang)
(mapcar 'wl-texinfo-format-file wl-info-lang))
((stringp wl-info-lang)
(wl-texinfo-format-file wl-info-lang))))
(install-file infofile DOCDIR INFODIR nil 'overwrite)))
(defun wl-texinfo-install ()
- (cond ((listp wl-info-lang)
+ (cond ((null wl-info-lang))
+ ((listp wl-info-lang)
(mapcar 'wl-texinfo-install-file wl-info-lang))
((stringp wl-info-lang)
(wl-texinfo-install-file wl-info-lang))))
(defun wl-primary-info-file ()
"Get primary info file (for wl-detect-info-directory)."
- (cond
- ((listp wl-info-lang)
- (let ((wl-info-lang (car wl-info-lang)))
- (wl-primary-info-file)))
- ((stringp wl-info-lang)
- (symbol-value (intern (format "wl-%s-info" wl-info-lang))))))
+ (cond ((null wl-info-lang))
+ ((listp wl-info-lang)
+ (let ((wl-info-lang (car wl-info-lang)))
+ (wl-primary-info-file)))
+ ((stringp wl-info-lang)
+ (symbol-value (intern (format "wl-%s-info" wl-info-lang))))))
(defun wl-detect-info-directory ()
(config-wl-package-subr)
;; INFODIR check.
- (require 'info)
- (if (fboundp 'info-initialize)
- (info-initialize))
- (unless INFODIR
- (let ((infodir (car command-line-args-left))
- (info (wl-primary-info-file))
- previous)
- (setq INFODIR
- (if (string= infodir "NONE")
- (if (setq previous
- (exec-installed-p info Info-directory-list
- COMPRESS-SUFFIX-LIST))
- ;;(progn
- ;;(condition-case nil (delete-file previous))
- (directory-file-name (file-name-directory previous));)
- (car Info-directory-list))
- infodir))
- (setq command-line-args-left (cdr command-line-args-left))))
- (princ (format "INFODIR is %s\n\n" INFODIR)))
+ (when wl-info-lang
+ (require 'info)
+ (if (fboundp 'info-initialize)
+ (info-initialize))
+ (unless INFODIR
+ (let ((infodir (car command-line-args-left))
+ (info (wl-primary-info-file))
+ previous)
+ (setq INFODIR
+ (if (string= infodir "NONE")
+ (if (setq previous
+ (exec-installed-p info Info-directory-list
+ COMPRESS-SUFFIX-LIST))
+ (directory-file-name (file-name-directory previous))
+ (car Info-directory-list))
+ infodir))
+ (setq command-line-args-left (cdr command-line-args-left))))
+ (princ (format "INFODIR is %s\n\n" INFODIR))))
(defun install-wl-info ()
(wl-texinfo-format)
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2003-01-31.17}
+\def\texinfoversion{2003-05-04.08}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
% ftp://tug.org/tex/texinfo.tex
% (and all CTAN mirrors, see http://www.ctan.org),
% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-%
+%
% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-%
+%
% The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check.
-%
+%
% Send bug reports to bug-texinfo@gnu.org. Please include including a
% complete document in each bug report with which we can reproduce the
% problem. Patches are, of course, greatly appreciated.
% The extra TeX runs get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary.
-%
+%
% It is possible to adapt texinfo.tex for other languages, to some
% extent. You can get the existing language-specific files from the
% full Texinfo distribution.
\message{Basics,}
\chardef\other=12
-% We never want plain's outer \+ definition in Texinfo.
+% We never want plain's \outer definition of \+ in Texinfo.
% For @tex, we can use \tabalign.
\let\+ = \relax
-% Save some parts of plain tex whose names we will redefine.
+% Save some plain tex macros whose names we will redefine.
\let\ptexb=\b
\let\ptexbullet=\bullet
\let\ptexc=\c
\let\ptexgtr=>
\let\ptexhat=^
\let\ptexi=\i
+\let\ptexindent=\indent
\let\ptexlbrace=\{
\let\ptexless=<
\let\ptexplus=+
\let\ptexrbrace=\}
+\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
% Hyphenation fixes.
\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
\hyphenation{eshell}
+\hyphenation{mini-buf-fer mini-buf-fers}
+\hyphenation{time-stamp}
\hyphenation{white-space}
% Margin to add to right of even pages, to left of odd pages.
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
-%
+%
\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
\removelastskip\penalty-50\smallskip\fi\fi}
\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
% @* forces a line break.
\def\*{\hfil\break\hbox{}\ignorespaces}
+% @/ allows a line break.
+\let\/=\allowbreak
+
% @. is an end-of-sentence period.
\def\.{.\spacefactor=3000 }
% explicit \vfill so that the extra space is at the bottom. The
% threshold for doing this is if the group is more than \vfilllimit
% percent of a page (\vfilllimit can be changed inside of @tex).
-%
+%
\newbox\groupbox
\def\vfilllimit{0.7}
%
\spacefactor=3000
}
-
-% @page forces the start of a new page
+% @page forces the start of a new page.
%
\def\page{\par\vfill\supereject}
% @inmargin{TEXT [, RIGHT-TEXT]}
% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
% else use TEXT for both).
-%
+%
\def\inmargin#1{\parseinmargin #1,,\finish}
\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
- \setbox0 = \hbox{\ignorespaces #2}%
+ \setbox0 = \hbox{\ignorespaces #2}%
\ifdim\wd0 > 0pt
\def\lefttext{#1}% have both texts
\def\righttext{#2}%
% @paragraphindent NCHARS
% We'll use ems for NCHARS, close enough.
-% We cannot implement @paragraphindent asis, though.
-%
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
\def\asisword{asis} % no translation, these are keywords
\def\noneword{none}
%
\fi
}
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading. If WORD is `insert', then do indentat such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do. We
+% switch the definition of this back and forth according to WORD. By
+% default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\newdimen\currentparindent
+%
+\def\insertword{insert}
+%
+\def\firstparagraphindent{\parsearg\dofirstparagraphindent}
+\def\dofirstparagraphindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\noneword
+ \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+ \else\ifx\temp\insertword
+ \let\suppressfirstparagraphindent = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent option `\temp'}%
+ \fi\fi
+}
+
+% Here is how we actually suppress indentation. Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+ \gdef\indent{%
+ \global\let\indent=\ptexindent
+ \global\everypar = {}%
+ }%
+ \global\everypar = {%
+ \kern-\parindent
+ \global\let\indent=\ptexindent
+ \global\everypar = {}%
+ }%
+}%
+
+
% @asis just yields its argument. Used with @table, for example.
%
\def\asis#1{#1}
% We don't use $'s directly in the definition of \math because we need
% to set catcodes according to plain TeX first, to allow for subscripts,
% superscripts, special math chars, etc.
-%
+%
\let\implicitmath = $%$ font-lock fix
%
% One complication: _ usually means subscripts, but it could also mean
% an actual _ character, as in @math{@var{some_variable} + 1}. So make
% _ within @math be active (mathcode "8000), and distinguish by seeing
% if the current family is \slfam, which is what @var uses.
-%
+%
{\catcode\underChar = \active
\gdef\mathunderscore{%
\catcode\underChar=\active
% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
% this is not advertised and we don't care. Texinfo does not
% otherwise define @\.
-%
+%
% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
%
% Some active characters (such as <) are spaced differently in math.
% We have to reset their definitions in case the @math was an
% argument to a command which set the catcodes (such as @item or @section).
-%
+%
{
\catcode`^ = \active
\catcode`< = \active
\def\pdfmakeoutlines{{%
\openin 1 \jobname.toc
\ifeof 1\else\begingroup
- \closein 1
- % Thanh's hack / proper braces in bookmarks
+ \closein 1
+ % Thanh's hack / proper braces in bookmarks
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
\let\unnumbsubsubsecentry = \subsubsecentry
%
% Make special characters normal for writing to the pdf file.
- %
+ %
\indexnofonts
\let\tt=\relax
\turnoffactive
\let\nextmakelinks=\makelinks
\ifnum\lnkcount>0,\fi
\picknum{#1}%
- \startlink attr{/Border [0 0 0]}
+ \startlink attr{/Border [0 0 0]}
goto name{\pdfmkpgn{\the\pgn}}%
\linkcolor #1%
\advance\lnkcount by 1%
\ifx\first0\adn0
\else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
\else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
- \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
\else
\ifnum0=\countA\else\makelink\fi
\ifx\first.\let\next=\done\else
% 8.5x11=90+ smallbook=80 a4=90+ a5=77
% For me, subjectively, the few extra characters that fit aren't worth
% the additional smallness of 8pt. So I'm making the default 9pt.
-%
+%
% By the way, for comparison, here's what fits with @example (10pt):
% 8.5x11=71 smallbook=60 a4=75 a5=58
-%
+%
% I wish we used A4 paper on this side of the Atlantic.
-%
+%
% --karl, 24jan03.
% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+ \ptexslash\fi\fi\fi}
\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
% Set sfcode to normal for the chars that usually have another value.
% Can't use plain's \frenchspacing because it uses the `\x notation, and
% sometimes \x has an active definition that messes things up.
-%
+%
\catcode`@=11
\def\frenchspacing{%
\sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
\gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
\else
\errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle `\arg'}%
+ \errmessage{Unknown @kbdinputstyle option `\arg'}%
\fi\fi\fi
}
\def\worddistinct{distinct}
% rms does not like angle brackets --karl, 17may97.
% So now @email is just like @uref, unless we are pdf.
-%
+%
%\def\email#1{\angleleft{\tt #1}\angleright}
\ifpdf
\def\email#1{\doemail#1,,\finish}
% @pounds{} is a sterling sign.
\def\pounds{{\it\$}}
+% @registeredsymbol - R in a circle. For now, only works in text size;
+% we'd have to redo the font mechanism to change the \scriptstyle and
+% \scriptscriptstyle font sizes to make it look right in headings.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{$\scriptstyle\rm R$}\hfil\crcr\Orb}}%
+ }$%
+}
+
\message{page headings,}
\itemizey {#1}{\Eitemize}
}
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
+\def\itemizey#1#2{%
+ \aboveenvbreak
+ \itemmax=\itemindent
+ \advance\itemmax by -\itemmargin
+ \advance\leftskip by \itemindent
+ \exdentamount=\itemindent
+ \parindent=0pt
+ \parskip=\smallskipamount
+ \ifdim\parskip=0pt \parskip=2pt \fi
+ \def#2{\endgraf\afterenvbreak\endgroup}%
+ \def\itemcontents{#1}%
+ % @itemize with no arg is equivalent to @itemize @bullet.
+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ \let\item=\itemizeitem
+}
% \splitoff TOKENS\endmark defines \first to be the first token in
% TOKENS, and \rest to be the remainder.
% @deffn ...
% @end deffn
% @end ignore
-%
+%
% The @end deffn is going to get expanded, because we're trying to allow
% nested conditionals. But we don't want to expand the actual @deffn,
% since it might be syntactically correct and intended to be ignored.
% Since \end checks for \relax, using \empty does not cause an error.
-%
+%
\def\ignoremorecommands{%
\let\defcodeindex = \relax
\let\defcv = \empty
% @synindex foo bar makes index foo feed into index bar.
% Do this instead of @defindex foo if you don't want it as a separate index.
-%
+%
% @syncodeindex foo bar similar, but put all entries made for index foo
% inside @code.
-%
+%
\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
% Take care of Texinfo commands that can appear in an index entry.
% Since there are some commands we want to expand, and others we don't,
% we have to laboriously prevent expansion for those that we don't.
-%
+%
\def\indexdummies{%
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
% Need these in case \tex is in effect and \{ is a \delimiter again.
% But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
+ % braces and backslashes are used only as delimiters.
\let\{ = \mylbrace
\let\} = \myrbrace
%
% words, not control letters, because the \space would be incorrect
% for control characters, but is needed to separate the control word
% from whatever follows.
- %
+ %
% For control letters, we have \definedummyletter, which omits the
% space.
- %
+ %
% These can be used both for control words that take an argument and
% those that do not. If it is followed by {arg} in the input, then
% that will dutifully get written to the index (or wherever).
- %
+ %
\def\definedummyword##1{%
\expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
}%
}
% For the aux file, @ is the escape character. So we want to redefine
-% everything using @ instead of \realbackslash. When everything uses
+% everything using @ instead of \realbackslash. When everything uses
% @, this will be simpler.
-%
+%
\def\atdummies{%
\def\@{@@}%
\def\ {@ }%
% Called from \indexdummies and \atdummies. \definedummyword and
% \definedummyletter must be defined first.
-%
+%
\def\commondummies{%
%
\normalturnoffactive
%
\smallfonts \rm
\tolerance = 9500
+ \everypar = {}% don't want the \kern\-parindent from indentation suppression.
\indexbreaks
%
% See if the index file exists and is nonempty.
\wd0=\hsize \wd2=\hsize
\hbox to\pagewidth{\box0\hfil\box2}%
}
-%
+%
% All done with double columns.
\def\enddoublecolumns{%
\output = {%
\numberedsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% like \numhead, but chooses appendix heading levels
\appendixsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% like \numhead, but chooses numberless heading levels
\unnumberedsubsubseczzz{#2}
\fi
\fi
+\suppressfirstparagraphindent
}
% @chapter, @appendix, @unnumbered.
% @foo ... @end foo.
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
+%
% Since these characters are used in examples, it should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
%
% The @error{} command.
% Adapted from the TeXbook's \boxit.
-%
+%
\newbox\errorbox
%
{\tentt \global\dimen0 = 3em}% Width of the box.
\let\equiv=\ptexequiv
\let\!=\ptexexclam
\let\i=\ptexi
+ \let\indent=\ptexindent
\let\{=\ptexlbrace
\let\+=\tabalign
\let\}=\ptexrbrace
+ \let\/=\ptexslash
\let\*=\ptexstar
\let\t=\ptext
%
\newskip\lskip\newskip\rskip
\def\cartouche{%
+\par % can't be in the midst of a paragraph.
\begingroup
\lskip=\leftskip \rskip=\rightskip
\leftskip=0pt\rightskip=0pt %we want these *outside*.
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
+% If we want to allow any <char> as delimiter,
% we need the curly braces so that makeinfo sees the @verb command, eg:
% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
%
\everypar{\starttabbox}%
}
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters. Before first delimiter expect a
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters. Before first delimiter expect a
% right brace, after last delimiter expect closing brace:
%
% \def\doverb'{'<char>#1<char>'}'{#1}
%
% \def\doverbatim#1@end verbatim{#1}
%
-% For Texinfo it's a lot easier than for LaTeX,
+% For Texinfo it's a lot easier than for LaTeX,
% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
% we need not redefine '\', '{' and '}'.
%
% Allow normal characters that we make active in the argument (a file name).
\def\verbatiminclude{%
\begingroup
- \catcode`\\=12
- \catcode`~=12
- \catcode`^=12
- \catcode`_=12
- \catcode`|=12
- \catcode`<=12
- \catcode`>=12
- \catcode`+=12
+ \catcode`\\=\other
+ \catcode`~=\other
+ \catcode`^=\other
+ \catcode`_=\other
+ \catcode`|=\other
+ \catcode`<=\other
+ \catcode`>=\other
+ \catcode`+=\other
\parsearg\doverbatiminclude
}
\def\setupverbatiminclude{%
% @copying ... @end copying.
% Save the text away for @insertcopying later. Many commands won't be
% allowed in this context, but that's ok.
-%
+%
% We save the uninterpreted tokens, rather than creating a box.
% Saving the text in a box would be much easier, but then all the
% typesetting commands (@smallbook, font changes, etc.) have to be done
% beforehand -- and a) we want @copying to be done first in the source
% file; b) letting users define the frontmatter in as flexible order as
% possible is very desirable.
-%
+%
\def\copying{\begingroup
% Define a command to swallow text until we reach `@end copying'.
% \ is the escape char in this texinfo.tex file, so it is the
% end-of-line to be a \par, as would happen with the normal active
% definition of ^^M. On the third hand, two ^^M's in a row should still
% generate a \par.
-%
+%
% Our approach is to make ^^M insert a space and a penalty1 normally;
% then it can also check if \lastpenalty=1. If it does, then manually
% do \par.
-%
+%
% This messes up the normal definitions of @c[omment], so we redefine
% it. Similarly for @ignore. (These commands are used in the gcc
% manual for man page generation.)
-%
+%
% Seems pretty fragile, most line-oriented commands will presumably
% fail, but for the limited use of getting the copying text (which
% should be quite simple) inserted, we can hope it's ok.
\newcount\parencount
% We want ()&[] to print specially on the defun line.
-%
+%
\def\activeparens{%
\catcode`\(=\active \catcode`\)=\active
\catcode`\&=\active
% #1 is the \E... control sequence to end the definition (which we define).
% #2 is the \...x control sequence (which our caller defines).
% #3 is the control sequence to process the header, such as \defunheader.
-%
+%
\def\parsebodycommon#1#2#3{%
\begingroup\inENV
% If there are two @def commands in a row, we'll have a \nobreak,
}
% Common part of the \...x definitions.
-%
+%
\def\defxbodycommon{%
% As with \parsebodycommon above, allow line break if we have multiple
% x headers in a row. It's not a great place, though.
% to account for this both in the \...x definition and in parsing the
% input at hand. Thus also need a control sequence (passed as #5) for
% the \E... definition to assign the category name to.
-%
+%
\def\deftypeopparsebody#1#2#3#4#5 #6 {%
\parsebodycommon{#1}{#2}{#3}%
\def#2##1 ##2 ##3 {\def#4{##1}%
}
% This expands the args and terminates the paragraph they comprise.
-%
+%
\def\defunargs#1{\functionparens \sl
% Expand, preventing hyphenation at `-' chars.
% Note that groups don't affect changes in \hyphenchar.
% These definitions are used if you use @defunx (etc.)
% anywhere other than immediately after a @defun or @defunx.
-%
+%
\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
% Called by \do from \dounmacro on each macro. The idea is to omit any
% macro definitions that have been changed to \relax.
-%
+%
\def\unmacrodo#1{%
\ifx#1\relax
% remove this
% @node's job is to define \lastnode.
\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
+\def\nodezzz#1{\nodexxx #1,\finishnodeparse}
+\def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}}
\let\nwnode=\node
\let\lastnode=\relax
% anchor), namely NAME-title (the corresponding @chapter/etc. name),
% NAME-pg (the page number), and NAME-snt (section number and type).
% Called from \foonoderef.
-%
+%
% We have to set \indexdummies so commands such as @code in a section
% title aren't expanded. It would be nicer not to expand the titles in
% the first place, but there's so many layers that that is hard to do.
%
% Likewise, use \turnoffactive so that punctuation chars such as underscore
% and backslash work in node names.
-%
+%
\def\setref#1#2{{%
\atdummies
\pdfmkdest{#1}%
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % [mynode],
- [\printednodename],\space
- % page 3
+ % output the `[mynode]' via a macro.
+ \xrefprintnodename\printednodename
+ %
+ % But we always want a comma and a space:
+ ,\space
+ %
+ % output the `page 3'.
\turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
\fi
\endlink
\endgroup}
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output. It's a separate macro only so it can be changed more easily,
+% since not square brackets don't work in some documents. Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
% \dosetq is called from \setref to do the actual \write (\iflinks).
%
\def\dosetq#1#2{%
\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}}
% Things to be expanded by \internalsetq.
-%
+%
\def\Ypagenumber{\folio}
\def\Ytitle{\thissection}
\def\Ynothing{}
%
% Auto-number footnotes. Otherwise like plain.
\gdef\footnote{%
+ \let\indent=\ptexindent
\global\advance\footnoteno by \@ne
\edef\thisfootno{$^{\the\footnoteno}$}%
%
% In case the footnote comes at the end of a sentence, preserve the
% extra spacing after we do the footnote number.
\let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
%
% Remove inadvertent blank space before typesetting the footnote number.
\unskip
\nobreak\bigskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
- % above and below.
+ % above and below.
\nobreak\vskip\parskip
\nobreak
\line\bgroup\hss
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
% physical page width.
-%
+%
% We also call \setleading{\textleading}, so the caller should define
% \textleading. The caller should also set \parskip.
%
\parskip = 3pt plus 2pt minus 1pt
\textleading = 13.2pt
%
- % Double-side printing via postscript on Laserjet 4050
+ % Double-side printing via postscript on Laserjet 4050
% prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
% To change the settings for a different printer or situation, adjust
% \normaloffset until the front-side and back-side texts align. Then
\tableindent = 12mm
}}
-% A specific text layout, 24x15cm overall, intended for A4 paper.
+% A specific text layout, 24x15cm overall, intended for A4 paper.
\def\afourlatex{{\globaldefs = 1
\afourpaper
\internalpagesizes{237mm}{150mm}%
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
% the literal character `\'. (Thus, \ is not expandable when this is in
% effect.)
-%
+%
@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
% Make _ and + \other characters, temporarily.
% Say @foo, not \foo, in error messages.
@escapechar = `@@
-% These look ok in all fonts, so just make them not special.
+% These look ok in all fonts, so just make them not special.
@catcode`@& = @other
@catcode`@# = @other
@catcode`@% = @other
\e$B?d>)$5$l$k\e(B APEL, FLIM, SEMI \e$B$N%P!<%8%g%s$NAH9g$;$O!"0J2<$NDL$j$G$9!#\e(B
@itemize @minus
-@item APEL 10.4, FLIM 1.14.5, SEMI 1.14.5
+@item APEL 10.5, FLIM 1.14.5, SEMI 1.14.5
@end itemize
\e$B$=$NB>!"\e(BFLIM, SEMI \e$B$K$O$$$m$$$m$JJQ7A%P!<%8%g%s$,B8:_$7$^$9$,!"\e(B
\e$BNc$($P!"0J2<$NAH9g$;$GF0:n$9$k$3$H$,3NG'$5$l$F$$$^$9!#\e(B
@itemize @minus
-@item APEL 10.4, SLIM 1.14.9, SEMI 1.14.5
-@item APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
+@item APEL 10.5, SLIM 1.14.9, SEMI 1.14.5
+@item APEL 10.5, CLIME 1.14.5, EMIKO 1.14.1
@end itemize
APEL, FLIM \e$B$b$7$/$O\e(B SEMI \e$B$N%P!<%8%g%s%"%C%W$r9T$C$?>l9g$O!"\e(BWanderlust \e$B$r\e(B
\e$B%U%)%k%@L>$N@55,I=8=$H%U%)%k%@0\F0;~$N%5%^%j99?7%l%s%8$H$NO"A[%j%9%H$G$9!#\e(B
\e$B99?7%l%s%8$K$O\e(B @code{wl-summary-sync} \e$B$GF~NO$G$-$kCM$N$$$:$l$+\e(B
(@samp{all}, @samp{update}, @samp{rescan}, @samp{rescan-noscore},
-@samp{first}, @samp{last}) \e$B$r;XDj$7$^$9!#%^%C%A$7$J$+$C$?>l9g$O!"\e(B
+@samp{first}, @samp{last}, @samp{no-sync}) \e$B$r;XDj$7$^$9!#%^%C%A$7$J$+$C$?>l9g$O!"\e(B
@samp{update} \e$B$H$J$j$^$9!#\e(B
@item wl-ask-range
2001 7/04 2.6.0 stable \e$B%j%j!<%9!#\e(B
8/21 wl-addrmgr by \e$BKLK\$5$s!#\e(B
12/27 2.8.1 stable \e$B%j%j!<%9!#\e(B
+2002 12/11 2.10.0 stable \e$B%j%j!<%9!#\e(B
@end example
\e$B>\$7$$JQA+$O\e(B @file{ChangeLog} \e$B$r8fMw$/$@$5$$!#\e(B
Recommended combination of APEL, FLIM and SEMI are following:
@itemize @minus
-@item APEL 10.4, FLIM 1.14.5 and SEMI 1.14.5
+@item APEL 10.5, FLIM 1.14.5 and SEMI 1.14.5
@end itemize
You can also use many other FLIM/SEMI variants. Combination of the
confirmed to work.
@itemize @minus
-@item APEL 10.4, SLIM 1.14.9, SEMI 1.14.5
-@item APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
+@item APEL 10.5, SLIM 1.14.9, SEMI 1.14.5
+@item APEL 10.5, CLIME 1.14.5, EMIKO 1.14.1
@end itemize
You have to re-install Wanderlust if you upgraded APEL, FLIM or SEMI.
@noindent
This is an associative list of regular expressions of folder names and
update range of the summary. Update range is one of the @samp{all},
-@samp{update}, @samp{rescan}, @samp{rescan-noscore}, @samp{first} and
-@samp{last}. If a folder do not match, @samp{update} is used.
+@samp{update}, @samp{rescan}, @samp{rescan-noscore}, @samp{first},
+@samp{last} and @samp{no-sync}. If a folder do not match, @samp{update}
+is used.
@item wl-ask-range
@vindex wl-ask-range
2001 7/04 Released 2.6.0 stable.
8/21 wl-addrmgr by Kitamoto-san.
12/27 Released 2.8.1 stable.
+2002 12/11 Released 2.10.0 stable.
@end example
See @file{ChangeLog} for details.
+2003-07-12 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * elmo-multi.el (elmo-folder-process-crosspost): Follow the change in
+ API.
+ * elmo-nntp.el (elmo-folder-process-crosspost): Ditto.
+
+
+ * elmo.el (elmo-folder-process-crosspost): Remove optional argument.
+ (elmo-folder-list-message-entities): Added argument in-msgdb and
+ numbers.
+ (elmo-folder-synchronize): Define as a method.
+
+ * elmo-nntp.el (elmo-folder-initialize): Don't use
+ elmo-nntp-default-user if zero-length username is specified
+ explicitly.
+
+2003-07-06 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * elmo-nntp.el (elmo-nntp-folder-list-subfolders): Don't omit
+ server name in case with username.
+ (XXX: this is ad-hoc fix against username includes "@", it
+ should be solved fundamentally)
+
+2003-07-05 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * elmo-nntp.el (elmo-nntp-debug): New function.
+ (elmo-nntp-send-command, elmo-nntp-process-filter): Call it.
+ (elmo-network-authenticate-session): Hide auth-info from the log.
+
+ * elmo-nntp.el (elmo-nntp-folder-list-subfolders): Don't append
+ user name if it is equal to elmo-nntp-default-user.
+
+2003-06-07 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * elmo-shimbun.el (elmo-shimbun-get-headers): Use shimbun-server
+ instead of shimbun-server-internal;
+ Use shimbun-current-group instead of shimbun-current-group-internal.
+ (elmo-folder-plugged-p): Use shimbun-server instead of
+ shimbun-server-internal.
+ (elmo-folder-set-plugged): Ditto.
+ (elmo-net-port-info): Ditto.
+ (elmo-folder-check): Ditto.
+ (elmo-folder-expand-msgdb-path): Ditto.
+ (elmo-folder-list-subfolders): Ditto.
+
+2003-05-18 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * elmo-msgdb.el (elmo-msgdb-overview-entity-get-extra-field):
+ Convert field-name to lower case.
+ (elmo-msgdb-overview-entity-set-extra-field): Ditto.
+
+2003-05-12 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * acap.el, elmo-imap4.el, elmo-nntp.el, elmo-util.el, pldap.el:
+ `message' and `error' take format string.
+
+2003-04-10 Hiroya Murata <lapis-lazuli@pop06.odn.ne.jp>
+
+ * elmo-pipe.el (elmo-folder-clear): Implemented clear copied-list.
+
2003-04-05 Hiroya Murata <lapis-lazuli@pop06.odn.ne.jp>
* elmo-msgdb.el (elmo-msgdb-message-entity-field): Don't use self
(when (acap-response-bye-p acap-response)
(if acap-logging-out
(setq acap-response nil)
- (error (prog1 (acap-response-bye-message acap-response)
+ (error "%s"
+ (prog1 (acap-response-bye-message acap-response)
(setq acap-response nil)))))
(or (and (not (memq (process-status process) '(open run)))
(sit-for 1))
(acap-forward)
(acap-parse-return-data-list)))))
(ALERT ;(cons 'alert (acap-parse-resp-body))
- (message (nth 1 (acap-parse-resp-body))))
- ((BYE Bye bye)
+ (message "%s" (nth 1 (acap-parse-resp-body))))
+ ((BYE Bye bye)
(cons 'bye (acap-parse-resp-body)))
(CHANGE (cons 'change
(list (acap-parse-quoted)
(NO (cons 'stat-no (acap-parse-resp-body)))
(BAD ;(cons 'stat-bad (acap-parse-resp-body))
;; XXX cyrus-sml-acap does not return tagged bad response?
- (error (nth 1 (acap-parse-resp-body))))))
+ (error "%s" (nth 1 (acap-parse-resp-body))))))
((integerp token)
;; tagged response.
(setq tag token)
(elmo-imap4-response-bye-p elmo-imap4-current-response)
(when (elmo-imap4-response-garbage-p
elmo-imap4-current-response)
- (message "Garbage response: %s"
+ (message "Garbage response: %s"
(elmo-imap4-response-value
elmo-imap4-current-response
'garbage))
(elmo-imap4-response-bye-p response))
(elmo-imap4-process-bye session)
(unless no-error
- (error (or
- (elmo-imap4-response-error-text response)
- (format "Select %s failed" mailbox)))))))
+ (error "%s"
+ (or (elmo-imap4-response-error-text response)
+ (format "Select %s failed" mailbox)))))))
(and result response))))
(defun elmo-imap4-check-validity (spec validity-file)
(setq mailbox "inbox"))
(if (eq (string-to-char mailbox) ?/)
(setq mailbox (substring mailbox 1 (length mailbox))))
- (concat ; don't use expand-file-name (e.g. %~/something)
+ ;; don't use expand-file-name (e.g. %~/something)
+ (concat
(expand-file-name
(or (elmo-net-folder-user-internal folder) "nobody")
(expand-file-name (or (elmo-net-folder-server-internal folder)
(elmo-imap4-session-set-current-mailbox-internal session nil)
(if (elmo-imap4-response-bye-p response)
(elmo-imap4-process-bye session)
- (error (or
- (elmo-imap4-response-error-text response)
- (format "Select %s failed" mailbox)))))
+ (error "%s"
+ (or (elmo-imap4-response-error-text response)
+ (format "Select %s failed" mailbox)))))
(message "Selecting %s...done"
(elmo-folder-name-internal folder))
(elmo-folder-set-msgdb-internal
;; elmo-flag-table-get
;; elmo-flag-table-save
-;; elmo-msgdb-append-entity-from-buffer
-;; msgdb number flag-table &optional buffer
-
-;;
+;; elmo-msgdb-append-entity
+;; msgdb entity flag-table
;; ENTITY elmo-msgdb-make-entity ARGS
;; VALUE elmo-msgdb-entity-field ENTITY
(and entity (car entity)))
(defsubst elmo-msgdb-overview-entity-get-extra-field (entity field-name)
- (let ((extra (and entity (aref (cdr entity) 8))))
+ (let ((field-name (downcase field-name))
+ (extra (and entity (aref (cdr entity) 8))))
(and extra
(cdr (assoc field-name extra)))))
(defsubst elmo-msgdb-overview-entity-set-extra-field (entity field-name value)
- (let ((extras (and entity (aref (cdr entity) 8)))
+ (let ((field-name (downcase field-name))
+ (extras (and entity (aref (cdr entity) 8)))
extra)
(if (setq extra (assoc field-name extras))
(setcdr extra value)
(setq cur-number (1+ cur-number)))
(elmo-msgdb-sort-by-date msgdb)))
-(luna-define-method elmo-folder-process-crosspost ((folder elmo-multi-folder)
- &optional
- number-alist)
- (let ((number-alists (elmo-multi-split-number-alist
- folder
- (elmo-msgdb-get-number-alist
- (elmo-folder-msgdb folder))))
- (cur-number 1))
- (dolist (child (elmo-multi-folder-children-internal folder))
- (elmo-folder-process-crosspost child (car number-alists))
- (setq cur-number (+ 1 cur-number)
- number-alists (cdr number-alists)))))
+(luna-define-method elmo-folder-process-crosspost ((folder elmo-multi-folder))
+ (dolist (child (elmo-multi-folder-children-internal folder))
+ (elmo-folder-process-crosspost child)))
(defsubst elmo-multi-folder-append-msgdb (folder append-msgdb)
(if append-msgdb
(decode-coding-string string elmo-nntp-group-coding-system)
string))
+;; For debugging.
+(defvar elmo-nntp-debug nil
+ "Non-nil forces NNTP folder as debug mode.
+Debug information is inserted in the buffer \"*NNTP DEBUG*\"")
+
+;;; Debug
+(defsubst elmo-nntp-debug (message &rest args)
+ (if elmo-nntp-debug
+ (let ((biff (string-match "BIFF-" (buffer-name)))
+ pos)
+ (with-current-buffer (get-buffer-create (concat "*NNTP DEBUG*"
+ (if biff "BIFF")))
+ (goto-char (point-max))
+ (setq pos (point))
+ (insert (apply 'format message args) "\n")))))
+
;;; ELMO NNTP folder
(eval-and-compile
(luna-define-class elmo-nntp-folder (elmo-net-folder)
(append elmo-nntp-stream-type-alist
elmo-network-stream-type-alist))
elmo-network-stream-type-alist))
- parse)
+ explicit-user parse)
(setq name (luna-call-next-method))
(setq parse (elmo-parse-token name ":"))
(elmo-nntp-folder-set-group-internal folder
(elmo-nntp-encode-group-string
(car parse)))
+ (setq explicit-user (eq ?: (string-to-char (cdr parse))))
(setq parse (elmo-parse-prefixed-element ?: (cdr parse)))
(elmo-net-folder-set-user-internal folder
(if (eq (length (car parse)) 0)
- elmo-nntp-default-user
+ (unless explicit-user
+ elmo-nntp-default-user)
(car parse)))
(unless (elmo-net-folder-server-internal folder)
(elmo-net-folder-set-server-internal folder
(elmo-nntp-send-command session
(format "authinfo user %s"
(elmo-network-session-user-internal
- session)))
+ session))
+ nil
+ 'no-log)
(or (elmo-nntp-read-response session)
(signal 'elmo-authenticate-error '(authinfo)))
(elmo-nntp-send-command
session
(format "authinfo pass %s"
- (elmo-get-passwd (elmo-network-session-password-key session))))
+ (elmo-get-passwd (elmo-network-session-password-key session)))
+ nil
+ 'no-log)
(or (elmo-nntp-read-response session)
(signal 'elmo-authenticate-error '(authinfo))))))
(when (buffer-live-p (process-buffer process))
(with-current-buffer (process-buffer process)
(goto-char (point-max))
- (insert output))))
+ (insert output)
+ (elmo-nntp-debug "RECEIVED: %s\n" output))))
(defun elmo-nntp-send-mode-reader (session)
(elmo-nntp-send-command session "mode reader")
(if (null (elmo-nntp-read-response session t))
(message "Mode reader failed")))
-(defun elmo-nntp-send-command (session command &optional noerase)
+(defun elmo-nntp-send-command (session command &optional noerase no-log)
(with-current-buffer (elmo-network-session-buffer session)
(unless noerase
(erase-buffer)
(goto-char (point-min)))
(setq elmo-nntp-read-point (point))
+ (elmo-nntp-debug "SEND: %s\n" (if no-log "<NO LOGGING>" command))
(process-send-string (elmo-network-session-process-internal
session) command)
(process-send-string (elmo-network-session-process-internal
(defun elmo-nntp-folder-list-subfolders (folder one-level)
(let ((session (elmo-nntp-get-session folder))
(case-fold-search nil)
- response ret-val top-ng append-serv use-list-active start)
+ response ret-val top-ng username append-serv use-list-active start)
(with-temp-buffer
(set-buffer-multibyte nil)
(if (and (elmo-nntp-folder-group-internal folder)
(when (> len elmo-display-progress-threshold)
(elmo-display-progress
'elmo-nntp-list-folders "Parsing active..." 100))))
- (unless (string= (elmo-net-folder-server-internal folder)
- elmo-nntp-default-server)
+
+ (setq username (elmo-net-folder-user-internal folder))
+ (when (and username
+ elmo-nntp-default-user
+ (string= username elmo-nntp-default-user))
+ (setq username nil))
+
+ (when (or username ; XXX: ad-hoc fix against username includes "@"
+ (not (string= (elmo-net-folder-server-internal folder)
+ elmo-nntp-default-server)))
(setq append-serv (concat "@" (elmo-net-folder-server-internal
folder))))
(unless (eq (elmo-net-folder-port-internal folder) elmo-nntp-default-port)
(mapcar '(lambda (fld)
(if (consp fld)
(list (concat "-" (elmo-nntp-decode-group-string (car fld))
- (and (elmo-net-folder-user-internal folder)
+ (and username
(concat
":"
- (elmo-net-folder-user-internal folder)))
+ username))
(and append-serv
(concat append-serv))))
(concat "-" (elmo-nntp-decode-group-string fld)
- (and (elmo-net-folder-user-internal folder)
- (concat ":" (elmo-net-folder-user-internal
- folder)))
+ (and username
+ (concat ":" username))
(and append-serv
(concat append-serv)))))
ret-val)))
(if (not (string-match
"^2" (setq response (elmo-nntp-read-raw-response
session))))
- (error (concat "NNTP error: " response))))))
+ (error "NNTP error: %s" response)))))
(defsubst elmo-nntp-send-data-line (session line)
"Send LINE to SESSION."
&optional ignore-flags)
(elmo-nntp-folder-update-crosspost-message-alist folder numbers))
-(luna-define-method elmo-folder-process-crosspost ((folder elmo-nntp-folder)
- &optional
- number-alist)
- (elmo-nntp-folder-process-crosspost folder number-alist))
-
-(defun elmo-nntp-folder-process-crosspost (folder number-alist)
+(defsubst elmo-nntp-folder-process-crosspost (folder)
;; 2.1. At elmo-folder-process-crosspost, setup `reads' slot from
;; `elmo-crosspost-message-alist'.
;; 2.2. remove crosspost entry for current newsgroup from
;; `elmo-crosspost-message-alist'.
(let (cross-deletes reads entity ngs)
(dolist (cross elmo-crosspost-message-alist)
- (if number-alist
- (when (setq entity (rassoc (nth 0 cross) number-alist))
- (setq reads (cons (car entity) reads)))
- (when (setq entity (elmo-msgdb-overview-get-entity
- (nth 0 cross)
- (elmo-folder-msgdb folder)))
- (setq reads (cons (elmo-msgdb-overview-entity-get-number entity)
- reads))))
+ (when (setq entity (elmo-message-entity folder (nth 0 cross)))
+ (setq reads (cons (elmo-message-entity-number entity) reads)))
(when entity
(if (setq ngs (delete (elmo-nntp-folder-group-internal folder)
(nth 1 cross)))
elmo-crosspost-message-alist)))
(elmo-nntp-folder-set-reads-internal folder reads)))
+(luna-define-method elmo-folder-process-crosspost ((folder elmo-nntp-folder))
+ (elmo-nntp-folder-process-crosspost folder))
+
(luna-define-method elmo-folder-list-unreads :around ((folder
elmo-nntp-folder))
;; 2.3. elmo-folder-list-unreads return unread message list according to
(elmo-message-fetch (elmo-pipe-folder-dst-internal folder)
number strategy section outbuf unseen))
+(luna-define-method elmo-folder-clear :after ((folder elmo-pipe-folder)
+ &optional keep-killed)
+ (unless keep-killed
+ (elmo-pipe-folder-copied-list-save folder nil)))
+
(luna-define-method elmo-folder-delete-messages ((folder elmo-pipe-folder)
numbers)
(elmo-folder-delete-messages (elmo-pipe-folder-dst-internal folder)
(defun elmo-shimbun-get-headers (folder)
(let* ((shimbun (elmo-shimbun-folder-shimbun-internal folder))
- (key (concat (shimbun-server-internal shimbun)
- "." (shimbun-current-group-internal shimbun)))
+ (key (concat (shimbun-server shimbun)
+ "." (shimbun-current-group shimbun)))
(elmo-hash-minimum-size 63)
headers)
;; new headers.
(elmo-plugged-p
"shimbun"
(and (elmo-shimbun-folder-shimbun-internal folder)
- (shimbun-server-internal (elmo-shimbun-folder-shimbun-internal folder)))
+ (shimbun-server (elmo-shimbun-folder-shimbun-internal folder)))
nil nil
(and (elmo-shimbun-folder-shimbun-internal folder)
- (shimbun-server-internal (elmo-shimbun-folder-shimbun-internal folder)))))
+ (shimbun-server (elmo-shimbun-folder-shimbun-internal folder)))))
(luna-define-method elmo-folder-set-plugged ((folder elmo-shimbun-folder)
plugged &optional add)
(elmo-set-plugged plugged
"shimbun"
- (shimbun-server-internal
+ (shimbun-server
(elmo-shimbun-folder-shimbun-internal folder))
nil nil nil
- (shimbun-server-internal
+ (shimbun-server
(elmo-shimbun-folder-shimbun-internal folder))
add))
(luna-define-method elmo-net-port-info ((folder elmo-shimbun-folder))
(list "shimbun"
- (shimbun-server-internal
+ (shimbun-server
(elmo-shimbun-folder-shimbun-internal folder))
nil))
(luna-define-method elmo-folder-check :around ((folder elmo-shimbun-folder))
- (when (shimbun-current-group-internal
+ (when (shimbun-current-group
(elmo-shimbun-folder-shimbun-internal folder))
(when (and (elmo-folder-plugged-p folder)
(elmo-shimbun-headers-check-p folder))
(luna-define-method elmo-folder-expand-msgdb-path ((folder
elmo-shimbun-folder))
(expand-file-name
- (concat (shimbun-server-internal
+ (concat (shimbun-server
(elmo-shimbun-folder-shimbun-internal folder))
"/"
(elmo-shimbun-folder-group-internal folder))
(mapcar
(lambda (fld)
(concat prefix
- (shimbun-server-internal
+ (shimbun-server
(elmo-shimbun-folder-shimbun-internal folder))
"." fld))
(shimbun-groups (elmo-shimbun-folder-shimbun-internal folder)))))
(elmo-message-fetch folder msg
(elmo-make-fetch-strategy 'entire)
nil (current-buffer) 'unread))
+ (run-hooks 'elmo-split-fetch-hook)
(setq elmo-split-message-entity (mime-parse-buffer))
(catch 'terminate
(dolist (rule (append elmo-split-rule default-rule))
" Test: do nothing\n")
((function action)
(format " Test: function:%s\n"
- (symbol-name action)))
+ (prin1-to-string action)))
(t
" ERROR: wrong action specified\n"))
(cond
(defun elmo-list-diff (list1 list2 &optional mes)
(if mes
- (message mes))
+ (message "%s" mes))
(let ((clist1 (copy-sequence list1))
(clist2 (copy-sequence list2)))
(while list2
(setq clist2 (delq (car list1) clist2))
(setq list1 (cdr list1)))
(if mes
- (message (concat mes "done")))
+ (message "%sdone" mes))
(list clist1 clist2)))
(defun elmo-list-bigger-diff (list1 list2 &optional mes)
(setq class (format "elmo-%s" (symbol-name type)))
(require (intern class))
(setq folder (luna-make-entity (intern (concat class "-folder"))
- :type type
+ :type type
:prefix prefix
:name original
:persistent (not non-persistent)))
(luna-define-generic elmo-folder-open (folder &optional load-msgdb)
"Open and setup (load saved status) FOLDER.
If optional LOAD-MSGDB is non-nil, msgdb is loaded.
-(otherwise, msgdb is loaded on-demand)")
+\(otherwise, msgdb is loaded on-demand)")
(luna-define-generic elmo-folder-open-internal (folder)
"Open FOLDER (without loading saved folder status).")
(luna-define-generic elmo-message-folder (folder number)
"Get primitive folder of the message.")
-(luna-define-generic elmo-folder-process-crosspost (folder
- &optional
- number-alist)
+(luna-define-generic elmo-folder-process-crosspost (folder)
"Process crosspost for FOLDER.
If NUMBER-ALIST is set, it is used as number-alist.
Return a cons cell of (NUMBER-CROSSPOSTS . NEW-MARK-ALIST).")
(elmo-message-use-cache-p folder number))
(elmo-folder-set-mark-modified-internal folder t)))
-;;; APIs for message-entity
-(luna-define-generic elmo-folder-list-message-entities (folder)
- "Return the all list of message-entity structure of FOLDER.")
-
-(luna-define-method elmo-folder-list-message-entities ((folder elmo-folder))
- (elmo-msgdb-get-overview (elmo-folder-msgdb folder)))
+(luna-define-generic elmo-folder-list-message-entities (folder
+ &optional numbers
+ in-msgdb)
+ "List message-entity structure of FOLDER.
+If optional NUMBERS is specified, only the corresponding entities are
+retrieved.
+If second optional IN-MSGDB is specified, only entities in the msgdb are
+retreived (don't retrieve entities from folder).")
+
+(luna-define-method elmo-folder-list-message-entities ((folder elmo-folder)
+ &optional numbers
+ in-msgdb)
+ (if numbers
+ (mapcar (lambda (x) (elmo-message-entity folder x)) numbers)
+ (elmo-msgdb-get-overview (elmo-folder-msgdb folder))))
(luna-define-generic elmo-message-entity (folder key)
"Return the message-entity structure which matches to the KEY.
number
'answered))))
-(luna-define-method elmo-folder-process-crosspost ((folder elmo-folder)
- &optional
- number-alist)
+(luna-define-method elmo-folder-process-crosspost ((folder elmo-folder))
;; Do nothing.
)
+;;(luna-define-generic elmo-folder-append-message-entity (folder entity
+;; &optional
+;; flag-table)
+;; "Append ENTITY to the folder.")
+
(defun elmo-generic-folder-append-msgdb (folder append-msgdb)
(if append-msgdb
(let* ((number-alist (elmo-msgdb-get-number-alist append-msgdb))
(elmo-folder-set-killed-list-internal folder nil))
(elmo-folder-set-msgdb-internal folder (elmo-msgdb-clear)))
-(defun elmo-folder-synchronize (folder
- &optional ignore-msgdb
- no-check)
+(luna-define-generic elmo-folder-synchronize (folder
+ &optional ignore-msgdb
+ no-check)
"Synchronize the folder data to the newest status.
FOLDER is the ELMO folder structure.
+
If optional IGNORE-MSGDB is non-nil, current msgdb is thrown away except
flag status. If IGNORE-MSGDB is 'visible-only, only visible messages
\(the messages which are not in the killed-list\) are thrown away and
synchronized.
If NO-CHECK is non-nil, rechecking folder is skipped.
-
Return a list of a cross-posted message number.
-If update process is interrupted, return nil."
+If update process is interrupted, return nil.")
+
+(luna-define-method elmo-folder-synchronize ((folder elmo-folder)
+ &optional ignore-msgdb no-check)
(let ((killed-list (elmo-folder-killed-list-internal folder))
(before-append t)
- number-alist mark-alist
+ number-alist
old-msgdb diff diff-2 delete-list new-list new-msgdb mark
- flag-table crossed after-append)
+ flag-table crossed after-append numbers)
(setq old-msgdb (elmo-folder-msgdb folder))
(setq flag-table (elmo-flag-table-load (elmo-folder-msgdb-path folder)))
- (setq number-alist (elmo-msgdb-get-number-alist
- (elmo-folder-msgdb folder)))
- (setq mark-alist (elmo-msgdb-get-mark-alist
- (elmo-folder-msgdb folder)))
+ (setq numbers (sort (elmo-folder-list-messages folder nil t) '<))
(when ignore-msgdb
(elmo-msgdb-flag-table (elmo-folder-msgdb folder) flag-table)
(elmo-folder-clear folder (eq ignore-msgdb 'visible-only)))
(setq diff (elmo-list-diff (elmo-folder-list-messages
folder
(eq 'visible-only ignore-msgdb))
- (unless ignore-msgdb
- (sort (mapcar
- 'car
- number-alist)
- '<))))
+ numbers))
(message "Checking folder diff...done")
(setq new-list (elmo-folder-confirm-appends (car diff)))
;; Set killed list.
(if delete-list (elmo-msgdb-delete-msgs
(elmo-folder-msgdb folder) delete-list))
(when new-list
- (setq new-msgdb (elmo-folder-msgdb-create
- folder new-list flag-table))
(elmo-msgdb-change-mark (elmo-folder-msgdb folder)
elmo-msgdb-new-mark
elmo-msgdb-unread-uncached-mark)
+ (setq new-msgdb (elmo-folder-msgdb-create
+ folder new-list flag-table))
;; Clear flag-table
(if (elmo-folder-persistent-p folder)
(elmo-flag-table-save (elmo-folder-msgdb-path folder)
nil (current-buffer) t
(append arglist
(list dn))))
- (if (integerp ret)
- (if (not (zerop ret))
- (error (car (split-string (buffer-string) "\n"))))
- (if (and (setq ret (buffer-string)); Nemacs
- (string-match "ldap_delete:" ret))
- (error (car (split-string ret "\n"))))))))
+ (cond ((integerp ret)
+ (or (zerop ret)
+ (error "%s" (car (split-string (buffer-string) "\n")))))
+ ((and (setq ret (buffer-string)); Nemacs
+ (string-match "ldap_delete:" ret))
+ (error "%s" (car (split-string ret "\n"))))))))
(defmacro ldap/ldif-insert-field (attr value)
(` (if (not (ldap/ldif-safe-string-p (, value)))
ldap-modify-program
t t nil
arglist))
- (if (integerp ret)
- (if (not (zerop ret))
- (error (car (split-string (buffer-string) "\n"))))
- (if (and (setq ret (buffer-string)); Nemacs
- (string-match "ldap_modify:" ret))
- (error (car (split-string ret "\n"))))))))
+ (cond ((integerp ret)
+ (or (zerop ret)
+ (error "%s" (car (split-string (buffer-string) "\n")))))
+ ((and (setq ret (buffer-string)); Nemacs
+ (string-match "ldap_modify:" ret))
+ (error "%s" (car (split-string ret "\n"))))))))
(defun ldap-add (ldap dn entry)
"Add an entry to an LDAP directory.
ldap-add-program
t t nil
arglist))
- (if (integerp ret)
- (if (not (zerop ret))
- (error (car (split-string (buffer-string) "\n"))))
- (if (and (setq ret (buffer-string)) ; Nemacs
- (string-match "ldap_add:" ret))
- (error (car (split-string ret "\n"))))))))
+ (cond ((integerp ret)
+ (or (zerop ret)
+ (error "%s" (car (split-string (buffer-string) "\n")))))
+ ((and (setq ret (buffer-string)) ; Nemacs
+ (string-match "ldap_add:" ret))
+ (error "%s" (car (split-string ret "\n"))))))))
(defun ldap-search-basic (ldap filter base scope
&optional attrs attrsonly withdn verbose)
;; Header From:
;(setq wl-from "Your Name <e-mail@example.com>")
+;; If (system-name) does not return FQDN,
+;; set following as a local domain name without hostname.
+;(setq wl-local-domain "example.com")
+
;; User's mail addresses.
(setq wl-user-mail-address-list
(list (wl-address-header-extract-address wl-from)
;; "ml@example.com" ...
))
-;; If (system-name) does not return FQDN,
-;; set following as a local domain name without hostname.
-;; ((system-name) "." wl-local-domain is used as domain part of Message-ID
-;; and an argument of HELO in SMTP.
-;(setq wl-local-domain "example.com")
-
-;; Specific domain part for message-id.
-;(setq wl-message-id-domain "hostname.example.com")
-
-;; Use wl-from for generating message-id.
-;; wl-message-id-use-wl-from precedes wl-local-domain and wl-message-id-domain.
-;(setq wl-message-id-use-wl-from t)
-
;;; [[ Server Setting ]]
;; Default IMAP4 server
;; From: \e$B$N@_Dj\e(B
;(setq wl-from "Your Name <e-mail@example.com>")
+;; (system-name) \e$B$,\e(B FQDN \e$B$rJV$5$J$$>l9g!"\e(B
+;; `wl-local-domain' \e$B$K%[%9%HL>$r=|$$$?%I%a%$%sL>$r@_Dj$7$F$/$@$5$$!#\e(B
+;(setq wl-local-domain "example.com")
+
;; \e$B<+J,$N%a!<%k%"%I%l%9$N%j%9%H\e(B
(setq wl-user-mail-address-list
(list (wl-address-header-extract-address wl-from)
;; "ml@example.com" ...
))
-;; (system-name) \e$B$,\e(B FQDN \e$B$rJV$5$J$$>l9g!"\e(B
-;; `wl-local-domain' \e$B$K%[%9%HL>$r=|$$$?%I%a%$%sL>$r@_Dj$7$F$/$@$5$$!#\e(B
-;; (system-name) "." wl-local-domain \e$B$,\e(B Message-ID \e$B$K;HMQ$5$l$^$9!#\e(B
-;(setq wl-local-domain "example.com")
-
-;; Message-ID \e$B$N%I%a%$%s%Q!<%H$r6/@)E*$K;XDj\e(B
-;(setq wl-message-id-domain "hostname.example.com")
-
-;; Message-ID \e$B$N%I%a%$%s%Q!<%H$r\e(B wl-from \e$B$+$i@8@.$7$^$9!#\e(B
-;; global\e$B$J\e(BIP\e$B$r;}$?$J$$>l9g$K;H$C$F$/$@$5$$!#\e(B
-;; wl-local-domain, wl-message-id-domain\e$B$KM%@h$7$^$9!#\e(B
-;(setq wl-message-id-use-wl-from t)
-
;;; [[ \e$B%5!<%P$N@_Dj\e(B ]]
;; IMAP \e$B%5!<%P$N@_Dj\e(B
+2003-07-01 TAKAHASHI Kaoru <kaoru@kaisei.org>
+
+ * ptexinfmt.el: @verb, @tie, @/ support.
+ (ptexinfmt-broken-facility): Abolish NO-NOTICE argument.
+ Use `ptexinfmt-disable-broken-notice-flag' instead.
+
+2002-12-03 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * ptexinfmt.el: Modify it not to use APEL functions.
+
2002-10-10 KOBAYASHI Shinji <kobayashi_shinji@nifty.com>
* bbdb-wl.el (bbdb-wl-get-addresses-1): Call
`bbdb-wl-canonicalize-full-name-function' after decoding full-name
string.
(bbdb-wl-get-addresses-2): Ditto.
-
+
2002-09-05 TAKAHASHI Kaoru <kaoru@kaisei.org>
* ptexinfmt.el: discard @documentdescription. Support
;; Author: TAKAHASHI Kaoru <kaoru@kaisei.org>
;; Yoshiki Hayashi <yoshiki@xemacs.org>
+;; Katsumi Yamaoka <yamaoka@jpl.org>
;; Maintainer: TAKAHASHI Kaoru <kaoru@kaisei.org>
;; Created: 7 Jul 2000
;; Keywords: maint, tex, docs, emulation, compatibility
;; Support texinfmt.el 2.32 or later.
+;; Modified by Yamaoka not to use APEL functions.
+
;;; Code:
+
+(require 'backquote)
(require 'texinfmt)
-(require 'poe)
-(require 'broken)
;;; Broken
(defvar ptexinfmt-disable-broken-notice-flag t
- "If non-nil disable notice, when call `broken-facility'.
-This is NO-NOTICE argument in `broken-facility'.")
+ "If non-nil disable notice, when call `ptexinfmt-broken-facility'.
+This is last argument in `ptexinfmt-broken-facility'.")
+
+(put 'ptexinfmt-broken-facility 'lisp-indent-function 'defun)
+(defmacro ptexinfmt-broken-facility (facility docstring assertion
+ &optional dummy)
+ "Declare a symbol FACILITY is broken if ASSERTION is nil.
+DOCSTRING will be printed if ASSERTION is nil and
+`ptexinfmt-disable-broken-notice-flag' is nil."
+ (` (let ((facility '(, facility))
+ (docstring (, docstring))
+ (assertion (eval '(, assertion))))
+ (put facility 'broken (not assertion))
+ (if assertion
+ nil
+ (put facility 'broken-docstring docstring)
+ (if ptexinfmt-disable-broken-notice-flag
+ nil
+ (message "BROKEN FACILITY DETECTED: %s" docstring))))))
+
+(put 'ptexinfmt-defun-if-broken 'lisp-indent-function 'defun)
+(defmacro ptexinfmt-defun-if-broken (&rest args)
+ "Redefine a function just like `defun' if it is considered broken."
+ (let ((name (list 'quote (car args))))
+ (setq args (cdr args))
+ (` (prog1
+ (, name)
+ (if (get (, name) 'broken)
+ (defalias (, name)
+ (function (lambda (,@ args)))))))))
+
+(put 'ptexinfmt-defun-if-void 'lisp-indent-function 'defun)
+(defmacro ptexinfmt-defun-if-void (&rest args)
+ "Define a function just like `defun' unless it is already defined."
+ (let ((name (list 'quote (car args))))
+ (setq args (cdr args))
+ (` (prog1
+ (, name)
+ (if (fboundp (, name))
+ nil
+ (defalias (, name)
+ (function (lambda (,@ args)))))))))
+
+(put 'ptexinfmt-defvar-if-void 'lisp-indent-function 'defun)
+(defmacro ptexinfmt-defvar-if-void (&rest args)
+ "Define a variable just like `defvar' unless it is already defined."
+ (let ((name (car args)))
+ (setq args (cdr args))
+ (` (prog1
+ (defvar (, name))
+ (if (boundp '(, name))
+ nil
+ (defvar (, name) (,@ args)))))))
;; sort -fd
-(broken-facility texinfo-format-printindex
+(ptexinfmt-broken-facility texinfo-format-printindex
"Can't sort on Mule for Windows."
(if (and (memq system-type '(windows-nt ms-dos))
;;; I don't know version threshold.
;;; (string< texinfmt-version "2.37 of 24 May 1997")
(boundp 'MULE) (not (featurep 'meadow))) ; Mule for Windows
nil
- t)
- ptexinfmt-disable-broken-notice-flag)
+ t))
;; @var
-(broken-facility texinfo-format-var
+(ptexinfmt-broken-facility texinfo-format-var
"Don't perse @var argument."
(condition-case nil
(with-temp-buffer
(insert "@var{@asis{foo}}\n")
(texinfo-format-expand-region (point-min) (point-max))
t))
- (error nil))
- ptexinfmt-disable-broken-notice-flag)
+ (error nil)))
;; @xref
-(broken-facility texinfo-format-xref
+(ptexinfmt-broken-facility texinfo-format-xref
"Can't format @xref, 1st argument is empty."
(condition-case nil
(with-temp-buffer
(insert "@xref{, xref, , file}\n")
(texinfo-format-expand-region (point-min) (point-max))
t))
- (error nil))
- ptexinfmt-disable-broken-notice-flag)
+ (error nil)))
;; @uref
-(broken-facility texinfo-format-uref
+(ptexinfmt-broken-facility texinfo-format-uref
"Parse twice @uref argument."
(condition-case nil
(with-temp-buffer
(let (texinfo-enclosure-list texinfo-alias-list)
(texinfo-mode)
- (insert "@uref{mailto:foo@@bar.com}\n")
+ (insert "@uref{mailto:foo@@noncommand.example.com}\n")
(texinfo-format-expand-region (point-min) (point-max))
t))
- (error nil))
- ptexinfmt-disable-broken-notice-flag)
+ (error nil)))
;; @multitable
-(broken-facility texinfo-multitable-widths
+(ptexinfmt-broken-facility texinfo-multitable-widths
"`texinfo-multitable-widths' unsupport wide-char."
(if (fboundp 'texinfo-multitable-widths)
(with-temp-buffer
nil
t)))
;; function definition is void
- t)
- ptexinfmt-disable-broken-notice-flag)
+ t))
-(broken-facility texinfo-multitable-item
+(ptexinfmt-broken-facility texinfo-multitable-item
"`texinfo-multitable-item' unsupport wide-char."
- (if-broken texinfo-multitable-widths nil t)
- ptexinfmt-disable-broken-notice-flag)
+ (not (get 'texinfo-multitable-widths 'broken)))
;;; Hardcopy and HTML (discard)
(put 'page 'texinfo-format 'texinfo-discard-line)
(put 'hyphenation 'texinfo-format 'texinfo-discard-command-and-arg)
+;; @tie{} (makeinfo 4.3 or later)
+(put 'tie 'texinfo-format 'texinfo-format-tie)
+(ptexinfmt-defun-if-void texinfo-format-tie ()
+ (texinfo-parse-arg-discard)
+ (insert " "))
\f
;;; Directory File
;; @direcategory
(put 'dircategory 'texinfo-format 'texinfo-format-dircategory)
-(defun-maybe texinfo-format-dircategory ()
+(ptexinfmt-defun-if-void texinfo-format-dircategory ()
(let ((str (texinfo-parse-arg-discard)))
(delete-region (point)
(progn
;; @direntry
(put 'direntry 'texinfo-format 'texinfo-format-direntry)
-(defun-maybe texinfo-format-direntry ()
+(ptexinfmt-defun-if-void texinfo-format-direntry ()
(texinfo-push-stack 'direntry nil)
(texinfo-discard-line)
(insert "START-INFO-DIR-ENTRY\n"))
(put 'direntry 'texinfo-end 'texinfo-end-direntry)
-(defun-maybe texinfo-end-direntry ()
+(ptexinfmt-defun-if-void texinfo-end-direntry ()
(texinfo-discard-command)
(insert "END-INFO-DIR-ENTRY\n\n")
(texinfo-pop-stack 'direntry))
;; @ifnotinfo ... @end ifnotinfo (makeinfo 3.11 or later)
(put 'ifnotinfo 'texinfo-format 'texinfo-format-ifnotinfo)
-(defun-maybe texinfo-format-ifnotinfo ()
+(ptexinfmt-defun-if-void texinfo-format-ifnotinfo ()
(delete-region texinfo-command-start
(progn (re-search-forward "@end ifnotinfo[ \t]*\n")
(point))))
;; @html ... @end html (makeinfo 3.11 or later)
(put 'html 'texinfo-format 'texinfo-format-html)
-(defun-maybe texinfo-format-html ()
+(ptexinfmt-defun-if-void texinfo-format-html ()
(delete-region texinfo-command-start
(progn (re-search-forward "@end html[ \t]*\n")
(point))))
;; @ifplaintext ... @end ifplaintext (makeinfo 4.2 or later)
(put 'ifplaintext 'texinfo-format 'texinfo-format-ifplaintext)
-(defun-maybe texinfo-format-ifplaintext ()
+(ptexinfmt-defun-if-void texinfo-format-ifplaintext ()
(delete-region texinfo-command-start
(progn (re-search-forward "@end ifplaintext[ \t]*\n")
(point))))
;; @acronym
(put 'acronym 'texinfo-format 'texinfo-format-var)
-(when-broken texinfo-format-var
- (fmakunbound 'texinfo-format-var))
-(defun-maybe texinfo-format-var ()
+(ptexinfmt-defun-if-broken texinfo-format-var ()
(let ((arg (texinfo-parse-expanded-arg)))
(texinfo-discard-command)
(insert (upcase arg))))
;; @key
(put 'key 'texinfo-format 'texinfo-format-key)
-(defun-maybe texinfo-format-key ()
+(ptexinfmt-defun-if-void texinfo-format-key ()
(insert (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @email{EMAIL-ADDRESS[, DISPLAYED-TEXT]}
(put 'email 'texinfo-format 'texinfo-format-email)
-(defun-maybe texinfo-format-email ()
+(ptexinfmt-defun-if-void texinfo-format-email ()
"Format EMAIL-ADDRESS and optional DISPLAYED-TXT.
Insert < ... > around EMAIL-ADDRESS."
(let ((args (texinfo-format-parse-args)))
;; @option
(put 'option 'texinfo-format 'texinfo-format-option)
-(defun texinfo-format-option ()
+(ptexinfmt-defun-if-void texinfo-format-option ()
"Insert ` ... ' around arg unless inside a table; in that case, no quotes."
;; `looking-at-backward' not available in v. 18.57, 20.2
;; searched-for character is a control-H
(insert (texinfo-parse-arg-discard)))
(goto-char texinfo-command-start))
+;; @verb{<char>TEXT<char>} (makeinfo 4.1 or later)
+(put 'verb 'texinfo-format 'texinfo-format-verb)
+(ptexinfmt-defun-if-void texinfo-format-verb ()
+ "Format text between non-quoted unique delimiter characters verbatim.
+Enclose the verbatim text, including the delimiters, in braces. Print
+text exactly as written (but not the delimiters) in a fixed-width.
+
+For example, @verb\{|@|\} results in @ and
+@verb\{+@'e?`!`+} results in @'e?`!`."
+
+ (let ((delimiter (buffer-substring-no-properties
+ (1+ texinfo-command-end) (+ 2 texinfo-command-end))))
+ (unless (looking-at "{")
+ (error "Not found: @verb start brace"))
+ (delete-region texinfo-command-start (+ 2 texinfo-command-end))
+ (search-forward delimiter))
+ (delete-backward-char 1)
+ (unless (looking-at "}")
+ (error "Not found: @verb end brace"))
+ (delete-char 1))
\f
;;; Accents and Special characters
;; @pounds{} ==> # Pounds Sterling
(put 'pounds 'texinfo-format 'texinfo-format-pounds)
-(defun-maybe texinfo-format-pounds ()
+(ptexinfmt-defun-if-void texinfo-format-pounds ()
(texinfo-parse-arg-discard)
(insert "#"))
;; @OE{} ==> OE French-OE-ligature
(put 'OE 'texinfo-format 'texinfo-format-French-OE-ligature)
-(defun-maybe texinfo-format-French-OE-ligature ()
+(ptexinfmt-defun-if-void texinfo-format-French-OE-ligature ()
(insert "OE" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @oe{} ==> oe
(put 'oe 'texinfo-format 'texinfo-format-French-oe-ligature)
-(defun-maybe texinfo-format-French-oe-ligature () ; lower case
+(ptexinfmt-defun-if-void texinfo-format-French-oe-ligature () ; lower case
(insert "oe" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @AA{} ==> AA Scandinavian-A-with-circle
(put 'AA 'texinfo-format 'texinfo-format-Scandinavian-A-with-circle)
-(defun-maybe texinfo-format-Scandinavian-A-with-circle ()
+(ptexinfmt-defun-if-void texinfo-format-Scandinavian-A-with-circle ()
(insert "AA" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @aa{} ==> aa
(put 'aa 'texinfo-format 'texinfo-format-Scandinavian-a-with-circle)
-(defun-maybe texinfo-format-Scandinavian-a-with-circle () ; lower case
+(ptexinfmt-defun-if-void texinfo-format-Scandinavian-a-with-circle () ; lower case
(insert "aa" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @AE{} ==> AE Latin-Scandinavian-AE
(put 'AE 'texinfo-format 'texinfo-format-Latin-Scandinavian-AE)
-(defun-maybe texinfo-format-Latin-Scandinavian-AE ()
+(ptexinfmt-defun-if-void texinfo-format-Latin-Scandinavian-AE ()
(insert "AE" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @ae{} ==> ae
(put 'ae 'texinfo-format 'texinfo-format-Latin-Scandinavian-ae)
-(defun-maybe texinfo-format-Latin-Scandinavian-ae () ; lower case
+(ptexinfmt-defun-if-void texinfo-format-Latin-Scandinavian-ae () ; lower case
(insert "ae" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @ss{} ==> ss German-sharp-S
(put 'ss 'texinfo-format 'texinfo-format-German-sharp-S)
-(defun-maybe texinfo-format-German-sharp-S ()
+(ptexinfmt-defun-if-void texinfo-format-German-sharp-S ()
(insert "ss" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @questiondown{} ==> ? upside-down-question-mark
(put 'questiondown 'texinfo-format 'texinfo-format-upside-down-question-mark)
-(defun-maybe texinfo-format-upside-down-question-mark ()
+(ptexinfmt-defun-if-void texinfo-format-upside-down-question-mark ()
(insert "?" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @exclamdown{} ==> ! upside-down-exclamation-mark
(put 'exclamdown 'texinfo-format 'texinfo-format-upside-down-exclamation-mark)
-(defun-maybe texinfo-format-upside-down-exclamation-mark ()
+(ptexinfmt-defun-if-void texinfo-format-upside-down-exclamation-mark ()
(insert "!" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @L{} ==> L/ Polish suppressed-L (Lslash)
(put 'L 'texinfo-format 'texinfo-format-Polish-suppressed-L)
-(defun-maybe texinfo-format-Polish-suppressed-L ()
+(ptexinfmt-defun-if-void texinfo-format-Polish-suppressed-L ()
(insert (texinfo-parse-arg-discard) "/L")
(goto-char texinfo-command-start))
;; @l{} ==> l/ Polish suppressed-L (Lslash) (lower case)
(put 'l 'texinfo-format 'texinfo-format-Polish-suppressed-l-lower-case)
-(defun-maybe texinfo-format-Polish-suppressed-l-lower-case ()
+(ptexinfmt-defun-if-void texinfo-format-Polish-suppressed-l-lower-case ()
(insert (texinfo-parse-arg-discard) "/l")
(goto-char texinfo-command-start))
;; @O{} ==> O/ Scandinavian O-with-slash
(put 'O 'texinfo-format 'texinfo-format-Scandinavian-O-with-slash)
-(defun-maybe texinfo-format-Scandinavian-O-with-slash ()
+(ptexinfmt-defun-if-void texinfo-format-Scandinavian-O-with-slash ()
(insert (texinfo-parse-arg-discard) "O/")
(goto-char texinfo-command-start))
;; @o{} ==> o/ Scandinavian O-with-slash (lower case)
(put 'o 'texinfo-format 'texinfo-format-Scandinavian-o-with-slash-lower-case)
-(defun-maybe texinfo-format-Scandinavian-o-with-slash-lower-case ()
+(ptexinfmt-defun-if-void texinfo-format-Scandinavian-o-with-slash-lower-case ()
(insert (texinfo-parse-arg-discard) "o/")
(goto-char texinfo-command-start))
;; @,{c} ==> c, cedilla accent
(put ', 'texinfo-format 'texinfo-format-cedilla-accent)
-(defun-maybe texinfo-format-cedilla-accent ()
+(ptexinfmt-defun-if-void texinfo-format-cedilla-accent ()
(insert (texinfo-parse-arg-discard) ",")
(goto-char texinfo-command-start))
;; @dotaccent{o} ==> .o overdot-accent
(put 'dotaccent 'texinfo-format 'texinfo-format-overdot-accent)
-(defun-maybe texinfo-format-overdot-accent ()
+(ptexinfmt-defun-if-void texinfo-format-overdot-accent ()
(insert "." (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @ubaraccent{o} ==> _o underbar-accent
(put 'ubaraccent 'texinfo-format 'texinfo-format-underbar-accent)
-(defun-maybe texinfo-format-underbar-accent ()
+(ptexinfmt-defun-if-void texinfo-format-underbar-accent ()
(insert "_" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @udotaccent{o} ==> o-. underdot-accent
(put 'udotaccent 'texinfo-format 'texinfo-format-underdot-accent)
-(defun-maybe texinfo-format-underdot-accent ()
+(ptexinfmt-defun-if-void texinfo-format-underdot-accent ()
(insert (texinfo-parse-arg-discard) "-.")
(goto-char texinfo-command-start))
;; @H{o} ==> ""o long Hungarian umlaut
(put 'H 'texinfo-format 'texinfo-format-long-Hungarian-umlaut)
-(defun-maybe texinfo-format-long-Hungarian-umlaut ()
+(ptexinfmt-defun-if-void texinfo-format-long-Hungarian-umlaut ()
(insert "\"\"" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @ringaccent{o} ==> *o ring accent
(put 'ringaccent 'texinfo-format 'texinfo-format-ring-accent)
-(defun-maybe texinfo-format-ring-accent ()
+(ptexinfmt-defun-if-void texinfo-format-ring-accent ()
(insert "*" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @tieaccent{oo} ==> [oo tie after accent
(put 'tieaccent 'texinfo-format 'texinfo-format-tie-after-accent)
-(defun-maybe texinfo-format-tie-after-accent ()
+(ptexinfmt-defun-if-void texinfo-format-tie-after-accent ()
(insert "[" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @u{o} ==> (o breve accent
(put 'u 'texinfo-format 'texinfo-format-breve-accent)
-(defun-maybe texinfo-format-breve-accent ()
+(ptexinfmt-defun-if-void texinfo-format-breve-accent ()
(insert "(" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @v{o} ==> <o hacek accent
(put 'v 'texinfo-format 'texinfo-format-hacek-accent)
-(defun-maybe texinfo-format-hacek-accent ()
+(ptexinfmt-defun-if-void texinfo-format-hacek-accent ()
(insert "<" (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @dotless{i} ==> i dotless i and dotless j
(put 'dotless 'texinfo-format 'texinfo-format-dotless)
-(defun-maybe texinfo-format-dotless ()
+(ptexinfmt-defun-if-void texinfo-format-dotless ()
(insert (texinfo-parse-arg-discard))
(goto-char texinfo-command-start))
;; @.
(put '\. 'texinfo-format 'texinfo-format-\.)
-(defun-maybe texinfo-format-\. ()
+(ptexinfmt-defun-if-void texinfo-format-\. ()
(texinfo-discard-command)
(insert "."))
;; @:
(put '\: 'texinfo-format 'texinfo-format-\:)
-(defun-maybe texinfo-format-\: ()
+(ptexinfmt-defun-if-void texinfo-format-\: ()
(texinfo-discard-command))
;; @-
(put '\- 'texinfo-format 'texinfo-format-soft-hyphen)
-(defun-maybe texinfo-format-soft-hyphen ()
+(ptexinfmt-defun-if-void texinfo-format-soft-hyphen ()
+ (texinfo-discard-command))
+
+;; @/
+(put '\/ 'texinfo-format 'texinfo-format-\/)
+(ptexinfmt-defun-if-void texinfo-format-\/ ()
(texinfo-discard-command))
\f
;; @ref, @xref
(put 'ref 'texinfo-format 'texinfo-format-xref)
-(when-broken texinfo-format-xref
- (fmakunbound 'texinfo-format-xref))
-(defun-maybe texinfo-format-xref ()
+(ptexinfmt-defun-if-broken texinfo-format-xref ()
(let ((args (texinfo-format-parse-args)))
(texinfo-discard-command)
(insert "*Note ")
(unless (null (nth 0 args))
(insert (nth 0 args)))))))
-;; @uref
+;; @uref{URL [,TEXT] [,REPLACEMENT]}
(put 'uref 'texinfo-format 'texinfo-format-uref)
-(when-broken texinfo-format-uref
- (fmakunbound 'texinfo-format-uref))
-(defun-maybe texinfo-format-uref ()
+(ptexinfmt-defun-if-broken texinfo-format-uref ()
"Format URL and optional URL-TITLE.
Insert ` ... ' around URL if no URL-TITLE argument;
otherwise, insert URL-TITLE followed by URL in parentheses."
;; @inforef
(put 'inforef 'texinfo-format 'texinfo-format-inforef)
-(defun-maybe texinfo-format-inforef ()
+(ptexinfmt-defun-if-void texinfo-format-inforef ()
(let ((args (texinfo-format-parse-args)))
(texinfo-discard-command)
(if (nth 1 args)
;;; New command definition
;; @alias NEW=EXISTING
(put 'alias 'texinfo-format 'texinfo-alias)
-(defun-maybe texinfo-alias ()
+(ptexinfmt-defun-if-void texinfo-alias ()
(let ((start (1- (point)))
args)
(skip-chars-forward " ")
(texinfo-discard-command))))
\f
+;;; Indent
+;; @exampleindent INDENT (makeinfo 4.0 or later)
+
+;; @paragraphindent INDENT (makeinfo 4.0 or later)
+;; INDENT: asis, 0, n
+
+;; @firstparagraphindent WORD (makeinfo 4.6 or later)
+;; WORD: none, insert
+
+
+\f
;;; Special
-;; @image{FILENAME, [WIDTH], [HEIGHT]}
+;; @image{FILENAME [, WIDTH] [, HEIGHT]}
(put 'image 'texinfo-format 'texinfo-format-image)
-(defun-maybe texinfo-format-image ()
+(ptexinfmt-defun-if-void texinfo-format-image ()
;; I don't know makeinfo parse FILENAME.
(let ((args (texinfo-format-parse-args))
filename)
(message "Reading included file: %s...done" filename)))
-;; @exampleindent
-
-
\f
;;; @multitable ... @end multitable
-(defvar-maybe texinfo-extra-inter-column-width 0
+(ptexinfmt-defvar-if-void texinfo-extra-inter-column-width 0
"*Number of extra spaces between entries (columns) in @multitable.")
-(defvar-maybe texinfo-multitable-buffer-name "*multitable-temporary-buffer*")
-(defvar-maybe texinfo-multitable-rectangle-name "texinfo-multitable-temp-")
+(ptexinfmt-defvar-if-void texinfo-multitable-buffer-name
+ "*multitable-temporary-buffer*")
+(ptexinfmt-defvar-if-void texinfo-multitable-rectangle-name
+ "texinfo-multitable-temp-")
;; These commands are defined in texinfo.tex for printed output.
(put 'multitableparskip 'texinfo-format 'texinfo-discard-line-with-args)
(put 'multitable 'texinfo-format 'texinfo-multitable)
-(defun-maybe texinfo-multitable ()
+(ptexinfmt-defun-if-void texinfo-multitable ()
"Produce multi-column tables."
;; This function pushes information onto the `texinfo-stack'.
(texinfo-discard-line-with-args))
(put 'multitable 'texinfo-end 'texinfo-end-multitable)
-(defun-maybe texinfo-end-multitable ()
+(ptexinfmt-defun-if-void texinfo-end-multitable ()
"Discard the @end multitable line and pop the stack of multitable."
(texinfo-discard-command)
(texinfo-pop-stack 'multitable))
-(when-broken texinfo-multitable-widths
- (fmakunbound 'texinfo-multitable-widths))
-
-(defun-maybe texinfo-multitable-widths ()
+(ptexinfmt-defun-if-broken texinfo-multitable-widths ()
"Return list of widths of each column in a multi-column table."
(let (texinfo-multitable-width-list)
;; Fractions format:
((looking-at "@columnfractions")
(forward-word 1)
(while (not (eolp))
- (setq texinfo-multitable-width-list
- (cons
- (truncate
- (1-
- (* fill-column (read (get-buffer (current-buffer))))))
- texinfo-multitable-width-list))))
+ (setq texinfo-multitable-width-list
+ (cons
+ (truncate
+ (1-
+ (* fill-column (read (get-buffer (current-buffer))))))
+ texinfo-multitable-width-list))))
;;
;; Case 2: {Column 1 template} {Column 2} {Column 3 example}
((looking-at "{")
(let ((start-of-templates (point)))
- (while (not (eolp))
- (skip-chars-forward " \t")
- (let* ((start-of-template (1+ (point)))
- (end-of-template
- ;; forward-sexp works with braces in Texinfo mode
- (progn (forward-sexp 1) (1- (point)))))
- (setq texinfo-multitable-width-list
- (cons (- (progn (goto-char end-of-template) (current-column))
- (progn (goto-char start-of-template) (current-column)))
- texinfo-multitable-width-list))
- ;; Remove carriage return from within a template, if any.
- ;; This helps those those who want to use more than
- ;; one line's worth of words in @multitable line.
- (narrow-to-region start-of-template end-of-template)
- (goto-char (point-min))
- (while (search-forward "
-" nil t)
- (delete-char -1))
- (goto-char (point-max))
- (widen)
- (forward-char 1)))))
+ (while (not (eolp))
+ (skip-chars-forward " \t")
+ (let* ((start-of-template (1+ (point)))
+ (end-of-template
+ ;; forward-sexp works with braces in Texinfo mode
+ (progn (forward-sexp 1) (1- (point)))))
+ (setq texinfo-multitable-width-list
+ (cons (- (progn
+ (goto-char end-of-template)
+ (current-column))
+ (progn
+ (goto-char start-of-template)
+ (current-column)))
+ texinfo-multitable-width-list))
+ ;; Remove carriage return from within a template, if any.
+ ;; This helps those those who want to use more than
+ ;; one line's worth of words in @multitable line.
+ (narrow-to-region start-of-template end-of-template)
+ (goto-char (point-min))
+ (while (search-forward "\n" nil t)
+ (delete-char -1))
+ (goto-char (point-max))
+ (widen)
+ (forward-char 1)))))
;;
;; Case 3: Trouble
(t
- (error
- "You probably need to specify column widths for @multitable correctly")))
+ (error "\
+You probably need to specify column widths for @multitable correctly")))
;; Check whether columns fit on page.
(let ((desired-columns
- (+
- ;; between column spaces
- (length texinfo-multitable-width-list)
- ;; additional between column spaces, if any
- texinfo-extra-inter-column-width
- ;; sum of spaces for each entry
- (apply '+ texinfo-multitable-width-list))))
+ (+
+ ;; between column spaces
+ (length texinfo-multitable-width-list)
+ ;; additional between column spaces, if any
+ texinfo-extra-inter-column-width
+ ;; sum of spaces for each entry
+ (apply '+ texinfo-multitable-width-list))))
(if (> desired-columns fill-column)
- (error
- (format
- "Multi-column table width, %d chars, is greater than page width, %d chars."
- desired-columns fill-column))))
+ (error (format "\
+Multi-column table width, %d chars, is greater than page width, %d chars."
+ desired-columns fill-column))))
texinfo-multitable-width-list))
;; @item A1 @tab A2 @tab A3
-(defun-maybe texinfo-multitable-extract-row ()
+(ptexinfmt-defun-if-void texinfo-multitable-extract-row ()
"Return multitable row, as a string.
End of row is beginning of next @item or beginning of @end.
Cells within rows are separated by @tab."
(skip-chars-forward " \t")
(let* ((start (point))
- (end (progn
- (re-search-forward "@item\\|@end")
- (match-beginning 0)))
- (row (progn (goto-char end)
- (skip-chars-backward " ")
- ;; remove whitespace at end of argument
- (delete-region (point) end)
- (buffer-substring start (point)))))
+ (end (progn
+ (re-search-forward "@item\\|@end")
+ (match-beginning 0)))
+ (row (progn (goto-char end)
+ (skip-chars-backward " ")
+ ;; remove whitespace at end of argument
+ (delete-region (point) end)
+ (buffer-substring start (point)))))
(delete-region texinfo-command-start end)
row))
-(when-broken texinfo-multitable-item
- (fmakunbound 'texinfo-multitable-item))
-
(put 'multitable 'texinfo-item 'texinfo-multitable-item)
-(defun-maybe texinfo-multitable-item ()
+(ptexinfmt-defun-if-void texinfo-multitable-item ()
"Format a row within a multicolumn table.
Cells in row are separated by @tab.
Widths of cells are specified by the arguments in the @multitable line.
All cells are made to be the same height.
This command is executed when texinfmt sees @item inside @multitable."
(let ((original-buffer (current-buffer))
- (table-widths (reverse (car (cdr (car texinfo-stack)))))
- (existing-fill-column fill-column)
- start
- end
- (table-column 0)
- (table-entry-height 0)
- ;; unformatted row looks like: A1 @tab A2 @tab A3
- ;; extract-row command deletes the source line in the table.
- (unformated-row (texinfo-multitable-extract-row)))
+ (table-widths (reverse (car (cdr (car texinfo-stack)))))
+ (existing-fill-column fill-column)
+ start
+ end
+ (table-column 0)
+ (table-entry-height 0)
+ ;; unformatted row looks like: A1 @tab A2 @tab A3
+ ;; extract-row command deletes the source line in the table.
+ (unformated-row (texinfo-multitable-extract-row)))
;; Use a temporary buffer
(set-buffer (get-buffer-create texinfo-multitable-buffer-name))
(delete-region (point-min) (point-max))
(insert unformated-row)
(goto-char (point-min))
;; 1. Check for correct number of @tab in line.
- (let ((tab-number 1)) ; one @tab between two columns
+ (let ((tab-number 1)) ;; one @tab between two columns
(while (search-forward "@tab" nil t)
- (setq tab-number (1+ tab-number)))
+ (setq tab-number (1+ tab-number)))
(if (/= tab-number (length table-widths))
- (error "Wrong number of @tab's in a @multitable row")))
+ (error "Wrong number of @tab's in a @multitable row")))
(goto-char (point-min))
;; 2. Format each cell, and copy to a rectangle
;; buffer looks like this: A1 @tab A2 @tab A3
(while (not (eobp))
(setq start (point))
(setq end (save-excursion
- (if (search-forward "@tab" nil 'move)
- ;; Delete the @tab command, including the @-sign
- (delete-region
- (point)
- (progn (forward-word -1) (1- (point)))))
- (point)))
+ (if (search-forward "@tab" nil 'move)
+ ;; Delete the @tab command, including the @-sign
+ (delete-region
+ (point)
+ (progn (forward-word -1) (1- (point)))))
+ (point)))
;; Set fill-column *wider* than needed to produce inter-column space
(setq fill-column (+ 1
- texinfo-extra-inter-column-width
- (nth table-column table-widths)))
+ texinfo-extra-inter-column-width
+ (nth table-column table-widths)))
(narrow-to-region start end)
;; Remove whitespace before and after entry.
(skip-chars-forward " ")
(delete-region (point) (save-excursion (end-of-line) (point)))
;; Temorarily set texinfo-stack to nil so texinfo-format-scan
;; does not see an unterminated @multitable.
- (let (texinfo-stack) ; nil
- (texinfo-format-scan))
- (let (fill-prefix) ; no fill prefix
- (fill-region (point-min) (point-max)))
+ (let (texinfo-stack) ;; nil
+ (texinfo-format-scan))
+ (let (fill-prefix) ;; no fill prefix
+ (fill-region (point-min) (point-max)))
(setq table-entry-height
- (max table-entry-height (count-lines (point-min) (point-max))))
+ (max table-entry-height (count-lines (point-min) (point-max))))
;; 3. Move point to end of bottom line, and pad that line to fill column.
(goto-char (point-min))
(forward-line (1- table-entry-height))
- (let* ((beg (point)) ; beginning of line
- ;; add one more space for inter-column spacing
- (needed-whitespace
- (1+
+ (let* ((beg (point)) ;; beginning of line
+ ;; add one more space for inter-column spacing
+ (needed-whitespace
+ (1+
(- fill-column
- (progn (end-of-line) (current-column)))))) ; end of existing line
- (insert (make-string
- (if (> needed-whitespace 0) needed-whitespace 1)
- ? )))
+ (progn
+ (end-of-line)
+ (current-column)))))) ;; end of existing line
+ (insert (make-string
+ (if (> needed-whitespace 0) needed-whitespace 1)
+ ? )))
;; now, put formatted cell into a rectangle
(set (intern (concat texinfo-multitable-rectangle-name
- (int-to-string table-column)))
- (extract-rectangle (point-min) (point)))
+ (int-to-string table-column)))
+ (extract-rectangle (point-min) (point)))
(delete-region (point-min) (point))
(goto-char (point-max))
(setq table-column (1+ table-column))
(widen))
;; 4. Add extra lines to rectangles so all are of same height
(let ((total-number-of-columns table-column)
- (column-number 0)
- here)
+ (column-number 0)
+ here)
(while (> table-column 0)
- (let ((this-rectangle (int-to-string table-column)))
- (while (< (length this-rectangle) table-entry-height)
- (setq this-rectangle (append this-rectangle '("")))))
- (setq table-column (1- table-column)))
+ (let ((this-rectangle (int-to-string table-column)))
+ (while (< (length this-rectangle) table-entry-height)
+ (setq this-rectangle (append this-rectangle '("")))))
+ (setq table-column (1- table-column)))
;; 5. Insert formatted rectangles in original buffer
(switch-to-buffer original-buffer)
(open-line table-entry-height)
(while (< column-number total-number-of-columns)
- (setq here (point))
- (insert-rectangle
- (eval (intern
- (concat texinfo-multitable-rectangle-name
- (int-to-string column-number)))))
- (goto-char here)
- (end-of-line)
- (setq column-number (1+ column-number))))
+ (setq here (point))
+ (insert-rectangle
+ (eval (intern
+ (concat texinfo-multitable-rectangle-name
+ (int-to-string column-number)))))
+ (goto-char here)
+ (end-of-line)
+ (setq column-number (1+ column-number))))
(kill-buffer texinfo-multitable-buffer-name)
(setq fill-column existing-fill-column)))
\f
-(when-broken texinfo-format-printindex
- (fmakunbound 'texinfo-format-printindex))
-
-(defun-maybe texinfo-format-printindex ()
+(ptexinfmt-defun-if-broken texinfo-format-printindex ()
(let ((indexelts (symbol-value
- (cdr (assoc (texinfo-parse-arg-discard)
- texinfo-indexvar-alist))))
- opoint)
+ (cdr (assoc (texinfo-parse-arg-discard)
+ texinfo-indexvar-alist))))
+ opoint)
(insert "\n* Menu:\n\n")
(setq opoint (point))
(texinfo-print-index nil indexelts)
(if (memq system-type '(vax-vms windows-nt ms-dos))
- (texinfo-sort-region opoint (point))
+ (texinfo-sort-region opoint (point))
(shell-command-on-region opoint (point) "sort -fd" 1))))
(provide 'ptexinfmt)
+2003-07-12 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-vars.el (wl-thread-indent-level, wl-thread-*-str): Choose
+ default values along the value of wl-on-mule.
+ (from Tatsuya Kinoshita <tats@vega.ocn.ne.jp> [wl-en:421])
+ * wl-vars.el (wl-highlight-thread-indent-string-regexp): Remove.
+ It is not used anywhere.
+
+2003-06-16 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-summary.el (wl-summary-print-destination): Keep position.
+ (wl-summary-cursor-move-surface): Keep horizontal position.
+
+2003-05-30 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-draft.el (wl-draft-send-mail-with-smtp): Catch quitting and
+ write sendlog.
+
+2003-05-28 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-summary.el (wl-summary-goto-folder-subr): Don't restrict
+ `wl-summary-highlight'.
+
+2003-05-26 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-highlight.el (wl-highlight-summary-current-line): Remove
+ trivial condition for temp-mark.
+
+2003-05-24 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-message.el (wl-message-buffer-cache-add): Create new buffer
+ when it hits killed buffer.
+
+2003-05-12 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-draft.el, wl-expire.el, wl-mime.el, wl-summary.el, wl-util.el
+ * wl-news.el.in: `message' and `error' take format string.
+
+2003-05-11 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-folder (wl-folder-insert-entity): Display a message,
+ `...done', when the work finish.
+ (from Tatsuya Kinoshita <tats@vega.ocn.ne.jp> [wl:10866])
+
+2003-05-04 Hiroya Murata <lapis-lazuli@pop06.odn.ne.jp>
+
+ * wl-message.el (wl-message-redisplay): Remove unused local
+ variables (Reported by NAKAJIMA Mikio <minakaji@namazu.org>).
+
+2003-04-30 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-summary.el (wl-summary-replace-status-marks): Disable
+ interactive use.
+ (wl-summary-reedit): Check message existence at first.
+ (wl-summary-mark-line): Fix doc, return value is indefinite.
+
+ * wl-highlight.el (wl-highlight-message): Arranged.
+
+ * wl-highlight.el (wl-highlight-summary-current-line): Abolish
+ unused 1st and 2nd arguments. Abolish 3rd argument `temp-too' and
+ check temp-mark by wl-summary-temp-mark always.
+ (wl-highlight-summary): Change accordingly.
+ * wl-summary.el (wl-summary-mark-as-read-all)
+ (wl-summary-delete-cache, wl-summary-set-score-mark)
+ (wl-summary-mark-as-unread, wl-summary-unmark)
+ (wl-summary-mark-line, wl-summary-mark-as-read)
+ (wl-summary-mark-as-important): Ditto.
+
+ * wl-highlight.el (wl-highlight-summary-window): Re-calculate the
+ end of the window if possible.
+ * wl-summary.el (wl-summary-sync-update): Support lazy
+ highlighting.
+ (wl-summary-toggle-disp-msg): Ditto.
+
+2003-04-09 Yoichi NAKAYAMA <yoichi@geiin.org>
+
+ * wl-util.el (wl-as-coding-system): Define for non-mule too.
+
2003-04-05 Hiroya Murata <lapis-lazuli@pop06.odn.ne.jp>
* wl-summary.el (wl-summary-mark-as-important): Fixed the last
smtp-sasl-user-name
(car smtp-sasl-mechanisms)
smtp-server)))
+ (signal (car err) (cdr err)))
+ (quit
+ (wl-draft-write-sendlog 'uncertain 'smtp smtp-server
+ recipients id)
(signal (car err) (cdr err)))))
(wl-draft-set-sent-message 'mail 'sent)
(wl-draft-write-sendlog
"Send the message in the current buffer. Not modified the header fields."
(let (delimline mime-bcc)
(if (and wl-draft-verbose-send mes-string)
- (message mes-string))
+ (message "%s" mes-string))
;; get fcc folders.
(setq delimline (wl-draft-get-header-delimiter t))
(unless wl-draft-fcc-list
(setq wl-draft-verbose-msg
(format "Sending%s and Queuing%s..."
sent-via unplugged-via))
- (message (concat wl-draft-verbose-msg "done")))
+ (message "%sdone" wl-draft-verbose-msg))
(if mes-string
- (message (concat mes-string
- (if sent-via "done" "failed")))))))))
+ (message "%s%s"
+ mes-string
+ (if sent-via "done" "failed"))))))))
(not wl-sent-message-modified)) ;; return value
(defun wl-draft-raw-send (&optional kill-when-done force-pre-hook mes-string)
(wl-draft-verbose-msg nil)
err)
(unwind-protect
- (save-excursion (set-buffer sending-buffer)
+ (save-excursion
+ (set-buffer sending-buffer)
(if (and (not (wl-message-mail-p))
(not (wl-message-news-p)))
(error "No recipient is specified"))
- (expand-abbrev) ; for mail-abbrevs
+ (expand-abbrev) ; for mail-abbrevs
(let ((mime-header-encode-method-alist
(append
'((wl-draft-eword-encode-address-list
)
;;
(if wl-draft-verbose-send
- (message (or mes-string "Sending...")))
+ (message "%s" (or mes-string "Sending...")))
(funcall wl-draft-send-function editing-buffer kill-when-done)
;; Now perform actions on successful sending.
(while mail-send-actions
(error))
(setq mail-send-actions (cdr mail-send-actions)))
(if wl-draft-verbose-send
- (message (concat (or wl-draft-verbose-msg
- mes-string "Sending...")
- "done"))))
+ (message "%sdone"
+ (or wl-draft-verbose-msg
+ mes-string
+ "Sending..."))))
;; kill sending buffer, anyway.
(and (buffer-live-p sending-buffer)
(kill-buffer sending-buffer))))))
(wl-expire-delete-reserve-marked-msgs-from-list
delete-list (elmo-msgdb-get-mark-alist msgdb))))
(when delete-list
- (let ((mess
- (format "Expiring (delete) %s msgs..."
- (length delete-list))))
- (message "%s" mess)
- (if (elmo-folder-delete-messages folder
- delete-list)
- (progn
- (elmo-msgdb-delete-msgs (elmo-folder-msgdb folder)
- delete-list)
- (wl-expire-append-log
- (elmo-folder-name-internal folder)
- delete-list nil 'delete)
- (message "%s" (concat mess "done")))
- (error (concat mess "failed!")))))
+ (let ((mess
+ (format "Expiring (delete) %s msgs..."
+ (length delete-list))))
+ (message "%s" mess)
+ (if (elmo-folder-delete-messages folder
+ delete-list)
+ (progn
+ (elmo-msgdb-delete-msgs (elmo-folder-msgdb folder)
+ delete-list)
+ (wl-expire-append-log
+ (elmo-folder-name-internal folder)
+ delete-list nil 'delete)
+ (message "%sdone" mess))
+ (error "%sfailed!" mess))))
(cons delete-list (length delete-list)))
(defun wl-expire-refile (folder refile-list msgdb dst-folder
refile-list
(elmo-folder-name-internal dst-folder)
(if copy 'copy 'move))
- (message "%s" (concat mess "done")))
- (error (concat mess "failed!"))))))
+ (message "%sdone" mess))
+ (error "%sfailed!" mess)))))
(cons refile-list (length refile-list))))
(defun wl-expire-refile-with-copy-reserve-msg
(elmo-folder-name-internal dst-folder)
(length refile-list))))
(if ret-val
- (message (concat mes "done"))
- (error (concat mes "failed!")))))
+ (message "%sdone" mes)
+ (error "%sfailed!" mes))))
(cons refile-list copy-len))))
(defun wl-expire-archive-get-folder (src-folder &optional fmt dst-folder-arg)
(wl-expire-delete-reserve-marked-msgs-from-list
hide-list (elmo-msgdb-get-mark-alist msgdb))))
(let ((mess (format "Hiding %s msgs..." (length hide-list))))
- (message mess)
+ (message "%s" mess)
(elmo-msgdb-delete-msgs (elmo-folder-msgdb folder) hide-list)
(elmo-msgdb-append-to-killed-list folder hide-list)
(elmo-folder-commit folder)
- (message (concat mess "done"))
+ (message "%sdone" mess)
(cons hide-list (length hide-list))))
(defsubst wl-expire-folder-p (entity)
(elmo-display-progress
'wl-folder-insert-entity "Inserting group %s..."
(/ (* i 100) len) (car entity)))
- (setq flist (cdr flist))))
+ (setq flist (cdr flist)))
+ (if (> len 0)
+ (message "Inserting group %s...done" (car entity))))
(save-excursion
(goto-char group-name-end)
(delete-region (point) (save-excursion (end-of-line)
(if wl-use-highlight-mouse-line
(put-text-property 0 (length line) 'mouse-face 'highlight line)))
-(defun wl-highlight-summary-current-line (&optional smark regexp temp-too)
+(defun wl-highlight-summary-current-line ()
(interactive)
(save-excursion
(let ((inhibit-read-only t)
(case-fold-search nil) temp-mark status-mark
(deactivate-mark nil)
- fregexp fsymbol bol eol matched thread-top looked-at dest ds)
+ fsymbol bol eol matched thread-top looked-at dest ds)
(end-of-line)
(setq eol (point))
(beginning-of-line)
(setq bol (point))
- (if smark
- (setq status-mark smark)
- (setq status-mark (wl-summary-persistent-mark)))
- (when temp-too
- (setq temp-mark (wl-summary-temp-mark))
- (cond
- ((string= temp-mark "*")
- (setq fsymbol 'wl-highlight-summary-temp-face))
- ((string= temp-mark "D")
- (setq fsymbol 'wl-highlight-summary-deleted-face))
- ((string= temp-mark "O")
- (setq fsymbol 'wl-highlight-summary-copied-face
- dest t))
- ((string= temp-mark "o")
- (setq fsymbol 'wl-highlight-summary-refiled-face
- dest t))))
+ (setq status-mark (wl-summary-persistent-mark))
+ (setq temp-mark (wl-summary-temp-mark))
+ (cond
+ ((string= temp-mark "*")
+ (setq fsymbol 'wl-highlight-summary-temp-face))
+ ((string= temp-mark "D")
+ (setq fsymbol 'wl-highlight-summary-deleted-face))
+ ((string= temp-mark "O")
+ (setq fsymbol 'wl-highlight-summary-copied-face
+ dest t))
+ ((string= temp-mark "o")
+ (setq fsymbol 'wl-highlight-summary-refiled-face
+ dest t)))
(if (not fsymbol)
(cond
((and (string= temp-mark wl-summary-score-over-mark)
(< (point) end))
(when (or (not lazy)
(null (get-text-property (point) 'face)))
- (wl-highlight-summary-current-line nil nil
- (or wl-summary-lazy-highlight
- wl-summary-scored)))
+ (wl-highlight-summary-current-line))
(forward-line 1))
(unless wl-summary-lazy-highlight
(message "Highlighting...done")))))
(defun wl-highlight-summary-window (&optional win beg)
"Highlight summary window.
This function is defined for `window-scroll-functions'"
- (if wl-summary-highlight
- (with-current-buffer (window-buffer win)
- (when (eq major-mode 'wl-summary-mode)
- (wl-highlight-summary (window-start win)
- (window-end win)
- 'lazy)
- (set-buffer-modified-p nil)))))
+ (when wl-summary-highlight
+ (with-current-buffer (window-buffer win)
+ (when (eq major-mode 'wl-summary-mode)
+ (let ((start (window-start win))
+ (end (condition-case nil
+ (window-end win t) ;; old emacsen doesn't support 2nd arg.
+ (error (window-end win)))))
+ (wl-highlight-summary start
+ end
+ 'lazy))
+ (set-buffer-modified-p nil)))))
(defun wl-highlight-headers (&optional for-draft)
(let ((beg (point-min))
(real-end end)
current beg
e p hend)
- (if too-big
- nil
+ (unless too-big
(save-excursion
(save-restriction
(widen)
(goto-char start)
(while (and (not body-only)
(not (eobp)))
- (cond
- ((looking-at "^[^ \t\n:]+[ \t]*:")
- (put-text-property (match-beginning 0) (match-end 0)
- 'face 'wl-highlight-message-headers)
- (setq p (match-end 0))
- (setq hend (save-excursion (std11-field-end end)))
- (cond
- ((catch 'match
- (let ((regexp-alist wl-highlight-message-header-alist))
- (while regexp-alist
- (when (save-match-data
- (looking-at (caar regexp-alist)))
- (put-text-property p hend 'face
- (cdar regexp-alist))
- (throw 'match t))
- (setq regexp-alist (cdr regexp-alist)))
- (throw 'match nil))))
- (t
- (put-text-property
- p hend 'face 'wl-highlight-message-header-contents)))
- (goto-char hend))
- ;; ignore non-header field name lines
- (t (forward-line 1))))))
+ (if (looking-at "^[^ \t\n:]+[ \t]*:")
+ (progn
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'face 'wl-highlight-message-headers)
+ (setq p (match-end 0))
+ (setq hend (save-excursion (std11-field-end end)))
+ (or (catch 'match
+ (let ((regexp-alist wl-highlight-message-header-alist))
+ (while regexp-alist
+ (when (save-match-data
+ (looking-at (caar regexp-alist)))
+ (put-text-property p hend 'face
+ (cdar regexp-alist))
+ (throw 'match t))
+ (setq regexp-alist (cdr regexp-alist)))
+ (throw 'match nil)))
+ (put-text-property
+ p hend 'face 'wl-highlight-message-header-contents))
+ (goto-char hend))
+ ;; ignore non-header field name lines
+ (forward-line 1)))))
(let (prefix prefix-face-alist pair end)
(while (not (eobp))
(cond
(buf nil))
(if (< len wl-message-buffer-cache-size)
(setq buf (wl-message-buffer-create))
- (setq buf (wl-message-buffer-cache-buffer-get
- (nth (1- len) wl-message-buffer-cache)))
- (setcdr (nthcdr (- len 2) wl-message-buffer-cache) nil))
+ (let ((entry (nth (1- len) wl-message-buffer-cache)))
+ (if (buffer-live-p
+ (setq buf (wl-message-buffer-cache-buffer-get entry)))
+ (setcdr (nthcdr (- len 2) wl-message-buffer-cache) nil)
+ (setq wl-message-buffer-cache (delq entry wl-message-buffer-cache))
+ (setq buf (wl-message-buffer-create)))))
(setq wl-message-buffer-cache
(cons (wl-message-buffer-cache-entry-make key buf)
wl-message-buffer-cache))
message-buf
strategy entity
cache-used
- header-end real-fld-num summary-win delim)
+ summary-win delim)
(setq buffer-read-only nil)
(setq cache-used (wl-message-buffer-display
folder number flag force-reload))
(if (functionp f)
(funcall f new-buf)
(message
- (format
- "Sorry, following method for %s is not implemented yet."
- mode))
+ "Sorry, following method for %s is not implemented yet."
+ mode)
))
)))
(when wl-highlight-body-too
(wl-highlight-body))
(run-hooks 'wl-draft-preview-message-hook))
- (message recipients-message)))
+ (message "%s" recipients-message)))
(defalias 'wl-draft-caesar-region 'mule-caesar-region)
(setq folder
(wl-summary-read-folder wl-default-folder "to append ")))
(or (wl-news-send-news wl-news-buffer-oldest-version wl-news-lang folder)
- (error
- (format "Cannot append NEWS mail to %s" folder))))))
+ (error "Cannot append NEWS mail to %s" folder)))))
(defun wl-news-force-exit ()
(interactive)
If ARG is non-nil, Supersedes message"
(interactive "P")
(wl-summary-toggle-disp-msg 'off)
- (if arg
- (wl-summary-supersedes-message)
- (if (string= (wl-summary-buffer-folder-name) wl-draft-folder)
- (when (wl-summary-message-number)
- (wl-draft-reedit (wl-summary-message-number))
- (if (wl-message-news-p)
- (mail-position-on-field "Newsgroups")
- (mail-position-on-field "To")))
- (wl-draft-edit-string (wl-summary-message-string)))))
+ (cond
+ ((not (wl-summary-message-number))
+ (message "No message."))
+ (arg
+ (wl-summary-supersedes-message))
+ ((string= (wl-summary-buffer-folder-name) wl-draft-folder)
+ (wl-draft-reedit (wl-summary-message-number))
+ (if (wl-message-news-p)
+ (mail-position-on-field "Newsgroups")
+ (mail-position-on-field "To")))
+ (t
+ (wl-draft-edit-string (wl-summary-message-string)))))
(defun wl-summary-resend-bounced-mail ()
"Re-mail the current message.
;; New mark and unread-uncached mark
(insert new-mark)
(if wl-summary-highlight
- (wl-highlight-summary-current-line nil nil t)))
+ (wl-highlight-summary-current-line)))
(forward-line 1)))
(wl-folder-update-unread (wl-summary-buffer-folder-name) 0)
(setq wl-summary-buffer-unread-count 0)
number
'message-id)))
(if wl-summary-highlight
- (wl-highlight-summary-current-line nil nil t))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil)))))
(defun wl-summary-resume-cache-status ()
(defun wl-summary-replace-status-marks (before after)
"Replace the status marks on buffer."
- (interactive)
(save-excursion
(goto-char (point-min))
(let ((inhibit-read-only t)
(while diffs
(wl-summary-mark-as-unread (car diffs) 'no-folder 'no-modeline)
(setq diffs (cdr diffs)))
- (if (interactive-p) (message mes)))))
+ (if (interactive-p) (message "%s" mes)))))
(defun wl-summary-sync-update (&optional unset-cursor sync-all no-check)
"Update the summary view to the newest folder status."
(goto-char (point-max))
(forward-line -1))
(if (and wl-summary-highlight
+ (not wl-summary-lazy-highlight)
(not (get-text-property (point) 'face)))
(save-excursion
(forward-line (- 0
(delete-backward-char 1)
(insert mark)
(if wl-summary-highlight
- (wl-highlight-summary-current-line nil nil t))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil)))))
(defun wl-summary-get-score-mark (msg-num)
(wl-summary-rescan))
(wl-summary-toggle-disp-msg (if wl-summary-buffer-disp-msg 'on 'off))
(unless (and reuse-buf keep-cursor)
- ;(setq hilit wl-summary-highlight)
(unwind-protect
- (let ((wl-summary-highlight (if reuse-buf wl-summary-highlight))
- (wl-use-scoring
+ (let ((wl-use-scoring
(if (or scoring interactive) wl-use-scoring)))
(if (and (not scan-type)
interactive
(forward-line -1)
(wl-summary-prev))
(setq retval 'more-next))
- ;(setq wl-summary-highlight hilit)
(if (and wl-summary-highlight
(not wl-summary-lazy-highlight)
(not reuse-buf))
wl-summary-alike-hashtb)))
(defun wl-summary-insert-headers (folder func mime-decode)
- (let ((entities (elmo-folder-list-message-entities folder))
+ (let ((entities (elmo-folder-list-message-entities folder nil t))
ov this last alike)
(buffer-disable-undo (current-buffer))
(make-local-variable 'wl-summary-alike-hashtb)
(wl-summary-toggle-disp-msg 'off)
(setq wl-message-buffer nil))
(set-buffer-modified-p nil)
- (message (concat "Executing...done"
- (if (> refile-failures 0)
- (format " (%d refiling failed)" refile-failures)
- "")
- (if (> copy-failures 0)
- (format " (%d copying failed)" copy-failures)
- "")
- "."))))))
+ (message "Executing...done%s%s"
+ (if (> refile-failures 0)
+ (format " (%d refiling failed)" refile-failures)
+ "")
+ (if (> copy-failures 0)
+ (format " (%d copying failed)" copy-failures)
+ ""))))))
(defun wl-summary-erase (&optional number)
"Erase message actually, without moving it to trash."
(defun wl-summary-print-destination (msg-num folder)
"Print refile destination on line."
(wl-summary-remove-destination)
- (let ((inhibit-read-only t)
- (folder (copy-sequence folder))
- (buffer-read-only nil)
- len rs re c)
- (setq len (string-width folder))
- (if (< len 1) ()
- ;;(end-of-line)
- (beginning-of-line)
- (search-forward "\r")
- (forward-char -1)
- (setq re (point))
- (setq c 0)
- (while (< c len)
+ (save-excursion
+ (let ((inhibit-read-only t)
+ (folder (copy-sequence folder))
+ (buffer-read-only nil)
+ len rs re c)
+ (setq len (string-width folder))
+ (if (< len 1) ()
+ ;;(end-of-line)
+ (beginning-of-line)
+ (search-forward "\r")
(forward-char -1)
- (setq c (+ c (char-width (following-char)))))
- (and (> c len) (setq folder (concat " " folder)))
- (setq rs (point))
- (when wl-summary-width
+ (setq re (point))
+ (setq c 0)
+ (while (< c len)
+ (forward-char -1)
+ (setq c (+ c (char-width (following-char)))))
+ (and (> c len) (setq folder (concat " " folder)))
+ (setq rs (point))
+ (when wl-summary-width
(put-text-property rs re 'invisible t))
- (put-text-property rs re 'wl-summary-destination t)
- (goto-char re)
- (wl-highlight-refile-destination-string folder)
- (insert folder)
- (set-buffer-modified-p nil))))
+ (put-text-property rs re 'wl-summary-destination t)
+ (goto-char re)
+ (wl-highlight-refile-destination-string folder)
+ (insert folder)
+ (set-buffer-modified-p nil)))))
(defsubst wl-summary-get-mark (number)
"Return a temporal mark of message specified by NUMBER."
(buffer-read-only nil)
visible
msg-num
- cur-mark
- score-mark)
+ cur-mark)
(if number
(setq visible (wl-summary-jump-to-msg number))
(setq visible t))
;; Delete mark on buffer.
(when visible
(setq cur-mark (wl-summary-temp-mark))
- (if (string= cur-mark " ")
- ()
+ (unless (string= cur-mark " ")
(delete-backward-char 1)
(or number
(setq number (wl-summary-message-number)))
- (if (setq score-mark (wl-summary-get-score-mark number))
- (insert score-mark)
- (insert " ")))
+ (insert (or (wl-summary-get-score-mark number)
+ " ")))
(if (or (string= cur-mark "o")
(string= cur-mark "O"))
(wl-summary-remove-destination))
(if wl-summary-highlight
- (wl-highlight-summary-current-line nil nil score-mark))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil))
;; Remove from temporal mark structure.
(and number
(buffer-substring (- (point) 1) (point)))
(defun wl-summary-mark-line (mark)
- "Put MARK on current line. Return message number."
+ "Put MARK on current line."
(save-excursion
(beginning-of-line)
(let ((inhibit-read-only t)
(delete-backward-char 1)
(insert mark)
(if wl-summary-highlight
- (wl-highlight-summary-current-line nil nil t))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil))))
(defun wl-summary-target-mark-delete ()
(delete-backward-char 1)
(insert (or cur-mark " ")))
(when wl-summary-highlight
- (wl-highlight-summary-current-line nil nil t))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil))))
(defsubst wl-summary-mark-as-read-internal (inverse
(delete-backward-char 1)
(insert (or new-mark " ")))
(if (and visible wl-summary-highlight)
- (wl-highlight-summary-current-line nil nil t))
+ (wl-highlight-summary-current-line))
(set-buffer-modified-p nil))
(unless inverse
(if (member (elmo-message-mark folder number)
(elmo-msgdb-global-mark-set message-id
elmo-msgdb-important-mark)))))
(if (and visible wl-summary-highlight)
- (wl-highlight-summary-current-line nil nil t))))
+ (wl-highlight-summary-current-line))))
(set-buffer-modified-p nil)
number)
(select-window (get-buffer-window cur-buf))
(run-hooks 'wl-summary-toggle-disp-off-hook))
;;; (switch-to-buffer cur-buf)
- )))))
+ )))
+ (when wl-summary-lazy-highlight
+ (wl-highlight-summary-window))))
(defun wl-summary-next-line-content ()
"Show next line of the message."
msgid
(read-from-minibuffer "NNTP Server: ")))
(t
- (message errmsg)
+ (message "%s" errmsg)
nil)))
((or (eq wl-summary-search-via-nntp 'force)
(and
wl-summary-search-via-nntp))
(wl-summary-jump-to-msg-by-message-id-via-nntp msgid))
(t
- (message errmsg)
+ (message "%s" errmsg)
nil))))))
(defun wl-summary-jump-to-msg-by-message-id-via-nntp (&optional id server-spec)
(let ((start (point))
(skip-tmark-regexp (wl-regexp-opt wl-summary-skip-mark-list))
(skip t)
+ (column (current-column))
skip-pmark-regexp goto-next next-entity finfo)
(if (elmo-folder-plugged-p wl-summary-buffer-elmo-folder)
()
(wl-regexp-opt (list " "
elmo-msgdb-unread-cached-mark
elmo-msgdb-important-mark))))
+ (beginning-of-line)
(while (and skip
(not (if downward (eobp) (bobp))))
(if downward
(if (if downward (eobp) (and (bobp) skip)) (setq goto-next t))
(if (or (eobp) (and (bobp) skip))
(goto-char start))
-
- (beginning-of-line)
+ (move-to-column column)
(if (not goto-next)
(if wl-summary-buffer-disp-msg
(cmd (if (featurep 'xemacs)
(event-to-character last-command-event)
(string-to-char (format "%s" (this-command-keys))))))
- (message mes-string)
+ (message "%s" mes-string)
(setq key (car (setq keve (wl-read-event-char))))
(if (or (equal key ?\ )
(and cmd
(put 'wl-as-mime-charset 'lisp-indent-function 1)
(eval-and-compile
- (if wl-on-mule3
- (defmacro wl-as-coding-system (coding-system &rest body)
- (` (let ((coding-system-for-read (, coding-system))
- (coding-system-for-write (, coding-system)))
- (,@ body))))
- (if wl-on-mule
- (defmacro wl-as-coding-system (coding-system &rest body)
- (` (let ((file-coding-system-for-read (, coding-system))
- (file-coding-system (, coding-system)))
- (,@ body)))))))
+ (cond
+ (wl-on-mule3
+ (defmacro wl-as-coding-system (coding-system &rest body)
+ (` (let ((coding-system-for-read (, coding-system))
+ (coding-system-for-write (, coding-system)))
+ (,@ body)))))
+ (wl-on-mule
+ (defmacro wl-as-coding-system (coding-system &rest body)
+ (` (let ((file-coding-system-for-read (, coding-system))
+ (file-coding-system (, coding-system)))
+ (,@ body)))))
+ (t
+ (defmacro wl-as-coding-system (coding-system &rest body)
+ (` (progn (,@ body)))))))
(defmacro wl-as-mime-charset (mime-charset &rest body)
(` (wl-as-coding-system (mime-charset-to-coding-system (, mime-charset))
(defvar wl-modeline-biff-state-off wl-biff-state-indicator-off)
;; Advanced thread view.
-(defvar wl-thread-indent-level 1
+(defvar wl-thread-indent-level (if wl-on-mule 1 2)
"*Indent level for thread.")
-(defvar wl-thread-have-younger-brother-str "\e$B(2\e(B"
+(defvar wl-thread-have-younger-brother-str (if wl-on-mule "\e$B(2\e(B" "+")
"*A string for thread branch line. It should contain one character.")
-(defvar wl-thread-youngest-child-str "\e$B(1\e(B"
+(defvar wl-thread-youngest-child-str (if wl-on-mule "\e$B(1\e(B" "+")
"*A string for thread branch line. It should contain one character.")
-(defvar wl-thread-vertical-str "\e$B(-\e(B"
+(defvar wl-thread-vertical-str (if wl-on-mule "\e$B(-\e(B" "|")
"*A string for thread branch line. It should contain one character.")
-(defvar wl-thread-horizontal-str "\e$B(,\e(B"
+(defvar wl-thread-horizontal-str (if wl-on-mule "\e$B(,\e(B" "-")
"*A string for thread branch line. It should contain one character.")
-(defvar wl-thread-space-str "\e$B!!\e(B"
+(defvar wl-thread-space-str (if wl-on-mule "\e$B!!\e(B" " ")
"*A string for thread branch line. It should contain one character.")
-(defvar wl-highlight-thread-indent-string-regexp "[^[<]*"
- "* A regexp string for thread indent...for highlight.")
-
;; folder icons. filename relative to wl-icon-directory
(defvar wl-opened-group-folder-icon "opened.xpm"
"*Icon file for opened group folder.")