+2002-12-11 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * 2.10.0 - "Venus"
+
2002-11-15 TAKAHASHI Kaoru <kaoru@kaisei.org>
* INSTALL, INSTALL.ja: Update Recommended combination of MIME
Wanderlust NEWS -- User-visible changes in Wanderlust.
+** Changed the way to specify configuration of draft buffer window.
+ You can choose keep, full or split as values of wl-draft-buffer-style
+ and wl-draft-reply-buffer-style.
+
+* Changes in 2.10.0 from 2.8.1.
+
** You can alter the format of summary lines.
Specify format by wl-summary-line-format. If you want to change ones
according to folder names, use wl-folder-summary-line-format-alist.
** Save format for the draft folder has been changed. Messages are encoded
before saved by wl-draft-save.
-** elmo-split is newly established.
+** elmo-split is newly established. It provides a way to split messages
+ according to some rule a la procmail.
** Buffer prefetch works fine now. Messages of the number specified by
wl-message-buffer-prefetch-depth are loaded into buffer in advance.
** The Reference Card (doc/wl-refcard.tex) describes important key bindings.
+** Many bug fixes.
+
* Changes in 2.8.0 from 2.6.1
** Nemacs, Mule 2.3 based on Emacs 19.28 are not supported any longer.
Wanderlust NEWS (\e$BF|K\8lHG\e(B) -- User-visible changes in Wanderlust.
+** \e$B%I%i%U%H%P%C%U%!%&%#%s%I%&$NG[CV$N;XDj$N;EJ}$,JQ99$5$l$^$7$?!#\e(B
+ wl-draft-buffer-style \e$B$H\e(B wl-draft-reply-buffer-style \e$B$K\e(B keep,full,split
+ \e$B$N$$$:$l$+$r;XDj$7$^$9!#\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
wl-summary-line-format \e$B$G=q<0$r@_Dj$G$-$^$9!#%U%)%k%@Kh$K=q<0$rJQ$($?$$\e(B
\e$B>l9g$O\e(B wl-folder-summary-line-format-alist \e$B$rMQ$$$F2<$5$$!#\e(B
** \e$B%I%i%U%H%U%)%k%@$X$NJ]B87A<0$,JQ99$5$l$^$7$?!#\e(Bwl-draft-save \e$B$N:]$K$O\e(B
\e$B%(%s%3!<%I$7$FJ]B8$5$l$^$9!#\e(B
-** elmo-split \e$B$,?7@_$5$l$^$7$?!#\e(B
+** elmo-split \e$B$,?7@_$5$l$^$7$?!#M?$($?%k!<%k$K1h$C$F\e(B procmail \e$BIw$K%a%C%;\e(B
+ \e$B!<%8$r?6$jJ,$1$k$3$H$,$G$-$^$9!#\e(B
** \e$B%P%C%U%!%W%j%U%'%C%A$,<BAu$5$l$^$7$?!#\e(Bwl-message-buffer-prefetch-depth
\e$B$N?t$@$1!"%a%C%;!<%8$r%P%C%U%!$K@hFI$_$7$^$9!#\e(B
** Reference Card (doc/wl-refcard-ja.tex) \e$B$K<g$J%-!<A`:n$rNs5s$7$^$7$?!#\e(B
+** \e$B$=$NB>$$$/$D$+$N=$@5!#\e(B
+
* 2.6.1 \e$B$+$i\e(B 2.8.0 \e$B$X$NJQ99E@\e(B
** Nemacs, Mule 2.3 based on Emacs 19.28 \e$B$O%5%]!<%H$5$l$J$/$J$j$^$7$?!#\e(B
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2002-10-13.14}
+\def\texinfoversion{2002-11-25.11}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
+\message{Basics,}
+\chardef\other=12
+
+% We never want plain's outer \+ definition in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
% Save some parts of plain tex whose names we will redefine.
\let\ptexb=\b
\let\ptexbullet=\bullet
\let\ptexend=\end
\let\ptexequiv=\equiv
\let\ptexexclam=\!
+\let\ptexgtr=>
+\let\ptexhat=^
\let\ptexi=\i
\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexplus=+
\let\ptexrbrace=\}
\let\ptexstar=\*
\let\ptext=\t
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-\message{Basics,}
-\chardef\other=12
-
% If this character appears in an error message or help string, it
% starts a new line in the output.
\newlinechar = `^^J
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
%
\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\ifx\eTeXversion\undefined
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\else
-\def\loggingall{\tracingcommands3 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \tracingscantokens1 \tracingassigns1 \tracingifs1
- \tracinggroups1 \tracingnesting2
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines\maxdimen
}%
-\fi
% 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.
}
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading\singlespaceskip
-}
-
%% Simple single-character @ commands
% @@ prints an @
% to set catcodes according to plain TeX first, to allow for subscripts,
% superscripts, special math chars, etc.
%
-% @math does not do math typesetting in section titles, index
-% entries, and other such contexts where the catcodes are set before
-% @math gets a chance to work. This could perhaps be fixed, but for now
-% at least we can have real math in the main text, where it's needed most.
-%
\let\implicitmath = $%$ font-lock fix
%
% One complication: _ usually means subscripts, but it could also mean
\tex
\mathcode`\_="8000 \mathunderscore
\let\\ = \mathbackslash
+ \mathactive
\implicitmath\finishmath}
\def\finishmath#1{#1\implicitmath\Etex}
+% 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
+ \catcode`> = \active
+ \catcode`+ = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ }
+}
+
% @bullet and @minus need the same treatment as @math, just above.
\def\bullet{\implicitmath\ptexbullet\implicitmath}
\def\minus{\implicitmath-\implicitmath}
\ifx\empty\imagewidth\else width \imagewidth \fi
\ifx\empty\imageheight\else height \imageheight \fi
\ifnum\pdftexversion<13
- #1.pdf%
+ #1.pdf%
\else
{#1.pdf}%
\fi
% \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\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
\let\i=\smartitalic
\let\var=\smartslanted
% \parskip glue -- logically it's part of the @item we just started.
\nobreak \vskip-\parskip
%
- % Stop a page break at the \parskip glue coming up. Unfortunately
+ % Stop a page break at the \parskip glue coming up. (Unfortunately
% we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
+ % \baselineskip glue.) However, if what follows is an environment
+ % such as @example, there will be no \parskip glue; then
+ % the negative vskip we just would cause the example and the item to
+ % crash together. So we use this bizarre value of 10001 as a signal
+ % to \aboveenvbreak to insert \parskip glue after all.
+ % (Possibly there are other commands that could be followed by
+ % @example which need the same treatment, but not section titles; or
+ % maybe section titles are the only special case and they should be
+ % penalty 10001...)
+ \penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
\else
\hangindent = \wd0 % zero if no section number
\unhbox0 #3}%
}%
- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
+ % Add extra space after the heading -- either a line space or a
+ % paragraph space, whichever is more. (Some people like to set
+ % \parskip to large values for some reason.)
+ \nobreak
+ \ifdim\parskip>\normalbaselineskip
+ \kern\parskip
+ \else
+ \kern\normalbaselineskip
+ \fi
+ \nobreak
}
% Make spacing and below environment symmetrical. We use \parskip here
% to help in doing that, since in @example-like environments \parskip
% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
+% start of the next paragraph will insert \parskip.
%
\def\aboveenvbreak{{%
- \ifnum\lastpenalty < 10000
+ % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
+ \ifnum \lastpenalty=10000 \else
\advance\envskipamount by \parskip
\endgraf
\ifdim\lastskip<\envskipamount
\removelastskip
- \penalty-50
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty>10000 \else \penalty-50 \fi
\vskip\envskipamount
\fi
\fi
\inENV % This group ends at the end of the body
\hfuzz = 12pt % Don't be fussy
\sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
\let\par = \lisppar % don't ignore blank lines
\obeylines % each line of input is a line of output
\parskip = 0pt
\def\quotation{%
\begingroup\inENV %This group ends at the end of the @quotation body
{\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
\parindent=0pt
% We have retained a nonzero parskip for the environment, since we're
% doing normal filling. So to avoid extra space below the environment...
%
% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
%
-% [Knuth] p. 344; only we need to do '@' too
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
\def\dospecials{%
- \do\ \do\\\do\@\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+}
%
% [Knuth] p. 380
\def\uncatcodespecials{%
%
% 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 '}'
+% we need not redefine '\', '{' and '}'.
%
% Inspired by LaTeX's verbatim command set [latex.ltx]
%% Include LaTeX hack for completeness -- never know
%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
%% #1|endgroup|def|Everbatim[]|end[verbatim]]
%% |endgroup
+%
\begingroup
\catcode`\ =\active
- \gdef\doverbatim#1@end verbatim{#1\end{verbatim}}
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}%
\endgroup
%
\def\verbatim{%
\newskip\deflastargmargin \deflastargmargin=18pt
\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
+
+% We want ()&[] to print specially on the defun line.
+%
\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\&=\active
+ \catcode`\[=\active \catcode`\]=\active
+}
% Make control sequences which act like normal parenthesis chars.
\let\lparen = ( \let\rparen = )
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we want to allow a
% break after all.
- \ifnum\lastpenalty = 10000 \penalty0 \fi
+ \ifnum\lastpenalty=10000 \penalty0 \fi
\medbreak
%
% Define the \E... end token that this defining construct specifies
\exdentamount=\defbodyindent
}
+% 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.
+ \ifnum\lastpenalty=10000 \penalty1000 \fi
+ %
+ \begingroup\obeylines
+}
+
% Process body of @defun, @deffn, @defmac, etc.
%
\def\defparsebody#1#2#3{%
\parsebodycommon{#1}{#2}{#3}%
- \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
+ \def#2{\defxbodycommon \activeparens \spacesplit#3}%
\catcode61=\active % 61 is `='
\begingroup\obeylines\activeparens
\spacesplit#3%
}
-% #1, #2, #3 are the common arguments (see \defparsebody).
+% #1, #2, #3 are the common arguments (see \parsebodycommon above).
% #4, delimited by the space, is the class name.
%
\def\defmethparsebody#1#2#3#4 {%
\parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
+ \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
\begingroup\obeylines\activeparens
- \spacesplit{#3{#4}}%
+ % The \empty here prevents misinterpretation of a construct such as
+ % @deffn {whatever} {Enharmonic comma}
+ % See comments at \deftpparsebody, although in our case we don't have
+ % to remove the \empty afterwards, since it is empty.
+ \spacesplit{#3{#4}}\empty
}
% Used for @deftypemethod and @deftypeivar.
%
\def\deftypemethparsebody#1#2#3#4 #5 {%
\parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
+ \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
\begingroup\obeylines\activeparens
\spacesplit{#3{#4}{#5}}%
}
%
\def\deftypeopparsebody#1#2#3#4#5 #6 {%
\parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 ##3 {%
- \def#4{##1}%
- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
+ \def#2##1 ##2 ##3 {\def#4{##1}%
+ \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
\begingroup\obeylines\activeparens
\spacesplit{#3{#5}{#6}}%
}
\def\defopparsebody #1#2#3#4#5 {%
\parsebodycommon{#1}{#2}{#3}%
\def#2##1 ##2 {\def#4{##1}%
- \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
+ \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
\begingroup\obeylines\activeparens
\spacesplit{#3{#5}}%
}
%
\def\defvarparsebody #1#2#3{%
\parsebodycommon{#1}{#2}{#3}%
- \def#2{\begingroup\obeylines\spacesplit#3}%
+ \def#2{\defxbodycommon \spacesplit#3}%
\catcode61=\active %
\begingroup\obeylines
\spacesplit#3%
\def\defopvarparsebody #1#2#3#4#5 {%
\parsebodycommon{#1}{#2}{#3}%
\def#2##1 ##2 {\def#4{##1}%
- \begingroup\obeylines\spacesplit{#3{##2}}}%
+ \defxbodycommon \spacesplit{#3{##2}}}%
\begingroup\obeylines
\spacesplit{#3{#5}}%
}
\def\defvrparsebody#1#2#3#4 {%
\parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+ \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
\begingroup\obeylines
\spacesplit{#3{#4}}%
}
%
\def\deftpparsebody #1#2#3#4 {%
\parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+ \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
\begingroup\obeylines
\spacesplit{\parsetpheaderline{#3{#4}}}\empty
}
#1{\removeemptybraces#2\relax}{#3}%
}%
-% Split up #2 at the first space token.
+% Split up #2 (the rest of the input line) at the first space token.
% call #1 with two arguments:
% the first is all of #2 before the space token,
% the second is all of #2 after that space token.
% If #2 contains no space token, all of it is passed as the first arg
% and the second is passed as empty.
%
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
+{\obeylines %
+ \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
+ \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
+ \ifx\relax #3%
+ #1{#2}{}%
+ \else %
+ #1{#2}{#3#4}%
+ \fi}%
+}
% Define @defun.
% English non-translation for texinfo.tex. This is read when a source
% document says @documentlanguage en (which might happen after another
% @documentlanguage). The actual values are the same as defaults.
-% $Id: txi-en.tex,v 1.2 1999/07/09 22:09:28 karl Exp $
+% $Id: txi-en.tex,v 1.1 2002/08/25 23:38:38 karl Exp $
%
% Copyright (C) 1999 Free Software Foundation.
%
@settitle Wanderlust -- Yet Another Message Interface On Emacsen --
@c %**end of header
@documentlanguage ja
-@documentencoding iso-2022-jp
@include version.texi
@synindex pg cp
@finalout
ftp://opaopa.org/pub/elisp/
@end example
+
@node Install, Minimal Settings, Download, Start Me Up
@section \e$B%P%$%H%3%s%Q%$%k$H%$%s%9%H!<%k\e(B
@cindex Bytecompile
@end group
@end lisp
+
@node Folder Definition, Start Wanderlust, Minimal Settings, Start Me Up
@section \e$B9XFI$9$k%U%)%k%@$NDj5A\e(B
@cindex Folder Definition
@end group
@end example
+
@node NNTP Folder, MH Folder, IMAP Folder, Folders
@section NNTP \e$B%U%)%k%@\e(B
@cindex @samp{-}
\e$B$HF~NO$9$l$P!"\e(B@file{~/.elmo/cache} \e$B$H\e(B @file{~/documents} \e$B$N%$%s%G%C%/%9$rBP>]$H$7$F!"%-!<%o!<%I\e(B @samp{wanderlust} \e$B$G8!:w$r9T$$$^$9!#\e(B
+
@node Multi Folder, Filter Folder, Namazu Folder, Folders
@section \e$B%^%k%A%U%)%k%@\e(B
@cindex @samp{*}
\e$B%a%C%;!<%8$,0\F0$7$?8e!"%U%C%/\e(B @code{elmo-pipe-drained-hook} \e$B$,8F$P$l\e(B
\e$B$^$9$N$G!"%@%&%s%m!<%I8e$K<B9T$7$?$$4X?t$rEPO?$7$F$*$/$HNI$$$G$7$g$&!#\e(B
+
@node Internal Folder, , Pipe Folder, Folders
@section \e$BFbIt%U%)%k%@\e(B
@cindex @samp{'}
* POP-before-SMTP:: POP-before-SMTP \e$B$K$h$k%a!<%k$NAw?.\e(B
@end menu
+
@node Editing Header, Editing Message Body, Usage of Draft Mode, Usage of Draft Mode
@subsection \e$B%X%C%@$NJT=8\e(B
Non-nil \e$B$J$i!"@_Dj$5$l$?CM$r%I%i%U%H$N\e(B @samp{Bcc:} \e$B$H$7$F:G=i$+$iA^F~$7$^$9!#\e(B
@end table
+
@node Editing Message Body, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode
@subsection \e$B%a%C%;!<%8$NJT=8\e(B
\e$BJT=8Cf$N%I%i%U%H$r%;!<%V$9$k$H!"\e(B@code{wl-draft-folder} \e$B$G@_Dj$7$?%I%i%U\e(B
\e$B%H%U%)%k%@$KDI2C$5$l$^$9!#\e(B
+
@node Dynamical Message Re-arrangement, Template, Editing Message Body, Usage of Draft Mode
@subsection \e$B%a%C%;!<%8$NF0E*$JJQ99\e(B
@vindex wl-draft-config-alist
(add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec)
@end lisp
+
@node Template, POP-before-SMTP, Dynamical Message Re-arrangement, Usage of Draft Mode
@subsection \e$B%F%s%W%l!<%H$NA^F~\e(B
@cindex Template
@noindent
\e$B$H=q$/$3$H$G\e(B @samp{default} \e$B$N%F%s%W%l!<%H$rE,MQ$G$-$^$9!#\e(B
+
@node POP-before-SMTP, , Template, Usage of Draft Mode
@subsection POP-before-SMTP \e$B$K$h$k%a!<%k$NAw?.\e(B
@cindex POP-before-SMTP
@end group
@end example
+
@node Key Bindings of Draft, Variables of Draft Mode, Usage of Draft Mode, Draft
@section \e$B%-!<%P%$%s%I\e(B
@cindex Keybind, Draft Mode
\e$B$l$^$9!#%G%U%)%k%H$N>JN,Id9f$H$7$F;H$o$l$kCM$O\e(B (@samp{[...]}) \e$B$G$9!#\e(B
@end table
+
@node Variables of Draft Mode, , Key Bindings of Draft, Draft
@section \e$B%+%9%?%^%$%:JQ?t\e(B
(@samp{CONDITION} @samp{ACTION} [@code{continue}])
@end lisp
-\e$B$H$$$&0lAH$G!"\e(B@samp{CONDITION} \e$B$,??$N>l9g$K\e(B @samp{ACTION} \e$B$r<B9T$7$^$9!#\e(B
+\e$B$NAH$G!"\e(B@samp{CONDITION} \e$B$,??$N>l9g$K\e(B @samp{ACTION} \e$B$r<B9T$7$^$9!#\e(B
\e$BBh0l$NMWAG\e(B @samp{CONDITION} \e$B$K$O>r7o$r\e(B S \e$B<0$G5-=R$7$^$9!#=q<0$K$D$$$F$O\e(B
\e$B$9$08e$G@bL@$7$^$9!#BhFs$NMWAG\e(B @samp{ACTION} \e$B$K$O%a%C%;!<%8$N?6$jJ,$1@h\e(B
\e$B$N%U%)%k%@L>!"$b$7$/$O%7%s%\%k$r;XDj$7$^$9!#\e(B
@end table
@item
-\e$BG$0U$N?t$N0z?t$r<h$k4X?t!#\e(B
+1 \e$B$D$N@0?t\e(B (@samp{SIZE}) \e$B$r0z?t$H$7$F$H$k4X?t!#\e(B
+
+@table @code
+@item @code{<}
+\e$B%a%C%;!<%8$N%5%$%:$,\e(B @samp{SIZE} \e$B$h$j>.$5$1$l$P??!#\e(B
+@item @code{>}
+\e$B%a%C%;!<%8$N%5%$%:$,\e(B @samp{SIZE} \e$B$h$jBg$-$1$l$P??!#\e(B
+@end table
+
+@item
+\e$BG$0U?t$N0z?t$r<h$k4X?t!#\e(B
@table @code
@item @code{or}
* Address Manager:: \e$B%"%I%l%9%^%M!<%8%c\e(B
@end menu
+
@node Mail Addresses, Address Manager, Address Book, Address Book
@section \e$B%"%I%l%9D"$NDj5A\e(B
@cindex Address book Definition
@command{ldapsearch} \e$B$X$"$i$+$8$a%3%^%s%I<B9T%Q%9$r@_Dj$7$F$*$/I,MW$,$"\e(B
\e$B$j$^$9!#\e(B
+
@node Address Manager, , Mail Addresses, Address Book
@section \e$B%"%I%l%9%^%M!<%8%c\e(B
@cindex Address Manager
@end group
@end lisp
+
@node X-Face, dired-dd, mu-cite, Living with other packages
@subsection x-face
@pindex x-face
@end group
@end lisp
+
@node x-face-mule, , x-face-xmas, X-Face
@subsubsection x-face-mule (Emacs \e$B$N>l9g\e(B)
@pindex x-face-mule
@end group
@end lisp
+
@node MHC, Addrbook, dired-dd, Living with other packages
@subsection mhc.el
@pindex MHC
@end group
@end lisp
+
@node Addrbook, mime-w3m, MHC, Living with other packages
@subsection wl-addrbook.el
@pindex Addrbook
@end group
@end lisp
+
@node mime-w3m, , Addrbook, Living with other packages
@subsection mime-w3m.el
@pindex mime-w3m
@end group
@end lisp
+
@node User-Agent Field, , Thread Format, Advanced Settings
@subsection User-Agent \e$B%U%#!<%k%I\e(B
@cindex X-Mailer
* Function Index:: \e$B4X?t:w0z\e(B
@end menu
+
@node Concept Index, Key Index, Index, Index
@unnumberedsec \e$B35G0:w0z\e(B
@printindex cp
+
@node Key Index, Variable Index, Concept Index, Index
@unnumberedsec \e$B%-!<%P%$%s%I:w0z\e(B
@printindex ky
+
@node Variable Index, Function Index, Key Index, Index
@unnumberedsec \e$BJQ?t:w0z\e(B
@printindex vr
+
@node Function Index, , Variable Index, Index
@unnumberedsec \e$B4X?t:w0z\e(B
@printindex fn
@settitle Wanderlust -- Yet Another Message Interface On Emacsen --
@c %**end of header
@documentlanguage en
-@documentencoding us-ascii
@include version.texi
@synindex pg cp
@finalout
@enumerate
@item
-Functions which accept argument @samp{FIELD-NAME} and @samp{VALUE}.
+Functions which accept arguments @samp{FIELD-NAME} and @samp{VALUE}.
(@samp{FIELD-NAME} is a symbol that describes the field name)
@table @code
@end table
@item
+Functions which accept an integer argument (@samp{SIZE}).
+
+@table @code
+@item @code{<}
+True if the size of the message is less than @samp{SIZE}.
+@item @code{>}
+True if the size of the message is greater than @samp{SIZE}.
+@end table
+
+@item
Functions which accept any number of arguments.
@table @code
* Address Manager:: Address Manager
@end menu
+
@node Mail Addresses, Address Manager, Address Book, Address Book
@section Address book
@cindex Address book Definition
+2002-12-10 Kenichi OKADA <okada@opaopa.org>
+
+ * elmo-archive.el: Specify charset.
+
+2002-12-04 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * elmo-pop3.el (elmo-pop3-process-filter): Check whether the pop3
+ process buffer lives or not.
+
+ * elmo-dop.el (elmo-dop-queue-flush): Don't append to the dop-queue
+ while flushing queues (It causes infinite loop).
+
+2002-11-26 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * elmo-imap4.el (elmo-folder-list-subfolders): Fixed last change.
+
+2002-11-24 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * utf7.el (toplevel): Check the ucs features dynamically.
+ (Advice from Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>)
+
+ * elmo-pipe.el (elmo-folder-creatable-p): Don't check whether the
+ folder is creatabe or not if it already exists.
+
2002-11-21 Yuuichi Teranishi <teranisi@gohome.org>
* elmo-nntp.el (elmo-nntp-search-primitive): Revert the last change.
-;;; elmo-archive.el --- Archive folder of ELMO.
+;;; elmo-archive.el --- Archive folder of ELMO. -*- coding: euc-japan -*-
;; Copyright (C) 1998,1999,2000 OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>
;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
(setq folder
(elmo-make-folder
(elmo-dop-queue-fname (car queue))))
- (elmo-folder-open folder))
+ (elmo-folder-open folder)
+ (unless (elmo-folder-plugged-p folder)
+ (error "Unplugged.")))
(elmo-dop-queue-arguments (car queue)))
(elmo-folder-close folder))
(quit (setq failure t))
(elmo-folder-newsgroups (elmo-pipe-folder-src-internal folder)))
(luna-define-method elmo-folder-creatable-p ((folder elmo-pipe-folder))
- (and (elmo-folder-creatable-p (elmo-pipe-folder-src-internal folder))
- (elmo-folder-creatable-p (elmo-pipe-folder-dst-internal folder))))
+ (and (or
+ (elmo-folder-exists-p (elmo-pipe-folder-src-internal folder))
+ (elmo-folder-creatable-p (elmo-pipe-folder-src-internal folder)))
+ (or
+ (elmo-folder-exists-p (elmo-pipe-folder-dst-internal folder))
+ (elmo-folder-creatable-p (elmo-pipe-folder-dst-internal folder)))))
(luna-define-method elmo-folder-writable-p ((folder elmo-pipe-folder))
(elmo-folder-writable-p (elmo-pipe-folder-dst-internal folder)))
return-value)))
(defun elmo-pop3-process-filter (process output)
- (with-current-buffer (process-buffer process)
- (goto-char (point-max))
- (insert output)
- (elmo-pop3-debug "RECEIVED: %s\n" output)
- (if (and elmo-pop3-total-size
- (> elmo-pop3-total-size
- (min elmo-display-retrieval-progress-threshold 100)))
- (elmo-display-progress
- 'elmo-display-retrieval-progress
- (format "Retrieving (%d/%d bytes)..."
- (buffer-size)
- elmo-pop3-total-size)
- (/ (buffer-size) (/ elmo-pop3-total-size 100))))))
+ (when (buffer-live-p (process-buffer process))
+ (with-current-buffer (process-buffer process)
+ (goto-char (point-max))
+ (insert output)
+ (elmo-pop3-debug "RECEIVED: %s\n" output)
+ (if (and elmo-pop3-total-size
+ (> elmo-pop3-total-size
+ (min elmo-display-retrieval-progress-threshold 100)))
+ (elmo-display-progress
+ 'elmo-display-retrieval-progress
+ (format "Retrieving (%d/%d bytes)..."
+ (buffer-size)
+ elmo-pop3-total-size)
+ (/ (buffer-size) (/ elmo-pop3-total-size 100)))))))
(defun elmo-pop3-auth-user (session)
(let ((process (elmo-network-session-process-internal session)))
The 1st element CONDITION is a sexp which consists of following.
-1. Functions which accept argument FIELD-NAME and VALUE.
+1. Functions which accept arguments FIELD-NAME and VALUE.
FIELD-NAME is a symbol of the field name.
`equal' ... True if the field value equals to VALUE.
VALUE can contain \\& and \\N which will substitute
from matching \\(\\) patterns in the previous VALUE.
-2. Functions which accept any number of arguments.
+2. Functions which accept an argument SIZE, SIZE is some number.
+
+`<' ... True if the size of the message is less than SIZE.
+`>' ... True if the size of the message is greater than SIZE.
+
+3. Functions which accept any number of arguments.
`or' ... True if one of the argument returns true.
`and' ... True if all of the arguments return true.
-3. A symbol.
+4. A symbol.
When a symbol is specified, it is evaluated.
"Return required length of padding for IMAP modified base64 fragment."
(mod (- len) modulus))
-(static-cond
+(cond
+ ((or (find-coding-system 'utf-7)
+ (module-installed-p 'un-define))
+ (defun utf7-fragment-decode (start end &optional imap)
+ "Decode base64 encoded fragment from START to END of UTF-7 text in buffer.
+Use IMAP modification if IMAP is non-nil."
+ (require 'un-define)
+ (save-restriction
+ (narrow-to-region start end)
+ (goto-char (point-min))
+ (insert "+")
+ (when imap
+ (goto-char start)
+ (while (search-forward "," nil 'move-to-end) (replace-match "/")))
+ (decode-coding-region (point-min) (point-max) 'utf-7)))
+
+ (defun utf7-fragment-encode (start end &optional imap)
+ "Encode text from START to END in buffer as UTF-7 escape fragment.
+Use IMAP modification if IMAP is non-nil."
+ (require 'un-define)
+ (let ((buffer (current-buffer))
+ encoded-string)
+ (setq encoded-string
+ (with-temp-buffer
+ (insert-buffer-substring buffer start end)
+ (encode-coding-region (point-min)
+ (point-max) 'utf-7)
+ (goto-char (point-min))
+ (when imap
+ (skip-chars-forward "+")
+ (delete-region (point-min) (point))
+ (insert "&")
+ (while (search-forward "/" nil t)
+ (replace-match ",")))
+ (skip-chars-forward "^= \t\n" (point-max))
+ (delete-region (point) (point-max))
+ (buffer-string)))
+ (delete-region start end)
+ (insert encoded-string))))
((and (featurep 'xemacs)
- (module-installed-p 'xemacs-ucs))
+ (or (find-coding-system 'utf-8)
+ (module-installed-p 'xemacs-ucs)))
(defun utf7-fragment-decode (start end &optional imap)
"Decode base64 encoded fragment from START to END of UTF-7 text in buffer.
Use IMAP modification if IMAP is non-nil."
utf7-utf7-to-utf8-program
t (current-buffer)))
(decode-coding-region (point-min) (point-max) 'utf-8)))
-
+
(defun utf7-fragment-encode (start end &optional imap)
"Decode base64 encoded fragment from START to END of UTF-7 text in buffer.
Use IMAP modification if IMAP is non-nil."
(buffer-string)))
(delete-region start end)
(insert encoded-string))))
- ((module-installed-p 'un-define) ;; Emacs
- (defun utf7-fragment-decode (start end &optional imap)
- "Decode base64 encoded fragment from START to END of UTF-7 text in buffer.
-Use IMAP modification if IMAP is non-nil."
- (require 'un-define)
- (save-restriction
- (narrow-to-region start end)
- (goto-char (point-min))
- (insert "+")
- (when imap
- (goto-char start)
- (while (search-forward "," nil 'move-to-end) (replace-match "/")))
- (decode-coding-region (point-min) (point-max) 'utf-7)
- ))
-
- (defun utf7-fragment-encode (start end &optional imap)
- "Encode text from START to END in buffer as UTF-7 escape fragment.
-Use IMAP modification if IMAP is non-nil."
- (require 'un-define)
- (let ((buffer (current-buffer))
- encoded-string)
- (setq encoded-string
- (with-temp-buffer
- (insert-buffer-substring buffer start end)
- (encode-coding-region (point-min)
- (point-max) 'utf-7)
- (goto-char (point-min))
- (when imap
- (skip-chars-forward "+")
- (delete-region (point-min) (point))
- (insert "&")
- (while (search-forward "/" nil t)
- (replace-match ",")))
- (skip-chars-forward "^= \t\n" (point-max))
- (delete-region (point) (point-max))
- (buffer-string)))
- (delete-region start end)
- (insert encoded-string))))
(t
- ;; Define as null function.
(defun utf7-fragment-decode (start end &optional imap)
"Encode text from START to END in buffer as UTF-7 escape fragment.
Use IMAP modification if IMAP is non-nil."
+ ;; Define as a null function.
)
(defun utf7-fragment-encode (start end &optional imap)
"Encode text from START to END in buffer as UTF-7 escape fragment.
Use IMAP modification if IMAP is non-nil."
+ ;; Define as a null function.
)))
(defun utf7-encode-region (start end &optional imap)
+2002-12-11 TAKAHASHI Kaoru <kaoru@kaisei.org>
+
+ * test-dist.el (test-version-toplevel-changelog): Fixed regexp.
+
2002-10-27 TAKAHASHI Kaoru <kaoru@kaisei.org>
* test-dist.el (test-version-readme): New testcase.
(with-temp-buffer
(insert-file-contents (expand-file-name "ChangeLog" "./"))
(re-search-forward
- "\\* \\([0-9\\.]+\\) - \"\\([^\"]+\\)\".$")
+ "^\t\\* \\([0-9\\.]+\\) - \"\\([^\"]+\\)\"$")
(lunit-assert
(string=
(product-version-string (product-find 'wl-version))
+2002-12-08 Kenichi OKADA <okada@opaopa.org>
+
+ * wl-draft.el (wl-draft-send-mail-with-smtp): Fix logic
+ for elmo-remove-passwd.
+
+2002-12-04 Yuuichi Teranishi <teranisi@gohome.org>
+
+ * wl-folder.el (wl-folder-sync-entity): Fixed problem when the
+ folder is sticky.
+ (wl-folder-mark-as-read-all-entity): Ditto.
+ (wl-folder-prefetch-entity): Ditto.
+
+2002-12-04 Yasutaka SHINDOH <ring@fan.gr.jp>
+
+ * wl-demo.el (wl-demo-icon-name): Cope with Medow.
+
+2002-12-03 Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
+
+ * wl-summary.el (wl-summary-target-mark-erase): Simplify.
+ Delete messages on buffer for unplugged operation.
+ (wl-summary-erase): Ditto.
+
+2002-11-25 Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
+
+ * wl-vars.el (wl-summary-search-parent-by-subject-regexp): It can
+ take nil so as not to search parent by subject.
+
2002-11-20 Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
* wl-folder.el (wl-folder-get-prev-folder): Ignore nemacs.
(defconst wl-demo-icon-name
(concat "wl-" (wl-version-status)
- (if (string-match "^... Dec \\([ 1][0-9]\\|2[0-5]\\)"
+ (if (string-match "^... Dec \\([ 01][0-9]\\|2[0-5]\\)"
(current-time-string))
"-xmas-logo"
"-logo"))
(wl-draft-write-sendlog 'failed 'smtp smtp-server
recipients id)
(if (and (eq (car err) 'smtp-response-error)
- (/= (nth 1 err) 334))
+ (= (nth 1 err) 535))
(elmo-remove-passwd
(wl-smtp-password-key
smtp-sasl-user-name
(wl-summary-always-sticky-folder-p
folder))
wl-summary-highlight))
- wl-auto-select-first new unread)
+ wl-auto-select-first new unread sticky)
(setq new (or (car nums) 0))
(setq unread (or (cadr nums) 0))
(if (or (not unread-only)
(or (< 0 new) (< 0 unread)))
- (let ((wl-summary-buffer-name (concat
- wl-summary-buffer-name
- (symbol-name this-command)))
+ (let ((wl-summary-buffer-name
+ (if (setq sticky (get-buffer (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal
+ folder))))
+ ;; Sticky folder exists.
+ (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal folder))
+ (concat
+ wl-summary-buffer-name
+ (symbol-name this-command))))
(wl-summary-use-frame nil)
(wl-summary-always-sticky-folder-list nil))
(save-window-excursion
(wl-summary-get-sync-range
folder)
nil nil nil t)
- (wl-summary-exit)))))))))
+ (if sticky
+ (wl-summary-save-status)
+ (wl-summary-exit))))))))))
(defun wl-folder-sync-current-entity (&optional unread-only)
"Synchronize the folder at position.
(wl-summary-always-sticky-folder-p
folder))
wl-summary-highlight))
- wl-auto-select-first new unread)
+ wl-auto-select-first new unread sticky)
(setq new (or (car nums) 0))
(setq unread (or (cadr nums) 0))
(if (or (< 0 new) (< 0 unread))
(save-window-excursion
(save-excursion
- (let ((wl-summary-buffer-name (concat
- wl-summary-buffer-name
- (symbol-name this-command)))
+ (let ((wl-summary-buffer-name
+ (if (setq sticky (get-buffer
+ (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal
+ folder))))
+ ;; Sticky folder exists.
+ (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal folder))
+ (concat
+ wl-summary-buffer-name
+ (symbol-name this-command))))
(wl-summary-use-frame nil)
(wl-summary-always-sticky-folder-list nil))
(wl-summary-goto-folder-subr entity
(wl-summary-get-sync-range folder)
nil)
(wl-summary-mark-as-read-all)
- (wl-summary-exit))))
+ (if sticky
+ (wl-summary-save-status)
+ (wl-summary-exit)))))
(sit-for 0))))))
(defun wl-folder-mark-as-read-all-current-entity ()
wl-summary-highlight))
wl-summary-exit-next-move
wl-auto-select-first ret-val
- count)
+ count sticky)
(setq count (or (car nums) 0))
(setq count (+ count (wl-folder-count-incorporates folder)))
(if (or (null (car nums)) ; unknown
(< 0 count))
(save-window-excursion
(save-excursion
- (let ((wl-summary-buffer-name (concat
- wl-summary-buffer-name
- (symbol-name this-command)))
+ (let ((wl-summary-buffer-name
+ (if (setq sticky (get-buffer
+ (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal
+ folder))))
+ ;; Sticky folder exists.
+ (wl-summary-sticky-buffer-name
+ (elmo-folder-name-internal folder))
+ (concat
+ wl-summary-buffer-name
+ (symbol-name this-command))))
(wl-summary-use-frame nil)
(wl-summary-always-sticky-folder-list nil))
(wl-summary-goto-folder-subr entity
folder)
nil)
(setq ret-val (wl-summary-incorporate))
- (wl-summary-exit)
+ (if sticky
+ (wl-summary-save-status)
+ (wl-summary-exit))
ret-val)))
(cons 0 0))))))
(while (< beg (point))
(if (re-search-backward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t)
(setq count (+ count 1))
- (defbug)))
+ (debug)))
(with-temp-buffer
(set-buffer-multibyte nil)
(insert (mime-entity-body entity))
(wl-summary-unmark msg-num)
(elmo-folder-delete-messages wl-summary-buffer-elmo-folder
(list msg-num))
+ (wl-summary-delete-messages-on-buffer (list msg-num))
(save-excursion (wl-summary-sync nil "update"))))))
(message "Read-only folder.")))
(message "No marked message.")
(when (yes-or-no-p
"Erase all marked messages without moving them to trash? ")
- (while (car wl-summary-buffer-target-mark-list)
- (let ((num (car wl-summary-buffer-target-mark-list)))
- (wl-summary-unmark num)
- (elmo-folder-delete-messages wl-summary-buffer-elmo-folder
- (list num))))
+ (elmo-folder-delete-messages wl-summary-buffer-elmo-folder
+ wl-summary-buffer-target-mark-list)
+ (wl-summary-delete-messages-on-buffer
+ wl-summary-buffer-target-mark-list)
+ (setq wl-summary-buffer-target-mark-list nil)
(save-excursion (wl-summary-sync nil "update"))))
(message "Read-only folder.")))
(defcustom wl-summary-search-parent-by-subject-regexp "^[ \t]*\\(\\[[^:]+[,: ][0-9]+\\]\\)?[ \t]*re[\\^[:> ]"
"*If message does not have in-reply-to field nor references field and
- subject matches this regexp, search parent message by subject matching."
- :type 'string
+subject matches this regexp, search parent message by subject matching.
+If nil, never search search parent by subject."
+ :type '(choice string
+ (const :tag "Don't search parent" nil))
:group 'wl-summary)
;; Important folders