write on batch processing
[elisp/wanderlust.git] / doc / wl.texi
1 \input texinfo @c -*-texinfo -*-
2 @c %**start of header
3 @setfilename wl.info
4 @settitle Wanderlust -- Yet Another Message Interface On Emacsen --
5 @c %**end of header
6 @documentlanguage en
7 @include version.texi
8 @synindex pg cp
9 @finalout
10
11 @dircategory GNU Emacs Lisp
12 @direntry
13 * Wanderlust: (wl).         Yet Another Message Interface On Emacsen
14 @end direntry
15
16 @c permissions text appears in an Info file before the first node.
17 @ifinfo
18 This file documents Wanderlust, Yet another message interface on
19 Emacsen.
20
21 Copyright @copyright{} 1998, 1999, 2000, 2001, 2002 @w{Yuuichi Teranishi},
22 @w{Fujikazu Okunishi}, @w{Masahiro Murata}, @w{Kenichi Okada},
23 @w{Kaoru Takahashi}, @w{Bun Mizuhara} and @w{Masayuki Osada},
24 @w{Katsumi Yamaoka}, @w{Hiroya Murata} and @w{Yoichi Nakayama}.
25
26 This edition is for Wanderlust version @value{VERSION}.
27
28 Permission is granted to make and distribute verbatim copies of this
29 manual provided the copyright notice and this permission notice are
30 preserved on all copies.
31
32 @ignore
33 Permission is granted to process this file through TeX and print the
34 results, provided the printed document carries copying permission notice
35 identical to this one except for the removal of this paragraph (this
36 paragraph not being relevant to the printed manual).
37
38 @end ignore
39 Permission is granted to copy and distribute modified versions of this
40 manual under the conditions for verbatim copying, provided that the
41 entire resulting derived work is distributed under the terms of a
42 permission notice identical to this one.
43
44 Permission is granted to copy and distribute translations of this manual
45 into another language, under the above conditions for modified versions.
46
47 @end ifinfo
48
49 @titlepage
50 @sp 10
51 @title Wanderlust User's Manual
52 @subtitle Yet another message interface on Emacsen
53 @subtitle for Wanderlust version @value{VERSION}
54 @author Yuuichi Teranishi
55 @author Fujikazu Okunishi
56 @author Masahiro Murata
57 @author Kenichi Okada
58 @author Kaoru Takahashi
59 @author Bun Mizuhara
60 @author Masayuki Osada
61 @author Katsumi Yamaoka
62 @author Hiroya Murata
63 @author Yoichi Nakayama
64 @page
65
66 @vskip 0pt plus 1filll
67 Copyright @copyright{} 1998, 1999, 2000, 2001, 2002 @w{Yuuichi Teranishi},
68 @w{Fujikazu Okunishi}, @w{Masahiro Murata}, @w{Kenichi Okada},
69 @w{Kaoru Takahashi}, @w{Bun Mizuhara}, @w{Masayuki Osada},
70 @w{Katsumi Yamaoka}, @w{Hiroya Murata} and @w{Yoichi Nakayama}.
71
72 This manual is for Wanderlust version @value{VERSION}.
73
74 Permission is granted to make and distribute verbatim copies of this
75 manual provided the copyright notice and this permission notice are
76 preserved on all copies.
77
78 Permission is granted to copy and distribute modified versions of this
79 manual under the conditions for verbatim copying, provided that the
80 entire resulting derived work is distributed under the terms of a
81 permission notice identical to this one.
82
83 Permission is granted to copy and distribute translations of this manual
84 into another language, under the above conditions for modified versions.
85
86 @end titlepage
87
88
89 @ifinfo
90 @node Top, Introduction, (dir), (dir)
91 @top Wanderlust User's Manual
92
93 @flushright
94 Yuuichi Teranishi
95 Fujikazu Okunishi
96 Masahiro Murata
97 Kenichi Okada
98 Kaoru Takahashi
99 Bun Mizuhara
100 Masayuki Osada
101 Katsumi Yamaoka
102 Hiroya Murata
103 Yoichi Nakayama
104 @end flushright
105
106 This manual is for Wanderlust @value{VERSION}.
107
108 @end ifinfo
109
110 @menu
111 * Introduction::             Read this first
112 * Start Me Up::              Invoking Wanderlust
113 * Folders::                  How to specify folders
114 * Folder::                   Selecting and editing folders
115 * Summary::                  Reading and refiling messages
116 * Message::                  Saving and playing MIME multipart entities
117 * Draft::                    Draft buffer, sending mail and news
118 * Disconnected Operations::  Off-Line management
119 * Expire and Archive::       Automatic expiration and archiving of messages
120 * Scoring::                  Score of the messages
121 * Split messages::           Splitting messages
122 * Address Book::             Management of Address Book
123 * Spam Filter::              Spam filtering
124 * Batch Processing::         Invoke commands in batch mode
125 * Customization::            Customizing Wanderlust
126 * Terminology::              Terminologies
127 * Mailing List::             Wanderlust mailing list
128 * Addition::                 Additional Information
129 * Index::                    Key index
130 @end menu
131
132
133 @node Introduction, Start Me Up, Top, Top
134 @chapter Introduction of Wanderlust
135 @cindex Introduction
136
137 Wanderlust is an mail/news management system on Emacsen.
138 It supports IMAP4rev1(RFC2060), NNTP, POP and local message files.
139
140 The main features of Wanderlust:
141
142 @itemize @minus
143 @item Pure elisp implementation.
144 @item Supports IMAP4rev1, NNTP, POP(POP3/APOP), MH and Maildir format.
145 @item Unified access method to messages based on Mew-like Folder Specification.
146 @item Mew-like Key-bind and mark handling.
147 @item Manages unread messages.
148 @item Interactive thread display.
149 @item Folder Mode shows the list of subscribed folders.
150 @item Message Cache, Disconnected Operation.
151 @item MH-like FCC. (Fcc: %Backup and Fcc: $Backup is allowed).
152 @item MIME compliant (by SEMI).
153 @item Transmission of news and mail are unified by Message transmitting draft.
154 @item Graphical list of folders (XEmacs and Emacs 21).
155 @item View a part of message without retrieving the whole message (IMAP4).
156 @item Server-side message look up (IMAP4). Multi-byte characters are allowed.
157 @item Virtual Folders.
158 @item Supports compressed folder using common archiving utilities.
159 @item Old articles in folders are automatically removed/archived (Expiration).
160 @item Automatic re-file.
161 @item Template function makes it convenient to send fixed form messages.
162 @end itemize
163
164
165 @section Environment
166
167 We confirm Wanderlust works on following Emacsen:
168
169 @itemize @bullet
170 @item Mule 2.3 based on Emacs 19.34
171 @item Emacs 20.2 or later
172 @item XEmacs 20.4 or later
173 @item Meadow 1.00 or later
174 @item NTEmacs 20.4 or later
175 @item PMMule
176 @end itemize
177
178 IMAP4 connectivity with following imapd are confirmed to work with
179 Wanderlust:
180
181 @itemize @bullet
182 @item UW imapd 4.1--4.7, 4.7a, 4.7b, 4.7c, 2000 or later
183 @item Cyrus imapd 1.4, 1.5.19, 1.6.22--1.6.24, 2.0.5 or later
184 @item Courier-IMAP 1.3.2 or later
185 @item AIR MAIL (AIRC imapd release 2.00)
186 @item Express Mail
187 @item Microsoft Exchange Server 5.5
188 @item Sun Internet Mail Server 3.5, 3.5.alpha, 4.0
189 @end itemize
190
191 LDAP connectivity with following LDAPd are confirmed to work with
192 Wanderlust:
193
194 @itemize @bullet
195 @item OpenLDAP 2.0.6 or later
196 @end itemize
197
198
199 @node Start Me Up, Folders, Introduction, Top
200 @chapter Start up Wanderlust
201 @cindex Start up
202
203 The necessary procedure for starting Wanderlust is explained in steps
204 here.
205
206 (Of course, you need a mail/news readable environment in advance)
207
208 @menu
209 * MIME Modules::      Installing the MIME modules
210 * Download::          Download and extract the packages
211 * Install::           Byte-compile and install
212 * Minimal Settings::  @file{.emacs} setup
213 * Folder Definition:: Folder definition
214 * Start Wanderlust::  Starting Wanderlust
215 * Overview::          Basic components of Wanderlust
216 @end menu
217
218
219 @node MIME Modules, Download, Start Me Up, Start Me Up
220 @section Installing MIME modules
221 @cindex MIME modules
222 @pindex APEL
223 @pindex FLIM
224 @pindex SEMI
225
226 You must install SEMI beforehand to use Wanderlust.
227
228 SEMI can be downloaded from following site:
229
230 @example
231 @group
232 SEMI:   ftp://ftp.m17n.org/pub/mule/semi/
233 @end group
234 @end example
235
236 You need packages named APEL and FLIM to use SEMI.
237 You can download APEL and FLIM from following URLs:
238
239 @example
240 @group
241 APEL:   ftp://ftp.m17n.org/pub/mule/apel/
242 FLIM:   ftp://ftp.m17n.org/pub/mule/flim/
243 @end group
244 @end example
245
246 You have to install APEL, FLIM and SEMI in this order.  Generally,
247 @samp{make install} will do the job.  (In XEmacs 21, @samp{make
248 install-package}.)
249
250 Refer to the documents of each package for detailed installation
251 procedure @footnote{If you want to use SEMI on Emacs 19.34. @*
252 @uref{http://www.jpl.org/elips/INSTALL-SEMI-ja.html} (In Japanese)
253 may help you.}.
254
255
256 Recommended combination of APEL, FLIM and SEMI are following:
257
258 @itemize @minus
259 @item APEL 10.6, FLIM 1.14.6 and SEMI 1.14.6
260 @end itemize
261
262 You can also use many other FLIM/SEMI variants. Combination of the
263 latest versions should work.  For example, the following combination are
264 confirmed to work.
265
266 @itemize @minus
267 @item APEL 10.6, SLIM 1.14.9, SEMI 1.14.5
268 @item APEL 10.6, CLIME 1.14.5, EMIKO 1.14.1
269 @end itemize
270
271 You have to re-install Wanderlust if you upgraded APEL, FLIM or SEMI.
272
273
274 @node Download, Install, MIME Modules, Start Me Up
275 @section Download and Extract the Package
276 @cindex Download
277
278 You can download Wanderlust package from following sites:
279
280 Original site:
281 @example
282 ftp://ftp.gohome.org/wl/
283 @end example
284
285 Mirrored ftp/http sites:
286
287 @example
288 @group
289 @c ftp://ftp.jaist.ac.jp/pub/GNU/elisp/ftp.gohome.org/wl/
290 http://www.jpl.org/elips/wl/
291 http://www.ring.gr.jp/archives/text/elisp/wl/
292 ftp://ftp.ring.gr.jp/pub/text/elisp/wl/
293 @end group
294 @end example
295
296 Extract the obtained package to your working directory:
297
298 @example
299 @group
300 % cd ~/work
301 % tar zxvf wl-@var{version}.tar.gz
302 % cd wl-@var{version}
303 @end group
304 @end example
305
306 @subsection To use SSL (Secure Socket Layer)
307 @cindex SSL
308 @pindex OpenSSL
309 @pindex starttls
310
311 SSL (Secure Socket Layer) can be used for
312 SMTP, IMAP, NNTP and POP connections in Wanderlust.
313
314 There are two ways to use SSL. One is to start SSL negotiation just
315 after the connection establishment (generic way). The other one is to
316 start SSL negotiation by invoking STARTTLS command in the each session.
317
318 To use the formal SSL (generic SSL), you must set @env{PATH} to the
319 directory that OpenSSL commands are installed.
320
321 To use the latter SSL(STARTTLS), you must install starttls package in
322 addition to above.
323 You can download starttls package from the following site.
324
325 @example
326 ftp://opaopa.org/pub/elisp/
327 @end example
328
329 @node Install, Minimal Settings, Download, Start Me Up
330 @section Byte-compile and install
331 @cindex Byte-compile
332 @cindex Compile
333 @cindex Install
334 @cindex Makefile
335 @cindex Make
336
337 @subsection Installation
338
339 Edit @code{LISPDIR} and @code{EMACS} in @file{Makefile}.
340 Set the Emacs's command name to @code{EMACS}.
341 Set package installation directory to @code{LISPDIR}.
342 Then, please execute following commands.
343
344 @example
345 @group
346 % make
347 % make install
348 @end group
349 @end example
350
351 Destination directory is auto-probed if you leave @code{LISPDIR}
352 in @file{Makefile} as is. (That is, leave it as @samp{NONE})
353
354 If you are using an Emacs variant which does not merge specified directory
355 to @code{load-path} (e.g. Mule 2.3 based on Emacs 19.28),
356 then you will see the error message:
357
358 @example
359 Cannot open load file: mime-setup
360 @end example
361
362 @noindent
363 In this case, either add destination directories of custom, APEL, FLIM
364 and SEMI to environmental variable @env{EMACSLOADPATH}, or define
365 @code{load-path} in @file{WL-CFG} in extracted directory.
366
367 If you want to handle shimbun folders or to use BBDB, add directory
368 where emacs-w3m or BBDB is installed to @code{load-path}. Then necessary
369 modules will be byte-compiled and installed.
370 @xref{Shimbun Folder}, @xref{BBDB}.
371
372 @subsection @file{WL-CFG}
373
374 Contents of the file @file{WL-CFG} is loaded under installation if a file
375 with that name exists in extracted directory. You can use @file{WL-CFG} to
376 configure @code{load-path} to extra packages such as SEMI if needed.
377
378 If you want to specify the install directory of Wanderlust related
379 files, then set following variables in @file{WL-CFG}
380
381 @table @code
382 @item WL_PREFIX
383 A directory to install WL modules.
384 This directory is relative directory from @code{LISPDIR}.
385 WL modules include @file{wl*.el}, @file{wl*.elc} files.
386 @c  Modules under the directory @file{util/} are also installed if
387 @c it detected as necessary.
388
389 @item ELMO_PREFIX
390 A directory to install ELMO modules.
391 This directory is relative directory from @code{LISPDIR}.
392 ELMO modules include @file{elmo*.el}, @file{elmo*.elc} files.
393 @c  @file{utf7.el}, @file{utf7.elc} are also included in the ELMO.
394 @end table
395
396 @noindent
397 Default value of @code{WL_PREFIX} and @code{ELMO_PREFIX} are @file{wl}.
398
399 If you want to install ELMO related files under a sub-directory
400 such as "elmo" then add following to @file{WL-CFG}:
401
402 @lisp
403 (setq ELMO_PREFIX "elmo")
404 @end lisp
405
406 @subsection Install as a XEmacs package
407 @cindex XEmacs package
408 @cindex XEmacs package install
409 @cindex Package, XEmacs
410 @cindex Package install, XEmacs
411 @c @cindex install-package
412
413 It is possible to install Wanderlust as one of packages of XEmacs (21.0
414 or later). Configuration for autoload and icon-path in local
415 @file{~/.emacs} files are no longer necessary, if you install Wanderlust
416 as a package.
417
418 Follow the next example to install Wanderlust as an XEmacs package.
419
420 @example
421 @group
422 % vi Makefile
423 % make package
424 % make install-package
425 @end group
426 @end example
427
428 package directory is auto-probed, if SEMI is installed.
429 (you can also specify it with @code{PACKAGEDIR} in @file{Makefile})
430
431 @subsection Run in place
432
433 If wl and elmo directories are defined in @code{load-path}, then
434 byte-compilation and installation are not necessary to start Wanderlust.
435 For example, if package is extracted in @file{~/work}, Wanderlust can be
436 invoked with following setting in @file{~/.emacs}.
437
438 @lisp
439 @group
440 (add-to-list 'load-path "~/work/wl-@var{version}/wl")
441 (add-to-list 'load-path "~/work/wl-@var{version}/elmo")
442 @end group
443 @end lisp
444
445 @subsection Manual
446
447 Manual is described in Info format. Please do following.
448
449 @example
450 @group
451 % make info
452 % make install-info
453 @end group
454 @end example
455
456 If you install Wanderlust as a XEmacs package, Info file is already
457 installed too, so there are no need of these commands.
458
459 Manual directory is automatically detected. Of course, it can be
460 configured by @code{INFODIR} in @file{Makefile}.
461
462 You can read manual at the following URL:
463
464 @example
465 http://www.gohome.org/wl/doc/wl_toc.html
466 @end example
467
468 @node Minimal Settings, Folder Definition, Install, Start Me Up
469 @section Set up .emacs
470 @cindex Minimal Settings
471 @cindex Settings
472 @cindex Configuration
473 @cindex .emacs
474 @cindex .wl
475
476 The Wanderlust package contains two module groups.
477
478 @table @samp
479 @item ELMO (elmo-*.el)
480 These modules show everything as folders. This is the back-end for WL.
481 @item WL (wl-*.el)
482 These modules controls the behavior of main body of Wanderlust.
483 They are also the front-end for ELMO.
484 @end table
485
486 You can customize the  behavior of Wanderlust by changing the value
487 of environmental variables which begins with @code{elmo-} and @code{wl-}.
488
489 The minimal requirement for settings is as the following.
490
491 @lisp
492 @group
493 ;; @r{autoload configuration}
494 ;; @r{(Not required if you have installed Wanderlust as XEmacs package)}
495 (autoload 'wl "wl" "Wanderlust" t)
496 (autoload 'wl-other-frame "wl" "Wanderlust on new frame." t)
497 (autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)
498
499 ;; @r{Directory where icons are placed.}
500 ;; @r{Default: the peculiar value to the running version of Emacs.}
501 ;; @r{(Not required if the default value points properly)}
502 (setq wl-icon-directory "~/work/wl/etc")
503
504 ;; @r{SMTP server for mail posting. Default: @code{nil}}
505 (setq wl-smtp-posting-server "your.smtp.example.com")
506 ;; @r{NNTP server for news posting. Default: @code{nil}}
507 (setq wl-nntp-posting-server "your.nntp.example.com")
508 @end group
509 @end lisp
510
511 @file{~/.wl} is automatically loaded when Wanderlust starts up (if such a
512 file exists). So it is convenient to gather Wanderlust specific settings
513 in @file{~/.wl}. Settings for "face" must be written in @file{~/.wl},
514 because you can't write them in @file{.emacs}
515 (if you write it to @file{.emacs}, you'll get an error).
516 @xref{Highlights}.
517
518 All above described settings except autoload configuration can be written
519 in @file{~/.wl}).
520
521 @subsection @code{mail-user-agent}
522 @cindex Default Mailer
523 @cindex Mailer, Default
524 @vindex mail-user-agent
525 @findex compose-mail
526
527 If you write following setting in your @file{~/.emacs}, you can
528 start Wanderlust draft mode by typing @kbd{C-x m} (@code{compose-mail}).
529 This means it enables you to run Wanderlust as a default mail composer
530  of Emacsen.
531
532 It is effective only when your Emacs can define @code{mail-user-agent}.
533 @xref{Mail Methods, , ,emacs, The Emacs Editor}.
534
535 @lisp
536 @group
537 (autoload 'wl-user-agent-compose "wl-draft" nil t)
538 (if (boundp 'mail-user-agent)
539     (setq mail-user-agent 'wl-user-agent))
540 (if (fboundp 'define-mail-user-agent)
541     (define-mail-user-agent
542       'wl-user-agent
543       'wl-user-agent-compose
544       'wl-draft-send
545       'wl-draft-kill
546       'mail-send-hook))
547 @end group
548 @end lisp
549
550
551
552 @node Folder Definition, Start Wanderlust, Minimal Settings, Start Me Up
553 @section Folder Definition
554 @cindex Folder Definition
555 @cindex .folders
556
557 You can skip this section because it is possible to add/edit the
558 subscribe folders from the buffer for list of folders.
559 @xref{Folder Manager}.
560
561 Define the folders you want to subscribe in file @file{~/.folders}.  The
562 contents written in @file{~/.folders} become the folders which you
563 subscribe to as it is.
564
565 Format for @file{~/.folders} is very simple. Here is an example:
566
567 @example
568 @group
569 #
570 # @r{Lines begin with @samp{#} are comment.}
571 # @r{Empty lines are ignored}
572 #
573 # @var{folder name}  "@var{folder nickname}"
574 # @r{(nicknames are not necessary)}
575 #
576 %inbox  "Inbox"
577 +trash  "Trash"
578 +draft  "Drafts"
579 %#mh/Backup@@my.imap.example.com "Sent"
580 # Folder Group
581 Emacsen@{
582     %#mh/spool/wl            "Wanderlust ML"
583     %#mh/spool/elips         "ELIPS ML"
584     %#mh/spool/apel-ja       "APEL Japanese ML"
585     %#mh/spool/xemacs-beta   "XEmacs beta"
586     -fj.news.reader.gnus@@other.nntp.example.com "Gnus Net news"
587     *-fj.editor.xemacs,-fj.editor.mule,-fj.editor.emacs "fj's Emacsen"
588 @}
589 #
590 # @r{If folder name ends with @samp{/}, that means an `access group',}
591 # @r{all subfolders automatically included in one folder group.}
592 #
593 %#mh/expire@@localhost /
594 # @r{All MH folders are included in one folder group.}
595 + /
596 @end group
597 @end example
598
599 Each line contains one folder you want to read. The definition of
600 folders will be explained in detail in the next section.
601
602 The part surrounded by @samp{@var{group name}@{} and @samp{@}} will
603 become one folder group.  One folder group is treated as a directory
604 which can be opened and closed in folder mode. It is convenient for
605 collecting some folders and putting them in order.
606
607 Please note that @samp{@var{group name}@{} and @samp{@}} occupies one
608 line and you have to write it that way (It is because the parser sucks).
609
610 There are two types of groups. One is like @samp{Emacsen} from above
611 example which the user chooses his favorite folders as a group.
612
613 The other one is @dfn{access group} like @samp{+ /} from above example.
614 It collects all sub-folders in the folder to make a group.  (Its
615 behavior differs by the type of the folder. For example, @samp{+}
616 followed by @samp{/} makes entire MH sub-directories to one group)
617
618 This behavior is better understood if you try it and confirmed the
619 function first. You can write and try a small folder definition, so you
620 will know the idea of the folder function before writing the real one.
621
622 @node Start Wanderlust, Overview, Folder Definition, Start Me Up
623 @section Start Wanderlust
624 @cindex Start Wanderlust
625
626 If installation and configuration worked well, you can invoke Wanderlust by
627 typing following command in Emacs.
628
629 @example
630 M-x wl
631 @end example
632
633 @noindent
634 After initialization, Folder Mode which shows the list of folders will
635 appear. That means the folders you defined in the @file{~/.folders} are
636 listed.
637
638 If you start Wanderlust with prefix argument like @kbd{C-u M-x wl}, you
639 can skip folder checking.
640
641
642 @node Overview,  , Start Wanderlust, Start Me Up
643 @section Overview
644 @cindex Overview
645
646 Basically, you will handle messages in wanderlust while you come and go
647 from/to each of the following buffers.  Details of each ones are
648 explained in following chapters.
649
650 @table @samp
651 @item Folder Buffer
652 You can see the list of folders. You can select some folder and go into the summary
653 of it. You can subscribe new folder or edit subscription list.
654 @item Summary Buffer
655 You can see the list of messages in the folder. You can select message
656 and view its contents, and reply to some message. You can delete ones or
657 move ones to another folder.
658 @item Message Buffer
659 You can see the contents of the message. You can save part to disk or
660 open in external programs.
661 @item Draft Buffer
662 You can edit message.
663 @end table
664
665
666 @node Folders, Folder, Start Me Up, Top
667 @chapter Wanderlust's folders
668 @cindex Folder Type
669
670 This chapter describes the folder types which Wanderlust is able to handle.
671
672 Wanderlust uses ELMO as it's interface, so you can use every folder types
673 supported by ELMO.
674
675 As of version @value{VERSION}, 13 types of folders are predefined. These
676 are IMAP, NNTP, LocalDir(MH), Maildir, News Spool, Archive, POP,
677 Shimbun, Namazu, Multi, Filter, Pipe and Internal folder types.
678
679 @menu
680 * IMAP Folder::                 @samp{%} -- IMAP folder
681 * NNTP Folder::                 @samp{-} -- NNTP folder
682 * MH Folder::                   @samp{+} -- MH folder
683 * Maildir Folder::              @samp{.} -- Maildir folder
684 * News Spool Folder::           @samp{=} -- News spool folder
685 * Archive Folder::              @samp{$} -- Archive folder
686 * POP Folder::                  @samp{&} -- POP folder
687 * Shimbun Folder::              @samp{@@} -- Shimbun Folder
688 * Namazu Folder::               @samp{[} -- Namazu Folder
689 * Multi Folder::                @samp{*} -- Multi folder
690 * Filter Folder::               @samp{/} -- Filter folder
691 * Pipe Folder::                 @samp{|} -- Pipe folder
692 * Internal Folder::             @samp{'} -- Internal folder
693 @end menu
694
695
696 @node IMAP Folder, NNTP Folder, Folders, Folders
697 @section IMAP Folder
698 @cindex @samp{%}
699 @cindex IMAP Folder
700 @cindex Folder, IMAP
701 @cindex RFC 2060
702 @cindex IMAP4rev1
703
704 A folder to access e-mails via IMAP4rev1 protocol (RFC 2060).
705
706 Format:
707
708 @example
709 @group
710 @samp{%} @var{mailbox} [@samp{:} @var{username} [@samp{/} @var{authenticate-type}]][@samp{@@} @var{hostname}][@samp{:} @var{port}][@samp{!}]
711 @end group
712 @end example
713
714 You can specify @code{login} (encoded password transmission),
715 @code{cram-md5} (CRAM-MD5 authentication), @code{digest-md5} (DIGEST-MD5
716 authentication) or @code{clear} (or @code{nil}, plain password
717 transmission) as @var{authenticate-type}.
718
719 default:
720
721 @example
722 @var{username}  -> The value of @code{elmo-imap4-default-user}.
723              Initial setting is @env{USER} environment variable or
724              @env{LOGNAME} environment variable or return value of
725              @code{(user-login-name)}.
726 @var{authenticate-type} -> The value of @code{elmo-imap4-default-authenticate-type}.
727              Initial setting is "auth".
728 @var{hostname}  -> The value of @code{elmo-imap4-default-server}.
729              Initial setting is "localhost".
730 @var{port} -> The value of @code{elmo-imap4-default-port}.
731              Initial setting is 143.
732 @end example
733
734 You can omit the @var{hostname} from folder names if you set
735 @code{elmo-imap4-default-server} as your main IMAP server.
736 For example, you can specify a folder as @samp{foo%imap@@gateway} even
737 if you have to go through a firewall.
738
739 @lisp
740 @group
741 ;; @r{Example: imap4.exaple.org as main IMAP server}
742 (setq elmo-imap4-default-server "imap4.example.org")
743 @end group
744 @end lisp
745
746 SSL (Secure Socket Layer) connection will be used if a folder name ends
747 with @samp{!}. Or, if the value of @code{elmo-imap4-default-stream-type}
748 is @code{ssl}, SSL will be the default connection.  If a folder name
749 ends with @samp{!!}, STARTTLS connection will be established.  If the
750 value of @code{elmo-imap4-default-stream-type} is @code{starttls},
751 STARTTLS will be the default connection.
752
753 @lisp
754 @group
755 ;; @r{Example: Use SSL connection}
756 (setq elmo-imap4-default-stream-type 'ssl)
757 @end group
758 @end lisp
759
760 If you specify @code{login}, @code{cram-md5} or @code{digest-md5} as
761 authentication method, the password is sent in encoded form. But, if
762 your server is unable to receive an encoded password, authentication
763 will fall back to @code{clear} (that is, sending password in raw format)
764 after confirmation to user. If @code{elmo-imap4-force-login} is non-nil,
765 authentication will fall back to @code{clear} without confirmation
766 (default value is @code{nil}).
767
768 @lisp
769 @group
770 ;; @r{Example: password in raw format}
771 (setq elmo-imap4-default-authenticate-type 'clear)
772 @end group
773 @end lisp
774
775 Example:
776
777 @example
778 @group
779 %inbox     -> IMAP mailbox "inbox"
780 %#mh/inbox -> IMAP mailbox "#mh/inbox"
781
782 %inbox:hoge -> IMAP mailbox "inbox" of user "hoge".
783 %inbox:hoge/clear@@server1
784             -> server1's IMAP mailbox "inbox"
785                of user "hoge", with plain password authentication
786                ('clear).
787 @end group
788 @end example
789
790 @subsection International mailbox names (Modified UTF7)
791 @cindex Modified UTF7
792 @cindex UTF7
793 @cindex UTF8
794 @cindex Unicode
795 @pindex Mule-UCS
796 @pindex ucs-conv
797
798 You can use international mailbox names in @var{mailbox} part, if you
799 are using Emacs with UTF-7 support and
800 @code{elmo-imap4-use-modified-utf7} is set to non-nil value (default
801 value is @code{nil}).
802
803 Currently, Mule-UCS package is required to use UTF-7.
804 Mule-UCS works on following Emacsen.
805
806 @itemize @bullet
807 @item Emacs 20.3 or later
808 @item XEmacs 21.2.37 or later
809 @end itemize
810
811 You can obtain Mule-UCS package from following URL.
812
813 @example
814 ftp://ftp.m17n.org/pub/mule/Mule-UCS/
815 @end example
816
817 @node NNTP Folder, MH Folder, IMAP Folder, Folders
818 @section NNTP Folder
819 @cindex @samp{-}
820 @cindex NNTP Folder
821 @cindex Folder, NNTP
822 @cindex Folder, News
823 @cindex NetNews
824 @cindex News
825 @cindex Newsgroup
826 @cindex RFC 977
827
828 A folder to access USENET news via NNTP protocol (RFC 977).
829 One newsgroup is treated as a folder.
830
831 Format:
832
833 @example
834 @group
835 @samp{-} @var{newsgroup} [[@samp{:} @var{username}][@samp{@@} @var{hostname}][@samp{:} @var{port}]][@samp{!}]
836 @end group
837 @end example
838
839 default:
840 @example
841 @var{hostname}  -> The value of @code{elmo-nntp-default-server}.
842              Initial setting is @samp{localhost}.
843 @var{username}  -> The value of @code{elmo-nntp-default-user}.
844              Initial setting is @code{nil}.
845 @var{port}      -> The value of @code{elmo-nntp-default-port}.
846              Initial setting is 119.
847 @end example
848
849 AUTHINFO is used as authentication method if the @var{username} is
850 non-nil.  SSL will be default method if
851 @code{elmo-nntp-default-stream-type} is @code{ssl} even if the folder name
852 doesn't end with @samp{!}.  If a folder name ends with @samp{!!},
853 STARTTLS connection will be established.  if the value of
854 @code{elmo-nntp-default-stream-type} is @code{starttls}, STARTTLS will
855 be the default connection.
856
857 Example:
858
859 @example
860 @group
861 -fj.rec.tv            -> Newsgroup @samp{fj.rec.tv}.
862 -fj.rec.tv@@newsserver -> Newsgroup @samp{fj.rec.tv} on @samp{newsserver}.
863 @end group
864 @end example
865
866
867 @node MH Folder, Maildir Folder, NNTP Folder, Folders
868 @section MH Folder
869 @cindex @samp{+}
870 @cindex MH Folder
871 @cindex Folder, MH
872 @pindex MH
873
874 A folder to access MH format mail (1 file is 1 mail).
875
876 Format:
877
878 @example
879 @samp{+} @var{directory-name}
880 @end example
881
882 Normally, @var{directory-name} is an relative path to the variable
883 @code{elmo-localdir-folder-path} (default is @file{~/Mail}), but if it
884 starts with @samp{/} or @samp{~}, then it is treated as an absolute path
885 (this is also true for drive-letters).
886
887 Message number is used for the name of the message file.
888
889 Example:
890
891 @example
892 @group
893 +inbox         -> @file{~/Mail/inbox}
894 +from/teranisi -> @file{~/Mail/from/teranisi}
895 +~/test        -> @file{~/test}
896 @end group
897 @end example
898
899
900 @node Maildir Folder, News Spool Folder, MH Folder, Folders
901 @section Maildir Folder
902 @cindex @samp{.}
903 @cindex Maildir Folder
904 @pindex Maildir
905 @pindex qmail
906
907 A folder to access Maildir format (1 file is 1 mail).
908
909 Format:
910
911 @example
912 @samp{.} [@var{directory-name}]
913 @end example
914
915 Normally, @var{directory-name} is a relative path to the variable
916 @code{elmo-maildir-folder-path} (default is @file{~/Maildir}), but if it
917 starts with @samp{/} or @samp{~}, then it is treated as an absolute path
918 (this is also true for drive-letters).
919
920 Maildir contains @file{cur}, @file{new} and @file{tmp} subdirectories.
921 Messages are contained in the @file{cur} directory.  All message files
922 in the @file{new} directory are moved to @file{cur} directory when you
923 access the folder. All message files contained in the @file{tmp}
924 directory and not accessed for 36 hours are deleted.
925
926 This behavior conforms to the @uref{http://cr.yp.to/proto/maildir.html}.
927
928 Example:
929
930 @example
931 @group
932 .              -> @file{~/Maildir}
933 .inbox         -> @file{~/Maildir/inbox}
934 .from/teranisi -> @file{~/Maildir/from/teranisi}
935 .~/test        -> @file{~/test}
936 @end group
937 @end example
938
939
940 @node News Spool Folder, Archive Folder, Maildir Folder, Folders
941 @section News Spool Folder
942 @cindex @samp{=}
943 @cindex News spool Folder
944 @pindex gnspool
945
946 This folder handles locally saved news articles which are proposed by
947 Mew/IM.  You can also read articles directly from a spool-file which is
948 retrieved by an utility like @command{gnspool}.
949
950 Format:
951
952 @example
953 @samp{=} @var{directory-name}
954 @end example
955
956 @var{directory-name} is a sub-directory to the directory defined by
957 variable @code{elmo-localnews-folder-path} (default is @file{~/News})
958 You can use @samp{.} as directory delimiter as well as @samp{/}.
959
960 Example:
961
962 @example
963 @group
964 =fj/os/os2         -> @file{~/News/fj/os/os2}
965 =fj.os.bsd.freebsd -> @file{~/News/fj/os/bsd/freebsd}
966 @end group
967 @end example
968
969
970 @node Archive Folder, POP Folder, News Spool Folder, Folders
971 @section Archive Folder
972 @cindex @samp{$}
973 @cindex Archive Folder
974 @c @pindex ange-ftp
975
976 This method can handle archive files, which are compressed by utilities
977 such as Info-ZIP or LHA, as one folder.
978
979 Format:
980
981 @example
982 @group
983 @samp{$} @var{path-name} [@samp{;} @var{archiver-type} @samp{;} @var{prefix}]
984 @end group
985 @end example
986
987 @var{path-name} is the relative path from
988 @code{elmo-archive-folder-path} (initial setting is @file{~/Mail}).  If
989 @var{path-name} begins with @samp{/} or @samp{~} or `drive-letter of
990 DOS', @var{path-name} is treated as absolute path.  ange-ftp format is
991 also permitted under the environment of ange-ftp, efs.
992
993 The actual file name of the archive folder is
994 @code{elmo-archive-basename} (Initial setting is @file{elmo-archive})
995 under the @var{path-name}. If a file named @var{path-name} exists, it is
996 treated as folder. The suffix is automatically decided for
997 @var{archiver-type}.
998
999 If @var{archiver-type} is omitted, @code{elmo-archive-default-type}
1000 (Initial setting is @code{zip}) is referred.
1001
1002 @var{prefix} specifies the internal directory structure of the archive.
1003 For example, if the ML server is fml, @file{msend.tar.gz} has a
1004 structure like @file{spool/1}, so you have to specify @samp{spool} as
1005 @var{prefix}.
1006
1007 Example:
1008
1009 @example
1010 @group
1011 $teranisi         -> @file{~/Mail/teranisi/elmo-archive.zip}
1012 $bsd/freebsd;lha  -> @file{~/Mail/bsd/freebsd/elmo-archive.lzh}
1013 $/foo@@server:~/bar;zoo     -> @file{~/bar/elmo-archive.zoo} on ftp server
1014 $d:/msend.tar.gz;tgz;spool -> @file{d:/msend.tar.gz}
1015 $ml;zip/        -> Access group consists of archive folders
1016                    under @file{~/Mail/ml}
1017 @end group
1018 @end example
1019
1020 @menu
1021 * Archiver::     Supported Archivers
1022 * Archive Tips:: TIPS
1023 * Archive Vars:: Customization
1024 @end menu
1025
1026
1027 @node Archiver, Archive Tips, Archive Folder, Archive Folder
1028 @subsection Supported Archives
1029 @cindex Archiver
1030 @pindex LHA
1031 @pindex Info-ZIP
1032 @pindex UNZIP
1033 @pindex ZOO
1034 @pindex RAR
1035 @pindex TAR
1036 @pindex GNU TAR
1037
1038 By default, following archives are supported.
1039
1040 @example
1041 @group
1042         LHA, Info-ZIP/UNZIP, ZOO, RAR  ;; full-access
1043         GNU TAR('tgz, 'tar)            ;; read-only
1044 @end group
1045 @end example
1046
1047 If your archiver can include multiple files in one archive, you have a
1048 possibility use it as an archiver of Wanderlust (ARJ/UNARJ, ARC is one
1049 of the candidate. TAR is supported read-only because it cannot delete
1050 file in the archive (@code{mv})).
1051
1052 @command{gzip}, @command{bzip}, @command{bzip2} cannot be used as an
1053 archiver of Wanderlust because they cannot include multiple
1054 files. Archivers that cannot extract files to standard output are also
1055 not supported.
1056
1057 @subsection OS specific information about archiver.
1058
1059 Behaviors of the following archivers are confirmed by further experiences.
1060 (@samp{*} mark means recommended archiver).
1061
1062 @example
1063 [OS/2]  Warp4.0J(w/o VoiceType)+Fx00505/emx0.9c(fix04)/PMMule,EmacsPM
1064          LHA  OS/2 version Rel.2.06b    Feb 18, 1998
1065         *UnZip 5.32 of 3 November 1997, by Info-ZIP.
1066         *Zip 2.2 (November 3rd 1997).
1067          Zoo archiver, zoo 2.1 $@asis{}Date: 91/07/09 02:10:34 $
1068          GNU tar version 1.10 - AK 2.58 (DBCS/SJIS) 981216(homy) version
1069          gzip 1.2.4 (18 Aug 93) + bzip2 patch(by Iida-san)
1070
1071 [UN|X]  FreeBSD 2.2.7-RELEASE, Linux 2.0.30, Solaris2.6, HP-UX 9.07
1072          LHa for UNIX  V 1.14c
1073          UnZip 5.32 of 3 November 1997
1074          Zip 2.2 (November 3rd 1997)
1075          GNU tar 1.12 (1.11.x is no good)
1076          gzip 1.2.4 (18 Aug 93)
1077
1078 [Win32] Win.98/Meadow
1079          Lha32 version 1.28
1080          Zip 2.2
1081          UnZip 5.40
1082          GNU tar 1.11.8 + 1.5(WIN32)
1083          GZIP 1.2.4
1084          RAR 2.06
1085 @end example
1086
1087 * Caution about LHA
1088
1089 If you are an OS/2 user, Peter Fitzsimmons's LH/2 is not supported.
1090 Hiramatsu version of LHA is only supported.
1091 In Win32, LHa32 is only supported (DOS version is no good).
1092
1093 * Caution about GNU tar
1094
1095 You have to take care about GNU tar's version because many version has
1096 problem on deleting file from archive.
1097
1098 Please test @option{--delete} @option{-f} options work. Otherwise, your
1099 archive will be destroyed. No problem is reported on above versions of
1100 GNU tar.
1101
1102
1103 @node Archive Tips, Archive Vars, Archiver, Archive Folder
1104 @subsection TIPS
1105 @cindex Archive Tips
1106
1107 For comfortable migration, usage of @code{wl-summary-archive}
1108 (@pxref{Archive}) or Expire (@pxref{Expire}) is recommended.  To treat
1109 archive folders created by expiration, you must set non-nil value to
1110 @code{elmo-archive-treat-file}.
1111
1112 On the OS/2, there is a great difference between Mule2.3(19.28) and Emacs20.2
1113 in processing speed. For comfortable use, Emacs20 is recommended.
1114 (If re-search's performance is the problem, 19.3x or later may be okay.)
1115
1116 If many files are included in one archive,
1117 it takes long time to access the archive folder because
1118 archiver starting overhead is increased (especially LHA).
1119 150-200 messages in one archive is recommended.
1120
1121 Of course, following is possible @t{:-)}
1122 (meanings of these variables are described later.)
1123
1124 @lisp
1125 @group
1126 (setq wl-fcc "$backup")
1127 (setq wl-trash-folder "$trash;lha")
1128 @end group
1129 @end lisp
1130
1131 @node Archive Vars,  , Archive Tips, Archive Folder
1132 @subsection Variables About Archive Folder
1133 @cindex Archive variables
1134
1135 @table @code
1136 @item elmo-archive-default-type
1137 @vindex elmo-archive-default-type
1138 The initial setting is @code{zip}.
1139 Set archiver type by symbol.
1140
1141 @item elmo-archive-@var{type}-method-alist
1142 @vindex elmo-archive-TYPE-method-alist
1143 Define archiver @var{type}'s methods.
1144 (@var{type} is @samp{lha}, @samp{zip}, @samp{zoo}, @samp{tgz} etc)
1145 Each element of the alist is following.
1146
1147 @example
1148 @group
1149 (@var{action} . (@var{exec-name} @var{options}))   ;; external program and its option.
1150 (@var{action} . @var{function})              ;; function
1151 @end group
1152 @end example
1153
1154 Currently available actions are following.
1155
1156 @example
1157 @group
1158 'ls, 'cat ('cat-headers)        ;; Minimal setting(read-only)
1159 'mv ('mv-pipe), 'rm ('rm-pipe)  ;; full-access (with above)
1160 'cp ('cp-pipe)                  ;;
1161 @end group
1162 @end example
1163
1164 @noindent
1165 In above actions,
1166 actions enclosed with braces are optional (They are used for better
1167 performance).
1168
1169 @item elmo-archive-suffix-alist
1170 @vindex elmo-archive-suffix-alist
1171 An alist of archiver-type (symbol) and suffix.
1172
1173 @item elmo-archive-file-regexp-alist
1174 @vindex elmo-archive-file-regexp-alist
1175 An alist of a regexp to get file number from list output of archiver
1176 and archiver-type (symbol).
1177
1178 @item elmo-archive-method-list
1179 @vindex elmo-archive-method-list
1180 A list of elmo-archive-@var{type}-method-alist
1181 (@var{type} is a symbol of archiver-type).
1182
1183 @item elmo-archive-lha-dos-compatible
1184 @vindex elmo-archive-lha-dos-compatible
1185 The initial setting is @code{t} on OS/2 and Win32.  If non-nil, LHA is
1186 DOS (Mr. Yoshizaki original) compatible.
1187
1188 @item elmo-archive-cmdstr-max-length
1189 @vindex elmo-archive-cmdstr-max-length
1190 The initial setting is 8000.
1191
1192 Max length of command line argument for external archiver program.
1193 Emacs does not have a limit of command line byte length, but some OS
1194 (e.x OS/2) have. It depends on the OS. Archive folder is affected by
1195 this limit because it calls external archiver program directly (not
1196 called via shell).  For example, you cannot delete messages if archiver
1197 program must receive larger bytes of arguments to delete.  OS/2 have a
1198 command line argument limit of 8190 bytes, so we defined default as 8000
1199 with some margin.
1200
1201 However, you don't have an influence of command line argument limit
1202 if the archiver has `actions' to receive target file information from
1203 standard input (@code{rm-pipe}, @code{mv-pipe}, @code{cat-headers} action).
1204 @end table
1205
1206
1207 @node POP Folder, Shimbun Folder, Archive Folder, Folders
1208 @section POP Folder
1209 @cindex @samp{&}
1210 @cindex POP Folder
1211 @cindex RFC 1939
1212 @cindex POP3
1213 @cindex APOP
1214
1215 A folder to access e-mails via POP3 protocol (RFC 1939).
1216
1217 Format:
1218
1219 @example
1220 @group
1221 @samp{&} [@var{username}][[@samp{/} @var{authenticate-type}][@samp{:} @var{numbering-method}][@samp{@@} @var{hostname}][@samp{:} @var{port}]][@samp{!}]
1222 @end group
1223 @end example
1224
1225 You can specify
1226 @samp{user}  (plain password transmission) or @samp{apop}  (APOP authentication)
1227 as @var{authenticate-type}.
1228
1229 You can specify @samp{uidl} (use UIDL command for message numbering) or
1230 @samp{list} (use LIST command for message numbering) as @samp{numbering-method}.
1231
1232 default:
1233 @example
1234 @var{username}   -> The value of @code{elmo-pop3-default-user}.
1235               Initial setting is @env{USER} environment variable or
1236              @env{LOGNAME} environment variable or return value of
1237              @code{(user-login-name)}.
1238 @var{authenticate-type} -> The value of @code{elmo-pop3-default-authenticate-type}.
1239               Initial setting is @samp{user}.
1240 @var{numbering-method} -> Follow the value of @code{elmo-pop3-default-use-uidl}.
1241               If t, use UIDL for numbering. Initial setting is t.
1242 @var{hostname}   -> The value of @code{elmo-pop3-default-server}.
1243               Initial setting is @samp{localhost}.
1244 @var{port}       -> The value of @code{elmo-pop3-default-port}.
1245               Initial setting is 110.
1246 @end example
1247
1248 Example:
1249
1250 @example
1251 @group
1252 &hoge@@localhost     -> access localhost as user @samp{hoge}.
1253 &hoge@@popserver:109 -> access the server "popserver" on port 109
1254                         as user @samp{hoge}.
1255 @end group
1256 @end example
1257
1258 To use apop as an @var{authenticate-type}, @file{md5.el} is needed
1259 (XEmacs doesn't need @file{md5.el}).  @file{md5.el} is included in
1260 @file{utils/sasl/lisp/} or Emacs/W3 package
1261 (@uref{http://www.cs.indiana.edu/elisp/w3/docs.html}) or LCD archive
1262 (GPL2).
1263
1264 If the last character of the folder name is @samp{!}, Wanderlust
1265 connects to the POP server via SSL (Secure Socket Layer).  If you set
1266 @code{ssl} to @code{elmo-pop3-default-stream-type}, you don't have to put
1267 @samp{!} in the end of the folder name to use SSL. If a folder name ends
1268 with @samp{!!}, STARTTLS connection will be established.  if the value
1269 of @code{elmo-pop3-default-stream-type} is @code{starttls}, STARTTLS will be the
1270 default connection.
1271
1272
1273 @node Shimbun Folder, Namazu Folder, POP Folder, Folders
1274 @section Shimbun Folder
1275 @cindex @samp{@@}
1276 @cindex Shimbun Folder
1277 @cindex Folder, Shimbun
1278 @cindex Folder, Web
1279 @pindex w3m
1280 @pindex emacs-w3m
1281
1282 A folder for watching "shimbun" (means "newspaper" in Japanese),
1283 news site and mailing list archives on WWW by using emacs-w3m
1284 (@uref{http://emacs-w3m.namazu.org/}).
1285
1286 You should possess w3m and emacs-w3m to use this.
1287
1288 Format:
1289
1290 @example
1291 @group
1292 @samp{@@} @var{module-name} @samp{.} @var{folder-name}
1293 @end group
1294 @end example
1295
1296 Admissible values of @var{module-name} and @var{folder-name} are
1297 described in @file{README.shimbun.ja} distributed with emacs-w3m.
1298
1299 Example:
1300
1301 @example
1302 @group
1303 @@airs.wl  -> archive of wanderlust ML (using module @file{sb-airs.el})
1304 @@asahi/   -> access group of all folders in module @file{sb-asahi.el}
1305 @end group
1306 @end example
1307
1308 @subsection Variables About Shimbun Folder
1309
1310 @table @code
1311 @item elmo-shimbun-update-overview-folder-list
1312 @vindex elmo-shimbun-update-overview-folder-list
1313 The initial setting is @code{all}. Specify a set of folders to update
1314 overview when messages are fetched. Specify @code{all} to update
1315 overview in all shimbun folders. You can specify a list of regular
1316 expressions of shimbun folder names to restrict affected folders.
1317
1318 Example:
1319
1320 @example
1321 (setq elmo-shimbun-update-overview-folder-list
1322       '("^@@airs\\." "^@@namazu\\."))
1323 @end example
1324
1325 @kbd{s rescan} is needed after fetching to update summary view.
1326 @end table
1327
1328
1329 @node Namazu Folder, Multi Folder, Shimbun Folder, Folders
1330 @section Namazu Folder
1331 @cindex @samp{[}
1332 @cindex Namazu Folder
1333 @cindex Folder, Namazu
1334 @cindex Folder, Text Search
1335 @pindex Namazu
1336 @pindex nmz
1337 A folder to access messages found in namazu-index with some condition.
1338 It uses namazu (@uref{http://www.namazu.org/}) for search.
1339
1340 Format:
1341
1342 @example
1343 @group
1344 @samp{[} @var{search condition} @samp{]} [ @var{absolute path of namazu index} ]
1345 @end group
1346 @end example
1347
1348 Default value of the path of namazu index can be assigned by @code{elmo-nmz-default-index-path}.
1349
1350 Example:
1351
1352 @example
1353 @group
1354 [wanderlust]           -> search messages matched with
1355                        "wanderlust" from the default index
1356 [semi flim]~/Mail/semi -> search "semi flim" from the index
1357                        in the directory "~/Mail/semi"
1358 @end group
1359 @end example
1360
1361 @subsection TIPS
1362
1363 @subsubsection Enter space to separate keywords
1364
1365 If you want to use space in folder entry, @kbd{C-q @key{SPC}} will help you.
1366
1367 @subsubsection Alias name for index
1368
1369 You can define an alias name for index.
1370
1371 Example:
1372
1373 @example
1374 (setq elmo-nmz-index-alias-alist
1375       '(("cache" . "~/.elmo/cache")
1376         ("docs" . "~/documents")))
1377 @end example
1378
1379 Above definition defines two index aliases.
1380 You can specify
1381
1382 @example
1383 [wanderlust]cache
1384 @end example
1385
1386 to execute a namazu search with keyword @samp{wanderlust} using a index in the 
1387 directory @file{~/.elmo/cache}.
1388
1389 @subsubsection Multiple indices
1390
1391 You can specify a list for @code{elmo-nmz-default-index-path} and
1392 @code{elmo-nmz-index-alias-alist}.
1393 When list is specified, all index contained in the list is used as the 
1394 namazu indices.
1395
1396 Example:
1397
1398 @example
1399 (setq elmo-nmz-index-alias-alist
1400       '(("all" . ("~/.elmo/cache" "~/documents"))
1401         ("cache" . "~/.elmo/cache")))
1402 @end example
1403
1404 Using above alias setting, you can specify
1405
1406 @example
1407 [wanderlust]all
1408 @end example
1409
1410 to execute a namazu search with keyword @samp{wanderlust} using indices in the 
1411 directory @file{~/.elmo/cache} and @file{~/documents}.
1412
1413 @node Multi Folder, Filter Folder, Namazu Folder, Folders
1414 @section Multi Folder
1415 @cindex @samp{*}
1416 @cindex Multi Folder
1417 @cindex Folder, Multiple
1418 @cindex Folder, Marge
1419
1420 A folder to access virtual folder which collects messages from
1421 multiple folders.
1422
1423 Format:
1424
1425 @example
1426 @group
1427 @samp{*} @var{folder-1} [@samp{,} @var{folder-2}] @dots{} [@samp{,} @var{folder-N}]
1428 @end group
1429 @end example
1430
1431 After @samp{*} character, specify multiple folders you want to collect
1432 separated by @samp{,} like
1433 @samp{@var{folder-1},@var{folder-2},@dots{},@var{folder-N}}.
1434
1435 Example:
1436
1437 @example
1438 @group
1439 *-fj.editor.xemacs,-fj.editor.mule,-fj.editor.emacs
1440 -> -fj.editor.xemacs, -fj.editor.mule and -fj.editor.emacs are
1441    treated as one folder.
1442
1443 *+inbox,-fj.rec.tv,%inbox
1444 -> +inbox, -fj.rec.tv and %inbox are treated as one folder.
1445 @end group
1446 @end example
1447
1448
1449 @node Filter Folder, Pipe Folder, Multi Folder, Folders
1450 @section Filter Folder
1451 @cindex @samp{/}
1452 @cindex Filter Folder
1453 @cindex Folder, Filtering
1454 @cindex Folder, Virtual
1455 @cindex Folder, Conditional
1456
1457 A folder to access virtual folder which collects all messages that
1458 satisfy a condition.
1459
1460 Format:
1461
1462 @example
1463 @samp{/} @var{condition} @samp{/} @var{target-folder}
1464 @end example
1465
1466 In the @var{condition} part, you can specify following.
1467
1468 @enumerate
1469 @item
1470 Partial filter: @samp{first:@var{number}}, @samp{last:@var{number}}
1471
1472 first: @var{number} messages are picked from top of folder.
1473 last:  @var{number} messages are picked from bottom of folder.
1474
1475 Example:
1476
1477 @example
1478 @group
1479 /last:10/-fj.os.linux -> Latest 10 messages from -fj.os.linux are picked.
1480 /first:20/%inbox      -> First 20 messages from %inbox are picked.
1481 @end group
1482 @end example
1483
1484 @item
1485 Date filter: @samp{since:@var{date}}, @samp{before:@var{date}}
1486
1487 since: only messages arrived since @var{date} are picked.
1488 before: only messages arrived before @var{date} are picked.
1489
1490 You can specify following as @var{date}.
1491
1492 @example
1493 @group
1494 yesterday ->  a day before today.
1495 lastweek  ->  same day of last week.
1496 lastmonth ->  same day of last month.
1497 lastyear  ->  same day of last year.
1498 @var{number}daysago -> @var{number} days ago. (e.x. '3daysago')
1499 @var{day}-@var{month}-@var{year} -> specify date directly (ex. 1-Nov-1998)
1500 @end group
1501 @end example
1502
1503 Example:
1504
1505 @example
1506 @group
1507 /since:3daysago/+inbox -> messages arrived since 3 days ago in +inbox
1508                           are picked.
1509 /before:yesterday/+inbox -> messages arrived before yesterday in +inbox
1510                           are picked.
1511 @end group
1512 @end example
1513
1514 @item
1515 Field filter: @samp{@var{field}:@var{value}}
1516
1517 All messages that have @var{field} and its value is @var{value} are picked.
1518 @var{field} and @var{value} are case insensitive.
1519
1520 Example:
1521
1522 @example
1523 @group
1524 /from:teranisi/+inbox -> In +inbox, messages which have From: field
1525                          and its value includes "teranisi" string are picked.
1526 /body:foo/%inbox      -> In %inbox, messages which have "foo" text
1527                          are picked.
1528 @end group
1529 @end example
1530
1531 @item
1532 Compound condition
1533
1534 If you combine conditions by character @samp{|}, it is considered as OR condition. @samp{&} is considered as AND condition, likewise.
1535 Condition can be grouped by parentheses (@samp{(}, and @samp{)}).
1536
1537 @samp{/tocc:xxxx/} is an abbreviation of @samp{/to:xxxx|cc:xxxx/}.
1538 @samp{/!tocc:xxxx/} is an abbreviation of @samp{/!to:xxxx&!cc:xxxx/}.
1539
1540 Example:
1541
1542 @example
1543 @group
1544 /from:teranisi&!to:teranisi/+inbox
1545                       -> In +inbox, messages are picked if the message's
1546                          From: field includes "teranisi" and
1547                          To: field doesn't include "teranisi".
1548
1549 /tocc:"Yuuichi Teranishi"/+inbox
1550                       -> In +inbox, messages are picked if the
1551                          message's To: field or Cc: field includes
1552                          "Yuuichi Teranishi".
1553
1554 /(from:yt|from:teranisi)&subject:report/+inbox
1555                       -> In +inbox, messages are picked if the message's
1556                          From: field includes "yt" or "teranisi", and
1557                         Subject includes "report".
1558 @end group
1559 @end example
1560 @end enumerate
1561
1562 @noindent
1563 Tip for string description:
1564
1565 Space character, @samp{"}, @samp{/},@samp{)},@samp{|} and @samp{&}
1566 should be enclosed with @samp{"} in @var{value} string.  (@samp{"}
1567 should be escaped with @samp{\} in it).  You can enclose the string with
1568 @samp{"} even it does not contain these characters.
1569
1570 @noindent
1571 Advanced example:
1572
1573 @example
1574 *%inbox,/from:teranisi/%inbox@@server
1575        -> Messages in %inbox or
1576           message is in the %inbox@@server folder and it's From field
1577           includes "teranisi" are collected.
1578
1579 /last:100//to:teranisi/*+inbox,%inbox
1580        -> Latest 100 messages which is in the +inbox or %inbox folder
1581           and To: field matches "teranisi".
1582
1583 /from:hogehoge//last:20//tocc:teranisi/%#mh/inbox@@localhost
1584        -> Pick messages which have From: field and it includes "hogehoge"
1585           from latest 20 messages in the %#mh/inbox@@localhost
1586           and To: or Cc: field includes "teranisi".
1587 @end example
1588
1589 @node Pipe Folder, Internal Folder, Filter Folder, Folders
1590 @section Pipe Folder
1591 @cindex @samp{|}
1592 @cindex Pipe Folder
1593 @cindex Get Message
1594 @cindex Download Message
1595 @cindex Incorporate Message
1596
1597 In the pipe folder, messages are automatically transferred from the source
1598 folder to destination folder.
1599
1600 Format:
1601
1602 @example
1603 @samp{|} @var{source-folder} @samp{|} @var{destination-folder}
1604 @end example
1605
1606 When you access the pipe folder, messages are automatically transferred
1607 from @var{source-folder} to @var{destination-folder}.
1608 It is convenient if you want to download messages to local disk via POP.
1609 For example, if you specify following
1610
1611 @example
1612 |&username@@popserver|+inbox
1613 @end example
1614
1615 @noindent
1616 and access it, Wanderlust downloads messages from
1617 @samp{&username@@popserver} to @samp{+inbox} automatically.
1618
1619 On the other hand, if you put @samp{|:} instead of second @samp{|},
1620 then messages are copied to the destination folder (not deleted from
1621 source-folder). At the next time you access that folder, copies new
1622 messages only.
1623
1624 @example
1625 @samp{|} @var{source-folder} @samp{|:} @var{destination-folder}
1626 @end example
1627
1628 If you want to copy messages from POP server and view them, specify the
1629 folder as follows:
1630
1631 @example
1632 |&username@@popserver|:+inbox
1633 @end example
1634
1635 where messages will be kept on the server.
1636
1637 Example:
1638
1639 @example
1640 @group
1641 |%inbox|%myinbox   -> Download %inbox to %myinbox.
1642 |*&user@@popserver1,&user@@popserver2|+inbox
1643          -> Download from &user@@popserver1 and &user@@popserver2 to +inbox.
1644 |-gnu.emacs.sources|:+sources
1645          -> Copy messages from -gnu.emacs.sources to +sources.
1646 @end group
1647 @end example
1648
1649 After messages are moved, a hook @code{elmo-pipe-drained-hook} is called.
1650
1651 @node Internal Folder,  , Pipe Folder, Folders
1652 @section Internal folder
1653 @cindex @samp{'}
1654 @cindex Internal Folder
1655 @cindex Folder, @samp{$} mark
1656 @cindex Cache
1657 @c @cindex Folder, Null
1658
1659 A folder to access internal messages of Wanderlust.
1660
1661 Format:
1662
1663 @example
1664 @group
1665 @samp{'flag} [@samp{/} @var{global-flag}]
1666 @samp{'sendlog}
1667 @samp{'cache/00} - @samp{'cache/1F}
1668 @end group
1669 @end example
1670
1671 A folder named @samp{'flag} is a special virtual folder which collects
1672 messages which have @var{global-flag}.
1673
1674 Now, @samp{important} flag is supported as @var{global-flag}.  You can
1675 review important messages at once after you put important marks on the
1676 messages in the different folders.
1677
1678 In this folder, if you delete message, @var{global-flag} put on the
1679 message is removed.  If you append messages to this folder, the message
1680 will have @var{global-flag}.
1681
1682
1683 A folder named @samp{'sendlog} is a virtual folder which collects
1684 cached messages which are recoded on @file{~/.elmo/sendlog}.
1685 It might be useful when you forgot to add cc for yourself.
1686 To use this, you should set @code{wl-draft-use-cache} to non-nil
1687 so that sent messages are cached.
1688
1689
1690 You can access cached messages fetched via network by accessing
1691 folders named @samp{'cache/00} - @samp{'cache/1F}. 00 - 1F are
1692 the name of the subdirectories of the cache directory
1693 (@file{~/.elmo/cache}).
1694
1695
1696 @node Folder, Summary, Folders, Top
1697 @chapter Folder mode
1698 @cindex Folder
1699
1700 After you start Wanderlust, folder mode is appeared firstly.
1701 It contains folder list you subscribed.
1702 You can select and edit folders in this mode.
1703
1704 @menu
1705 * Selecting Folder:: Select folder you want to read
1706 * Folder Manager::   Editing folders
1707 @end menu
1708
1709
1710 @node Selecting Folder, Folder Manager, Folder, Folder
1711 @section Selecting Folder
1712 @cindex Selecting Folder
1713
1714 @subsection Usage (TIPS)
1715
1716 @subsubsection Check new, unread number
1717
1718 Folder mode looks like this.
1719 (In XEmacs, it looks much nicer @t{;-)})
1720
1721 @example
1722 @group
1723 [-]Desktop:14186/35580/67263
1724    Inbox:3/10/10
1725    Trash:2/7/10
1726    Drafts:0/0/3
1727    Sent:0/9/348
1728    [-]Emacsen:0/34/4837
1729      Wanderlust ML:0/0/558
1730      ELIPS ML:0/0/626
1731      tm:0/0/821
1732      XEmacs Beta:0/29/255
1733      Mew:0/0/998
1734      Mule-Win32:0/0/1491
1735      fj's Emacsen:0/5/88
1736 @end group
1737 @end example
1738
1739
1740 Each line means:
1741
1742 @example
1743 @var{folder-name}:@var{new-number}/@var{unread-number}/@var{all-number}
1744 @end example
1745
1746 @noindent
1747 @kbd{s} key on the folder line updates these numbers.
1748 It changes its color if it has many new messages.
1749
1750 The whole folder mode is a folder group named @samp{Desktop}.
1751 Folder group open/close by return key.
1752 A operation to a folder group is treated as operations on the
1753 children folders.
1754 For example, when you type @kbd{s} on @samp{[-]Emacsen},
1755 six children folders update its unread number status.
1756
1757 @subsubsection Select Folder
1758
1759 To enter summary mode of the folder, type return (or space) key on
1760 the folder line.
1761 If the variable @code{wl-stay-folder-window} has non-nil value,
1762 summary window appears on the right of the folder mode window.
1763
1764 @subsection Key bindings
1765
1766 Folder mode's key binding (related to selecting folders) is following.
1767
1768 @table @kbd
1769 @item @key{SPC}
1770 @itemx @key{RET}
1771 @kindex @key{SPC} (Folder)
1772 @kindex @key{RET} (Folder)
1773 @findex wl-folder-jump-to-current-entity
1774 Enter to the summary mode of the folder at the current cursor point.
1775 With prefix argument, enter the sticky summary.
1776 If the cursor is on the top of folder group line,
1777 the folder group is opened or closed.
1778 When the cursor is on the access group and this command is called
1779 with prefix argument, folder children list is updated to the newest one.
1780 (Children list is updated recursively if the access folder has hierarchical
1781 structure.)
1782 (@code{wl-folder-jump-to-current-entity})
1783
1784 @item M-@key{RET}
1785 @kindex M-@key{RET} (Folder)
1786 @findex wl-folder-update-recursive-current-entity
1787 Folder children list of the access group at the current cursor point
1788 is updated to the newest one.
1789 (Children list is updated recursively if the access folder has hierarchical
1790 structure.)
1791 (@code{wl-folder-update-recursive-current-entity})
1792
1793 @item w
1794 @kindex w (Folder)
1795 @findex wl-draft
1796 Create a new draft message.
1797 (@code{wl-draft})
1798
1799 @item W
1800 @kindex W (Folder)
1801 @findex wl-folder-write-current-folder
1802 If the current cursor point is on the NNTP folder, create a new draft
1803 message which already has @samp{Newsgroups:} field.  If the current
1804 cursor point is on the folder for mailing list (refile destination),
1805 create a new draft message which already has @samp{To:} field with
1806 guessed mailing list address (If @code{wl-subscribed-mailing-list} is
1807 valid list).
1808 (@code{wl-folder-write-current-folder})
1809
1810 @item C-c C-o
1811 @kindex C-c C-o (Folder)
1812 @findex wl-jump-to-draft-buffer
1813 Move to the draft buffer if available.  If multiple draft buffer exists,
1814 moved to one after another.  If prefix argument is specified, load draft
1815 folder's message to the draft buffer and jump to it.
1816 (@code{wl-jump-to-draft-buffer})
1817
1818 @item s
1819 @kindex s (Folder)
1820 @findex wl-folder-check-current-entity
1821 Update new and unread number information of the folder at the current
1822 cursor point.
1823 (@code{wl-folder-check-current-entity})
1824
1825 @item S
1826 @kindex S (Folder)
1827 @findex wl-folder-sync-current-entity
1828 Update summary information of the folder at the current cursor point.
1829 (@code{wl-folder-sync-current-entity})
1830
1831 @item r s
1832 @kindex r s (Folder)
1833 @findex wl-folder-check-region
1834 Update new and unread number information of the folders in the currently
1835 selected region.
1836 (@code{wl-folder-check-region})
1837
1838 @item r S
1839 @kindex r S (Folder)
1840 @findex wl-folder-sync-region
1841 Update summary information of the folders in the currently selected region.
1842 (@code{wl-folder-sync-region})
1843
1844 @item Z
1845 @kindex Z (Folder)
1846 @findex wl-status-update
1847 Sync up address book status with @file{~/.addresses}'s content.
1848 (@code{wl-status-update})
1849
1850 @item P
1851 @kindex P (Folder)
1852 @findex wl-folder-prev-unread
1853 Jump cursor to the folder which have unread messages on the upward from
1854 current cursor point.
1855 (@code{wl-folder-prev-unread})
1856
1857 @item N
1858 @kindex N (Folder)
1859 Jump cursor to the folder which have unread messages on the downward
1860 from current cursor point.
1861 (@code{wl-folder-next-unread})
1862
1863 @item p
1864 @kindex p (Folder)
1865 Move cursor to the folder on the previous line.
1866 (@code{wl-folder-prev-entity})
1867
1868 @item n
1869 @kindex n (Folder)
1870 Move cursor to the folder on the next line.
1871 (@code{wl-folder-next-entity})
1872
1873 @item J
1874 @kindex J (Folder)
1875 Jump to the folder specified by the user input.
1876 (@code{wl-folder-jump-folder})
1877
1878 @item I
1879 @kindex I (Folder)
1880 @findex wl-folder-prefetch-current-entity
1881 Prefetch new messages of the folder at the current cursor point by
1882 @code{wl-summary-incorporate}.
1883 If the cursor is on the folder group, it is executed recursively.
1884 (@code{wl-folder-prefetch-current-entity})
1885
1886 @item c
1887 @kindex c (Folder)
1888 @findex wl-folder-mark-as-read-all-current-entity
1889 Mark all unread messages of the folder at the current cursor point as read.
1890 If the cursor is on the folder group, it is executed recursively.
1891 (@code{wl-folder-mark-as-read-all-current-entity})
1892
1893 @item f
1894 @kindex f (Folder)
1895 @findex wl-folder-goto-first-unread-folder
1896 Enter summary mode of the first unread folder.
1897 (@code{wl-folder-goto-first-unread-folder})
1898
1899 @item E
1900 @kindex E (Folder)
1901 @findex wl-folder-empty-trash
1902 Empty trash.
1903 (@code{wl-folder-empty-trash})
1904
1905 @item F
1906 @kindex F (Folder)
1907 @findex wl-folder-flush-queue
1908 Flush queue.
1909 (@code{wl-folder-flush-queue})
1910
1911 @item V
1912 @kindex V (Folder)
1913 @findex wl-folder-virtual
1914 Move to the virtual folder (filter folder) with the condition specified.
1915 (@code{wl-folder-virtual})
1916
1917 @item ?
1918 @kindex ? (Folder)
1919 @findex wl-folder-pick
1920 Search the folders with the condition specified.
1921 (@code{wl-folder-pick})
1922
1923 @item o
1924 @kindex o (Folder)
1925 @findex wl-folder-open-all-unread-folder
1926 All unread folder is opened.
1927 (@code{wl-folder-open-all-unread-folder})
1928
1929 @item /
1930 @kindex / (Folder)
1931 @findex wl-folder-open-close
1932 Folder group is opened/closed.
1933 (@code{wl-thread-open-close})
1934
1935 @item [
1936 @kindex [ (Folder)
1937 All folder group is opened.
1938 (@code{wl-folder-open-all})
1939
1940 @item ]
1941 @kindex ] (Folder)
1942 All folder group is closed.
1943 (@code{wl-folder-close-all})
1944
1945 @item q
1946 @kindex q (Folder)
1947 Quit Wanderlust.
1948 (@code{wl-exit})
1949
1950 @item z
1951 @kindex z (Folder)
1952 Suspend Wanderlust.
1953 (@code{wl-folder-suspend})
1954
1955 @item M-s
1956 @kindex M-s (Folder)
1957 Save current folder status.
1958 (@code{wl-save})
1959
1960 @item M-t
1961 @kindex M-t (Folder)
1962 Toggle Wanderlust's offline/online status.
1963 (@code{wl-toggle-plugged})
1964
1965 @item C-t
1966 @kindex C-t (Folder)
1967 Start Wanderlust's plug-status manager.
1968 (@code{wl-plugged-change})
1969 @end table
1970
1971 @subsection Customize variables
1972
1973 @table @code
1974 @item wl-folders-file
1975 @vindex wl-folders-file
1976 The initial setting is @file{~/.folders}.
1977 Subscribed folders are described (saved) in this file.
1978
1979 @item wl-folder-info-save
1980 @vindex wl-folder-info-save
1981 The initial setting is @code{t}.  If non-nil, unread information is
1982 saved and used in the next Wanderlust session.
1983
1984 @item wl-stay-folder-window
1985 @vindex wl-stay-folder-window
1986 The initial setting is @code{nil}.
1987 If non-nil, summary window is appeared on the right side of the folder buffer.
1988
1989 @item wl-folder-window-width
1990 @vindex wl-folder-window-width
1991 The initial setting is 20.
1992 Folder mode's window width when @code{wl-stay-folder-window} is non-nil.
1993
1994 @item wl-folder-use-frame
1995 @vindex wl-folder-use-frame
1996 The initial setting is @code{nil}.
1997 If non-nil, use new frame for the folder window.
1998
1999 @item wl-folder-many-unsync-threshold
2000 @vindex wl-folder-many-unsync-threshold
2001 The initial setting is 70.
2002 If the number of unread messages is more than this value,
2003 folder color is changed.
2004
2005 @item wl-highlight-folder-by-numbers
2006 @vindex wl-highlight-folder-by-numbers
2007 This option controls how to highlight each line in the folder buffer.
2008 The default value is @code{t}, highlighting with various colors based on
2009 the message numbers.  If it is @code{nil}, highlighting with various
2010 colors based on the folder status.  In addition, if it is a number
2011 (e.g. 1), highlighting will be done based on both the message numbers
2012 and the folder status.
2013
2014 @item wl-folder-desktop-name
2015 @vindex wl-folder-desktop-name
2016 The initial setting is @samp{Desktop}.
2017 The name of top folder group.
2018
2019 @item wl-folder-petname-alist
2020 @vindex wl-folder-petname-alist
2021 The initial setting is @code{nil}.
2022 An alist of folder's realname and its nickname.
2023
2024 @item wl-folder-access-subscribe-alist
2025 @vindex wl-folder-access-subscribe-alist
2026 The initial setting is @code{nil}.
2027
2028 Control automatic subscribing and unsubscribing of the children list
2029 of access groups.
2030
2031 Each element is:
2032
2033 @example
2034 (@var{regexp-of-access-folder} . (@var{subscribe-flag} @var{regexp-of-folders} @dots{}))
2035 @end example
2036
2037 @noindent
2038 If @var{subscribe-flag} is non-nil, folders which have name matched to
2039 @var{regexp-of-folders} are displayed. Otherwise, hidden.  However,
2040 already unsubscribed folder is not displayed even when the
2041 @var{subscribe-flag} is non-nil. Multiple @var{regexp-of-folders} can be
2042 specified.
2043
2044 Example:
2045
2046 @lisp
2047 @group
2048 '(("^-fj$" . (t   "^-fj\\.\\(comp\\|editor\\|mail\\)"
2049                   "^-fj\\.\\(net\\|news\\|os\\|rec\\)"))
2050   ("^-$" . (t   "^-\\(fj\\|tnn\\|japan\\|gnu\\|comp\\)"))
2051   ("^\\+ml$" . (nil "^\\+ml$" "^\\+ml/tmp")))
2052 @end group
2053 @end lisp
2054
2055 @item wl-folder-hierarchy-access-folders
2056 @vindex wl-folder-hierarchy-access-folders
2057 A list of regular expressions for access groups which creates children
2058 folder list hierarchically.
2059
2060 For example, if you specify
2061 @code{wl-folder-hierarchy-access-folders} like following,
2062
2063 @lisp
2064 @group
2065 (setq wl-folder-hierarchy-access-folders
2066      '("^-[^\\.]*$" "^-comp.unix$" "^-comp.unix.bsd$"))
2067 @end group
2068 @end lisp
2069
2070 @noindent
2071 you obtain the access group hierarchy as follows.
2072
2073 @example
2074 @group
2075    [-]-:912/912/3011
2076      [-]-fj:674/674/1314
2077        -fj.comp.announce:0/0/2
2078        -fj.comp.dev.cdrom:0/0/0
2079        @dots{}
2080      [+]-japan:238/238/1688
2081      [-]-comp:0/0/4
2082        [-]-comp.unix:0/0/0
2083          -comp.unix.admin:0/0/0
2084          -comp.unix.dos-under-unix:0/0/0
2085          -comp.unix.programmer:0/0/0
2086          [-]-comp.unix.bsd:0/0/23
2087            -comp.unix.bsd.freebsd.announce:0/0/0
2088      @dots{}
2089 @end group
2090 @end example
2091
2092 If you opened @samp{-} in this example, only the direct children is created
2093 (@samp{-fj}, @samp{-japan}, @samp{-tnn}, @dots{}).
2094 second hierarchy (@samp{-fj.comp.announce}, @dots{}, @samp{-comp.unix}, @dots{})
2095 is not created until the children access group is opened.
2096 @end table
2097
2098
2099 @node Folder Manager,  , Selecting Folder, Folder
2100 @section Editing Folders
2101 @cindex Folder Manager
2102 @cindex Folder, Edit
2103 @cindex Folder, Subscribe
2104 @cindex Folder, Unsubscribe
2105
2106 As described before, subscribed folder list is saved in @file{~/.folders} file.
2107 But you don't have to edit @file{~/.folders} directly.
2108 You can append, delete, edit folders from folder mode.
2109
2110 @subsection Usage (Tips)
2111
2112 @subsubsection Append Folder
2113
2114 @kbd{m a} appends new folder to the folder mode.
2115 @kbd{m g} appends new folder group.
2116 To append new folder to this group, firstly open it,
2117 then execute append command in the next line.
2118
2119 @subsubsection Edit Folder
2120
2121 You can cut folder by @kbd{C-k}, paste by @kbd{C-y}.
2122 Thus, you can change folder position as if you were editing a normal file.
2123
2124 @subsubsection Create Multi Folder.
2125
2126 @enumerate
2127 @item
2128 Type @kbd{m q} to clear @code{wl-fldmgr-cut-entity-list}.
2129 @item
2130 Cut folder by @kbd{C-k} or copy folder by @kbd{M-c}.
2131 @item
2132 Type @kbd{m m}, then you can create multi folder.
2133 @end enumerate
2134
2135 @subsubsection Delete Nickname, Filter
2136
2137 You can delete nickname or filter by putting ``''(@var{NULL}) from the
2138 minibuffer while appending.
2139
2140 @subsubsection Append Folder to Empty Group
2141
2142 To append new folder to the empty folder group
2143 (after you create folder group by typing @kbd{m g}),
2144 firstly open it, then execute append command in the next line.
2145 If it is closed, folder is appended on the same level with
2146 the folder group above. It is difficult to explain by words so try it.
2147 In other words, appended position depends on the
2148 open/close status of the upper one.
2149
2150 @subsubsection Charset of the Folders File.
2151
2152 @code{wl-mime-charset} is used for saving @code{wl-folders-file}.
2153
2154 @subsubsection Create Filter
2155
2156 @kbd{m f} adds filter to the folder at the current cursor point.  To
2157 create new filter folder and leave the current folder unchanged, copy it
2158 @kbd{M-c}, make filter @kbd{m f} and paste it @kbd{C-y}.  Multiple
2159 filter can be specified while appending filter.  If you put
2160 ``''(@var{NULL}), filter is deleted.
2161
2162 @subsubsection Sort Folders
2163
2164 Sorting of the folders is executed by the function specified by
2165 @code{wl-fldmgr-sort-function}.
2166 The initial setting is @code{wl-fldmgr-sort-standard},
2167 which sorts alphabetically.
2168 Sorting affects only on the current folder group. It does not
2169 affect on the child groups.
2170
2171 @subsubsection Hiding Folders in the Access Group
2172
2173 Usually, access group displays all children folders, but you can set
2174 some folders hidden. Following operations are only available on access
2175 group.
2176
2177 Command @code{wl-fldmgr-unsubscribe} (@kbd{u}) toggles the visibility
2178 (subscribe/unsubscribe) of the folder at current cursor point.  Against
2179 this, @code{wl-fldmgr-unsubscribe-region} (@kbd{U}) hides folders in the
2180 specified region.
2181
2182 Note that @code{wl-fldmgr-unsubscribe-region} does not toggle while
2183 @code{wl-fldmgr-unsubscribe} toggles.  These two commands accept prefix
2184 argument and if the argument has positive number, the unsubscribe it.
2185 If the prefix argument has negative value, folder becomes visible and if
2186 zero, folder visibility is toggled.
2187
2188 The other commands, @code{wl-fldmgr-subscribe} and
2189 @code{wl-fldmgr-subscribe-region} are also prepared (not binded to the
2190 key).
2191
2192 Moreover, if @code{wl-fldmgr-cut} or @code{wl-fldmgr-cut-region} is
2193 executed in the access group, they have a same effect with
2194 @code{wl-fldmgr-unsubscribe} and @code{wl-fldmgr-unsubscribe-region}.
2195 The difference is that cut commands deletes folders from the current
2196 buffer.
2197
2198 @subsubsection Operations in the Access Group
2199
2200 You can insert and delete folders in the access group like usual folder
2201 group.  But insert and delete commands can be only available for the
2202 children folders of the access group and they only sets the subscribe
2203 status.  In other words, insertion of the folder means subscribing,
2204 deletion means unsubscribing.
2205 @footnote{In the current implementation,
2206 it is faster to delete region than to unsubscribe region.}
2207
2208 To update the access group when children folders are inserted or deleted
2209 by other way (other than Wanderlust),
2210 open the access group by typing @kbd{C-u @key{RET}}.
2211 @xref{Selecting Folder}.
2212
2213 The order of children folders of access group is saved after
2214 insertion/deletion/sorting.
2215 If you set @code{wl-force-fetch-folders} to non-nil or open access group
2216 by typing @kbd{C-u @key{RET}}, disappeared folders are deleted and
2217 newly created folders are inserted on the top of the access group.
2218
2219 @subsection Key bindings
2220 @cindex Keybind, Folder Mode
2221 @cindex Keybind, Folder Buffer
2222
2223 Key bindings on the folder mode related to folder editing are shown below.
2224 All bindings starts with @kbd{m}, and primary commands are binded to
2225 one stroke key binding.
2226
2227 @table @kbd
2228 @item m a
2229 @kindex m a (Folder)
2230 @findex wl-fldmgr-add
2231 Insert a folder.
2232 (@code{wl-fldmgr-add})
2233
2234 @item +
2235 @itemx m g
2236 @kindex + (Folder)
2237 @kindex m g (Folder)
2238 @findex wl-fldmgr-make-group
2239 Create a folder group.
2240 (@code{wl-fldmgr-make-group})
2241
2242 @itemx m A
2243 @kindex m A (Folder)
2244 @findex wl-fldmgr-make-access-group
2245 Create an access group.
2246 (@code{wl-fldmgr-make-access-group})
2247
2248 @item m d
2249 @kindex m d (Folder)
2250 @findex wl-fldmgr-delete
2251 Delete folder itself and msgdb.
2252 If the folder itself cannot be deleted like NNTP folder,
2253 only msgdb is deleted.
2254 (@code{wl-fldmgr-delete})
2255
2256 @item R
2257 @itemx m R
2258 @kindex R (Folder)
2259 @kindex m R (Folder)
2260 @findex wl-fldmgr-rename
2261 Change the name of folder or folder group.
2262 msgdb's path is also changed.
2263 (@code{wl-fldmgr-rename})
2264
2265 @item *
2266 @itemx m m
2267 @kindex * (Folder)
2268 @kindex m m(Folder)
2269 @findex wl-fldmgr-make-multi
2270 Create a multi folders in the cutlist (cut, copied folders).
2271 (@code{wl-fldmgr-make-multi})
2272
2273 @item |
2274 @itemx m f
2275 @kindex | (Folder)
2276 @kindex m f (Folder)
2277 @findex wl-fldmgr-make-filter
2278 Create a filter folder. (Put a filter on the folder).
2279 (@code{wl-fldmgr-make-filter})
2280
2281 @item M-c
2282 @itemx m c
2283 @kindex M-c (Folder)
2284 @kindex m c (Folder)
2285 @findex wl-fldmgr-copy
2286 Copy folder (it is not available on folder group).
2287 (@code{wl-fldmgr-copy})
2288
2289 @item M-w
2290 @itemx m W
2291 @kindex M-w (Folder)
2292 @kindex m W (Folder)
2293 @findex wl-fldmgr-copy-region
2294 Copy folders in the specified region.
2295 (@code{wl-fldmgr-copy-region})
2296
2297 @item C-k
2298 @itemx m k
2299 @kindex C-k (Folder)
2300 @kindex m k (Folder)
2301 @findex wl-fldmgr-cut
2302 Cut folder. Folder itself is not deleted.
2303 (@code{wl-fldmgr-cut})
2304
2305 @item C-w
2306 @itemx m C-w
2307 @kindex C-w (Folder)
2308 @kindex m C-w (Folder)
2309 @findex wl-fldmgr-cut-region
2310 Cut folders in the specified region.
2311 (@code{wl-fldmgr-cut-region})
2312
2313 @item C-y
2314 @itemx m y
2315 @kindex C-y (Folder)
2316 @kindex m y (Folder)
2317 @findex wl-fldmgr-yank
2318 Paste folders that are copied or cut (folders in the cut-list).
2319 (@code{wl-fldmgr-yank})
2320
2321 @item m p
2322 @kindex m p (Folder)
2323 @findex wl-fldmgr-set-petname
2324 Put nickname on the folder.
2325 (@code{wl-fldmgr-set-petname})
2326
2327 @item m q
2328 @kindex m q (Folder)
2329 @findex wl-fldmgr-clear-cut-entity-list
2330 Clear the cut-list. (cut, copied folder information is cleared,
2331 you cannot paste after this)
2332 (@code{wl-fldmgr-clear-cut-entity-list})
2333
2334 @item m s
2335 @kindex m s (Folder)
2336 @findex wl-fldmgr-sort
2337 Sort folders in the current folder group.
2338 (@code{wl-fldmgr-sort})
2339
2340 @item m C-s
2341 @kindex m C-s (Folder)
2342 @findex wl-fldmgr-save
2343 Save current folder view to the @file{wl-folders-file}.
2344 (@code{wl-fldmgr-save})
2345 @end table
2346
2347 [Following commands are only available on the access groups]
2348
2349 @table @kbd
2350 @item u
2351 @itemx m u
2352 @kindex u (Folder)
2353 @kindex m u (Folder)
2354 @findex wl-fldmgr-unsubscribe
2355 Set the visibility of folder (subscribe/unsubscribe).
2356 (@code{wl-fldmgr-unsubscribe})
2357
2358 @item U
2359 @itemx r u
2360 @kindex U (Folder)
2361 @kindex r u (Folder)
2362 @findex wl-fldmgr-unsubscribe-region
2363 Set the visibility of the folders (subscribe/unsubscribe) in the
2364 specified region.
2365 (@code{wl-fldmgr-unsubscribe-region})
2366
2367 @item l
2368 @itemx m l
2369 @kindex l (Folder)
2370 @kindex m l (Folder)
2371 @findex wl-fldmgr-access-display-normal
2372 List folders that are currently available.
2373 (@code{wl-fldmgr-access-display-normal})
2374
2375 @item L
2376 @itemx m L
2377 @kindex L (Folder)
2378 @kindex m L (Folder)
2379 @findex wl-fldmgr-access-display-all
2380 List all folders regardless of the subscription status.
2381 (@code{wl-fldmgr-access-display-all})
2382 @end table
2383
2384
2385 @subsection Customize variables
2386
2387 @table @code
2388 @item  wl-interactive-save-folders
2389 @vindex wl-interactive-save-folders
2390 The initial setting is @code{t}.  If non-nil and folder view is
2391 modified, confirm saving it before Wanderlust or Emacs exits.  If
2392 @code{nil}, save without confirmation.
2393
2394 @item wl-fldmgr-make-backup
2395 @vindex wl-fldmgr-make-backup
2396 The initial setting is @code{t}.  If non-nil, @file{~/.folders.bak} is
2397 created before saving the folder status.
2398
2399 @item wl-fldmgr-sort-function
2400 @vindex wl-fldmgr-sort-function
2401 The initial setting is @code{wl-fldmgr-sort-standard}.  A function to
2402 sort folders.  By default function, folders are sorted alphabetically
2403 and folder group is put on top (when @code{wl-fldmgr-sort-group-first}
2404 is non-nil).
2405
2406 @item wl-fldmgr-sort-group-first
2407 @vindex wl-fldmgr-sort-group-first
2408 The initial setting is @code{t}.  If non-nil,
2409 @code{wl-fldmgr-sort-standard} precedes folder group.  If @code{nil}, it
2410 does not care whether it is folder group or not.
2411
2412 @item wl-folder-check-async
2413 @vindex wl-folder-check-async
2414 The initial setting is @code{t}.  If non-nil, check folder's unread
2415 status asynchronously.  It boosts newsgroup checking.
2416
2417 @item wl-folder-check-fast
2418 @vindex wl-folder-check-fast
2419 The initial setting is @code{nil}.
2420 If non-nil, it does not update folder status while checking.
2421 @c it is obsolete?
2422 @item wl-folder-notify-deleted
2423 @vindex wl-folder-notify-deleted
2424 The initial setting is @code{nil}.
2425 @c  nil means?
2426 If non-nil, negative value is displayed when the message is deleted.  If
2427 @code{sync}, folder is synchronized when the message is deleted.  If
2428 @code{nil}, message deletion is ignored.
2429
2430 @item wl-fldmgr-add-complete-with-current-folder-list
2431 @vindex wl-fldmgr-add-complete-with-current-folder-list
2432 The initial setting is @code{nil}.
2433 Non-nil means call @code{elmo-folder-list-subfolders} and get completion
2434 candidate for @code{wl-fldmgr-add}.
2435 @end table
2436
2437 @subsection Miscellanea
2438
2439 Following is a note for folder editing.
2440
2441 @enumerate
2442 @item
2443 cut or copy stacks the folder in the @code{wl-fldmgr-cut-entity-list}.
2444 paste(yank) command pastes the folders on one cut or copy command
2445 (If copy command is executed by region, folders in the region are pasted
2446 by one paste command)
2447
2448 @item
2449 You cannot cut @samp{Desktop} group.
2450 Also, you cannot paste folders at the outside of the @samp{Desktop}.
2451
2452 @item
2453 You cannot copy folder group.
2454
2455 @item
2456 Operations on the access group are only available for the folders
2457 in the same access group.
2458
2459 @item
2460 You cannot create a folder which has same name with the folders already exist.
2461
2462 @item
2463 You cannot insert folders which have same name in one group.
2464 You can insert them in the different groups.
2465 You cannot put same nickname to the different folders.
2466 @end enumerate
2467
2468
2469 @node Summary, Message, Folder, Top
2470 @chapter Summary Mode
2471
2472 After you select the folder via folder mode, you enter to the summary
2473 mode.
2474
2475 @menu
2476 * Usage of Summary Mode::       TIPS
2477 * Thread Operations::           Thread operations
2478 * Cache::                       File cache, Buffer cache, and Prefetch
2479 * Auto Refile::                 Auto refile settings
2480 * Sticky Summary::              Summary make sticky
2481 * Summary View::                Format of summary lines
2482 * Key Bindings of Summary::     Key bindings
2483 * Variables of Summary::        Customize Summary Mode
2484 @end menu
2485
2486
2487 @node Usage of Summary Mode, Thread Operations, Summary, Summary
2488 @section Usage (Tips)
2489
2490 @subsection Summary Content
2491
2492 In the summary mode, messages are displayed like following.
2493
2494 @example
2495 @group
2496   377  09/16(Wed)11:57 [+1: Takuro Kitame  ] Bug?
2497   381  09/17(Thu)00:16 [+3: Fujikazu Okuni ] elmo-lha.el -- LHA interface
2498   384  09/17(Thu)01:32 [+1: Yuuichi Terani ] wl-0.6.2
2499   389 N09/18(Fri)01:07 [+2: Yuuichi Terani ] wl-0.6.3
2500 @end group
2501 @end example
2502
2503 Each line displays:
2504
2505 @example
2506 @var{Message number}, @var{Temporal mark}, @var{Persistent mark}, @var{Date}, @var{Sender}, @var{Subject}
2507 @end example
2508
2509 @noindent
2510 If you want to know how to change the format for this, please refer
2511 the section format of Summary lines.
2512 @xref{Summary View}.
2513
2514 @var{Message number} is the message's unique number in the folder. In
2515 the NNTP folder, it is article number, in the IMAP folder, it is UID and
2516 in the MH folder, it is the filename of the message.
2517
2518 @var{Temporal mark} and @var{Persistent mark} are described later.
2519
2520 @var{Date} is displayed like @samp{@var{Month}/@var{Day}(@var{Week
2521 Day})@var{Hour}:@var{Minute}}.  Default setting displays week day in
2522 Japanese, but if you want to display it in English, set the value of
2523 @code{wl-summary-weekday-name-lang} as @samp{en}.
2524
2525 @var{Sender}'s indentation corresponds to the depth of the thread.
2526 Sender name is displayed as nickname if it is defined in the address
2527 book.  Set @code{wl-use-petname} as @code{nil}, if you want to quit
2528 displaying with nickname.
2529
2530 If number is printed at the head of @var{Sender} part like @samp{+2},
2531 that means the message have 2 follow messages.
2532
2533 @var{Subject} is the @samp{Subject:} header field of the message.  If
2534 the message have same @samp{Subject:} with the parent message, it is not
2535 displayed.  Some mailing list puts its sequence number in the
2536 @samp{Subject:} field, but it is
2537 ignored. @code{wl-summary-no-subject-message} is displayed when the
2538 message has empty subject field.
2539
2540 @subsection Temporary Marks
2541 @cindex Mark, Temporary
2542
2543 There are four temporary marks,
2544 @samp{*}, @samp{d}, @samp{D}, @samp{o}, @samp{O}, @samp{i} and @samp{~}.
2545 Temporary marks indicates message operations.
2546
2547 @table @samp
2548 @item *
2549 Target mark.
2550 You can execute a command on the all messages that have @samp{*} mark,
2551 with the key bindings which begins with @kbd{m}.
2552
2553 @item d
2554 The mark to dispose. You can put @samp{d} by typing @kbd{d} key.
2555
2556 @item D
2557 The mark to force delete. You can put @samp{D} by typing @kbd{D} key.
2558
2559 @item o
2560 The mark to refile.
2561 After you type @kbd{o} key, prompt appears to input refile destination.
2562 Your answer is printed in the summary line.
2563
2564 @item O
2565 The mark to refile.
2566 You can put this mark by typing @kbd{O} key.
2567 The difference between this mark and refile mark is,
2568 this mark does not delete the message while latter does.
2569
2570 @item i
2571 The mark to prefetch reserved.
2572 You can put this mark by typing @kbd{i} key.
2573
2574 @item ~
2575 The mark to resend reserved.
2576 After you type @kbd{~} key, prompt appears to input address to resend.
2577 Your answer is printed in the summary line.
2578 @end table
2579
2580 @kbd{x} key executes action for temporary marks, respectively.
2581
2582 @subsection Persistent Marks
2583
2584 There are five persistent marks, @samp{N}, @samp{?}, @samp{U}, @samp{!},
2585 @samp{u}, @samp{A}, @samp{&} and @samp{$}.
2586
2587 The persistent mark indicates the message's status and it is saved.
2588 Each persistent mark indicates:
2589
2590 @table @samp
2591 @item N
2592 It is new message.
2593 @item ?
2594 It is new but cached message.
2595 @item U
2596 It is unread message.
2597 @item !
2598 It is unread but cached message.
2599 @item u
2600 It is read but it is not cached.
2601 @item A
2602 It is already replied message.
2603 @item &
2604 It is already replied but cached message.
2605 @item $
2606 It is important message.  You can put @samp{$} mark by typing @kbd{$}
2607 key (if already exists, the mark is deleted).  It is convenient to put
2608 this mark on the messages to remember (If you want to remember to write
2609 a reply for the message, for example) because this mark remains after
2610 you exited Emacs.  Messages with the @samp{$} mark can be reviewed in the
2611 @samp{'mark} folder even the message itself is deleted in the actual folder.
2612
2613 @item None
2614 If the message is read and cached (or local message),there are no
2615 persistent mark.
2616 @end table
2617
2618 @samp{N}, @samp{U}, @samp{u}, @samp{A} indicates that the message have
2619 no cache.  Messages with the marks other than these, you can read them
2620 in the offline status even they are in the IMAP folder or netnews
2621 folder.
2622
2623 Among messages with persistent marks, ones with marks specified by 
2624 @code{wl-summary-expire-reserve-marks} are excluded from the expiration
2625 (as a function of wanderlust) explained later. @xref{Expire and Archive}.
2626
2627 @subsection How To Read
2628
2629 Basically, you can read messages only typing space key again and again.
2630
2631 To update summary status to the newest status (synchronize),
2632 type @kbd{s} key.
2633
2634 You can jump to next unread message by typing @kbd{N} key, and @kbd{n} key
2635 moves cursor to the next message.
2636 Enter message buffer by typing @kbd{j} key.
2637 To operate multipart, you have to enter to the message buffer.
2638 @xref{Message}.
2639
2640 @subsection Pack the Message Numbers
2641 You can pack the message numbers in Summary by
2642 @kbd{M-x wl-summary-pack-number}. Note that only MH Folder,
2643 News Spool Folder and Maildir Folder are supported folder types.
2644
2645
2646 @node Thread Operations, Cache, Usage of Summary Mode, Summary
2647 @section Thread Operations
2648
2649 For example, the following line indicates one thread (a context of a topic).
2650
2651 @example
2652   384  09/17(Thu)01:32 [+1: Teranishi       ] wl-0.6.2
2653 @end example
2654
2655 @noindent
2656 If you type @kbd{/} on this line, the thread is opened and it changes
2657 the appearance like following.
2658
2659 @example
2660 @group
2661   384  09/17(Thu)01:32 [ Teranishi          ] wl-0.6.2
2662   388  09/17(Thu)22:34 +-[ Murata san         ]
2663 @end group
2664 @end example
2665
2666 (Message 388 is the replied message to the message 384.)
2667 If you type @kbd{/} key once again, the thread is closed.
2668 With prefix argument, @kbd{/} opens all children threads.
2669
2670 If you type @kbd{[}, opens all threads in summary.  @kbd{]} closes all
2671 threads.
2672
2673 Commands with the key binding that begins with @kbd{t} executes commands
2674 on the messages in the thread.
2675 @xref{Key Bindings of Summary}.
2676
2677 @subsection reconstruct thread by hand
2678
2679 You can reconstruct the thread manually.  In Summary, @kbd{M-w}
2680 (@code{wl-summary-save-current-message}) at the corresponding message,
2681 and @kbd{C-y} (@code{wl-summary-yank-saved-message}) at the new parent
2682 message then you have the reconstructed thread.
2683
2684
2685 @node Cache, Auto Refile, Thread Operations, Summary
2686 @section Cache
2687
2688 @subsection Cache File
2689
2690 The messages which have to access via network (e.x. IMAP, NNTP folder)
2691 are cached as a local file so as to save network traffic or to enable
2692 off-line operation.  The cache file is saved under the directory
2693 @file{~/.elmo/cache}.  To expire cache, type @kbd{M-x
2694 elmo-cache-expire-by-size}.  The command deletes cache files to the
2695 specified size by the order of last accessed time.
2696
2697 @subsection Buffer Cache and Prefetching
2698
2699 The messages that are read are kept in the cache buffer so as to make
2700 the behavior fast when you are to read the message again.  It is called
2701 `buffer cache'. The number of cache buffer is specified by
2702 @code{wl-message-buffer-cache-size}.
2703
2704 There are message prefetching mechanism in the Wanderlust that
2705 prefetches next message while you are reading.
2706
2707 You can control the message prefetching mechanism by these two
2708 variables.
2709
2710 @table @code
2711 @item wl-message-buffer-prefetch-folder-type-list
2712 @vindex wl-message-buffer-prefetch-folder-type-list
2713 The initial setting is @code{t}. In this case, prefetch messages in all
2714 folders.
2715 If it is a list of folder types, it specifies the folder types in which
2716 message prefetching is enabled.
2717 Following is an example (prefetch messages in nntp and imap4 folders)
2718
2719 @lisp
2720 @group
2721 (setq wl-message-buffer-prefetch-folder-type-list
2722       '(nntp imap4))
2723 @end group
2724 @end lisp
2725
2726 In this case, multi folder that contains localdir and imap4 prefetches
2727 only imap4 messages.  This variable precedes the value of
2728 @code{wl-message-buffer-prefetch-folder-list}.
2729
2730 @item wl-message-buffer-prefetch-folder-list
2731 @vindex wl-message-buffer-prefetch-folder-list
2732 The initial setting is @code{nil}.
2733 A list of regexp of folders to enable message prefetching.
2734
2735 @item wl-message-buffer-prefetch-depth
2736 @vindex wl-message-buffer-prefetch-depth
2737 The initial setting is 3. The number of messages for automatical prefetch.
2738
2739 @item wl-message-buffer-prefetch-idle-time
2740 @vindex wl-message-buffer-prefetch-idle-time
2741 The initial setting is 0.2 (in seconds). The period of automatical prefetch.
2742
2743 @item wl-message-buffer-prefetch-threshold
2744 @vindex wl-message-buffer-prefetch-threshold
2745 The initial setting is 30000 (bytes). If prefetching message has larger
2746 size than this value, Wanderlust does not prefetch automatically.
2747 If @code{wl-message-buffer-prefetch-threshold} is @code{nil}, 
2748 the message is not checked for the size.
2749
2750 @item wl-auto-prefetch-first
2751 @vindex wl-auto-prefetch-first
2752 The initial setting is @code{nil}.
2753 If non-nil, first message is automatically prefetched to the buffer
2754 when you enter the folder.
2755 @end table
2756
2757
2758 @node Auto Refile, Sticky Summary, Cache, Summary
2759 @section Auto Refile
2760 @vindex elmo-msgdb-extra-fields
2761 @vindex wl-refile-rule-alist
2762 @findex wl-summary-auto-refile
2763
2764 You can refile messages automatically, by typing @kbd{C-o}
2765 (@code{wl-summary-auto-refile}). It decides destination of refile by
2766 the content of the message header information (information in the msgdb).
2767
2768 By default, @samp{From:}, @samp{Subject:}, @samp{To:} and @samp{Cc:} is
2769 available.  If you want to decide destination by other header fields,
2770 set the variable @code{elmo-msgdb-extra-fields} like following.
2771
2772 @lisp
2773 @group
2774 (setq elmo-msgdb-extra-fields
2775       '("x-ml-name"
2776         "reply-to"
2777         "sender"
2778         "mailing-list"
2779         "newsgroups"))
2780 @end group
2781 @end lisp
2782
2783 @noindent
2784 By this setting, Wanderlust saves extra fields in the msgdb.  You have
2785 to type @kbd{s all} to get extra fields for the messages that are
2786 already exists in the summary.
2787
2788 Then, specify the refile rule.  The refile target folder of auto
2789 refiling is decided by the value of @code{wl-refile-rule-alist}.
2790 @code{wl-refile-rule-alist} is a list of a rule:
2791
2792 @example
2793 @group
2794 (@var{field} (@var{regexp} . @var{target})
2795        (@var{regexp} . @var{target})
2796        @dots{})
2797 @end group
2798 @end example
2799
2800 Each rule means `if @var{field} value matches @var{regexp},
2801 then refile to @var{target} folder'.
2802 The rule matched first is applied.
2803
2804 @var{field} is a string of field name.  You can specify a list of field name
2805 string, too. In this case, if one of these fields is matched, then the
2806 rule is fired (i.e. OR condition).
2807
2808 @var{regexp} is a regular expression for field value.  @var{target} is a target
2809 folder string. You can specify a rule at @var{target} part, too.  In this
2810 case, If the field value of the rule and the current rule is matched,
2811 then the current rule is fired (i.e. AND condition).
2812
2813 You can refer matched substring of @var{regexp} to specify @var{target} part.
2814 To refer substring, use following keys:
2815
2816 @table @samp
2817 @item \&
2818 means substitute original matched text.
2819
2820 @item \@var{N}
2821 means substitute what matched the @var{N}th `\(@dots{}\)'.
2822 (@var{N} is a number.)
2823 @end table
2824
2825 Following is an example of @code{wl-refile-rule-alist}.
2826
2827 @lisp
2828 @group
2829 (setq wl-refile-rule-alist
2830       '(("x-ml-name"
2831          ("^Wanderlust" . "+wl")
2832          ("^Elisp" . "+elisp"))
2833         (("To" "Cc")
2834          ("\\([a-z]+\\)@@gohome\\.org" . "+\\1"))
2835         ("From"
2836          ("me@@gohome\\.org" . ("To" ("you@@gohome\\.org" .
2837                                     "+from-me-to-you"))))))
2838 @end group
2839 @end lisp
2840
2841 After these settings, refile marks are automatically put on the condition
2842 matched messages by typing @kbd{C-o} (@code{wl-summary-auto-refile}).
2843
2844 Messages which have @code{wl-summary-auto-refile-skip-marks} is skipped
2845 auto refiling.
2846 By default, @samp{N}, @samp{U} and @samp{!} is specified, so the messages
2847 with these persistent marks are not automatically refiled.
2848 It means Wanderlust does not execute auto refile on unread messages by
2849 the default setting.
2850 To execute auto refile on all messages, set following.
2851
2852 @lisp
2853 (setq wl-summary-auto-refile-skip-marks nil)
2854 @end lisp
2855
2856
2857 @node Sticky Summary, Summary View, Auto Refile, Summary
2858 @section Sticky Summary
2859 @cindex Summary, Sticky
2860 @cindex Sticky Summary
2861
2862 The buffer of the `sticky summary' does not killed by typing @kbd{q}.
2863
2864 By entering the summary by typing @kbd{Shift RET} in Folder mode or
2865 @kbd{G} in some suummary sticky summary buffer is created.
2866 Also typing @kbd{M-s} (@code{wl-summary-stick}) on the normal summary
2867 makes current one sticky.
2868
2869 The buffer name of the sticky summary becomes like
2870 @samp{Summary:@var{folder-name}}.
2871 You can visit the sticky summary at any time by @kbd{C-x b}
2872 (@code{switch-to-buffer}), or you can go round summary buffers by
2873 @kbd{C-c C-n} (@code{wl-summary-previous-buffer}) and @kbd{C-c C-p}
2874 (@code{wl-summary-next-buffer}) in summary mode.
2875
2876 In sticky summary, the summary buffer is preserved after @kbd{g} or
2877 @kbd{q}.  To delete sticky summary, type @kbd{C-u q} to exit or move to
2878 another summary by @kbd{C-u g}. Other operations in the sticky summary
2879 are same as normal summary.
2880
2881 @code{wl-summary-always-sticky-folder-list} specifies the folders that
2882 are automatically stuck.
2883
2884
2885 @node Summary View, Key Bindings of Summary, Sticky Summary, Summary
2886 @section Format of summary lines
2887 @cindex Format of summary lines
2888 You can alter the format of lines in Summary mode.
2889
2890 Summary line format is specified by @code{wl-summary-line-format}.
2891 You can use control strings defined by
2892 @code{wl-summary-line-format-spec-alist}.
2893
2894 An example follows.
2895
2896 @lisp
2897 @group
2898 ;; @r{number temporary-mark persistent-mark date branch}
2899 ;; @r{[ (number-of-children) sender ] subject}
2900 (setq wl-summary-line-format "%n%T%P%M/%D(%W) %t%[%17(%c %f%) %] %s")
2901 @end group
2902 @end lisp
2903
2904 Where the number set the column number of the field (for negative value,
2905 filled from right)
2906
2907 Major control strings defined by @code{wl-summary-line-format-spec-alist}
2908 are displayed in the following list.
2909
2910 @example
2911 @group
2912 %n  message number
2913 %Y  year
2914 %M  month
2915 %D  day
2916 %W  day of week
2917 %h  hour
2918 %m  minute
2919 %t  branch of the thread
2920 %[  [ (< for re-connected child)
2921 %]  ] (> for re-connected child)
2922 %f  sender
2923 %s  subject
2924 %S  size
2925 %c  +number-of-children: (display only for opened thread)
2926 %C  [+number-of-children] (display only for opened thread)
2927 %T  temporary mark (mandatory)
2928 %P  persistent mark (mandatory)
2929 @end group
2930 @end example
2931
2932 @code{wl-summary-line-format} must contain temporary mark (@samp{%T})
2933 and persistent mark (@samp{%P}). Furthermore, these marks must appear at
2934 the constant column. For example, if you specify @samp{%T} or
2935 @samp{%P} after the @samp{%t}, which changes its length by thread
2936 position, marks are not treated correctly.
2937
2938 If the format string is enclosed by @samp{%number(} and @samp{%)}, the
2939 column of the enclosed region is justified to the `number'. Multiple
2940 level @samp{%number(} parenthesis can be defined.  It is useful to
2941 justify the column of the multiple control strings.  For example, in the
2942 above @code{wl-summary-line-format},
2943
2944 @example
2945 %17(%c %f%)
2946 @end example
2947
2948 means ``Adjust number-of-children and sender string to the 17 column''.
2949
2950 You can specify the format by each folders with
2951 @code{wl-folder-summary-line-format-alist}.  Please set regular
2952 expression for folder names and summary line format as the following
2953 example.
2954
2955 @lisp
2956 @group
2957 (setq wl-folder-summary-line-format-alist
2958       '(("^%" . "%T%P%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")
2959         ("^+" . "%n%T%P%M/%D %[ %17f %] %t%C%s")))
2960 @end group
2961 @end lisp
2962
2963 @subsection on the format for sender name
2964
2965 The format string @samp{%f} displays the return value of the function specified
2966 by @code{wl-summary-from-function}. If you use the function
2967 @code{wl-summary-default-from} (default), it displays sender name ordinarily,
2968 while displays the recipient names if the folder name matches with
2969 @code{wl-summary-showto-folder-regexp} and the sender is yourself.
2970 If the value of @code{wl-use-petname} is Non-nil, it uses petname to display.
2971
2972 For example, to display recipient names for the message in @samp{+backup} if
2973 its sender is yourself, set up as follows.
2974
2975 @lisp
2976 (setq wl-summary-showto-folder-regexp "^\\+backup$")
2977 @end lisp
2978
2979
2980 @node Key Bindings of Summary, Variables of Summary, Summary View, Summary
2981 @section Key bindings
2982 @cindex Keybind, Summary Mode
2983 @cindex Keybind, Summary Buffer
2984
2985 Key bindings of the summary mode are shown below.
2986
2987 @table @kbd
2988 @item @key{SPC}
2989 @kindex @key{SPC} (Summary)
2990 @findex wl-summary-read
2991 Proceed reading a message at the current cursor point.
2992 (@code{wl-summary-read})
2993
2994 @item .
2995 @kindex . (Summary)
2996 @findex wl-summary-redisplay
2997 Redisplay a message at the current cursor point.
2998 If this command is called with prefix argument,
2999 Redisplay message regardless of the message cache (message is re-loaded
3000 from source).
3001 (@code{wl-summary-redisplay})
3002
3003 @item <
3004 @kindex < (Summary)
3005 @findex wl-summary-display-top
3006 Display the top message in the folder.
3007 (@code{wl-summary-display-top})
3008
3009 @item >
3010 @kindex > (Summary)
3011 @findex wl-summary-display-bottom
3012 Display the bottom message in the folder.
3013 (@code{wl-summary-display-bottom})
3014
3015 @item @key{BS}
3016 @itemx @key{DEL}
3017 @kindex @key{BS} (Summary)
3018 @kindex @key{DEL} (Summary)
3019 Display the previous page of the message at the current cursor point.
3020 @findex wl-summary-prev-page
3021 (@code{wl-summary-prev-page})
3022
3023 @item @key{RET}
3024 @kindex @key{RET} (Summary)
3025 @findex wl-summary-next-line-content
3026 Display the next line of the message at the current cursor point.
3027 Display the message at the current cursor point if it is not displayed yet.
3028 (@code{wl-summary-next-line-content})
3029
3030 @item -
3031 @itemx M-@key{RET}
3032 @kindex - (Summary)
3033 @kindex M-@key{RET} (Summary)
3034 @findex wl-summary-prev-line-content
3035 Display the previous line of the message at the current cursor point.
3036 Display the message at the current cursor point if it is not displayed yet.
3037 (@code{wl-summary-prev-line-content})
3038
3039 @item /
3040 @kindex / (Summary)
3041 @findex wl-thread-open-close
3042 Toggle open or close the thread at the current cursor point.
3043 (@code{wl-thread-open-close})
3044
3045 @item [
3046 @kindex [ (Summary)
3047 Open all threads.
3048 @findex wl-thread-open-all
3049 (@code{wl-thread-open-all})
3050
3051 @item ]
3052 @kindex ] (Summary)
3053 Close all threads.
3054 @findex wl-thread-close-all
3055 (@code{wl-thread-close-all})
3056
3057 @item g
3058 @kindex g (Summary)
3059 @findex wl-summary-goto-folder
3060 Go to other folder.
3061 (@code{wl-summary-goto-folder})
3062
3063 @item c
3064 @kindex c (Summary)
3065 Mark all messages in the folder as read.
3066 @findex wl-summary-mark-as-read-all
3067 (@code{wl-summary-mark-as-read-all})
3068
3069 @item a
3070 @kindex a (Summary)
3071 @findex wl-summary-reply
3072 Prepare a draft for reply the message at the current cursor point.
3073 (@code{wl-summary-reply})
3074
3075 @item A
3076 @kindex A (Summary)
3077 @findex wl-summary-reply-with-citation
3078 Prepare a draft for reply the message at the current cursor point.
3079 (@code{wl-summary-reply-with-citation})
3080
3081 @item C
3082 @kindex C (Summary)
3083 @findex wl-summary-cancel-message
3084 If the message at current cursor point is your own netnews article,
3085 cancel it.
3086 (@code{wl-summary-cancel-message})
3087
3088 @item E
3089 @kindex E (Summary)
3090 @findex wl-summary-reedit
3091 Prepare a draft for re-editing the message at current cursor point.
3092 If the message at current cursor point is your own netnews article,
3093 a draft for `supersedes message' for the message is prepared.
3094 (@code{wl-summary-reedit})
3095
3096 @item M-E
3097 @kindex M-E (Summary)
3098 @findex wl-summary-resend-bounced-mail
3099 If the message at current cursor point is a bounced message,
3100 a draft for re-sending original message is prepared.
3101 (@code{wl-summary-resend-bounced-mail})
3102
3103 @item f
3104 @kindex f (Summary)
3105 @findex wl-summary-forward
3106 A draft for forwarding the message at current cursor point is prepared.
3107 (@code{wl-summary-forward})
3108
3109 @item $
3110 @kindex $ (Summary)
3111 @findex wl-summary-mark-as-important
3112 Put @samp{$} mark on the message at current cursor point.
3113 If already marked as @samp{$}, remove the mark.
3114 (@code{wl-summary-mark-as-important})
3115
3116 @item y
3117 @itemx e
3118 @kindex y (Summary)
3119 @kindex e (Summary)
3120 Save the message at current cursor point.
3121 @findex wl-summary-save
3122 (@code{wl-summary-save})
3123
3124 @item n
3125 @kindex n (Summary)
3126 @findex wl-summary-next
3127 Move cursor to the next message.
3128 If message is marked with a temporal mark in
3129 @code{wl-summary-skip-mark-list}, cursor is not moved to it.
3130 In the offline mode, cursor is not moved to the messages which are not cached
3131 yet.
3132 (@code{wl-summary-next})
3133
3134 @item p
3135 @kindex p (Summary)
3136 @findex wl-summary-prev
3137 Move cursor to the previous message.
3138 If message is marked with a temporal mark in
3139 @code{wl-summary-skip-mark-list}, cursor is not moved to it.
3140 In the offline mode, cursor is not moved to the messages which are not cached
3141 yet.
3142 (@code{wl-summary-prev})
3143
3144 @item N
3145 @kindex N (Summary)
3146 @findex wl-summary-down
3147 Move cursor to the downward message which is unread or marked
3148 as @samp{$}.
3149 In the offline mode, cursor is not moved to the messages which are not cached
3150 yet.
3151 If there are messages which have target mark @samp{*} in the summary,
3152 cursor is moved to the downward message which have a target mark.
3153 This behavior is changed according to the value of @code{wl-summary-move-order}.
3154 (@code{wl-summary-down})
3155
3156 @item P
3157 @kindex P (Summary)
3158 @findex wl-summary-up
3159 Move cursor to the upward message which is unread or marked
3160 as @samp{$}.
3161 In the offline mode, cursor is not moved to the messages which are not cached
3162 yet.
3163 If there are messages which have target mark @samp{*} in the summary,
3164 cursor is moved to the downward message which have a target mark.
3165 This behavior is changed according to the value of @code{wl-summary-move-order}.
3166 (@code{wl-summary-up})
3167
3168 @item w
3169 @kindex w (Summary)
3170 @findex wl-summary-write
3171 Prepare a new draft.
3172 (@code{wl-summary-write})
3173
3174 @item W
3175 @kindex W (Summary)
3176 @findex wl-summary-write-current-folder
3177 Prepare a new draft.  If the current folder is NNTP folder,
3178 @samp{Newsgroups:} field is completed.  If the current folder is mailing
3179 list folder (refile destination), guess @samp{To:} field and completed
3180 (If @code{wl-subscribed-mailing-list} is valid list)
3181 (@code{wl-summary-write-current-folder})
3182
3183 @item H
3184 @kindex H (Summary)
3185 @findex wl-summary-redisplay-all-header
3186 Redisplay the message at current cursor point with all header fields.
3187 (@code{wl-summary-redisplay-all-header})
3188
3189 @item M
3190 @kindex M (Summary)
3191 @findex wl-summary-redisplay-no-mime
3192 Redisplay the message at current cursor point without MIME analysis.
3193 (@code{wl-summary-redisplay-no-mime})
3194
3195 @item B
3196 @kindex B (Summary)
3197 @findex wl-summary-burst
3198 If the message at current cursor point has
3199 encapsulates multiple messages using MIME,
3200 de-capsulate and extract them on the current folder.
3201 If it is invoked in non-writable folder or it is called with prefix
3202 argument, it asks the destination folder.
3203 (@code{wl-summary-burst})
3204
3205 @item @@
3206 @kindex @@ (Summary)
3207 @findex wl-summary-edit-addresses
3208 Append/change/delete the message's sender information to the address
3209 book @file{~/.addresses} interactively.  If this command is called with
3210 prefix argument, arbitrary address can be edited.
3211 (@code{wl-summary-edit-petname})
3212
3213 @item Z
3214 @kindex Z (Summary)
3215 @findex wl-status-update
3216 Sync up address book status with @file{~/.addresses}'s content.
3217 (@code{wl-status-update})
3218
3219 @item |
3220 @kindex | (Summary)
3221 @findex wl-summary-pipe-message
3222 Pipe current message's content to the external process.
3223 (@code{wl-summary-pipe-message})
3224
3225 @item #
3226 @kindex # (Summary)
3227 @findex wl-summary-print-message
3228 Print out current message's content.
3229 It uses @code{ps-print} module in Emacs 20.x.
3230 If you don't use color printer, you might want to set
3231 @code{wl-ps-print-buffer-function} to @code{ps-print-buffer}.
3232
3233 @lisp
3234 (setq wl-ps-print-buffer-function 'ps-print-buffer)
3235 @end lisp
3236
3237 (@code{wl-summary-print-message})
3238
3239 @item q
3240 @kindex q (Summary)
3241 @findex wl-summary-exit
3242 Exit current folder.
3243 (@code{wl-summary-exit})
3244
3245 @item j
3246 @kindex j (Summary)
3247 @findex wl-summary-jump-to-current-message
3248 Jump cursor to the currently displayed message's window.
3249 (@code{wl-summary-jump-to-current-message})
3250
3251 @item J
3252 @kindex J (Summary)
3253 Jump cursor to the other message.
3254 @findex wl-summary-jump-to-msg
3255 (@code{wl-summary-jump-to-msg})
3256
3257 @item I
3258 @kindex I (Summary)
3259 Update summary status and
3260 prefetch all messages which have marks included in the
3261 @code{wl-summary-incorporate-marks}.
3262 @findex wl-summary-incorporate
3263 (@code{wl-summary-incorporate})
3264
3265 @item M-j
3266 @kindex M-j (Summary)
3267 @findex wl-summary-jump-to-msg-by-message-id
3268 Jump cursor to the message which have specified @samp{Message-Id:}.  If
3269 @code{elmo-use-database} is non-nil, other folder is also searched.
3270 (@code{wl-summary-jump-to-msg-by-message-id})
3271
3272 @item ^
3273 @kindex ^ (Summary)
3274 Jump to parent message.
3275 @findex wl-summary-jump-to-parent-message
3276 (@code{wl-summary-jump-to-parent-message})
3277
3278 @item !
3279 @kindex ! (Summary)
3280 @findex wl-summary-mark-as-unread
3281 Mark as unread the message at current cursor point.
3282 (@code{wl-summary-mark-as-unread})
3283
3284 @item s
3285 @kindex s (Summary)
3286 @findex wl-summary-sync
3287 Synchronize summary view after prompting the update range.
3288 You can specify one of the follows.
3289
3290 @example
3291 @group
3292 all              Discard present msgdb and retrieve all informations.
3293                  Do not retrieve killed messages.
3294 all-entirely     Discard present msgdb and retrieve all informations.
3295                  Retrieve killed messages, too.
3296 update           Update the difference between informations in present
3297                  msgdb and in current folder instance.
3298                  Do not retrieve killed messages.
3299 update-entirely  Update the difference between informations in present
3300                  msgdb and in current folder instance.
3301                  Retrieve killed messages, too.
3302 rescan           Redisplay summary by rescanning present msgdb.
3303 rescan-noscore   Redisplay summary by rescanning present msgdb.
3304                  Display messages killed by score, too.
3305 cache-status     Sync the all marks with the real status of cache.
3306 mark             Update marks.
3307 no-sync          Do nothing.
3308 first:NUM        Move to the filter folder(partial filter).
3309 last:NUM         Move to the filter folder(partial filter).
3310 @end group
3311 @end example
3312
3313 @noindent
3314 (@code{wl-summary-sync})
3315
3316 @item S
3317 @kindex S (Summary)
3318 @findex wl-summary-sort
3319 Sort summary order.
3320 You can sort by @samp{date}, @samp{from}, @samp{number} and @samp{subject}.
3321 (@code{wl-summary-sort})
3322
3323 @item T
3324 @kindex T (Summary)
3325 @findex wl-summary-toggle-thread
3326 Toggle the threading. The state will be preserved after exiting
3327 Wanderlust. You can alter default state for newly created summary
3328 by @code{wl-summary-default-view} or @code{wl-summary-default-view-alist}.
3329 Threading status is displayed on the modeline.
3330 @samp{@{S@}} means threading is off (Sequence) and
3331 @samp{@{T@}} means threading is on (Thread).
3332 (@code{wl-summary-toggle-thread})
3333
3334 @item l
3335 @kindex l (Summary)
3336 @findex wl-summary-toggle-disp-folder
3337 Toggle displaying of folder window.
3338 (@code{wl-summary-toggle-disp-folder})
3339
3340 @item v
3341 @kindex v (Summary)
3342 Toggle displaying of message window.
3343 @findex wl-summary-toggle-disp-msg
3344 (@code{wl-summary-toggle-disp-msg})
3345
3346 @item V
3347 @kindex V (Summary)
3348 Move to the virtual folder (filter folder) with the condition specified.
3349 If called with prefix argument and current folder is virtual, exit it.
3350 @findex wl-summary-virtual
3351 (@code{wl-summary-virtual})
3352
3353 @item @key{TAB}
3354 @kindex @key{TAB} (Summary)
3355 @findex wl-summary-goto-last-displayed-msg
3356 Jump to the message which is displayed last.
3357 (@code{wl-summary-goto-last-displayed-msg})
3358
3359 @item ?
3360 @kindex ? (Summary)
3361 Put @samp{*} mark on the messages that satisfies the specified condition.
3362 @findex wl-summary-pick
3363 (@code{wl-summary-pick})
3364
3365 @item R
3366 @kindex R (Summary)
3367 @findex wl-summary-mark-as-read
3368 Mark as read the message at the current cursor point.
3369 (@code{wl-summary-mark-as-read})
3370
3371 @item x
3372 @kindex x (Summary)
3373 Execute action for all temporary marks in the summary buffer.
3374 @findex wl-summary-exec
3375 (@code{wl-summary-exec})
3376
3377 @item *
3378 @kindex * (Summary)
3379 @findex wl-summary-target-mark-line
3380 Put target mark on the message at the current cursor point.
3381 (@code{wl-summary-target-mark-line})
3382
3383 @item o
3384 @kindex o (Summary)
3385 Put refile mark on the message at the current cursor point.
3386 @findex wl-summary-refile
3387 (@code{wl-summary-refile})
3388
3389 @item C-o
3390 @kindex C-o (Summary)
3391 Execute auto refile.
3392 @findex wl-summary-auto-refile
3393 (@code{wl-summary-auto-refile})
3394
3395 @item O
3396 @kindex O (Summary)
3397 Put copy mark on the message at the current cursor point.
3398 @findex wl-summary-copy
3399 (@code{wl-summary-copy})
3400
3401 @item M-o
3402 @kindex M-o (Summary)
3403 Put refile mark on the message at the current cursor point with the destination
3404 previously specified.
3405 @findex wl-summary-refile-prev-destination
3406 (@code{wl-summary-refile-prev-destination})
3407
3408 @item d
3409 @kindex d (Summary)
3410 @findex wl-summary-dispose
3411 Put disposal mark on the message at the current cursor point.
3412 The result of disposal is controlled by @code{wl-dispose-folder-alist},
3413 refiled to @code{wl-trash-folder} by default.
3414 (@code{wl-summary-dispose})
3415
3416 @item D
3417 @kindex D (Summary)
3418 @findex wl-summary-delete
3419 Put force deletion mark on the message at the current cursor point.
3420 (@code{wl-summary-delete})
3421
3422 @item i
3423 @kindex i (Summary)
3424 Put prefetch reservation mark on the message at the current cursor point.
3425 @findex wl-summary-prefetch
3426 (@code{wl-summary-prefetch})
3427
3428 @item ~
3429 @kindex ~ (Summary)
3430 @findex wl-summary-resend
3431 Put resend reservation mark on the message at the current cursor point.
3432 (@code{wl-summary-resend})
3433
3434 @item u
3435 @kindex u (Summary)
3436 @findex wl-summary-unmark
3437 Unmark the temporal mark on the message at the current cursor point.
3438 (@code{wl-summary-unmark})
3439
3440 @item U
3441 @kindex U (Summary)
3442 Unmark all the temporal marks.
3443 @findex wl-summary-unmark-all
3444 (@code{wl-summary-unmark-all})
3445
3446 @item r R
3447 @kindex r R (Summary)
3448 @findex wl-summary-mark-as-read-region
3449 Mark as read messages in the specified region.
3450 (@code{wl-summary-mark-as-read-region})
3451
3452 @item r $
3453 @kindex r $ (Summary)
3454 @findex wl-summary-mark-as-important-region
3455 Mark as important @samp{$} messages in the specified region.
3456 If @samp{$} mark already exists, remove the mark.
3457 (@code{wl-summary-mark-as-important-region})
3458
3459 @item r !
3460 @kindex r ! (Summary)
3461 @findex wl-summary-mark-as-unread-region
3462 Mark as unread messages in the specified region.
3463 (@code{wl-summary-mark-as-unread-region})
3464
3465 @item r x
3466 @kindex r x (Summary)
3467 @findex wl-summary-exec-region
3468 Execute action for each temporary marks on the messages in the
3469 specified region.
3470 (@code{wl-summary-exec-region})
3471
3472 @item r *
3473 @kindex r * (Summary)
3474 @findex wl-summary-target-mark-region
3475 Put target mark on the messages in the specified region.
3476 (@code{wl-summary-target-mark-region})
3477
3478 @item r o
3479 @kindex r o (Summary)
3480 @findex wl-summary-refile-region
3481 Put refile mark on the messages in the specified region.
3482 (@code{wl-summary-refile-region})
3483
3484 @item r O
3485 @kindex r O (Summary)
3486 @findex wl-summary-copy-region
3487 Put copy mark on the messages in the specified region.
3488 (@code{wl-summary-copy-region})
3489
3490 @item r d
3491 @kindex r d (Summary)
3492 @findex wl-summary-dispose-region
3493 Put disposal mark on the messages in the specified region.
3494 (@code{wl-summary-dispose-region})
3495
3496 @item r i
3497 @kindex r i (Summary)
3498 @findex wl-summary-prefetch-region
3499 Put prefetch reservation mark on messages in the specified region.
3500 (@code{wl-summary-prefetch-region})
3501
3502 @item r u
3503 @kindex r u (Summary)
3504 @findex wl-summary-unmark-region
3505 Delete temporal mark on the messages in the specified region.
3506 (@code{wl-summary-unmark-region})
3507
3508 @item r y
3509 @kindex r y (Summary)
3510 Save messages in the specified region.
3511 @findex wl-summary-save-region
3512 (@code{wl-summary-save-region})
3513
3514 @item t R
3515 @kindex t R (Summary)
3516 @findex wl-thread-mark-as-read
3517 Mark as read messages which are the descendant of the current thread.
3518 With prefix argument, it affects on the all messages in the thread tree.
3519 (@code{wl-thread-mark-as-read})
3520
3521 @item t $
3522 @kindex t $ (Summary)
3523 @findex wl-thread-mark-as-important
3524 Put important mark @samp{$} on the messages which are the
3525 descendant of the current thread.
3526 If @samp{$} mark exists, remove the mark.
3527 With prefix argument, it affects on the all messages in the thread tree.
3528 (@code{wl-thread-mark-as-important})
3529
3530 @item t !
3531 @kindex t ! (Summary)
3532 @findex wl-thread-mark-as-unread
3533 Mark as unread messages which are the descendant of the current thread.
3534 With prefix argument, it affects on the all messages in the thread tree.
3535 (@code{wl-thread-mark-as-unread})
3536
3537 @item t x
3538 @kindex t x (Summary)
3539 @findex wl-thread-exec
3540 Execute action for temporary marks on the messages which are
3541 the descendant of the current thread.  With prefix argument, it affects
3542 on the all messages in the thread tree.
3543 (@code{wl-thread-exec})
3544
3545 @item t *
3546 @kindex t * (Summary)
3547 @findex wl-thread-target-mark
3548 Put target mark @samp{*} on the messages which are the descendant of the
3549 current thread.  With prefix argument, it affects on the all messages in
3550 the thread tree.
3551 (@code{wl-thread-target-mark})
3552
3553 @item t o
3554 @kindex t o (Summary)
3555 @findex wl-thread-refile
3556 Put refile mark on the messages which are the descendant of the current thread.
3557 With prefix argument, it affects on the all messages in the thread tree.
3558 (@code{wl-thread-refile})
3559
3560 @item t O
3561 @kindex t O (Summary)
3562 @findex wl-thread-copy
3563 Put copy mark on the messages which are the descendant of the current thread.
3564 With prefix argument, it affects on the all messages in the thread tree.
3565 (@code{wl-thread-copy})
3566
3567 @item t d
3568 @kindex t d (Summary)
3569 @findex wl-thread-dispose
3570 Put disposal mark on the messages which are the descendant of the current thread.
3571 With prefix argument, it affects on the all messages in the thread tree.
3572 (@code{wl-thread-dispose})
3573
3574 @item t i
3575 @kindex t i (Summary)
3576 @findex wl-thread-prefetch
3577 Put prefetch reservation mark on messages which are the descendant of
3578 the current thread.
3579 (@code{wl-thread-prefetch})
3580
3581 @item t u
3582 @kindex t u (Summary)
3583 @findex wl-thread-unmark
3584 Unmark temporal mark on the messages which are the descendant of the
3585 current thread. With prefix argument, it affects on the all messages in
3586 the thread tree.
3587 (@code{wl-thread-unmark})
3588
3589 @item t y
3590 @kindex t y (Summary)
3591 @findex wl-thread-save
3592 Save messages which are the descendant of the current thread.
3593 With prefix argument, it affects on the all messages in the thread tree.
3594 (@code{wl-thread-save})
3595
3596 @item m R
3597 @kindex m R (Summary)
3598 @findex wl-summary-target-mark-mark-as-read
3599 Mark as read all messages which have target mark @samp{*}.
3600 (@code{wl-summary-target-mark-mark-as-read})
3601
3602 @item m $
3603 @kindex m $ (Summary)
3604 @findex wl-summary-target-mark-mark-as-important
3605 Mark as important all messages which have target mark @samp{*}.
3606 If already marked as @samp{$}, remove the mark.
3607 (@code{wl-summary-target-mark-mark-as-important})
3608
3609 @item m !
3610 @kindex m ! (Summary)
3611 @findex wl-summary-target-mark-mark-as-unread
3612 Mark as unread all messages which have target mark @samp{*}.
3613 (@code{wl-summary-target-mark-mark-as-unread})
3614
3615 @item m o
3616 @kindex m o (Summary)
3617 @findex wl-summary-target-mark-refile
3618 Put refile mark on the messages which have target mark @samp{*}.
3619 (@code{wl-summary-target-mark-refile})
3620
3621 @item m O
3622 @kindex m O (Summary)
3623 @findex wl-summary-target-mark-copy
3624 Put copy mark on the messages which have target mark @samp{*}.
3625 (@code{wl-summary-target-mark-copy})
3626
3627 @item m d
3628 @kindex m d (Summary)
3629 @findex wl-summary-target-mark-dispose
3630 Put disposal mark on the messages which have target mark @samp{*}.
3631 (@code{wl-summary-target-mark-dispose})
3632
3633 @item m i
3634 @kindex m i (Summary)
3635 @findex wl-summary-target-mark-prefetch
3636 Put prefetch reservation mark on messages which have target mark @samp{*}.
3637 (@code{wl-summary-target-mark-prefetch})
3638
3639 @item m y
3640 @kindex m y (Summary)
3641 @findex wl-summary-target-mark-save
3642 Save messages which have target mark @samp{*}.
3643 (@code{wl-summary-target-mark-save})
3644
3645 @item m u
3646 @kindex m u (Summary)
3647 Unmark all temporal marks.
3648 (@code{wl-summary-delete-all-temp-marks})
3649 @findex wl-summary-delete-all-temp-marks
3650
3651 @item m a
3652 @kindex m a (Summary)
3653 Put target mark @samp{*} on the all messages.
3654 (@code{wl-summary-target-mark-all})
3655 @findex wl-summary-target-mark-all
3656
3657 @item m t
3658 @kindex m t (Summary)
3659 Put target mark @samp{*} on the messages in the current thread.
3660 @findex wl-summary-target-mark-thread
3661 (@code{wl-summary-target-mark-thread})
3662
3663 @item m r
3664 @kindex m r (Summary)
3665 @findex wl-summary-target-mark-region
3666 Put target mark @samp{*} on the messages in the specified region.
3667 (@code{wl-summary-target-mark-region})
3668
3669 @item m A
3670 @kindex m A (Summary)
3671 @findex wl-summary-target-mark-reply-with-citation
3672 Prepare a draft which cites all messages which have target mark @samp{*}.
3673 (@code{wl-summary-target-mark-reply-with-citation})
3674
3675 @item m f
3676 @kindex m f (Summary)
3677 @findex wl-summary-target-mark-forward
3678 Prepare a draft which forwards all messages which have target mark @samp{*}.
3679 (@code{wl-summary-target-mark-forward})
3680
3681 @item m U
3682 @kindex m U (Summary)
3683 @findex wl-summary-target-mark-uudecode
3684 Uudecode the messages which have target mark @samp{*}.
3685 (@code{wl-summary-target-mark-uudecode})
3686
3687 @item m ?
3688 @kindex m ? (Summary)
3689 @findex wl-summary-target-mark-pick
3690 Pick messages from the @samp{*} marked messages.
3691 That is, @samp{*} marks on the messages are remained
3692 if the specified condition is satisfied.
3693 (@code{wl-summary-target-mark-pick})
3694
3695 @item m #
3696 @kindex m # (Summary)
3697 @findex wl-summary-target-mark-print
3698 Print out all messages which have target mark @samp{*}.
3699 (@code{wl-summary-target-mark-print})
3700
3701 @item m |
3702 @kindex m | (Summary)
3703 @findex wl-summary-target-mark-pipe
3704 Pipe content of each message with target mark @samp{*} to some specified
3705 external process.
3706 (@code{wl-summary-target-mark-pipe})
3707
3708 @item M-t
3709 @kindex M-t (Summary)
3710 @findex wl-toggle-plugged
3711 Toggle offline/online status of Wanderlust.
3712 (@code{wl-toggle-plugged})
3713
3714 @item C-t
3715 @kindex C-t (Summary)
3716 Start Wanderlust's plug-status manager.
3717 (@code{wl-plugged-change})
3718
3719 @item C-c C-o
3720 @kindex C-c C-o (Summary)
3721 @findex wl-jump-to-draft-buffer
3722 Move to the draft buffer if available.  If multiple draft buffer exists,
3723 moved to one after another.  If prefix argument is specified, load draft
3724 folder's message to the draft buffer and jump to it.
3725 (@code{wl-jump-to-draft-buffer})
3726
3727 @item M-w
3728 @kindex M-w (Summary)
3729 @findex wl-summary-save-current-message
3730 Save the message at the current cursor point.
3731 (@code{wl-summary-save-current-message})
3732
3733 @item C-y
3734 @kindex C-y (Summary)
3735 @findex wl-summary-yank-saved-message
3736 Regard the message at the current cursor point as
3737 parent, connect the message saved by
3738 @code{wl-summary-save-current-message}
3739 to the thread.
3740 (@code{wl-summary-yank-saved-message})
3741
3742 @item C-x C-s
3743 @kindex C-x C-s (Summary)
3744 @findex wl-summary-save-status
3745 Save the current summary.
3746 (@code{wl-summary-save-status})
3747 @end table
3748
3749
3750 @node Variables of Summary,  , Key Bindings of Summary, Summary
3751 @section Customiziable variables
3752
3753 @table @code
3754 @item wl-summary-move-order
3755 @vindex wl-summary-move-order
3756 The initial setting is @code{unread}.  Specify cursor moving policy.  If
3757 you want to precede new messages, set @code{new}.  If you want to
3758 precede unread messages, set @code{unread}.  If @code{nil}, proceed to
3759 next message.
3760
3761 @item wl-auto-select-first
3762 @vindex wl-auto-select-first
3763 The initial setting is @code{nil}.
3764 If non-nil, first message is automatically displayed when you enter
3765 the folder.
3766
3767 @item wl-auto-select-next
3768 @vindex wl-auto-select-next
3769 The initial setting is @code{nil}. This controls behavior when there is
3770 no unread message in current summary.
3771
3772 @example
3773 nil: asks whether you want to go back to folder mode
3774 'unread: asks whether you want to go to next unread folder
3775   If the next one comes to be possessing no unread message
3776   by treatment of cross-posted messages or Scoring, then
3777   asks whether you want to go to next to next folder.
3778 'skip-no-unread: similar as unread
3779   But does not ask before going to next to next folder.
3780 otherwise: asks whether you want to go to next unread folder
3781 @end example
3782
3783 It might be useful to set @code{'skip-no-unread} for people who
3784 want to continue reading by just pressing and pressing space key.
3785
3786 @item wl-thread-insert-opened
3787 @vindex wl-thread-insert-opened
3788 The initial setting is @code{nil}.
3789 If non-nil, thread is inserted as opened.
3790
3791 @item wl-thread-open-reading-thread
3792 @vindex wl-thread-open-reading-thread
3793 The initial setting is @code{t}.  If non-nil, reading thread is
3794 automatically opened though it is closed thread.
3795
3796 @item wl-summary-exit-next-move
3797 @vindex wl-summary-exit-next-move
3798 The initial setting is @code{t}.  If non-nil, move to next folder at
3799 summary exit.
3800
3801 @item wl-folder-move-cur-folder
3802 @vindex wl-folder-move-cur-folder
3803 The initial setting is @code{nil}.  If non-nil, cursor position on the
3804 folder is moved.
3805
3806 @item wl-summary-weekday-name-lang
3807 @vindex  wl-summary-weekday-name-lang
3808 Specify language of the weekday.
3809 @samp{en} displays English, @samp{fr} displays French, @samp{de}
3810 displays Deutsch. You should rescan summary view after changing this value.
3811
3812 @item wl-summary-fix-timezone
3813 @vindex wl-summary-fix-timezone
3814 The initial setting is @code{nil}.
3815 Time zone of the date string in summary mode is adjusted using this value.
3816 If @code{nil}, it is adjust to the default time zone information
3817 (system's default time zone or environment variable @samp{TZ}).
3818
3819 @item wl-use-petname
3820 @vindex  wl-use-petname
3821 The initial setting is @code{t}.
3822 If non-nil, sender part displays nickname.
3823
3824 @item wl-break-pages
3825 @vindex  wl-break-pages
3826 The initial setting is @code{t}.
3827 If non-nil, message is split as pages by @samp{^L}.
3828
3829 @item wl-message-window-size
3830 @vindex  wl-message-window-size
3831 The initial setting is '(1 . 4).
3832 A cons cell to specify the rate of summary and message window.
3833 car:cdr corresponds summary:message.
3834
3835 @item wl-summary-from-function
3836 @vindex wl-summary-from-function
3837 Format function to display sender in summary.
3838 The initial setting is @code{wl-summary-default-from}.
3839
3840 @item wl-summary-no-from-message
3841 @vindex  wl-summary-no-from-message
3842 The initial setting is @samp{nobody@@nowhere?}.  A string which is
3843 displayed when there's no @samp{From:} field in the message.
3844
3845 @item wl-summary-subject-function
3846 @vindex wl-summary-subject-function
3847 Format function to display subject in summary.
3848 The initial setting is @code{wl-summary-default-subject} and
3849 it will cut the list name part etc. on the top of the subject.
3850 To display subject as it is, set as follows.
3851
3852 @lisp
3853 (setq wl-summary-subject-function 'identity)
3854 @end lisp
3855
3856 @item wl-summary-no-subject-message
3857 @vindex  wl-summary-no-subject-message
3858 The initial setting is @samp{(WL:No Subject in original.)}.  A string
3859 which is displayed when there's no @samp{Subject:} field in the message.
3860
3861 @item wl-summary-default-view
3862 @vindex wl-summary-default-view
3863 The initial setting is @code{'thread}.
3864 The default state for newly created summary. You can set either
3865 @code{'thread} for thread view or @code{'sequence} for sequential view.
3866
3867 @item wl-summary-use-frame
3868 @vindex wl-summary-use-frame
3869 The initial setting is @code{nil}.
3870 If non-nil, use new frame for the summary.
3871
3872 @item wl-use-folder-petname
3873 @vindex  wl-use-folder-petname
3874 The initial setting is the list shown below:
3875
3876 @lisp
3877 @group
3878 (modeline)
3879 @end group
3880 @end lisp
3881
3882 @noindent
3883 A list of display policy (symbol) of folder nickname.  Available symbols
3884 are:
3885
3886 @table @code
3887 @item modeline
3888 Display folder petname on modeline.
3889 @item ask-folder
3890 Destination folder is notified as nickname if
3891 @code{wl-auto-select-next} is non-nil.
3892 @item read-folder
3893 You can input folder name by nickname in the function
3894 @code{wl-summary-read-folder}.
3895 @end table
3896
3897 @item wl-summary-move-direction-toggle
3898 @vindex  wl-summary-move-direction-toggle
3899 The initial setting is @code{t}.  If non-nil, last executed @kbd{p},
3900 @kbd{P}, @kbd{n}, @kbd{N} toggles the direction of cursor move.  If you
3901 want to aware of reading direction, set this to @code{t}.
3902
3903 @item wl-summary-width
3904 @vindex  wl-summary-width
3905 The initial setting is 80.
3906 Width of summary line. If @code{nil}, summary line's width is as is.
3907
3908 @item wl-summary-print-argument-within-window
3909 @vindex wl-summary-print-argument-within-window
3910 The initial setting is @code{nil}.
3911 If non-nil, the action argument is always printed on right side of
3912 window.
3913
3914 @item wl-summary-indent-length-limit
3915 @vindex  wl-summary-indent-length-limit
3916 The initial setting is 46.
3917 Specify the limit of thread indent level. @code{nil} means unlimited
3918 indent level.
3919 If you set this to @code{nil} you should set @code{wl-summary-width}
3920 to @code{nil}, too.
3921
3922 @item wl-summary-max-thread-depth
3923 @vindex wl-summary-max-thread-depth
3924 The initial setting is 15.
3925 If thread depth of the message is larger than this value,
3926 the thread is divided.
3927
3928 @item wl-summary-recenter
3929 @vindex  wl-summary-recenter
3930 The initial setting is t.
3931 If non-nil, cursor point is moved to the center of the summary window.
3932
3933 @item wl-summary-divide-thread-when-subject-changed
3934 @vindex wl-summary-divide-thread-when-subject-changed
3935 The initial setting is @code{nil}.  If non-nil, thread is split if
3936 the subject is changed.
3937
3938 @item wl-summary-search-via-nntp
3939 @vindex wl-summary-search-via-nntp
3940 The initial setting is @code{confirm}.
3941
3942 If non-nil and @code{wl-summary-jump-to-msg-by-message-id} failed, call
3943 @code{wl-summary-jump-to-msg-by-message-id-via-nntp} and search message
3944 from the NNTP server @code{elmo-nntp-default-server}.  The value of
3945 @code{elmo-nntp-default-user}, @code{elmo-nntp-default-port},
3946 @code{elmo-nntp-default-stream-type} are used.
3947
3948 If @code{confirm}, server name can be specified. You can specify NNTP
3949 folder format like @samp{-:username@@servername:119!}.
3950
3951 @item wl-summary-keep-cursor-command
3952 @vindex wl-summary-keep-cursor-command
3953 The initial setting is the list shown below:
3954
3955 @lisp
3956 @group
3957 (wl-summary-goto-folder wl-summary-goto-last-visited-folder)
3958 @end group
3959 @end lisp
3960
3961 @noindent
3962 When you entered to summary by these commands and the target summary
3963 buffer already exists, summary status is not automatically updated and
3964 cursor position is saved.
3965
3966 @item elmo-folder-update-threshold
3967 @vindex elmo-folder-update-threshold
3968 The initial setting is 500.  If updated message number is larger than
3969 this value, confirm whether drop them or not (in the case where the value
3970 of @code{elmo-folder-update-confirm} is non-nil).
3971
3972 @item elmo-folder-update-confirm
3973 @vindex elmo-folder-update-confirm
3974 The initial setting is @code{t}. If the value is non-nil, do check with
3975 @code{elmo-folder-update-threshold}.
3976
3977 @item wl-summary-always-sticky-folder-list
3978 @vindex wl-summary-always-sticky-folder-list
3979 The initial setting is @code{nil}.
3980 @code{wl-summary-always-sticky-folder-list} specifies the folders that
3981 are automatically stuck. Each element is regexp of folder name.
3982
3983 @item wl-summary-reserve-mark-list
3984 @vindex wl-summary-reserve-mark-list
3985 The initial setting is the list shown below:
3986
3987 @lisp
3988 @group
3989 ("o" "O" "D" "d" "i")
3990 @end group
3991 @end lisp
3992
3993 @noindent
3994 If a message is already marked as temporal marks in this list, the
3995 message is not marked by any mark command.
3996
3997 @item wl-summary-skip-mark-list
3998 @vindex wl-summary-skip-mark-list
3999 The initial setting is the list shown below:
4000
4001 @lisp
4002 @group
4003 ("D" "d")
4004 @end group
4005 @end lisp
4006
4007 @noindent
4008 If a message is already marked as temporal marks in this list, the
4009 message is skipped at cursor move.
4010
4011 @item elmo-message-fetch-threshold
4012 @vindex elmo-message-fetch-threshold
4013 The initial setting is 30000 (bytes).  If displaying message has larger
4014 size than this value, Wanderlust confirms whether fetch the message or
4015 not (in the case where the value of @code{elmo-message-fetch-confirm}
4016 is non-nil).
4017
4018 @item elmo-message-fetch-confirm
4019 @vindex elmo-message-fetch-confirm
4020 The initial setting is @code{t}. If the value is non-nil, do check with
4021 @code{elmo-message-fetch-threshold}.
4022
4023 @item wl-prefetch-threshold
4024 @vindex wl-prefetch-threshold
4025 The initial setting is 30000 (bytes). If prefetching message has larger
4026 size than this value and @code{wl-prefetch-confirm} is non-nil,
4027 Wanderlust confirms whether prefetch the message or not.  If
4028 @code{wl-prefetch-threshold} is @code{nil}, the message is prefetched
4029 without confirmation.
4030
4031 @item wl-prefetch-confirm
4032 @vindex wl-prefetch-confirm
4033 The initial setting is @code{t}. If non-nil, Wanderlust confirms whether
4034 prefetch the message or not if the message has larger size than
4035 @code{wl-prefetch-threshold}.
4036
4037 @item elmo-imap4-use-cache
4038 @vindex elmo-imap4-use-cache
4039 The initial setting is @code{t}.  If non-nil, messages read via IMAP4
4040 are cached.
4041
4042 @item elmo-nntp-use-cache
4043 @vindex elmo-nntp-use-cache
4044 The initial setting is @code{t}.  If non-nil, messages read via NNTP are
4045 cached.
4046
4047 @item elmo-pop3-use-cache
4048 @vindex elmo-pop3-use-cache
4049 The initial setting is @code{t}.  If non-nil, messages read via POP3 are
4050 cached.
4051
4052 @item elmo-shimbun-use-cache
4053 @vindex elmo-shimbun-use-cache
4054 The initial setting is @code{t}.  If non-nil, messages read in Shimbun
4055 folders are cached.
4056
4057 @item wl-folder-process-duplicates-alist
4058 @vindex wl-folder-process-duplicates-alist
4059 The initial setting is @code{nil}.
4060 This list determines how to deal with duplicated messages in the same folder.
4061 Each item in the list is regexp of folder name and action; you can specify any
4062 one of the following in the place of action:
4063
4064 @example
4065 @code{nil} : do nothing for duplicated messages.
4066 @code{hide} : hide duplicated messages from the summary.
4067 @code{read} : set duplicated messages as read.
4068 @end example
4069
4070 @noindent
4071 Following is an example (hide duplicated messages in multi folders)
4072
4073 @lisp
4074 @group
4075 (setq wl-folder-process-duplicates-alist
4076                  '(("^\\+draft$" . nil) ("^\\+trash$" . nil)
4077                    ("^\\*.*" . hide) (".*" . read)))
4078 @end group
4079 @end lisp
4080 @end table
4081
4082
4083 @node Message, Draft, Summary, Top
4084 @chapter Message Buffer
4085
4086 Message Buffers utilize MIME-View mode of SEMI.  For operational
4087 procedures and key bindings, refer to respective documents.
4088 @xref{MIME-View, , ,mime-ui-en, a MIME user interface for GNU Emacs}.
4089 You can also see help by @kbd{?} in message buffer.
4090
4091 @kbd{p} at the top of a message or @kbd{n} at the bottom of a message
4092 brings you back to Summary mode.  @kbd{l} toggles display of Summary
4093 mode buffer.
4094
4095 @section Key Bindings
4096
4097 @table @kbd
4098
4099 @item l
4100 @kindex l (Message)
4101 @findex wl-message-toggle-disp-summary
4102 Toggles display of Summary buffer.
4103 (@code{wl-message-toggle-disp-summary})
4104
4105 @item Button-2
4106 @findex wl-message-refer-article-or-url
4107 @kindex Button-2 (Message)
4108 Assumes @samp{Message-ID:} at the mouse pointer, and shows the
4109 corresponding message if found.
4110 (@code{wl-message-refer-article-or-url})
4111
4112 @item Button-4 (upward movement of a wheel)
4113 @kindex Button-4 (Message)
4114 @findex wl-message-wheel-down
4115 Scrolls the message backwards.  When the top of the message is hit,
4116 moves to the previous message.
4117 (@code{wl-message-wheel-down})
4118
4119 @item Button-5 (downward movement of a wheel)
4120 @kindex Button-5 (Message)
4121 @findex wl-message-wheel-up
4122 Scrolls the message forward.  When the bottom of the message is hit,
4123 moves to the next message.
4124 (@code{wl-message-wheel-up})
4125
4126 @item D
4127 @kindex D (Message)
4128 @findex wl-message-delete-current-part
4129 Delete the part under cursor. In fact it appends modified message to
4130 the current folder then moves old one to trash folder. Therefore the
4131 message number will be changed.
4132 (@code{wl-message-delete-current-part})
4133 @end table
4134
4135 @section Customizable Variables
4136
4137 @table @code
4138 @item wl-message-window-size
4139 @vindex wl-message-window-size
4140 Initial setting is @code{'(1 . 4)}.  It is a cons cell and the ratio of
4141 its car and cdr value corresponds to the ratio of Summary and Message
4142 windows.
4143
4144 @item wl-message-ignored-field-list
4145 @vindex wl-message-ignored-field-list
4146 Initial setting is @code{nil}.
4147 All fields that match this list will be hidden in message buffer.
4148 Each elements are regexp of field-name.
4149 If @code{nil}, the value of @code{mime-view-ignored-field-list} is used.
4150
4151 @item wl-message-visible-field-list
4152 @vindex wl-message-visible-field-list
4153 Initial setting is @code{nil}.
4154 All fields that match this list will be display in message buffer.
4155 Each elements are regexp of field-name. This value precedes
4156 @code{wl-message-ignored-field-list}.
4157 If @code{nil}, the value of @code{mime-view-visible-field-list} is used.
4158
4159 @item wl-message-sort-field-list
4160 @vindex wl-message-sort-field-list
4161 Initial setting is
4162 '("Return-Path" "Received" "^To" "^Cc" "Newsgroups" "Subject" "^From").
4163 Header fields in message buffer are ordered by this value.
4164 Each elements are regexp of field-name.
4165
4166 @item wl-message-truncate-lines
4167 @vindex wl-message-truncate-lines
4168 The initial value is the value of @code{default-truncate-lines}.
4169 If it is non-nil, truncate long lines in message buffer.
4170 @end table
4171
4172 @node Draft, Disconnected Operations, Message, Top
4173 @chapter Draft Buffer
4174
4175 At Summary mode, pressing @kbd{w} and the like creates a new draft
4176 buffer.  You can edit and send mail and news articles in this buffer.
4177
4178 By pressing @kbd{W}, Wanderlust guess addressees and prepare draft buffer
4179 with those if possible.
4180
4181 @menu
4182 * Usage of Draft Mode::         TIPS
4183 * Key Bindings of Draft::       Key bindings
4184 * Variables of Draft Mode::     Customize Draft Mode
4185 @end menu
4186
4187 @node Usage of Draft Mode, Key Bindings of Draft, Draft, Draft
4188 @section Tips
4189
4190 Basically it is Emacs-standard mail mode.
4191
4192 @menu
4193 * Editing Header::
4194 * Editing Message Body::
4195 * Dynamical Message Re-arrangement::
4196 * Template::
4197 * POP-before-SMTP::
4198 @end menu
4199
4200 @node Editing Header, Editing Message Body, Usage of Draft Mode, Usage of Draft Mode
4201 @subsection Editing Message Header
4202
4203 You can freely edit header region above @samp{--text follows this line--},
4204 until you invoke the sending operation.
4205
4206 Initially, the cursor is at the @samp{To:} field.  Fill in recipients
4207 addresses.  @kbd{@key{TAB}} completes them.
4208
4209 You can use following headers to specify recipients. Add some of them
4210 by yourself. Field names can be completed by @kbd{@key{TAB}}.
4211
4212 @table @asis
4213 @item @samp{Newsgroups:}
4214 Specify newsgroups to which you post the news article.
4215
4216 @item @samp{Cc:}
4217 Specify addresses to send a copy (Carbon Copy) of the message.
4218 @end table
4219
4220 Following ones are removed from the header contents before sending.
4221
4222 @table @asis
4223 @item @samp{Bcc:}
4224 Specify addresses to send a copy (Blind Carbon Copy) of the message.
4225
4226 @item @samp{Fcc:}
4227 Specify folders in which a copy of the message is saved.
4228
4229 @item @samp{Ecc:}
4230 Specify recipients to send encapsulated copy of the message.
4231 @end table
4232
4233 You can add initial headers by following variables.
4234
4235 @table @code
4236
4237 @item wl-fcc
4238 @vindex wl-fcc
4239 The initial setting is @code{nil}.
4240 If non-nil, the value of this variable is inserted as a @samp{Fcc:} of
4241 the draft when it is prepared.  If function is specified, its return
4242 value is used.
4243
4244 @item wl-bcc
4245 @vindex wl-bcc
4246 The initial setting is @code{nil}.
4247 If non-nil, the value of this variable is inserted as a @samp{Bcc:} of
4248 the draft when it is prepared.
4249 @end table
4250
4251 @node Editing Message Body, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode
4252 @subsection Editing Messages
4253
4254 As a matter of course, editing message body can be performed in the same
4255 way as usual writing. You may write message body under
4256 @samp{--text follows this line--} line. (NOTE: Be sure to leave the line
4257 @samp{--text follows this line--} intact.)
4258
4259 Multi-part editing utilize MIME edit mode of SEMI.  For procedures of
4260 editing, refer to respective documents.  @xref{MIME-Edit, , ,mime-ui-en,
4261 a MIME user interface for GNU Emacs}.
4262 You can also see help by @kbd{C-c C-x ?} in draft buffer.
4263
4264 If you save the draft buffer you are editing, it is appended to the
4265 folder specified by @code{wl-draft-folder}.
4266
4267 @node Dynamical Message Re-arrangement, Template, Editing Message Body, Usage of Draft Mode
4268 @subsection Dynamic Modification of Messages
4269 @vindex wl-draft-config-alist
4270 @c @cindex Change Message
4271 @c @cindex Message, Change Dynamic
4272
4273 You can set @code{wl-draft-config-alist} so that header and body of the
4274 message will automatically modified depending on information of header
4275 and others.
4276
4277 The initial setting of @code{wl-draft-config-alist} is @code{nil}.
4278
4279 In the example below, the header is modified when
4280 @code{wl-draft-send-and-exit} or @code{wl-draft-send} is invoked.  You
4281 can set @code{wl-interactive-send} to non-nil so as to confirm changes
4282 before sending the message.
4283
4284 @lisp
4285 @group
4286 (setq wl-draft-config-alist
4287       '(((string-match "aaa\\.example\\.com$" (system-name))
4288          ;; @r{applied if the expression is non-nil}
4289          (wl-smtp-posting-server . "mailserver-B")
4290          (wl-nntp-posting-server . "newsserver-B")
4291          ;; @r{settings of temporary variables}
4292          )
4293         ("^To: .*user@@aaa\\.bbb\\.example\\.com"
4294          ;; @r{applied if it matches the header of the draft buffer}
4295          ("Organization" . (format "Go %s" my-webpage)))
4296                        ;; @r{you can write elisp expressions here (eval only)}
4297          (top . "Hello.\n")    ;; @r{inserted at the top of the body}
4298          (bottom . "\nBye.\n") ;; @r{inserted at the bottom of the body}
4299         ))
4300 @end group
4301 @end lisp
4302
4303 The format of @code{wl-draft-config-alist} is:
4304
4305 @example
4306 @group
4307 '(("@var{regexp of the header}" or @var{elisp expression}
4308   ("@var{Field}" . value(@var{elisp expression}))
4309    (@var{variable} . value(@var{elisp expression}))
4310    (@var{sub-function} . value(@var{elisp expression}))
4311    @var{function}
4312    @dots{})
4313   ("@var{regexp of the header}" or @var{elisp expression}
4314    ("@var{Field}" . value(@var{elisp expression}))
4315    @dots{}))
4316 @end group
4317 @end example
4318
4319 Per default, there are 13 following sub-functions.
4320
4321 @example
4322 'header:      Inserts the specified string at the bottom of the header.
4323 'header-top:  Inserts the specified string at the top of the header.
4324 'header-file: Inserts the specified file at the bottom of the header.
4325 'x-face:      Inserts @samp{X-Face:} field with the content of the specified file.
4326 'top:         Inserts the specified string at the top of the body.
4327 'top-file:    Inserts the specified file at the top of the body.
4328 'body:        Replaces the body with the specified string.
4329               Specifying @code{nil} deletes the entire body string.
4330 'body-file:   Replaces the body with the content of the specified file.
4331 'bottom:      Inserts the specified string at the bottom of the body.
4332 'bottom-file: Inserts the specified file at the top of the body.
4333 'part-top:  Inserts the specified string at the top of the current part.
4334 'part-bottom: Inserts the specified string at the bottom of the current part.
4335 'template:    Applies the specified template.
4336               (refer to the next subsection)
4337 @end example
4338
4339 These are defined in @code{wl-draft-config-sub-func-alist} and you can
4340 change them or add your own functions.  If you read the code, you can
4341 easily find how to write the functions.
4342
4343 At the first of each item, @var{a regular expression of the header} or
4344 an @var{elisp expression} should be specified.  In the case of an elisp
4345 expression, the item is applied when the expression is evaluated
4346 non-nil.
4347
4348 Per default, when multiple items match or are evaluated non-nil, all
4349 such items are applied, but if you set a variable
4350 @code{wl-draft-config-matchone} to @code{t}, only the first matching one
4351 is applied.
4352
4353 At the second of the item, a cons or a list of functions should be
4354 specified.  The car part of the cons should be a header field, a
4355 variable, or a sub-function.  When a header field is specified, the
4356 field will be modified.  If a variable is specified, the value of the
4357 variable will be modified temporarily.
4358
4359 In the cdr part of a cons, not only a variable but also an elisp
4360 expression can be specified as is.  If the car part is a header field
4361 and the cdr part is @code{nil}, the field will be deleted.
4362
4363 See the next example as well:
4364
4365 @lisp
4366 @group
4367 (setq wl-draft-config-alist
4368       '((reply                         ;; @r{(1)}
4369          "X-ML-Name: \\(Wanderlust\\|emacs-mime-ja\\|apel-ja\\)"
4370          ;; @r{applied if it matches the header of the buffer being replied}
4371          (body . "  Hello.\n")
4372          (template . "default")
4373          )))
4374 @end group
4375 @end lisp
4376
4377 As in the (1) above, if a header regexp is prepended with @code{reply},
4378 it is applied when the draft is prepared by @code{wl-summary-reply} for
4379 example, and when it matches the header being replied.  It is ignored
4380 when there is no buffer being replied, like after @code{wl-draft} was
4381 invoked.
4382
4383 If you want to use name of parent folder, you can refer the buffer local
4384 variable @code{wl-draft-parent-folder}. In the following example, Wanderlust
4385 changes From according to the folder name of the summary in which the draft
4386 was invoked.
4387
4388 @lisp
4389 @group
4390 (setq wl-draft-config-alist
4391       '(((string-match \".*@@domain1$\" wl-draft-parent-folder)
4392          (\"From\" . \"user@@domain1\"))
4393         ((string-match \".*@@domain2$\" wl-draft-parent-folder)
4394          (\"From\" . \"user@@domain2\"))))
4395 @end group
4396 @end lisp
4397
4398
4399 Note that @code{wl-draft-config-alist} is applied only once when
4400 @code{wl-draft-send-and-exit} or @code{wl-draft-send} is invoked.
4401 Therefore, if you want to apply @code{wl-draft-config-alist} again after
4402 aborting transmission, execute @kbd{C-c C-e}
4403 (@code{wl-draft-config-exec}) explicitly.
4404
4405 If you don't want to apply @code{wl-draft-config-alist} when
4406 @code{wl-draft-send-and-exit} or @code{wl-draft-send} is invoked,
4407 do the following:
4408
4409 @lisp
4410 (remove-hook 'wl-draft-send-hook 'wl-draft-config-exec)
4411 @end lisp
4412
4413 If you want to apply @code{wl-draft-config-alist} when a draft buffer is
4414 prepared, do the following:
4415
4416 @lisp
4417 (add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)
4418 @end lisp
4419
4420 If you want to apply @code{wl-draft-config-alist} when you re-edit a mail
4421 from summary mode by typing @kbd{E}(@code{wl-summary-reedit}), do the
4422 following:
4423
4424 @lisp
4425 (add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec)
4426 @end lisp
4427
4428 @node Template, POP-before-SMTP, Dynamical Message Re-arrangement, Usage of Draft Mode
4429 @subsection Inserting Templates
4430 @cindex Template
4431 @cindex Apply Template
4432
4433 Set a variable @code{wl-template-alist}, and type @kbd{C-c C-j} or
4434 @kbd{M-x wl-template-select} in the draft buffer.
4435
4436 The format of @code{wl-template-alist} is almost the same as
4437 @code{wl-draft-config-alist}.
4438 @xref{Dynamical Message Re-arrangement}.
4439
4440 @lisp
4441 @group
4442 (setq wl-template-alist
4443       '(("default"
4444          ("From" . wl-from)
4445          ("Organization" . "Example Co.Ltd.")
4446          (body . "Hello.\n"))
4447         ("report"
4448          (template . "default")                 ;; @r{(a)}
4449          ("To" . "boss@@example.com")
4450          ("Subject" . "Report")
4451          (body-file . "~/work/report.txt")
4452          )
4453         ))
4454 @end group
4455 @end lisp
4456
4457 As you can see, the only difference is item (template) names such as
4458 @samp{default} and @samp{report}, instead of a regexp of header.
4459 Because definition of each item is the same as
4460 @code{wl-draft-config-alist}, you can call another template, like (a).
4461
4462 Executing the command @code{wl-template-select} results in template
4463 selection, but the result differs depending on variable
4464 @code{wl-template-visible-select}.
4465
4466 If @code{wl-template-visible-select} is @code{t} (default), a buffer
4467 window is shown below the draft buffer.  You can select a template by
4468 @kbd{n} and @kbd{p} seeing the buffer window.
4469
4470 Press the @key{RET} key and the template is actually applied to the draft
4471 buffer.  If you press @kbd{q}, nothing is applied.  In addition, you can
4472 adjust the window size by @code{wl-template-buffer-lines}.
4473
4474 If @code{wl-template-visible-select} is @code{nil}, you should type the
4475 name of the template in the mini buffer.
4476
4477 As shown in the example in @code{wl-draft-config-alist}, you can select
4478 @samp{default} template by writing:
4479
4480 @lisp
4481 (template . "default")
4482 @end lisp
4483
4484 @node POP-before-SMTP,  , Template, Usage of Draft Mode
4485 @subsection Sending mail by POP-before-SMTP
4486 @cindex POP-before-SMTP
4487
4488 You can send mail by POP-before-SMTP with this single line:
4489
4490 @lisp
4491 (setq wl-draft-send-mail-function 'wl-draft-send-mail-with-pop-before-smtp)
4492 @end lisp
4493
4494 @noindent
4495 Configure the following variables if you need.
4496
4497 @table @code
4498 @item wl-pop-before-smtp-user
4499 The POP user name for POP-before-SMTP authentication.
4500 If unset, @code{elmo-pop3-default-user} is used.
4501
4502 @item wl-pop-before-smtp-server
4503 The POP server name for POP-before-SMTP authentication.
4504 If unset, @code{elmo-pop3-default-server} is used.
4505
4506 @item wl-pop-before-smtp-authenticate-type
4507 The POP authentication method for POP-before-SMTP authentication.
4508 If unset, @code{elmo-pop3-default-authenticate-type} is used.
4509
4510 @item wl-pop-before-smtp-port
4511 The POP port number for POP-before-SMTP authentication.
4512 If unset, @code{elmo-pop3-default-port} is used.
4513
4514 @item wl-pop-before-smtp-stream-type
4515 If @code{ssl}, POP connection is established using SSL.  If
4516 @code{starttls}, STARTTLS (RFC2595) connection will be established.  If
4517 unset, @code{elmo-pop3-default-stream-type} is used.
4518 @end table
4519
4520 If variables for POP-before-SMTP (@code{wl-pop-before-smtp-*}) are
4521 unset, settings for POP folders (@code{elmo-pop3-default-*}) are
4522 used.
4523 Therefore, if SMTP server and POP server are actually the same, and if
4524 POP folder per default (such as @samp{&}) is available, no settings are
4525 required.
4526
4527 Refer to the following URL about POP-before-SMTP.
4528
4529 @example
4530 @group
4531 http://spam.ayamura.org/tools/smPbS.html
4532 http://www.iecc.com/pop-before-smtp.html
4533 @end group
4534 @end example
4535
4536
4537 @node Key Bindings of Draft, Variables of Draft Mode, Usage of Draft Mode, Draft
4538 @section Key Bindings
4539 @cindex Keybind, Draft Mode
4540 @cindex Keybind, Draft Buffer
4541
4542 @table @kbd
4543
4544 @item C-c C-y
4545 @kindex C-c C-y (Draft)
4546 @findex wl-draft-yank-original
4547 Cites the content of the current message buffer (the part under cursor).
4548 If the region is active, cites the region (it affects only if
4549 @code{transient-mark-mode} (on GNU Emacs) or @code{zmacs-regions}
4550 (on XEmacs) is Non-nil).
4551 (@code{wl-draft-yank-original})
4552
4553 @item C-c C-p
4554 @kindex C-c C-p (Draft)
4555 @findex wl-draft-preview-message
4556 Previews the content of the current draft.
4557 This is useful for previewing MIME multi-part messages.
4558 (@code{wl-draft-preview-message})
4559
4560 @item C-c C-s
4561 @kindex C-c C-s (Draft)
4562 @findex wl-draft-send
4563 Sends the content of the current draft.  Does not erase the draft buffer.
4564 This is useful for sending multiple messages, which are a little different
4565 from each other.
4566 (@code{wl-draft-send})
4567
4568 @item C-c C-c
4569 @kindex C-c C-c (Draft)
4570 @findex wl-draft-send-and-exit
4571 Sends the content of the current draft and erases the draft buffer.
4572 (@code{wl-draft-send-and-exit})
4573
4574 @item C-x C-s
4575 @kindex C-x C-s (Draft)
4576 @findex wl-draft-save
4577 Save the current draft.
4578 (@code{wl-draft-save})
4579
4580 @item C-c C-k
4581 @kindex C-c C-k (Draft)
4582 @findex wl-draft-kill
4583 Kills the current draft.
4584 (@code{wl-draft-kill})
4585
4586 @item C-x k
4587 @kindex C-x k (Draft)
4588 @findex wl-draft-mimic-kill-buffer
4589 Kills the current draft.
4590 (@code{wl-draft-mimic-kill-buffer})
4591
4592 @item C-c C-z
4593 @kindex C-c C-z (Draft)
4594 @findex wl-draft-save-and-exit
4595 Saves the current draft, and erases the draft buffer.
4596 This is useful if you want to suspend editing of the draft.
4597 You can resume editing by pressing @kbd{E} (@code{wl-summary-reedit}) in
4598 the @samp{+draft} folder.
4599 (@code{wl-draft-save-and-exit})
4600
4601 @item C-c C-r
4602 @kindex C-c C-r (Draft)
4603 @findex wl-caesar-region
4604 Encodes or decodes the specified region in Caesar cipher.
4605 (@code{wl-caesar-region})
4606
4607 @item C-l
4608 @kindex C-l (Draft)
4609 @findex wl-draft-highlight-and-recenter
4610 Recenter and rehighlight current draft.
4611 (@code{wl-draft-highlight-and-recenter})
4612
4613 @item M-t
4614 @kindex M-t (Draft)
4615 @findex wl-toggle-plugged
4616 Toggles off-line/on-line states of Wanderlust.
4617 (@code{wl-toggle-plugged})
4618
4619 @item C-c C-o
4620 @kindex C-c C-o (Draft)
4621 @findex wl-jump-to-draft-buffer
4622 Jumps to the other draft buffer, if exists.
4623 With prefix argument, reads a file (if any) from the draft folder when
4624 there is no such buffer.
4625 (@code{wl-jump-to-draft-buffer})
4626
4627 @item C-c C-e
4628 @kindex C-c C-e (Draft)
4629 @findex wl-draft-config-exec
4630 Applies @code{wl-draft-config-alist}.
4631 (@code{wl-draft-config-exec})
4632
4633 @item C-c C-j
4634 @kindex C-c C-j (Draft)
4635 @findex wl-template-select
4636 Selects a template.
4637 (@code{wl-template-select})
4638
4639 @item C-c C-a
4640 @kindex C-c C-a (Draft)
4641 @findex wl-addrmgr
4642 Enter Address Manager.
4643 @xref{Address Manager}.
4644 (@code{wl-addrmgr})
4645
4646 @item C-c C-d
4647 @kindex C-c C-d (Draft)
4648 @findex wl-draft-elide-region
4649 Elide the text between point and mark (@code{wl-draft-elide-region}).
4650 The text is killed and replaced with the contents of the variable
4651 @code{wl-draft-elide-ellipsis}.  The default value is to use an ellipsis
4652 (@samp{[...]}).
4653 @end table
4654
4655 @node Variables of Draft Mode,  , Key Bindings of Draft, Draft
4656 @section Customizable Variables
4657 @cindex SMTP AUTH
4658
4659 @table @code
4660 @item wl-subscribed-mailing-list
4661 @vindex wl-subscribed-mailing-list
4662 The initial setting is @code{nil}.  Mailing lists to which you
4663 subscribe.  If any of these are contained in @samp{To:} or @samp{Cc:}
4664 field of a reply draft, removes your own address from
4665 @samp{Mail-Followup-To:} and @samp{Cc:}.  And if any of these are
4666 contained in @samp{To:} or @samp{Cc:} field of a message to be
4667 automatically re-filed, the destination folder will be leaned in
4668 connection with the address.
4669
4670 Example:
4671
4672 @lisp
4673 @group
4674 (setq wl-subscribed-mailing-list
4675       '("wl@@lists.airs.net"
4676         "apel-ja@@m17n.org"
4677         "emacs-mime-ja@@m17n.org"))
4678 @end group
4679 @end lisp
4680
4681 @item wl-insert-mail-followup-to
4682 @vindex wl-insert-mail-followup-to
4683 The initial setting is @code{nil}.  If non-nil, @samp{Mail-Followup-To:}
4684 field is automatically inserted in the draft buffer.
4685
4686 @item wl-insert-mail-reply-to
4687 @vindex wl-insert-mail-reply-to
4688 The initial setting is @code{nil}.  If non-nil, @samp{Mail-Reply-To:}
4689 field is automatically inserted in the draft buffer.
4690
4691 @item wl-auto-insert-x-face
4692 @vindex wl-auto-insert-x-face
4693 The initial setting is @code{t}.  If non-nil and there is an encoded
4694 X-Face string in a file @file{~/.xface} (the value of the variable
4695 @code{wl-x-face-file}), inserts it as an @samp{X-Face:} field in the
4696 draft buffer.  If @code{nil}, it is not automatically inserted.
4697
4698 @item wl-insert-message-id
4699 @vindex wl-insert-message-id
4700 The initial setting is @code{t}.  If non-nil, @samp{Message-ID:} field
4701 is automatically inserted on the transmission.
4702
4703 @item wl-message-id-use-wl-from
4704 @vindex wl-message-id-use-wl-from
4705 The initial setting is @code{nil}.  If non-nil, the value of
4706 @code{wl-from} will be used as the domain part of @samp{Message-ID:}.
4707
4708 @item wl-local-domain
4709 @vindex wl-local-domain
4710 The initial setting is @code{nil}.  If @code{nil}, the return value of
4711 the function @code{system-name} will be used as the domain part of
4712 @samp{Message-ID:}.
4713
4714 If @code{system-name} does not return FQDN (i.e. the full name of the
4715 host, like @samp{smtp.gohome.org}), you @strong{must} set this variable
4716 to the string of the local domain name without hostname (like
4717 @samp{gohome.org}).  That is, a concatenation of @code{system-name}
4718 @samp{.} @code{wl-local-domain} is used as domain part of the
4719 @samp{Message-ID:}.
4720
4721 If your terminal does not have global IP, set the value of
4722 @code{wl-message-id-domain}.  (You might be beaten up on the Net News if
4723 you use invalid @samp{Message-ID:}.)
4724
4725 Moreover, concatenation of @code{system-name} @samp{.}
4726 @code{wl-local-domain} will be used as an argument to the HELO command
4727 in SMTP.
4728
4729 @item wl-message-id-domain
4730 @vindex wl-message-id-domain
4731 The initial setting is @code{nil}.  If non-nil, this value is used as a
4732 domain part of the @samp{Message-ID:}.  If your terminal does not have
4733 global IP address, set unique string to this value (e.x. your e-mail
4734 address).
4735
4736 @item wl-unique-id-suffix
4737 @vindex wl-unique-id-suffix
4738 The initial setting is @samp{.wl}. You can specify the string in generated
4739 Message-ID which appear just before @samp{@@}.
4740
4741 @item wl-draft-config-alist
4742 @vindex wl-draft-config-alist
4743 The initial setting is @code{nil}.  Modifies the draft message just
4744 before the transmission.  The content of @code{wl-draft-config-alist}
4745 will be automatically applied only once on the transmission.  If you
4746 want to apply it manually, use @kbd{C-c C-e}.  This command can be used
4747 many times.
4748
4749 @item wl-template-alist
4750 @vindex wl-template-alist
4751 The initial setting is @code{nil}.
4752 This variable specifies the template to be applied in the draft buffer.
4753
4754 @item wl-draft-config-matchone
4755 @vindex wl-draft-config-matchone
4756 The initial setting is @code{nil}.  If non-nil, only the first matching
4757 item is used when @code{wl-draft-config-alist} is applied.  If
4758 @code{nil}, all matching items are used.
4759
4760 @item wl-template-visible-select
4761 @vindex wl-template-visible-select
4762 The initial setting is @code{t}.
4763 If non-nil, you can preview the result of the template selection in
4764 another window.
4765
4766 @item wl-template-confirm
4767 @vindex wl-template-confirm
4768 The initial setting is @code{nil}.
4769 If non-nil, asks for confirmation when you press the enter key to select
4770 template while previewing.
4771
4772 @item wl-template-buffer-lines
4773 @vindex wl-template-buffer-lines
4774 The initial setting is 7.
4775 If @code{wl-template-visible-select} is non-nil, this variable specifies
4776 the size of the preview window.
4777
4778 @item wl-draft-buffer-style
4779 @vindex wl-draft-buffer-style
4780 The initial setting is @code{full}.
4781 Style of draft buffer window (except for replying and forwarding).
4782 @code{keep} is to use current window,
4783 @code{full} is to use full frame window,
4784 @code{split} is to split current window and use it.
4785 If some function is specified, it is called with the draft buffer
4786 as an argument.
4787
4788 @item wl-draft-reply-buffer-style
4789 @vindex wl-draft-reply-buffer-style
4790 The initial setting is @code{split}.
4791 Style of draft buffer for replying and forwarding.
4792 @code{keep} is to use message buffer window,
4793 @code{full} is to use full frame window,
4794 @code{split} is to split message buffer window and use it.
4795 If some function is specified, it is called with the draft buffer
4796 as an argument.
4797
4798 @item wl-draft-use-frame
4799 @vindex wl-draft-use-frame
4800 The initial setting is @code{nil}.
4801 If non-nil, use new frame for the draft.
4802
4803 @item wl-draft-truncate-lines
4804 @vindex wl-draft-truncate-lines
4805 The initial value is the value of @code{default-truncate-lines}.
4806 If it is non-nil, truncate long lines in draft buffer.
4807
4808 @item wl-from
4809 @vindex wl-from
4810 The initial setting is the value of the variable
4811 @code{user-mail-address}.  The value of this variable is inserted as a
4812 @samp{From:} field of the draft when it is prepared.
4813
4814 @item wl-envelope-from
4815 @vindex wl-envelope-from
4816 The initial setting is @code{nil}.
4817 The value of this variable is used for envelope from (MAIL FROM).
4818 If @code{nil}, the address part of @code{wl-from} is used.
4819
4820 @item wl-user-mail-address-list
4821 @vindex wl-user-mail-address-list
4822 The initial setting is @code{nil}.
4823 This is the User's address list.  If you have multiple addresses,
4824 set this variable.
4825
4826 @item wl-reply-subject-prefix
4827 @vindex wl-reply-subject-prefix
4828 The initial setting is @samp{Re: }.
4829 In the @samp{Subject:} of the reply draft, this string is prepended to
4830 the @samp{Subject:} of being replied.
4831
4832 @item wl-forward-subject-prefix
4833 @vindex wl-forward-subject-prefix
4834 The initial setting is @samp{Forward: }.
4835 In the @samp{Subject:} of the forwarding draft, this string is prepended
4836 to the @samp{Subject:} of being forwarded.
4837
4838 @item wl-draft-reply-use-address-with-full-name
4839 @vindex wl-draft-reply-use-address-with-full-name
4840 The initial setting is @code{t}.
4841 If non-nil, insert her full name with address when prepare a draft for
4842 reply a message.  If it is @code{nil}, insert her address only.
4843
4844 @item wl-draft-enable-queuing
4845 @vindex wl-draft-enable-queuing
4846 The initial setting is @code{t}.
4847 This flag controls off-line transmission.  If non-nil, the draft is
4848 sent off-line.
4849
4850 @item wl-draft-use-cache
4851 @vindex wl-draft-use-cache
4852 The initial setting is @code{nil}. If the value is non-nil and
4853 @code{wl-insert-message-id} is nil, cache the message which is sent.
4854
4855 @item wl-fcc-force-as-read
4856 @vindex wl-fcc-force-as-read
4857 The initial setting is @code{nil}. If the value is non-nil,
4858 Mark as read the message saved by @samp{Fcc:}.
4859
4860 @item wl-auto-flush-queue
4861 @vindex wl-auto-flush-queue
4862 The initial setting is t.
4863 This flag controls automatic transmission of the queue when Wanderlust
4864 becomes on-line.  If non-nil, the queue is automatically transmitted
4865 (with confirmation by @code{y-or-n-p}).  If you want to transmit it
4866 manually, press @kbd{F} in the folder mode.
4867
4868 @item wl-ignored-forwarded-headers
4869 @vindex wl-ignored-forwarded-headers
4870 Initial setting is @samp{\\(received\\|return-path\\|x-uidl\\)}.
4871 All headers that match this regexp will be deleted when forwarding a message.
4872
4873 @item wl-ignored-resent-headers
4874 Initial setting is @samp{\\(return-receipt\\|[bdf]cc\\)}.
4875 All headers that match this regexp will be deleted when resending a message.
4876
4877 @item wl-draft-always-delete-myself
4878 @vindex wl-draft-always-delete-myself
4879 If non-nil, always removes your own address from @samp{To:} and
4880 @samp{Cc:} when you are replying to the mail addressed to you.
4881
4882 @item wl-draft-delete-myself-from-bcc-fcc
4883 @vindex wl-draft-delete-myself-from-bcc-fcc
4884 If any of @code{wl-subscribed-mailing-list} are contained in @samp{To:}
4885 or @samp{Cc:} field, do not insert @samp{Bcc:} or @samp{Fcc:} field.
4886
4887 @item wl-smtp-posting-server
4888 @vindex wl-smtp-posting-server
4889 The initial setting is @code{nil}.
4890 This is the SMTP server name for mail transmission.
4891
4892 @item wl-smtp-posting-port
4893 @vindex wl-smtp-posting-port
4894 The initial setting is @code{nil}.
4895 This is the SMTP port number for mail transmission.
4896 If @code{nil}, default SMTP port number (25) is used.
4897
4898 @item wl-smtp-posting-user
4899 @vindex wl-smtp-posting-user
4900 The initial setting is @code{nil}.
4901 This is the user name for SMTP AUTH authentication.  If @code{nil},
4902 @code{smtp-authenticate-user} is used.
4903
4904 @item wl-smtp-authenticate-type
4905 @vindex wl-smtp-authenticate-type
4906 The initial setting is @code{nil}.
4907 This is the authentication method for SMTP AUTH authentication.  If
4908 @code{nil}, @code{smtp-authenticate-type} is used.  If
4909 @code{smtp-authenticate-type} is still @code{nil}, authentication will
4910 not be carried out.
4911
4912 @item wl-smtp-connection-type
4913 @vindex wl-smtp-connection-type
4914 The initial setting is @code{nil}.
4915 This variable specifies how to establish SMTP connections.
4916 If @code{nil}, use default connection type.
4917 If it is @code{starttls}, use STARTTLS (RFC2595).
4918 If it is @code{ssl}, use SSL.
4919
4920 @item wl-nntp-posting-server
4921 @vindex wl-nntp-posting-server
4922 The initial setting is @code{nil}.
4923 This is the NNTP server name used for news submission.
4924 If @code{nil}, @code{elmo-nntp-default-server} is used.
4925
4926 @item wl-nntp-posting-user
4927 @vindex wl-nntp-posting-user
4928 The initial setting is @code{nil}.
4929 This is the user name for AUTHINFO authentication on news submission.
4930 If @code{nil}, @code{elmo-nntp-default-user} is used.
4931 If it is still @code{nil}, AUTHINFO authentication will not be carried out.
4932
4933 @item wl-nntp-posting-port
4934 @vindex wl-nntp-posting-port
4935 The initial setting is @code{nil}.
4936 This is the port number of the NNTP server used for news submission.
4937 If @code{nil}, @code{elmo-nntp-default-server} is used.
4938
4939 @item wl-nntp-posting-stream-type
4940 @vindex wl-nntp-posting-stream-type
4941 The initial setting is @code{nil}.
4942 If @code{nil}, @code{elmo-nntp-default-stream-type} is evaluated.  If @code{ssl},
4943 SSL is used for news submission.  If @code{starttls}, STARTTLS (RFC2595)
4944 connection will be established.
4945
4946 @item wl-nntp-posting-function
4947 @vindex wl-nntp-posting-function
4948 The initial setting is @code{elmo-nntp-post}.
4949 This is the function to post NNTP message.
4950
4951 @item wl-nntp-posting-config-alist
4952 @vindex wl-nntp-posting-config-alist
4953 The initial setting is @code{nil}.
4954 The value takes an alist to define NNTP server like following example.
4955 It takes precedence over @code{wl-nntp-posting-@{server|user|port|function@}}.
4956
4957 @lisp
4958 @group
4959 (setq wl-nntp-posting-config-alist
4960       '((",?gmane\\." . "news.gmane.org")
4961         (",?comp\\." .
4962          ((server . "news-server")
4963           (user . "newsmaster")
4964           (port . 119)
4965           (function . elmo-nntp-post)))
4966         (".*" . "default-news-server")))
4967 @end group
4968 @end lisp
4969
4970 @item wl-pop-before-smtp-user
4971 @vindex wl-pop-before-smtp-user
4972 The initial setting is @code{nil}.
4973 This is the POP user name for POP-before-SMTP.
4974 If it is @code{nil}, @code{elmo-pop3-default-user} is used.
4975
4976 @item wl-pop-before-smtp-server
4977 @vindex wl-pop-before-smtp-server
4978 The initial setting is @code{nil}.
4979 This is the POP server name for POP-before-SMTP.
4980 If it is @code{nil}, @code{elmo-pop3-default-server} is used.
4981
4982 @item wl-pop-before-smtp-authenticate-type
4983 @vindex wl-pop-before-smtp-authenticate-type
4984 The initial setting is @code{nil}.
4985 This is the authentication method for POP-before-SMTP authentication.
4986 If it is @code{nil}, @code{elmo-pop3-default-authenticate} is used.
4987
4988 @item wl-pop-before-smtp-port
4989 @vindex wl-pop-before-smtp-port
4990 The initial setting is @code{nil}.
4991 This is the POP port number for POP-before-SMTP.  If it is @code{nil},
4992 @code{elmo-pop3-default-port} is used.
4993
4994 @item wl-pop-before-smtp-stream-type
4995 @vindex wl-pop-before-smtp-stream-type
4996 The initial setting is @code{nil}.
4997 This flag controls the use of SSL for POP-before-SMTP.  If it is
4998 @code{nil}, @code{elmo-pop3-default-stream-type} is used.  If @code{ssl},
4999 SSL is used.  If @code{starttls}, STARTTLS (RFC2595) connection will be
5000 established.
5001
5002 @item wl-draft-queue-save-variables
5003 @vindex wl-draft-queue-save-variables
5004 Specifies a list of variable to which queued messages are saved on the
5005 off-line transmission.
5006
5007 @item wl-draft-sendlog
5008 @vindex wl-draft-sendlog
5009 The initial setting is @code{t}.
5010 If @code{t}, transmission log is written in @file{~/.elmo/sendlog}.  It
5011 is written when:
5012
5013 @itemize @minus
5014 @item drafts are sent by smtp or qmail
5015 @item saved into folders by fcc
5016 @item saved into folders by queuing
5017 @end itemize
5018
5019 (it is written even if the transmission fails).
5020 But transmission by @file{im-wl.el} is not written in the @file{sendlog}
5021 and left to the logging function of @command{imput}.
5022
5023
5024 @item wl-draft-sendlog-max-size
5025 @vindex wl-draft-sendlog-max-size
5026 The initial setting is 20000 (in bytes).
5027 If @code{wl-draft-sendlog} is @code{t}, the log is rotated when it grows
5028 beyond the size specified by this variable.
5029
5030 @item wl-use-ldap
5031 @vindex wl-use-ldap
5032 The initial setting is @code{nil}.
5033 If non-nil, address completion uses LDAP.
5034
5035 @item wl-ldap-server
5036 @vindex wl-ldap-server
5037 The initial setting is @samp{localhost}.
5038 LDAP server name for address completion.
5039
5040 @item wl-ldap-port
5041 @vindex wl-ldap-port
5042 The initial setting is @code{nil}.
5043 If non-nil, the value is used as port number.
5044
5045 @item wl-ldap-base
5046 @vindex wl-ldap-base
5047 The initial setting is @samp{c=US}.
5048 LDAP search starting point (base) for address completion.
5049
5050 @item wl-draft-remove-group-list-contents
5051 @vindex wl-draft-remove-group-list-contents
5052 The initial setting is @code{t}.
5053 If non-nil, remove the group-lists' members in the recipients when
5054 sending the message (group-list means the description such as
5055 @samp{Group: foo@@gohome.org, bar@@gohome.org;} in the recipients).
5056 @end table
5057
5058 @node Disconnected Operations, Expire and Archive, Draft, Top
5059 @chapter Off-line Management
5060 @cindex Disconnected Operations
5061
5062 Wanderlust has on-line and off-line states.
5063
5064 @menu
5065 * Off-line State::              Wanderlust has on-line and off-line states
5066 * Enable Operations::           Enable Disconnected Operations
5067 * Plugged Mode::                Switching On-line/Off-line per Server/Port
5068 * Off-line State settings::     Invoking Wanderlust in the Off-line State
5069 * Variables of Plugged Mode::   Customize Plugged Mode
5070 @end menu
5071
5072
5073 @node Off-line State, Enable Operations, Disconnected Operations, Disconnected Operations
5074 @section Off-line State
5075
5076 Wanderlust has on-line and off-line states.  In the off-line state, you
5077 cannot access messages via network, unless they are cached.
5078
5079 @samp{[ON]} in the mode line indicates the on-line state.  @samp{[--]}
5080 in the mode line indicates the off-line state.  In folder or summary
5081 modes, press @kbd{M-t} to switch between off- and on-line.
5082
5083 You can invoke Wanderlust in the off-line state by setting
5084 @code{wl-plugged} to @code{nil} in @file{~/.wl} or anything appropriate.
5085
5086 In the off-line mode, @kbd{n} and @kbd{p} command in the summary mode
5087 ignores uncached messages.
5088
5089
5090 @node Enable Operations, Plugged Mode, Off-line State, Disconnected Operations
5091 @section Enable Disconeected Operations
5092
5093 Even in the off-line state, provided that relevant messages are cached,
5094 and the variable @code{elmo-enable-disconnected-operation} (described
5095 later) is non-nil, you can following operations:
5096 @xref{Plugged Mode}, @xref{Off-line State settings}.
5097
5098 @menu
5099 * Send Messages off-line::      Transmit Messages
5100 * Re-file and Copy queue::      Re-file and Copy (IMAP4)
5101 * Creation of Folders::         Create Folders off-line (IMAP4)
5102 * Marking::                     Mark (IMAP4)
5103 * Pre-fetching Reservations::   Pre-fetch (IMAP4, NNTP)
5104 @end menu
5105
5106 As soon as Wanderlust becomes on-line, such operations invoked off-line
5107 are reflected in the servers via network.
5108
5109
5110 @node Send Messages off-line, Re-file and Copy queue, Enable Operations, Enable Operations
5111 @subsection Transmission of Messages
5112
5113 You can proceed sending operation for  mail/news messages while you are
5114 off-line, then it will be reserved for sending (if you are using
5115 @file{im-wl.el}, it is irrelevant).
5116 Messages reserved for sending while off-line are accumulated in the
5117 queue folder, @samp{+queue}. These messages are transmitted at once when
5118 Wanderlust becomes on-line.
5119
5120 You can visit @samp{+queue} in the off-line state and confirm content of
5121 messages in the queue.  You can also remove messages.  Removed messages
5122 are not transmitted even in the on-line state.
5123
5124
5125 @node Re-file and Copy queue, Creation of Folders, Send Messages off-line, Enable Operations
5126 @subsection Re-file and Copy (IMAP4)
5127
5128 Re-file and copy operations to IMAP folders invoked during the off-line
5129 state are accumulated in the queue, and reflected in the server side
5130 when Wanderlust becomes on-line.  If you visit destination folders after
5131 off-line re-file or copy, it looks as if messages were appended even in
5132 off-line state.
5133
5134 For the safety reasons, messages re-filed off-line are removed from
5135 source folders only if their @samp{Message-ID:} match messages on the
5136 servers.  While the queue is processed, messages that failed to be
5137 re-filed or copied to the specified folders are appended to the folder
5138 @samp{+lost+found}.
5139
5140
5141 @node Creation of Folders, Marking, Re-file and Copy queue, Enable Operations
5142 @subsection Creation of Folders (IMAP4)
5143
5144 You can create IMAP folders off-line.  The creation of folders are
5145 reflected in the servers when Wanderlust becomes on-line.  If the creation
5146 of those folders fails at that time for some reasons, messages
5147 to be re-filed into those are appended to the folder @samp{+lost+found}
5148 instead.
5149
5150
5151 @node Marking, Pre-fetching Reservations, Creation of Folders, Enable Operations
5152 @subsection Marking (IMAP4)
5153
5154 Off-line changes in unread/read and importance mark @samp{$} information
5155 are also reflected in the servers when Wanderlust becomes on-line.
5156
5157
5158 @node Pre-fetching Reservations,  , Marking, Enable Operations
5159 @subsection Pre-fetching (IMAP4, NNTP)
5160
5161 You can make reservations for pre-fetching messages in IMAP or NNTP
5162 folders.  Reserved messages are marked with @samp{!} but not cached
5163 yet.  When Wanderlust becomes on-line, they are pre-fetched from
5164 servers.
5165
5166 If the variable @code{elmo-enable-disconnected-operation} is @code{nil},
5167 these off-line operations for IMAP4 and NNTP do not take place, and
5168 off-line re-file, copy or suchlike simply results in error.
5169
5170 Because off-line operations use cache files, it is a bad idea to erase
5171 them by hand; it may cause Wanderlust to malfunction.
5172
5173 If you want to remove caches, be sure to execute @kbd{M-x
5174 elmo-cache-expire-by-size}.  @code{elmo-cache-expire-by-size} does not
5175 remove caches for messages relevant to off-line operations.
5176
5177
5178 @node Plugged Mode, Off-line State settings, Enable Operations, Disconnected Operations
5179 @section Switching On-line/Off-line per Server/Port
5180
5181 @kbd{M-t} described above switches networking states as a whole, but you
5182 can switch on-line/off-line per server/port.
5183
5184 Pressing @kbd{C-t} in the folder or summary modes brings you in
5185 wl-plugged-mode shown below, in which you can change the plugged state
5186 for each port.
5187
5188 @example
5189 @group
5190 Queuing:[ON] AutoFlushQueue:[--] DisconnectedOperation:[ON]
5191 [ON](wl-plugged)
5192   [--]hosta
5193     [--]smtp        +queue: 2 msgs (1,2)        @dots{}@r{sending queue}
5194     [--]nntp(119)   +queue: 1 msg (3)           @dots{}@r{sending queue}
5195   [ON]hostb
5196     [--]imap4/cram-md5(143) %#mh/wl(prefetch-msgs:3,mark-as-important:1)
5197                             %inbox(delete-msgids:1)    @dots{}@r{dop queue}
5198     [ON]nntp(119)
5199     [ON]smtp
5200 @end group
5201 @end example
5202
5203 The first line indicates status of the following three variables, and
5204 simply pressing @kbd{@key{SPC}} or @kbd{@key{RET}} in each labeled
5205 column modifies the values of these variables.
5206
5207 @example
5208 @group
5209 "Queuing"               @code{wl-draft-enable-queuing}
5210 "AutoFlushQueue"        @code{wl-auto-flush-queue}
5211 "DisconnectedOperation" @code{elmo-enable-disconnected-operation}
5212 @end group
5213 @end example
5214
5215 where @samp{[ON]} means its value is @code{t}, and @samp{[--]} means
5216 @code{nil}.
5217
5218 The second and after lines indicate on-line/off-line states of servers
5219 and ports, where @samp{[ON]} stands for on-line and @samp{[--]} for
5220 off-line (in XEmacs or Emacs 21, they are shown with icons).  Pressing
5221 @kbd{@key{SPC}} or @kbd{@key{RET}} in each line switches its state.
5222
5223 @dfn{sending queue} means messages accumulated in the folder
5224 @samp{+queue} for off-line transmission, and @dfn{dop queue} means
5225 off-line operations when @code{elmo-enable-disconnected-operation} is
5226 @code{t}.
5227 @c If the variable @code{elmo-enable-disconnected-operation} is non-nil,
5228 @c off-line operations are enabled.
5229
5230 They are displayed if there are any of them.  In the example above, in
5231 the sending queue there are two messages (the first and the second in
5232 the queue folder) for smtp to hosta and one (the third) for nntp to
5233 hosta, and in the dop queue there are one for @samp{%inbox} and two for
5234 @samp{%#mh/wl}.
5235
5236 If you change @samp{(wl-plugged)} in the second line, the variable
5237 @code{wl-plugged} is changed, so that the mode line indicator and
5238 plugged states of all ports are affected.  If you change plugged states
5239 of any servers or ports, @samp{(wl-plugged)} in the second line is
5240 affected depending on @code{elmo-plugged-condition} settings and the
5241 plugged state of each port.
5242
5243
5244 @node Off-line State settings, Variables of Plugged Mode, Plugged Mode, Disconnected Operations
5245 @section Invoking Wanderlust in the Off-line State
5246
5247 As described before, if you set @code{wl-plugged} to @code{nil} in
5248 @file{~/.wl} or anything appropriate, you can invoke Wanderlust in the
5249 off-line state.  You can specify off-line state on a per server or port
5250 basis.  Refer to @code{wl-reset-plugged-alist} also.
5251
5252 Usually, when Wanderlust starts up, the plugged state of each port is
5253 read from @file{~/.folders} and @code{wl-smtp-posting-server},
5254 @code{wl-nntp-posting-server} and so on.  If you want to change the
5255 plugged state of these ports or to add other ports, configure
5256 @code{wl-make-plugged-hook} with a function.
5257
5258 @lisp
5259 @group
5260 (add-hook 'wl-make-plugged-hook
5261           '(lambda ()
5262              (elmo-set-plugged plugged-value(t/nil) server port)
5263                  ;; @r{add or change plugged states of the port of the server}
5264              (elmo-set-plugged plugged-value(t/nil) server)
5265                  ;; @r{if the port is omitted, all ports are affected}
5266                  ;; @r{(you cannot omit the port if you newly add the server)}
5267              ))
5268 @end group
5269 @end lisp
5270
5271
5272 @node Variables of Plugged Mode,  , Off-line State settings, Disconnected Operations
5273 @section Customizable Variables
5274
5275 @table @code
5276 @item wl-plugged
5277 @vindex wl-plugged
5278 If this variable is set to @code{nil}, Wanderlust starts up in off-line
5279 mode from the beginning.
5280
5281 @item wl-queue-folder
5282 @vindex wl-queue-folder
5283 The initial setting is @samp{+queue}.
5284 This is the folder in which messages in the transmission queue are
5285 accumulated.
5286
5287 @item wl-auto-flush-queue
5288 @vindex wl-auto-flush-queue
5289 The initial setting is @code{t}.
5290 This flag controls automatic transmission of the queue when Wanderlust
5291 becomes on-line.  If non-nil, the queue is automatically transmitted
5292 (with confirmation by @code{y-or-n-p}).  If you want to transmit it
5293 manually, press @kbd{F} in the folder mode.
5294
5295 @item elmo-enable-disconnected-operation
5296 @vindex elmo-enable-disconnected-operation
5297 The initial setting is @code{t}.  Controls off-line operations
5298 regarding IMAP4.  If non-nil, off-line operations are carried out.
5299
5300 @item elmo-lost+found-folder
5301 @vindex elmo-lost+found-folder
5302 The initial setting is @samp{+lost+found}.
5303 This is the folder to which messages are saved when they fails to be
5304 appended while the off-line re-file/copy queue is processed.
5305
5306 @item elmo-plugged-condition
5307 @vindex elmo-plugged-condition
5308 The initial setting is @code{one}.
5309 The value of @code{wl-plugged} reflects the return value of the function
5310 @code{elmo-plugged-p} (without arguments).
5311 This variable @code{elmo-plugged-condition} specifies the condition on
5312 which the return value of @code{(elmo-plugged-p)} should be t depending on the
5313 plugged state of each port.
5314
5315 @example
5316 'one         : plugged if one or more ports are plugged.
5317 'all         : plugged if all ports are plugged.
5318 'independent : reflects wl-plugged (elmo-plugged) regardless of plugged
5319                states of the ports.
5320 @var{function}     : reflects the return value of the @var{function}
5321  functions available per default
5322  'elmo-plug-on-by-servers
5323              : reflects the plugged state of the servers specified by the
5324                variable elmo-plug-on-servers.
5325  'elmo-plug-on-by-exclude-servers
5326              : reflects the plugged state of the servers that are not
5327                in elmo-plug-on-exclude-servers.
5328                   elmo-plug-on-exclude-servers defaults to
5329                    '("localhost"
5330                      (system-name)
5331                      (system-name)without the domain part)
5332 @end example
5333
5334 @example
5335 @group
5336 Example 1:
5337  (setq elmo-plugged-condition 'all)
5338 Example 2:
5339  (setq elmo-plug-on-servers '("smtpserver" "newsserver"))
5340  (setq elmo-plugged-condition 'elmo-plug-on-by-servers)
5341 Example 3:
5342  (setq elmo-plug-on-exclude-servers '("localhost" "myname"))
5343  (setq elmo-plugged-condition 'elmo-plug-on-by-exclude-servers)
5344 @end group
5345 @end example
5346
5347 @item wl-reset-plugged-alist
5348 @vindex wl-reset-plugged-alist
5349 The initial setting is @code{t}.  If non-nil, plugged states are
5350 initialized on a per server or port basis when Wanderlust starts up.
5351
5352 If @code{nil}, plugged states are retained while Emacs is running.  In
5353 other words, they are initialized when Emacs is restarted even if the
5354 value is @code{nil}.
5355 @end table
5356
5357
5358 @node Expire and Archive, Scoring, Disconnected Operations, Top
5359 @chapter Automatic Expiration and Archiving of Messages
5360 @cindex Expire and Archive
5361
5362 @menu
5363 * Expire::      Expiration and Archiving
5364 * Archive::     Archiving All Messages
5365 @end menu
5366
5367
5368 @node Expire, Archive, Expire and Archive, Expire and Archive
5369 @section Expiration
5370 @cindex Expire Message
5371
5372 Expiration means deletion of old messages which have outlasted a
5373 certain period of time.
5374
5375 @code{wl-expire} supports not only simple deletion, but also moving to
5376 specified archiving folders.
5377
5378 @section How to Use
5379
5380 Configure @code{wl-expire-alist} and press @kbd{e} in the folder mode,
5381 or @kbd{M-e} in the summary mode.
5382
5383 @subsection Configuring @code{wl-expire-alist}
5384
5385 An example configuration of @code{wl-expire-alist} is shown below.
5386 Everything in this @code{wl-expire-alist} makes a great difference in
5387 expiration, so be careful.  I advise you to set @code{wl-expire-use-log}
5388 to @code{t}, especially in the initial stage.
5389
5390 @lisp
5391 @group
5392 (setq wl-expire-alist
5393       '(("^\\+trash$"   (date 14) remove)
5394                                   ;; @r{delete}
5395         ("^\\+tmp$"     (date 7) trash)
5396                                   ;; @r{re-file to @code{wl-trash-folder}}
5397         ("^\\+outbox$"  (number 300) "$outbox;lha")
5398                                   ;; @r{re-file to the specific folder}
5399         ("^\\+ml/tmp$"  nil)
5400                            ;; @r{do not expire}
5401         ("^\\+ml/wl$"   (number 500 510) wl-expire-archive-number1 t)
5402                            ;; @r{archive by message number (retaining numbers)}
5403         ("^\\+ml/.*"    (number 300 310) wl-expire-archive-number2 t)
5404                            ;; @r{archive by a fixed number (retaining numbers)}
5405         ("^\\+diary$"   (date 30) wl-expire-archive-date)
5406                            ;; @r{archive by year and month (numbers discarded)}
5407         ))
5408 @end group
5409 @end lisp
5410
5411 Items in the list has the format of:
5412
5413 @example
5414 (@var{regexp-for-folders} @var{specification-of-messages-to-be-deleted} @var{destination})
5415 @end example
5416
5417 @noindent
5418 The folder is examined if it matches @var{regexp-for-folders} from the
5419 beginning of the list.  If you invoke expiration on the folder that does
5420 not match any of them, nothing will happen.  And if either the second or
5421 the third element of the item is @code{nil}, expiration will not take
5422 place.
5423
5424 You can use any one of the following for
5425 @var{specification-of-message-to-be-deleted}:
5426
5427 @table @code
5428 @item (number @var{n1} [@var{n2}])
5429 deletes messages depending on the number of messages in the folder.
5430
5431 @var{n1} is the number of messages which should survive deletion, for example
5432 if its value is 500, the newest 500 messages survive and the rests are
5433 deleted.
5434
5435 @var{n2} is the number of messages in the folder on which expiration should
5436 take place, which defaults to @var{n1} + 1.  For example if its value is 510,
5437 folders with 510 or more messages are expired.
5438 If you configured automatic expiration, frequently used folders may
5439 expire every time it receive messages, and you may be annoyed with the
5440 long delay in reading mail.
5441 In that case, you can set a wide margin between @var{n2} and @var{n1}, so that
5442 expiration would not take place until a certain number of messages
5443 accumulate.
5444
5445 Messages with marks in @code{wl-summary-expire-reserve-marks} (marked
5446 with important/new/unread) are not deleted.
5447 If @code{wl-expire-number-with-reserve-marks} is non-nil, the folder
5448 will expire so as to have 500 messages including such ones.
5449 Otherwise, it will have 500 messages except such ones.
5450
5451 @item (date @var{d1})
5452 deletes messages depending on the dates.
5453
5454 Messages dated @var{d1} or more days ago are deleted, for example if its
5455 value is seven, messages seven days old or more are deleted.  Note that
5456 the date is the one in the @samp{Date:} field of the message, not when
5457 the message entered the folder.
5458
5459 Messages with no or invalid @samp{Date:} field does not expire; you
5460 might have to delete them by hand.
5461 @end table
5462
5463 You can use any one of the following in the place of @var{destination}:
5464
5465 @table @asis
5466 @item @code{remove}
5467 deletes the messages instantly.
5468
5469 @item @code{hide}
5470 hide the messages from summary (messages are not deleted).
5471
5472 @item @code{trash}
5473 moves the messages to @code{wl-trash-folder}.
5474
5475 @item @var{string}(folder)
5476 moves the messages to the folder specified with @var{string}.
5477
5478 It would be useful for specifying an archiving folder, but because this
5479 does not move important messages, it might be better to use the
5480 standard functions described below.
5481
5482 @item @var{function}
5483 invokes the specified @var{function}.
5484
5485 To the @var{function}, three arguments are passed: a folder name, a list
5486 of messages to be deleted, and msgdb information of the summary.  You
5487 can specify function-specific arguments after the name of the
5488 @var{function}.  Note that the list contains messages with marks in
5489 @code{wl-summary-expire-reserve-marks}, be careful in writing your own
5490 function.
5491
5492 These are four standard functions; three of them move messages to an archive
5493 folder in the specified way.  This means old messages can be compressed
5494 and saved in a file, being deleted from the original folder.
5495 The last one divides messages to some MH folders.
5496
5497 @table @code
5498 @item wl-expire-archive-number1
5499 re-files to archiving folders corresponding to the message numbers of
5500 the messages being deleted.  For example, a message numbered 102 will be
5501 re-filed to @file{wl-00100.zip}, 390 to @file{wl-00300.zip}, and so on.
5502 If @code{wl-expire-archive-files} is 200, messages will be re-filed to
5503 @file{wl-00000.zip}, @file{wl-00200.zip}, @file{wl-00400.zip}, @dots{}.
5504
5505 The archiving folders to which messages are re-filed are determined by
5506 the name of the folder as follows (in this case, archiving folders are
5507 handled as if @code{elmo-archive-treat-file} were non-nil).
5508
5509 @table @asis
5510 @item If the folder type is localdir:
5511 @file{@var{ArchiveDir}/@var{foldername}-xxxxx.zip}
5512
5513 For example, @samp{+ml/wl} corresponds to @samp{$ml/wl;zip}
5514 (@file{~/Mail/ml/wl-00100.zip}).
5515
5516 @item The folder type is other than localdir:
5517 @file{@var{ArchiveDir}/@var{foldertype}/@var{foldername}-xxxxx.zip}
5518
5519 For example, @samp{%#mh/ml/wl} corresponds to
5520 @samp{$imap4/#mh/ml/wl;zip} (@file{~/Mail/imap4/#mh/ml/wl-00100.zip}).
5521 @end table
5522
5523 As you can see, in the case of localdir, the folder type is not included
5524 in the path name, but otherwise it is included.
5525 And you can control the prefix to the archiving folder name by
5526 @code{wl-expire-archive-folder-prefix}.
5527 Refer to @code{wl-expire-archive-folder-prefix} for details.
5528
5529 @item wl-expire-archive-number2
5530 re-files every certain number of messages to archiving folders.
5531
5532 This differs from @samp{wl-expire-archive-number1} in that this re-files
5533 to the folder up to the specified number regardless of message numbers.
5534 The archiving folders to which messages are re-filed are determined in the
5535 same way as @code{wl-expire-archive-number1}.
5536
5537 @item wl-expire-archive-date
5538 re-files messages depending on its date (year and month) to archive
5539 folders.
5540
5541 For example, a message dated December 1998 is re-filed to
5542 @code{$folder-199812;zip}.  The name of the archiving folders except the
5543 date part are determined in the same way as
5544 @code{wl-expire-archive-number1}.
5545
5546
5547 You can set the first argument to these three standard functions to non-nil
5548 in @code{wl-expire-alist} so as to retain message numbers in the folder.
5549 For example, it can be specified just after the name of the function:
5550
5551 @lisp
5552 ("^\\+ml/wl$" (number 300 310) wl-expire-archive-number1 t)
5553 @end lisp
5554
5555 If you omit the argument, consecutive numbers from 1 are assigned for
5556 each archiving folder.
5557
5558 @item wl-expire-localdir-date
5559 divedes messages depending on its date (year and month) to MH folders
5560 e.g. to @samp{+ml/wl/1999_11/}, @samp{+ml/wl/1999_12/}.
5561 @end table
5562 @end table
5563
5564 @subsection Treatment for Important or Unread Messages
5565
5566 If you specify any of @code{remove}, @code{trash}, a folder name, or a
5567 standard function, messages with marks in
5568 @code{wl-summary-expire-reserve-marks} (which are called @dfn{reserved
5569 messages} thereafter) are retained.
5570
5571 Per default, this variable include the important, new, and unread marks,
5572 so that messages with these marks are not removed.
5573 Note that you cannot include the temporary mark (i.e. temporary marks
5574 are removed anyway), and be sure to process temporary marks before you
5575 invoke expiration.
5576
5577 @subsection Auto Expiration
5578
5579 The following setup invokes expiration when you move into the summary
5580 mode.  There will be no confirmation, so make sure you made no mistake
5581 in regexp and other settings before you set up this.
5582
5583 @lisp
5584 @group
5585 (add-hook 'wl-summary-prepared-pre-hook 'wl-summary-expire)
5586 @end group
5587 @end lisp
5588
5589 In the folder mode, you can invoke expiration per group as well as per
5590 folder.  Therefore, if you specify @samp{Desktop} group, all folders
5591 matching @code{wl-expire-alist} expire.
5592
5593 @section Tips
5594
5595 @subsection Treating archive folders.
5596 To treat archive folders created by @code{wl-expire-archive-number1} and so on,
5597 you must set non-nil value to @code{elmo-archive-treat-file}.
5598
5599 @subsection Confirming
5600
5601 If you are to use @code{remove}, try @code{trash} at first and see
5602 messages move to @code{wl-trash-folder} as expected, then replace it
5603 with @code{remove}.  It would be dangerous to use @code{remove} from the
5604 beginning.
5605
5606 If you are to use @code{wl-expire-archive-number1} and the like, try to
5607 make a folder of the archiver type (@code{zip} or @code{lha}) and see if
5608 you can append messages to it.  Even if settings in
5609 @code{wl-expire-alist} and @code{elmo-archive} are correct, messages
5610 would not be saved anywhere and disappeared in case the archiver program
5611 fails.
5612
5613 After you make sure you can archive to the folder correctly, you can
5614 invoke expiration and utilize the log.
5615
5616 If you set @code{wl-expire-use-log} to @code{t},
5617 @file{~/.elmo/expired-log} should contain the log, for example:
5618
5619 @example
5620 @group
5621 delete  +ml/wl  (593 594 595 596 597 598 599)
5622 move    +ml/wl -> $ml/wl-00600;tgz;wl  (600 601 602)
5623 @end group
5624 @end example
5625
5626 The first column indicates the operation, i.e. @samp{delete},
5627 @samp{copy}, or @samp{move}.  The next is the name of the folder that
5628 expired.  In the case of @samp{copy} and @samp{move}, the destination
5629 folder is recorded after @samp{->}.  The last is the list of message
5630 numbers that are actually deleted or moved (in the case of @samp{copy}
5631 and @samp{move}, the number is the one in the source folder, rather than
5632 the destination folder).
5633
5634 @subsection Re-filing Reserved Messages
5635
5636 The three standard functions copy reserved messages to the archive
5637 folder, but do not delete them from the source folder.  Because
5638 reserved messages and the like always remain, they are recorded in
5639 @file{~/.elmo/expired-alist} so that they are not copied over and over
5640 again.  They are not recorded if copied by @code{wl-summary-archive}.
5641
5642 If you enabled logging, usually @samp{move} is recorded for re-filing,
5643 but instead @samp{copy} and @samp{delete} are recorded separately if
5644 reserved messages are involved.  This is because it actually copies
5645 messages including reserved, then deletes ones except reserved in that
5646 case.
5647
5648 @section Customizable Variables
5649
5650 @table @code
5651 @item wl-expire-alist
5652 @vindex wl-expire-alist
5653 The initial setting is @code{nil}.
5654 This variable specifies folders and methods to expire.  For details,
5655 refer to @code{wl-expire-alist} settings above.
5656
5657 @item wl-summary-expire-reserve-marks
5658 @vindex wl-summary-expire-reserve-marks
5659 The initial setting is the list below.
5660
5661 @lisp
5662 @group
5663 (list wl-summary-important-mark
5664       wl-summary-new-uncached-mark
5665       wl-summary-new-cached-mark
5666       wl-summary-unread-mark
5667       wl-summary-unread-uncached-mark
5668       wl-summary-unread-cached-mark)
5669 @end group
5670 @end lisp
5671
5672 Messages with these marks are retained in the folder, even after
5673 expiration.
5674 Only permanent marks can be listed, not temporary marks.
5675
5676 You can list marks one by one as in the default; you can use the
5677 following settings as well:
5678
5679 @table @code
5680 @item all
5681 All messages with permanent marks are retained,
5682 i.e. @code{wl-summary-read-uncached-mark} is included in addition to the
5683 defaults.
5684
5685 @item none
5686 All messages are handled as usual ones that are already read, no matter
5687 what marks they have; even important messages are deleted.
5688 @end table
5689
5690 @item wl-expire-archive-files
5691 @vindex wl-expire-archive-files
5692 The initial setting is 100.
5693 This variable specifies the number of messages to be retained in one
5694 archiving folder.
5695
5696 @item wl-expire-number-with-reserve-marks
5697 @vindex wl-expire-number-with-reserve-marks
5698 The initial setting is @code{nil}.
5699 If non-nil, if expiring messages are specified by @code{number},
5700 messages with @code{wl-summary-expire-reserve-marks} are also retained.
5701
5702 @item wl-expire-archive-get-folder-function
5703 @vindex wl-expire-archive-get-folder-function
5704 The initial setting is @code{wl-expire-archive-get-folder}.
5705
5706 This variable specifies a function that returns the name of an archiving
5707 folder for standard functions in the place of @var{destination}.
5708 You can use the following three variables for simple modification of
5709 folder names; if you want more complex settings, define your own
5710 function in this variable.
5711
5712 @code{wl-expire-archive-get-folder} can be customized by these
5713 variables:
5714 @itemize @bullet
5715 @item @code{wl-expire-archive-folder-name-fmt}
5716 @item @code{wl-expire-archive-folder-type}
5717 @item @code{wl-expire-archive-folder-prefix}
5718 @end itemize
5719
5720 @item wl-expire-archive-folder-name-fmt
5721 @vindex wl-expire-archive-folder-name-fmt
5722 The initial setting is @samp{%s-%%05d;%s}.
5723 This is a @code{format} string for archiving folders used in
5724 @code{wl-expire-archive-number1} and @code{wl-expire-archive-number2}.
5725 Note that you must specify the message number by @samp{%%d}, because it
5726 is parsed twice by @code{format}.
5727
5728 If you modify this, adjust @code{wl-expire-archive-folder-num-regexp} as
5729 well.
5730
5731 @item wl-expire-archive-date-folder-name-fmt
5732 @vindex wl-expire-archive-date-folder-name-fmt
5733 The initial setting is @samp{%s-%%04d%%02d;%s}.
5734 This is a @code{format} string for archiving folders used in
5735 @code{wl-expire-archive-date}.  Note that you must specify the message
5736 number by @samp{%%d}, because it is parsed twice by @code{format}.
5737 There should be @samp{%%d} twice, one for the year and the other for the
5738 month.
5739
5740 If you modify this, adjust
5741 @code{wl-expire-archive-date-folder-num-regexp} as well.
5742
5743 @item wl-expire-archive-folder-type
5744 @vindex wl-expire-archive-folder-type
5745 The initial setting is @code{zip}.
5746 This variable specifies an archiver type of the archiving folders.
5747
5748 @item wl-expire-archive-folder-prefix
5749 @vindex wl-expire-archive-folder-prefix
5750 The initial setting is @code{nil}.
5751 This variable specifies the prefix (directory structure) to archiving
5752 folders.
5753 Exercise extreme caution in using this feature, as it has not been
5754 seriously tested.
5755 In the worst case, there is a fear of destructing archiving folders.
5756
5757 @table @code
5758 @item nil
5759 There will be no prefix.
5760
5761 @item short
5762 For example, @samp{+ml/wl} will be prefixed by @samp{wl}, resulting in
5763 @samp{$ml/wl-00000;zip;wl}.
5764
5765 @item t
5766 For example, @samp{+ml/wl} will be prefixed by prefix @samp{ml/wl},
5767 resulting in
5768
5769 @samp{$ml/wl-00000;zip;ml/wl}.
5770 @end table
5771
5772 @item wl-expire-archive-folder-num-regexp
5773 @vindex wl-expire-archive-folder-num-regexp
5774 The initial setting is @samp{-\\([-0-9]+\\);}.
5775 This variable specifies the regular expression to be used for getting
5776 message numbers from multiple archiving folders specified by
5777 @code{elmo-list-folders}.
5778 Set it in accordance with @code{wl-expire-archive-folder-name-fmt}.
5779
5780 @item wl-expire-archive-date-folder-num-regexp
5781 @vindex wl-expire-archive-date-folder-num-regexp
5782 The initial setting is @samp{-\\([-0-9]+\\);}.
5783 This is the regular expression to be used for getting message numbers
5784 from multiple archiving folders specified by @code{elmo-list-folders}.
5785 Set it in accordance with @code{wl-expire-archive-date-folder-name-fmt}.
5786
5787 @item wl-expire-delete-oldmsg-confirm
5788 @vindex wl-expire-delete-oldmsg-confirm
5789 The initial setting is @code{t}.
5790 If non-nil, messages older than the one with the largest number will be
5791 deleted with confirmation.
5792 If @code{nil}, they are deleted without confirmation.
5793
5794 This feature is valid only if non-nil is specified as a argument to the
5795 standard functions so as to retain numbers.
5796
5797 @item wl-expire-use-log
5798 @vindex wl-expire-use-log
5799 The initial setting is @code{nil}.
5800 If non-nil, expiration logs are recorded in @file{~/.elmo/expired-log}.
5801 They are appended but not truncated or rotated automatically; you might
5802 need to remove it manually.
5803
5804 @item wl-expire-add-seen-list
5805 @vindex wl-expire-add-seen-list
5806 The initial setting is @code{t}.
5807
5808 If non-nil, when messages are re-filed by expiration, read/unread
5809 information is passed to the destination folder.
5810
5811 However if you do not read the destination folder from Wanderlust,
5812 @file{seen} under @file{~/.elmo/} grows larger and larger, so you might
5813 want to set this to @code{nil} if you are simply saving to some
5814 archiving folders.  Even if its value is @code{nil}, messages in the
5815 archiving folders are simply treated as unread; it does not affect
5816 expiration itself.
5817
5818 @item wl-expire-folder-update-msgdb
5819 @vindex wl-expire-folder-update-msgdb
5820 The initial setting is @code{t}.
5821 If @code{t}, in the folder mode, expiration is carried out after
5822 updating summary information.  If you specified a list of regular
5823 expressions of folder names, summary information is updated for matching
5824 folders only.
5825 @end table
5826
5827
5828 @node Archive,  , Expire, Expire and Archive
5829 @section Archiving Messages
5830
5831 @subsection Archiving Messages
5832 @kbd{M-x wl-summary-archive} copies the whole folder to archiving
5833 folders.  If there are the archiving folders already, only new messages
5834 are appended.
5835
5836 You can use @code{wl-archive-alist} in order to specify how messages are
5837 archived according to their folder names, as in @code{wl-expire-alist}.
5838 For example:
5839
5840 @lisp
5841 @group
5842 (setq wl-archive-alist
5843       '(("^\\+tmp$"     wl-archive-date)
5844         ("^\\+outbox$"  wl-archive-number2)
5845         (".*"           wl-archive-number1)))
5846 @end group
5847 @end lisp
5848
5849 Each item in the list has the following format:
5850
5851 @example
5852 (@var{folders-regexp}  @var{deleting-function})
5853 @end example
5854
5855 As you can see, you can only use a function after @var{folders-regexp}.
5856 Per default, there are three functions:
5857
5858 @itemize @bullet
5859 @item @code{wl-archive-number1}
5860 @item @code{wl-archive-number2}
5861 @item @code{wl-archive-date}
5862 @end itemize
5863
5864 As inferred from their names, they work similarly to "expire" versions,
5865 other than the following points:
5866
5867 @itemize @minus
5868 @item No messages are deleted
5869 @item Message numbers are retained even if invoked without arguments
5870 @end itemize
5871
5872 These functions are good to archive all messages in a folder by their
5873 numbers or by their dates.
5874 These are also useful for backup or confirmation purposes before
5875 expiration.
5876 If you try to re-file them after they are archived, they are deleted but
5877 not re-filed.
5878
5879 Per default, the archiving folders to which messages are copied are
5880 determined automatically by @code{wl-expire-archive-get-folder-function}.
5881 You can copy to a specific folder by invoking with a prefix argument,
5882 i.e. @kbd{C-u M-x wl-summary-archive}.
5883
5884 Note that this feature has not been seriously tested, because you can
5885 simply copy to an archiving folder, for example by
5886 @code{wl-summary-copy-region}.
5887
5888 The archiving folders are determined by the same logic as in
5889 @code{wl-summary-expire}; the following customizable variables are
5890 relevant:
5891
5892 @itemize @bullet
5893 @item @code{wl-expire-archive-files}
5894 @item @code{wl-expire-archive-get-folder-function}
5895 @item @code{wl-expire-archive-folder-name-fmt}
5896 @item @code{wl-expire-archive-folder-type}
5897 @item @code{wl-expire-archive-folder-prefix}
5898 @item @code{wl-expire-archive-folder-num-regexp}
5899 @end itemize
5900
5901 @subsection Customizable Variables
5902
5903 @table @code
5904 @item wl-archive-alist
5905 @vindex wl-archive-alist
5906 The initial setting is the list shown below:
5907
5908 @lisp
5909 @group
5910 ((".*" wl-archive-number1))
5911 @end group
5912 @end lisp
5913
5914 @noindent
5915 This variable specifies a function that copies to archiving folders.
5916 To the function, three arguments are passed: a folder name, a list of
5917 messages in the folder, and msgdb information of the summary.
5918 Needless to say, you can use your own function.
5919 @end table
5920
5921
5922 @node Scoring, Split messages, Expire and Archive, Top
5923 @chapter Score of the Messages
5924 @cindex Scoring
5925 @c @cindex Kill File
5926
5927 Scoring is the function that associates a score (value) with each
5928 message, and marks as read or deletes from the summary according to it.
5929
5930 You can put target or important marks on essential messages, or read marks
5931 on the ones you do not want to read, for example spam articles.
5932
5933 This scoring function has a capability and a format similar to the one
5934 that Gnus has, although there are some unsupported features and
5935 Wanderlust specifics.
5936 @xref{Scoring, , ,gnus, The gnus Newsreader}.
5937
5938 @menu
5939 * Score Commands::             Score Commands
5940 * Score File Format::          Score File Format
5941 @end menu
5942
5943
5944 @node Score Commands, Score File Format, Scoring, Scoring
5945 @section Score Commands
5946 @cindex Score Commands
5947
5948 @subsection Score File Specification
5949
5950 @code{wl-score-folder-alist} specifies score files or variables in which
5951 scores are defined, corresponding to folder names.
5952
5953 @lisp
5954 @group
5955 (setq wl-score-folder-alist
5956       '(("^-.*"
5957          "news.SCORE"
5958          "my.SCORE")
5959         (".*"
5960          "all.SCORE")))
5961 @end group
5962 @end lisp
5963
5964 If paths to the score files are omitted, the directory specified in the
5965 variable @code{wl-score-files-directory} is assumed.
5966
5967 No matter what you write in @code{wl-score-folder-alist}, the default
5968 score file @code{wl-score-default-file} (@file{all.SCORE}) is always
5969 read (it does not have to exist).
5970 Therefore, in the example above, the three score files,
5971 @file{news.SCORE}, @file{my.SCORE}, and @file{all.SCORE} are read for
5972 the folders that matches @samp{^-.*}.
5973
5974 @subsection Scored Messages
5975
5976 Scores are attached to the messages that are specified by
5977 @code{wl-summary-score-marks} temporarily when the summary is updated;
5978 when you exit from the summary, the scores are removed and reverts to
5979 the defaults.
5980
5981 @subsection Creation of Score Files
5982
5983 In the summary buffer, move to an appropriate message and type @kbd{L}.
5984 Then type @kbd{s}, @kbd{s}, and @kbd{p} at a prompt in a mini-buffer.
5985 The string in Subject is presented.  Edit it and press @kbd{@key{RET}}.
5986
5987 This makes @minus{}1000 are scored for messages with the same
5988 @samp{Subject:} as the string you entered.  That is, such a score file
5989 is created automatically.
5990
5991 Then, try typing @kbd{h} and @kbd{e} in the same summary buffer.
5992 The score file you just made appears.
5993 This buffer is called @dfn{score editing buffer} thereafter.
5994 When you type @kbd{C-c C-e} in it, you are prompted in the mini-buffer
5995 as you are previously; type @kbd{a}.  Then a score entry for "From"
5996 should be inserted.
5997 In this way, you can create a score file easily either in the summary
5998 buffer or in the score editing buffer.
5999
6000 By the way, you might be aware the numbers of key strokes are different
6001 between @kbd{s s p} and @kbd{a}.
6002 This is determined by @code{wl-score-header-default-entry}.
6003 This variable specifies the default score entries corresponding to
6004 header fields.
6005 For example, for "subject" field, a type and a time limit are prompted,
6006 but for "from" field, they are fixed upon automatically as substring and
6007 permanent respectively.
6008 However, score values can be modified by the prefix argument.
6009 Typing @kbd{?} at the mini-buffer shows a help on keys and corresponding
6010 headers and types.
6011
6012 At last, type @kbd{C-c C-c} in the score editing buffer.  This saves the
6013 score file and terminates the edit mode.  Typing @kbd{C-c C-c} after
6014 erasing contents of the buffer deletes the score file being edited.
6015
6016 @subsection Tips
6017
6018 @subsubsection Selecting Score Files
6019
6020 You can change score files to which scores are appended by
6021 @code{wl-summary-increase-score} and @code{wl-summary-lower-score} by
6022 @code{wl-score-change-score-file}.
6023
6024 @subsubsection Summing Up the Score
6025
6026 If you add the same entries by @code{wl-summary-increase-score},
6027 @code{wl-summary-lower-score}, and @code{wl-score-edit-insert-entry},
6028 scores for the entry is summed up.
6029
6030 For example, if you create @samp{from} entry with the score of @minus{}1000 by
6031 @kbd{L a} and again @samp{from} with @minus{}200, one entry with the score of
6032 @minus{}1200 will be created as a result.
6033
6034 @subsubsection Creating Thread Key
6035
6036 Creating @samp{Thread} key by @code{wl-summary-increase-score} or
6037 @code{wl-summary-lower-score} appends @samp{Message-ID} of all children.
6038
6039 @subsubsection Creating Followup Key
6040
6041 Creating @samp{Followup} key by @code{wl-summary-increase-score} or
6042 @code{wl-summary-lower-score} appends @samp{Message-ID} of the message
6043 at the cursor to @samp{References} key.
6044 If @code{wl-score-auto-make-followup-entry} is non-nil,
6045 @samp{Message-ID} of all messages to be followed up within dates
6046 specified by @code{wl-score-expiry-days}.
6047
6048 @subsection Key Bindings
6049
6050 @table @kbd
6051 @item K
6052 @kindex K (Summary)
6053 @findex wl-summary-increase-score
6054 Increases the score for the current message.
6055 And the score entry is appended to the score file at the same moment.
6056 You can specify the score value by a prefix argument.
6057
6058 @item L
6059 @kindex L (Summary)
6060 @findex wl-summary-lower-score
6061 Decreases the score for the current message.
6062 And the score entry is appended to the score file at the same moment.
6063 You can specify the score value by a prefix argument.
6064
6065 @item h R
6066 @kindex h R (Summary)
6067 @findex wl-summary-rescore
6068 Re-applies the scoring.
6069 However, already scored messages are not scored anew.
6070
6071 @item h c
6072 @kindex h c (Summary)
6073 @findex wl-score-change-score-file
6074 Changes the score file currently selected.
6075
6076 @item h e
6077 @kindex h e (Summary)
6078 @findex wl-score-edit-current-scores
6079 Edits the score file currently selected.
6080 If there are multiple score files, the previously specified one is
6081 selected.
6082
6083 @item h f
6084 @kindex h f (Summary)
6085 @findex wl-score-edit-file
6086 Edits an arbitrary score file and selects it.
6087
6088 @item h F
6089 @kindex h F (Summary)
6090 @findex wl-score-flush-cache
6091 Erases caches associated to the score files that are read.
6092 If you modified score files directly (from other than Wanderlust), you
6093 need to re-read them after erasing the cache.
6094
6095 @item h m
6096 @kindex h m (Summary)
6097 @findex wl-score-set-mark-below
6098 Specifies the criterion for scores to be marked as read.
6099 Messages with scores less than this value are marked as read.
6100
6101 @item h x
6102 @kindex h x (Summary)
6103 @findex wl-score-set-expunge-below
6104 Specifies the criterion for scores to be deleted from the summary.
6105 Messages with scores less than this value are deleted.
6106 "Deleted" means it is not shown; they are not removed from the summary
6107 information or the folder.
6108 The deleted messages can be shown by rescan-noscore again.
6109 @end table
6110
6111 @subsection Key Bindings in the Score Editing Buffer
6112
6113 @table @kbd
6114 @item C-c C-k
6115 @kindex C-c C-k (Score Mode)
6116 @findex wl-score-edit-kill
6117 Abandons the file being edited.
6118
6119 @item C-c C-c
6120 @kindex C-c C-c (Score Mode)
6121 @findex wl-score-edit-exit
6122 Saves the file being edited, and quits from the edit mode.
6123
6124 @item C-c C-p
6125 @kindex C-c C-p (Score Mode)
6126 @findex wl-score-pretty-print
6127 Re-draws the score.
6128
6129 @item C-c C-d
6130 @kindex C-c C-d (Score Mode)
6131 @findex wl-score-edit-insert-date
6132 Inserts the number of dates from Dec. 31, 1 B.C.
6133 It is used for creating the third factor of time-limited scores.
6134
6135 @item C-c C-s
6136 @kindex C-c C-s (Score Mode)
6137 @findex wl-score-edit-insert-header
6138 Inserts the header of the message selected in the summary buffer.
6139
6140 @item C-c C-e
6141 @kindex C-c C-e (Score Mode)
6142 @findex wl-score-edit-insert-entry
6143 Inserts the score entry of the message selected in the summary buffer.
6144 @end table
6145
6146 @subsection Customizable Variables
6147
6148 @table @code
6149 @item wl-summary-default-score
6150 @vindex wl-summary-default-score
6151 The initial setting is 0 (zero).
6152 This variable specifies the default value of the score.
6153 The score is increased or decreased based upon this value.
6154
6155 @item wl-summary-important-above
6156 @vindex wl-summary-important-above
6157 The initial setting is @code{nil}.
6158 Messages with scores larger than this value are attached with the
6159 important mark (@samp{$}).
6160 If @code{nil}, no important marks are attached.
6161
6162 @item wl-summary-target-above
6163 @vindex wl-summary-target-above
6164 The initial setting is @code{nil}.
6165 Messages with scores larger than this value are attached with the target
6166 mark (@samp{*}).
6167 If @code{nil}, no target marks are attached.
6168
6169 @item wl-summary-mark-below
6170 @vindex wl-summary-mark-below
6171 The initial setting is 0 (zero).
6172 Messages with scores smaller than this value are marked as read.
6173
6174 @item wl-summary-expunge-below
6175 @vindex wl-summary-expunge-below
6176 The initial setting is @code{nil}.
6177 Messages with scores smaller than this value are deleted from the
6178 summary.
6179 If @code{nil}, they are not deleted.
6180
6181 @item wl-summary-score-marks
6182 @vindex wl-summary-score-marks
6183 The initial setting is the list shown below:
6184
6185 @lisp
6186 @group
6187 (list wl-summary-new-uncached-mark
6188       wl-summary-new-cached-mark)
6189 @end group
6190 @end lisp
6191
6192 @noindent
6193 Messages with these marks are scored.
6194
6195 @item wl-use-scoring
6196 @vindex wl-use-scoring
6197 The initial setting is t.
6198 If non-nil, scoring is enabled.
6199
6200 @item wl-score-files-directory
6201 @vindex wl-score-files-directory
6202 The initial setting is @file{~/.elmo/}.
6203 The default directory for score files.
6204
6205 @item wl-score-interactive-default-score
6206 @vindex wl-score-interactive-default-score
6207 The initial setting is 1000.
6208 This value is used as a score when a score factor is @code{nil} in the
6209 score file.  It is also used in @code{wl-summary-increase-score} and
6210 @code{wl-summary-lower-score}, on condition that the value of
6211 @code{wl-score-header-default-entry} is @code{nil}.
6212
6213 @item wl-score-expiry-days
6214 @vindex wl-score-expiry-days
6215 The initial setting is 7.
6216 This is the number of days before time-limited scores are deleted.
6217
6218 @item wl-score-update-entry-dates
6219 @vindex wl-score-update-entry-dates
6220 The initial setting is @code{t}.
6221 If non-nil, it enables deletion of time-limited scores.
6222
6223 @item wl-score-header-default-entry
6224 @vindex wl-score-header-default-entry
6225 Specifies the default value for each header field for score entries
6226 created by @code{wl-summary-increase-score},
6227 @code{wl-summary-lower-score}, and @code{wl-score-edit-insert-entry}.
6228
6229 @item wl-score-simplify-fuzzy-regexp
6230 @vindex wl-score-simplify-fuzzy-regexp
6231 In the case of a type of a score entry is @code{fuzzy}, this specifies a
6232 regular expression to be deleted from the string.
6233 Because this is usually used for Subject, the default is prefixes that
6234 are attached by mailing list programs.
6235
6236 @item wl-summary-rescore-partial-threshold
6237 @vindex wl-summary-rescore-partial-threshold
6238 The initial setting is 200.
6239 When sync-all or rescan is executed, if there are messages more than
6240 this value, only the last same number of messages as this value are
6241 scored.
6242
6243 @item wl-summary-auto-sync-marks
6244 @vindex wl-summary-auto-sync-marks
6245 If non-nil, unread/important marks are synchronized when the summary
6246 does.
6247 Unread marks reflect information on the IMAP4 server.
6248 Important marks reflect information on the IMAP4 server (flagged or
6249 not), and contents of @samp{'mark} folder.
6250 The initial setting is @code{t}.
6251 @end table
6252
6253
6254 @node Score File Format,  , Score Commands, Scoring
6255 @section Score File Format
6256 @cindex Score File Format
6257
6258 The format of score files are the same as Gnus, and basically you can
6259 use Gnus score files as they are.  But they are not fully compatible
6260 because some keys are not supported and there are Wanderlust specifics.
6261 @xref{Score File Format, , ,gnus, The gnus Newsreader}.
6262
6263 @lisp
6264 @group
6265 (("subject"
6266   ("for sale" -1000 nil s)
6267   ("profit" -1000 nil s))
6268  ("from"
6269   ("spam@@spamspamspam" -10000 nil s))
6270  ("followup"
6271   ("my@@address" 3001 nil s))
6272  ("chars"
6273   (1000000 -10 nil >))
6274  (important 5000)
6275  (target 3000)
6276  (mark 0)
6277  (expunge -3000))
6278 @end group
6279 @end lisp
6280
6281 @table @code
6282 @item string
6283 If the key is a string, it is the name of the header to be matched.
6284 The following keys are available:
6285 @code{Subject}, @code{From}, @code{Date}, @code{Message-ID},
6286 @code{References}, @code{To}, @code{Cc}, @code{Chars}, @code{Lines},
6287 @code{Xref}, @code{Extra}, @code{Followup}, @code{Thread}
6288 @code{Chars} and @code{Lines} mean the size and the number of lines of
6289 the message, respectively.  @code{Extra}, @code{Followup}, @code{Thread}
6290 are described later.
6291 The rest corresponds the field of the same name.
6292
6293 Arbitrary numbers of core entries are specified after the key.
6294 Each score entry consists of these five factors:
6295
6296 @enumerate
6297 @item
6298 A factor that matches header.  This should be a number in the cases of
6299 @code{lines} and @code{chars}, otherwise a string.
6300
6301 @item
6302 A score factor.  When the first item matches, the score of the message
6303 is increased or decreased by this value.
6304
6305 @item
6306 A time limiting factor.  If @code{nil}, the score is permanent, and in the case
6307 of a number, the score is deleted if it does not match for days
6308 (@code{wl-score-expiry-days}) from the date specified by this.
6309 The date is since Dec. 31, 1 B.C.
6310
6311 @item
6312 A type factor.  This specifies the way the first factor matches.
6313 Available types depend on keys.
6314
6315 @table @dfn
6316 @item From, Subject, References, Message-ID
6317 For these keys in string, @code{r} and @code{R} (regexp),
6318 @code{s} and @code{S} (substring), @code{e} and @code{E} (exact match),
6319 as well as @code{f} and @code{F} (fuzzy) can be used.
6320 @code{R}, @code{S}, @code{E}, and @code{F} are case sensitive.
6321
6322 @item Lines, Chars
6323 For these keys, the following five numerical relative operators can be
6324 used: @code{<}, @code{>}, @code{=}, @code{>=}, @code{<=}.
6325
6326 @item Followup
6327 This key matches @code{From} header, and scores all follow-ups to the
6328 message.
6329 For example, it would be useful for increasing scores for follow-ups to
6330 you own article.
6331
6332 You can use the same types as @code{From} except for @code{f}.
6333 And a @samp{Followup} entry is automatically appended to the score file.
6334
6335 @item Thread
6336 This key scores (sub-)threads beginning with @code{Message-ID} @var{x}.
6337 A @samp{Thread} entry is automatically appended for each article that
6338 has @var{x} in the @code{References} header.
6339 You can make sure the whole thread including messages that does not have
6340 all ancestors @code{Message-ID} in @code{References} is scored.
6341
6342 You can use the same types as @code{References} except for @code{f}.
6343 And a @samp{Thread} entry is automatically appended to the score file.
6344 @end table
6345
6346 @item
6347 A factor for extension header.  This is meaningful only if the key is
6348 @code{Extra}.
6349 This specifies headers to be matched other than standard headers like
6350 @code{Subject} and @code{From}.
6351 Note that you should specify the header in
6352 @code{elmo-msgdb-extra-fields} also.
6353 Therefore it does not work in folders where extension headers cannot be
6354 retrieved.
6355
6356 @end enumerate
6357
6358 The sum of these scores @emph{after all factors are applied} becomes the
6359 score of the message.
6360
6361 @cindex Score File Atoms
6362 @item mark
6363 Messages with a score less than this value is marked as read.
6364 The default is @code{wl-summary-mark-below}.
6365
6366 @item expunge
6367 Messages with a score less than this value is deleted from the summary.
6368 The default is @code{wl-summary-expunge-below}.
6369
6370 @item mark-and-expunge
6371 Both @code{mark} and @code{expunge} are applied,
6372 i.e. messages with a score less than this value is marked as read and
6373 deleted from the summary.
6374
6375 @item target
6376 Messages with a score greater than this value is attached with temp
6377 marks.
6378 The default is @code{wl-summary-target-above}.
6379
6380 @item important
6381 Messages with a score greater than this value is attached with important
6382 marks.
6383 The default is @code{wl-summary-important-above}.
6384 @end table
6385
6386 @subsection Caveats
6387
6388 Not to mention the @code{extra} key, if @code{lines} or @code{xref} keys
6389 are used, you need to set @code{elmo-msgdb-extra-fields}.
6390
6391 @lisp
6392 (setq elmo-msgdb-extra-fields '("lines" "xref"))
6393 @end lisp
6394
6395 There are other restrictions as shown below:
6396
6397 @itemize @bullet
6398 @item Because @samp{References} field in the summary information
6399 contains only the last @samp{Message-ID}, @code{references} key matches
6400 the last one only.
6401 @end itemize
6402
6403 Keys that can be seen by folder of types:
6404
6405 @example
6406 @group
6407                         chars lines xref  extra
6408 localdir,localnews        Y     E     E     E
6409 nntp (supporting xover)   Y     E     E     N
6410      (otherwise)          N     E     E     E
6411 imap4                     Y     E     E     E
6412 pop3                      N     E     E     E
6413
6414                 Y: can be seen
6415                 N: cannot be seen (ignored)
6416                 E: can be seen with @code{elmo-msgdb-extra-fields} settings
6417 @end group
6418 @end example
6419
6420
6421 @node Split messages, Address Book, Scoring, Top
6422 @chapter Message splitting
6423 @cindex Split messages
6424
6425 You can use @code{elmo-split} to split message in folder specified by
6426 the variable @code{elmo-split-folder} a la @command{procmail} according
6427 to some specified rules. To use this feature, set as follows in your
6428 @file{~/.emacs} at first.
6429
6430 @lisp
6431 (autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
6432 @end lisp
6433
6434 Set source folder like following.
6435
6436 @lisp
6437 (setq elmo-split-folder "%inbox")
6438 @end lisp
6439
6440 And specify the rule in the variable @code{elmo-split-rule} (its format
6441 will be is described below).
6442 Then you can invoke @kbd{M-x elmo-split} to split messages according to
6443 @code{elmo-split-rule}. On the other hand, invoke @kbd{C-u M-x elmo-split}
6444 to do a rehearsal and show result (do not split actually).
6445
6446
6447 We will describe how to specify the rule. First of all, see following
6448 example, please.
6449
6450 @lisp
6451 @group
6452 (setq elmo-split-rule
6453       ;; @r{Store messages from spammers into @samp{+junk}}
6454       '(((or (address-equal from "i.am@@spammer")
6455              (address-equal from "dull-work@@dull-boy")
6456              (address-equal from "death-march@@software")
6457              (address-equal from "ares@@aon.at")
6458              (address-equal from "get-money@@richman"))
6459          "+junk")
6460         ;; @r{Store messages from mule mailing list into @samp{%mule}}
6461         ((equal x-ml-name "mule") "%mule")
6462         ;; @r{Store messages from wanderlust mailing list into @samp{%wanderlust}}
6463         ;; @r{and continue evaluating following rules}
6464         ((equal x-ml-name "wanderlust") "%wanderlust" continue)
6465         ;; @r{Store messages from Yahoo user into @samp{+yahoo-@{username@}}}
6466         ((match from "\\(.*\\)@@yahoo\\.com")
6467          "+yahoo-\\1")
6468         ;; @r{Store unmatched mails into @samp{+inbox}}
6469         (t "+inbox")))
6470 @end group
6471 @end lisp
6472
6473 The basic unit of the rule is a combination like
6474
6475 @lisp
6476 (@samp{CONDITION} @samp{ACTION} [@code{continue}])
6477 @end lisp
6478
6479 If @samp{CONDITION} is true, @samp{ACTION} is performed.
6480 The 1st element @samp{CONDITION} is a condition represented by a
6481 balanced expression (sexp). Its grammar will be explained below.
6482 The 2nd element @samp{ACTION} is the name of the folder to split
6483 messages into, or a symbol. When the 3rd element @code{continue} is
6484 specified as symbol, evaluating rules is not stopped even when the
6485 condition is satisfied.
6486
6487 The grammar for @samp{CONDITION} is as follows. See example above to
6488 learn how to write the condition practically.
6489
6490 @enumerate
6491 @item
6492 Functions which accept arguments @samp{FIELD-NAME} and @samp{VALUE}.
6493 (@samp{FIELD-NAME} is a symbol that describes the field name)
6494
6495 @table @code
6496 @item @code{equal}
6497 True if the field value equals to @samp{VALUE}.
6498 Case of the letters are ignored.
6499 @item @code{match}
6500 True if the field value matches to VALUE.
6501 @samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
6502 from matching @code{\(\)} patterns in the previous @samp{VALUE}.
6503 @item @code{address-equal}
6504 True if one of the addresses in the field equals to
6505 @samp{VALUE}. Case of the letters are ignored.
6506 @item @code{address-match}
6507 True if one of the addresses in the field matches to
6508 @samp{VALUE}.
6509 @samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
6510 from matching @code{\(\)} patterns in the previous @samp{VALUE}.
6511 @end table
6512
6513 @item
6514 Functions which accept an integer argument (@samp{SIZE}).
6515
6516 @table @code
6517 @item @code{<}
6518 True if the size of the message is less than @samp{SIZE}.
6519 @item @code{>}
6520 True if the size of the message is greater than @samp{SIZE}.
6521 @end table
6522
6523 @item
6524 Functions which accept any number of arguments.
6525
6526 @table @code
6527 @item @code{or}
6528 True if one of the argument returns true.
6529 @item @code{and}
6530 True if all of the arguments return true.
6531 @end table
6532
6533 @item
6534 A symbol.
6535
6536 When a symbol is specified, it is evaluated.
6537 @end enumerate
6538
6539 You can specify followings as 2nd @samp{ACTION}.
6540
6541 @enumerate
6542 @item
6543 folder name
6544
6545 If some string is specified, it will be regarded as the destination
6546 folder, and the message will be appended to it.
6547
6548 @item
6549 @samp{delete}
6550
6551 If the symbol  @samp{delete} is specified, delete the substance of the
6552 message in @code{elmo-split-folder}
6553
6554 @item
6555 @samp{noop}
6556
6557 If the symbol @samp{noop} is specified, do nothing on the message and
6558 keep it as it is.
6559
6560 @item
6561 function
6562
6563 If some function is specified, execute it.
6564 @end enumerate
6565
6566 If the message passes all rules, it will be dealed along @samp{ACTION}
6567 specified by @code{elmo-split-default-action}.
6568
6569
6570 @node Address Book, Spam Filter, Split messages, Top
6571 @chapter Address Book
6572 @cindex Address Book
6573
6574 With address book, you can utilize address completion, and you have
6575 summary displayed with nicknames.
6576
6577 @menu
6578 * Mail Addresses::   Definition of Address Book
6579 * Address Manager::  Address Manager
6580 @end menu
6581
6582
6583 @node Mail Addresses, Address Manager, Address Book, Address Book
6584 @section Address book
6585 @cindex Address book Definition
6586 @cindex .addresses
6587 @cindex Alias, Address
6588
6589 The file @file{~/.addresses} is a simple address book for Wanderlust.
6590 Make address file @file{~/.addresses}, and edit to suit your requirement.
6591
6592 The data written in @file{~/.addresses} are used for address completion
6593 under draft editing mode. Furthermore, they are used when showing names
6594 in summary display mode. You can safely skip this section, if you don't
6595 want to customize address completion and summary display.
6596 It is possible to add/change/remove addresses from @file{~/.addresses} in
6597 summary buffer after Wanderlust is invoked. @refill
6598
6599 The format is very simple. Like this. @refill
6600
6601 @example
6602 @group
6603 #
6604 # @r{Lines begin with @samp{#} are comment.}
6605 # @r{Empty lines are ignored}
6606 #
6607 # @r{Format of each line:}
6608 # @var{email-address}  "@var{nickname} "@var{realname}"
6609 #
6610 teranisi@@gohome.org            "Yuuichi"      "Yuuichi Teranishi"
6611 foo@@bar.gohome.org             "Mr. Foo"    "John Foo"
6612 bar@@foo.gohome.org             "Mr. Bar"    "Michael Bar"
6613 @end group
6614 @end example
6615
6616 @noindent
6617 One line defines one persons description.
6618
6619 Actually, in default setup, @var{nickname} is used in summary-mode and
6620 @var{realname} is used in draft preparation mode. This behavior is
6621 better understood if you try it and confirmed the function first. You
6622 can write and try a small definition, so you will know the idea of the
6623 address book before writing a big one.
6624
6625 And, if MH alias file is specified in variable @code{wl-alias-file},
6626 it is used as an address information in the draft preparation mode.
6627
6628 If variable @code{wl-use-ldap} is non-nil (initial setting is
6629 @code{nil}), address completion in draft mode uses LDAP information.
6630
6631 If you use LDAP, you have to set @code{wl-ldap-server},
6632 @code{wl-ldap-port} and @code{wl-ldap-base} properly. If your emacs does
6633 not have LDAP feature as built-in feature (Currently only XEmacs can
6634 have built-in LDAP feature), you have to set command exec @env{PATH} to
6635 the program @command{ldapsearch}.
6636
6637
6638 @node Address Manager,  , Mail Addresses, Address Book
6639 @section Address Manager
6640 @cindex Address Manager
6641
6642 You can type @kbd{C-c C-a} to enter address manger mode.  you can edit
6643 the address book and insert address to draft buffer.
6644
6645 @subsection Key Bindings
6646
6647 @table @kbd
6648 @item t
6649 @kindex t (Address Manager)
6650 @findex wl-addrmgr-set-to
6651 Add @samp{To:} mark.
6652
6653 @item c
6654 @kindex c (Address Manager)
6655 @findex wl-addrmgr-set-cc
6656 Add @samp{Cc:} mark.
6657
6658 @item b
6659 @kindex b (Address Manager)
6660 @findex wl-addrmgr-set-bcc
6661 Add @samp{Bcc:} mark.
6662
6663 @item u
6664 @kindex u (Address Manager)
6665 @findex wl-addrmgr-unmark
6666 Cancel the mark.
6667
6668 @item x
6669 @kindex x (Address Manager)
6670 @findex wl-addrmgr-apply
6671
6672 Insert @samp{To:}, @samp{Cc:}, or @samp{Bcc:} marked addresses to draft
6673 buffer and quit address manager.  When no draft buffer, make new draft
6674 with insert marked addresses.
6675
6676 If no mark, quit address manager.
6677
6678
6679 @item q
6680 @kindex q (Address Manager)
6681 @findex wl-addrmgr-quit
6682 Quit address manager.
6683
6684 @item a
6685 @kindex a (Address Manager)
6686 @findex wl-addrmgr-add
6687 Add new entry.
6688
6689 @item d
6690 @kindex d (Address Manager)
6691 @findex wl-addrmgr-delete
6692 Delete entry.
6693
6694 @item e
6695 @kindex e (Address Manager)
6696 @findex wl-addrmgr-edit
6697 Edit entry.
6698 @end table
6699
6700
6701 @node Spam Filter, Batch Processing, Address Book, Top
6702 @chapter Spam Filter
6703 @cindex Spam Filter
6704
6705 @code{wl-spam} provides an frontend to external spam filtering programs.
6706 You can register to or judge spam by the filtering program cooperateing
6707 with messages operations on Wanderlust.
6708
6709 @menu
6710 * Usage of Spam Filter::        Usage of Spam Filter
6711 * Spam Filter Processors::      Supported spam filters
6712 @end menu
6713
6714 @node Usage of Spam Filter, Spam Filter Processors, Spam Filter, Spam Filter
6715 @section Usage of Spam Filter
6716
6717 @subsection Initial Setting
6718
6719 To use @code{wl-spam}, write in @file{~/.wl} as follows:
6720
6721 @lisp
6722 @group
6723 ;; @r{Use @samp{bogofilter} as spam back end}
6724 ;; @r{Set @samp{scheme} here as the spam filter you will use.}
6725 ;; @r{@xref{Spam Filter Processor}}
6726 (setq elmo-spam-scheme 'bogofilter)
6727 (require 'wl-spam)
6728 @end group
6729 @end lisp
6730
6731 @subsection spam mark
6732
6733 The spam mark (@samp{s}) will be provided as new temporary mark.
6734 Messages marked by this will be refiled into @code{wl-spam-folder} when
6735 the action is called for execution. Marked messages will be skipped by
6736 summary walking in ordinary way.
6737
6738 The spam mark is be put on by spam judgement described later, or by
6739 invoking @kbd{k m} at any time.
6740
6741 @subsection spam judgment
6742
6743 You can judge spam messages by following ways:
6744
6745 @enumerate
6746 @item
6747 Make judgement on execution of auto-refile.
6748
6749 Insert @code{wl-refile-guess-by-spam} to arbitrary position in
6750 @code{wl-auto-refile-guess-functions} as follows.
6751
6752 @lisp
6753 @group
6754 (setq wl-auto-refile-guess-functions
6755       '(wl-refile-guess-by-rule
6756         wl-refile-guess-by-spam))
6757 @end group
6758 @end lisp
6759
6760 In this example, judge spam if it could not decide refile destination by
6761 @code{wl-refile-rule-alist}.
6762
6763 @item
6764 Make judgement on entering the summary of specified folder.
6765
6766 Specify the value of @code{wl-spam-auto-check-folder-regexp-list}
6767 as the list of regular expressions for folder names to be
6768 automatically judged by spam filter.
6769
6770 @lisp
6771 (setq wl-spam-auto-check-folder-regexp-list '("\\+inbox"))
6772 @end lisp
6773
6774 In this example, judgement will be processed when you enter summary of
6775 the folder whose name contains @samp{+inbox}.
6776
6777 @item
6778 Make judgement on splitting messages with @code{elmo-split}.
6779
6780 It provides new function @code{spam-p} to be specified as @samp{CONDITION}
6781 in @code{elmo-split-rule}. This function returns true when the message
6782 is judged as spam.
6783 @xref{Split messages}
6784
6785 You can also process learning by the result of judgement. (You would
6786 better turn on this feature after learning to some extent)
6787
6788 Example follows:
6789
6790 @lisp
6791 @group
6792 (setq elmo-split-rule
6793       '(((spam-p) "+spam")
6794         ;; @r{to learn by the judgement, use following instead}
6795         ;((spam-p :register t) "+spam")
6796         (t "+inbox"))
6797 @end group
6798 @end lisp
6799 @end enumerate
6800
6801 @subsection spam learning
6802
6803 @code{wl-spam} automatically learn spam with refiling messages.
6804
6805 At first, @code{wl-spam} classifies the folders controlled by Wanderlust
6806 into following 4 domains by the class of containig messages
6807
6808 @table @samp
6809 @item spam
6810 Folders containing messages judged as spam.
6811 (The folder specified by @code{wl-spam-folder})
6812 @item good
6813 Folders containing messages judged as non-spam.
6814 @item undecide
6815 Folders containing messages not yet judged. Folders without
6816 pre-distribution may belong to this domain e.g. @samp{+inbox}.
6817 (specified by @code{wl-spam-undecided-folder-regexp-list})
6818 @item ignored
6819 Foldes have nothing to do with spam processing e.g.
6820 @code{wl-trash-folder} or @code{wl-draft-folder}. (specified by
6821 @code{wl-spam-ignored-folder-regexp-list})
6822 @end table
6823
6824 When you refile messages across different domains, it automatically
6825 learn messages as @samp{spam} or @samp{non-spam} according to domains
6826 it belongs before and after.
6827
6828 To put it concretely, it will learn by following rule:
6829
6830 @table @samp
6831 @item undecide -> spam
6832 learn as spam.
6833 @item good -> spam
6834 learn as spam and cancel previous study as non-spam.
6835 @item undecide -> good
6836 learn as non-spam.
6837 @item spam -> good
6838 learn as non-spam and cancel previous study as spam.
6839 @end table
6840
6841 It do not learn anything in other cases.
6842
6843 @subsection Key Bindings
6844 @cindex Keybind, spam filter
6845
6846 @table @kbd
6847 @item k m
6848 @kindex k m (Summary)
6849 @findex wl-summary-spam
6850 Put spam mark (@samp{s}) on current message.
6851
6852 @item k c
6853 @kindex k c (Summary)
6854 @findex wl-summary-test-spam
6855 Test current message and put spam mark if judged as spam.
6856
6857 @item k C
6858 @kindex k C (Summary)
6859 @findex wl-summary-mark-spam
6860 Test messages with the mark in @code{wl-spam-auto-check-marks},
6861 and put spam mark if judged as spam. If it is called with prefix
6862 argument, test all messages regardless of their marks.
6863
6864 @item k s
6865 @kindex k s (Summary)
6866 @findex wl-summary-register-as-spam
6867 Register current message as spam.
6868
6869 @item k S
6870 @kindex k S (Summary)
6871 @findex wl-summary-register-as-spam-all
6872 Register all messages in the folder as spam.
6873
6874 @item k n
6875 @kindex k n (Summary)
6876 @findex wl-summary-register-as-good
6877 Register current message as non-spam.
6878
6879 @item k N
6880 @kindex k N (Summary)
6881 @findex wl-summary-register-as-good-all
6882 Register all messages in the folder as non-spam.
6883
6884 @item m k
6885 @kindex m k (Summary)
6886 @findex wl-summary-target-mark-spam
6887 Put spam mark (@samp{s}) on messages with the target mark @samp{*}.
6888
6889 @item m s
6890 @kindex m s (Summary)
6891 @findex wl-summary-target-mark-register-as-spam
6892 Register messages with the target mark @samp{*} as spam.
6893
6894 @item m n
6895 @kindex m n (Summary)
6896 @findex wl-summary-target-mark-register-as-good
6897 Register messages with the target mark @samp{*} as non-spam.
6898 @end table
6899
6900 @subsection Customizable Variables
6901
6902 @table @code
6903 @item wl-spam-folder
6904 @vindex wl-spam-folder
6905 Specify the name of destination folder for the spam messages.
6906 The initial setting is @samp{+spam}.
6907
6908 @item wl-spam-undecided-folder-regexp-list
6909 @vindex wl-spam-undecided-folder-regexp-list
6910 Specify the list of regexp of folder names which contain messages
6911 not yet decided as spam or non-spam.
6912 The initial setting is @code{'("inbox")}.
6913
6914 @item wl-spam-ignored-folder-regexp-list
6915 @vindex wl-spam-ignored-folder-regexp-list
6916 The initial setting is as follows.
6917
6918 @lisp
6919 @group
6920 (list (regexp-opt (list wl-draft-folder
6921                         wl-trash-folder
6922                         wl-queue-folder)))
6923 @end group
6924 @end lisp
6925
6926 Folders of no effect against spam judgement, specified by the list of
6927 folder name regular expressions.
6928
6929 @item wl-spam-auto-check-folder-regexp-list
6930 @vindex wl-spam-auto-check-folder-regexp-list
6931 Folders to make spam judgement on entering the summary of them,
6932 specified by the list of folder name regular expressions.
6933 The initial setting is @code{nil}.
6934
6935 @item wl-spam-auto-check-marks
6936 @vindex wl-spam-auto-check-marks
6937 The initial setting is the following list:
6938
6939 @lisp
6940 @group
6941 (list wl-summary-new-uncached-mark
6942       wl-summary-new-cached-mark)
6943 @end group
6944 @end lisp
6945
6946 Messages with mark specified by this variable will be processed
6947 by whole-folder judgement including auto test by
6948 @code{wl-spam-auto-check-folder-regexp-list}.
6949 Persistent marks can be used in this method, but temporary marks cannot.
6950
6951 You can specify the list of marks as the initial setting, or you can
6952 specify follwing symbol:
6953
6954 @table @code
6955 @item all
6956 Process all messages regardless of persistent marks.
6957 @end table
6958 @end table
6959
6960
6961 @node Spam Filter Processors,  , Usage of Spam Filter, Spam Filter
6962 @section Supported Spam Filters
6963 @cindex Spam Filter, Bogofilter
6964 @cindex Spam Filter, Spamfilter
6965
6966 Supported spam filtering libraries are following ones.
6967
6968 @menu
6969 * bogofilter::                          bogofilter
6970 * spamfilter::                          spamfilter.el
6971 * bsfilter::                            bsfilter
6972 * SpamAssassin::                        SpamAssassin
6973 * Regular Expressions Header Matching:: Header regexp
6974 @end menu
6975
6976
6977 @node bogofilter, spamfilter, Spam Filter Processors, Spam Filter Processors
6978 @subsection bogofilter
6979 @cindex bogofilter
6980
6981 bogofilter (@uref{http://bogofilter.sourceforge.net/}) is a spam filter
6982 implemented by C language.
6983
6984 To use spam filter with bogofilter, write following setting in
6985 @file{~/.wl} or somewhere else.
6986
6987 @lisp
6988 @group
6989 (setq elmo-spam-scheme 'bogofilter)
6990 @end group
6991 @end lisp
6992
6993 @subsubsection Customizable Variables
6994
6995 @table @code
6996 @item elmo-spam-bogofilter-program
6997 @vindex elmo-spam-bogofilter-program
6998 The initial setting is @file{bogofilter}.
6999 Specify the name of executable of bogofilter. If the executable
7000 is not in your environmental variable @env{PATH}, you should
7001 set this by full path.
7002
7003 @item elmo-spam-bogofilter-args
7004 @vindex elmo-spam-bogofilter-args
7005 The initial setting is @code{nil}.
7006 Specify arguments to be supplied for bogofilter executable.
7007
7008 @item elmo-spam-bogofilter-database-directory
7009 @vindex elmo-spam-bogofilter-database-directory
7010 Specify the directory for statistical database to be used.
7011 @code{nil} to use default directory (@file{~/.bogofilter}).
7012 The initial setting is @code{nil}.
7013
7014 @item elmo-spam-bogofilter-max-messages-per-process
7015 @vindex elmo-spam-bogofilter-max-messages-per-process
7016 The initial setting is 30.  This variable specifies the number of
7017 messages to be learned by one process.
7018
7019 @item elmo-spam-bogofilter-debug
7020 @vindex elmo-spam-bogofilter-debug
7021 The initial setting is @code{nil}.
7022 If you specify non-nil, the output from @command{bogofilter} is
7023 stored in the buffer named @code{"*Debug ELMO SPAM Bogofilter*"}.
7024 @end table
7025
7026
7027 @node spamfilter, bsfilter, bogofilter, Spam Filter Processors
7028 @subsection spamfilter.el
7029 @cindex spamfilter
7030
7031 @file{spamfilter.el}
7032 (@uref{http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/}) is a
7033 spam filtering library implemented by Emacs Lisp.
7034
7035 Corresponding modules will be compiled/installed, if you have
7036 @file{spamfilter.el} within @code{load-path} when you are to install wl.
7037 @xref{Install}.
7038
7039 To use @file{spamfilter.el}, write following setting in @file{~/.wl} or
7040 somewhere else.
7041 (Of cource, you have to have settings for @file{spamfilter.el} itself)
7042
7043 @lisp
7044 @group
7045 (setq elmo-spam-scheme 'spamfilter)
7046 @end group
7047 @end lisp
7048
7049 @subsubsection Customizable Variables
7050
7051 @table @code
7052 @item elmo-spam-spamfilter-corpus-filename
7053 @vindex elmo-spam-spamfilter-corpus-filename
7054 The initial setting is @file{~/.elmo/.spamfilter}.
7055 It specifies the name of corpus file.
7056 @end table
7057
7058 @node bsfilter, SpamAssassin, spamfilter, Spam Filter Processors
7059 @subsection bsfilter
7060 @cindex bsfilter
7061
7062 bsfilter (@uref{http://bsfilter.org/index-e.html}) is a spam filter
7063 implemented by Ruby language.
7064
7065 To use spam filter with bsfilter, write following setting in
7066 @file{~/.wl} or somewhere else.
7067
7068 @lisp
7069 @group
7070 (setq elmo-spam-scheme 'bsfilter)
7071 @end group
7072 @end lisp
7073
7074 @subsubsection Customizable Variables
7075
7076 @table @code
7077 @item elmo-spam-bsfilter-program
7078 @vindex elmo-spam-bsfilter-program
7079 The initial setting is @file{bsfilter}.
7080 Specify the name of executable of @command{bsfilter}.  If the executable
7081 is not in your environmental variable @env{PATH}, you should
7082 set this by full path.
7083
7084 @item elmo-spam-bsfilter-args
7085 @vindex elmo-spam-bsfilter-args
7086 The initial setting is @code{nil}.
7087 Specify arguments to be supplied for bsfilter executable.
7088
7089 @item elmo-spam-bsfilter-database-directory
7090 @vindex elmo-spam-bsfilter-database-directory
7091 Specify the directory for statistical database to be used.
7092 @code{nil} to use default directory (@file{~/.bsfilter}).
7093 The initial setting is @code{nil}.
7094
7095 @item elmo-spam-bsfilter-debug
7096 @vindex elmo-spam-bsfilter-debug
7097 The initial setting is @code{nil}.
7098 If you specify non-nil, the output from @command{bsfilter} is
7099 stored in the buffer named @code{"*Debug ELMO Bsfilter*"}.
7100
7101 @item elmo-spam-bsfilter-shell-program
7102 @vindex elmo-spam-bsfilter-shell-program
7103 The initial setting is @file{ruby}.
7104 Specify the shell to execute @command{bsfilter}.  If the shell is not
7105 in your environmental variable @env{PATH}, you should set this by full path.
7106
7107 @item elmo-spam-bsfilter-shell-switch
7108 @vindex elmo-spam-bsfilter-shell-switch
7109 The initial setting is @code{nil}.
7110 Specify options to give to the shell executing @command{bsfilter}.
7111
7112 @item elmo-spam-bsfilter-update-switch
7113 @vindex elmo-spam-bsfilter-update-switch
7114 The initial setting is @code{"--synchronous-auto-update"}.
7115 Specify options to give to @command{bsfilter} for learning messages.
7116
7117 @end table
7118
7119 @node SpamAssassin, Regular Expressions Header Matching, bsfilter, Spam Filter Processors
7120 @subsection SpamAssassin
7121 @cindex SpamAssassin
7122
7123 SpamAssassin (@uref{http://spamassassin.org/}) is one of the most
7124 popular spam filtering program implemented on Perl. SpamAssassin
7125 attempts to identify spam using text analysis and several internet-based
7126 realtime blacklists.  SpamAssassin also uses a Bayesian learning filter
7127 which enables more accurate spam filtering.
7128
7129 To use @file{SpamAssassin} on Wanderlust, write following setting
7130 in @file{~/.wl} or somewhere else.
7131 (Of course, you have to install SpamAssassin beforehand.)
7132
7133 @lisp
7134 @group
7135 (setq elmo-spam-scheme 'sa)
7136 @end group
7137 @end lisp
7138
7139 @subsubsection Customize Variables
7140
7141 @table @code
7142 @item elmo-spam-spamassassin-program
7143 @vindex elmo-spam-spamassassin-program
7144 The initial setting is @file{spamassassin}.
7145 Specify the name of executable @command{spamassassin}. If the executable
7146 is not in your environmental variable @env{PATH}, you should
7147 set this by full path.
7148
7149 @item elmo-spam-spamassassin-learn-program
7150 @vindex elmo-spam-spamassassin-learn-program
7151 The initial setting is @file{sa-learn}.  
7152 Specify the name of the SpamAssassin's Bayesian filtering learner
7153 program, @command{sa-learn}. If the executable is not in your
7154 environmental variable @env{PATH}, you should set this by full path.
7155
7156 @item elmo-spam-spamassassin-program-arguments
7157 @vindex elmo-spam-spamassassin-program-arguments
7158 The initial setting is @code{'("-e")}.
7159 Specify the arguments to be supplied for @command{spamassassin} executable.
7160 You have to specify the argument to exit the program with an error exit code
7161 when the result is spam. For example, if you want to use @command{spamc}
7162  instead of @command{spamassassin}, you should specify @code{'("-c")}.
7163
7164 @item elmo-spam-spamassassin-learn-program-arguments
7165 @vindex elmo-spam-spamassassin-lern-program-arguments
7166 The initial setting is @code{nil}.
7167 Specify the arguments to be supplied for @command{sa-learn}.
7168
7169 @item elmo-spamassassin-debug
7170 @vindex elmo-spamassassin-debug
7171 The initial setting is @code{nil}.
7172 If you specify @code{t}, the output from @command{spamassassin} is
7173 stored in the buffer named @code{"*Debug ELMO SpamAssassin*"}.
7174
7175 @end table
7176
7177 @node Regular Expressions Header Matching,  , SpamAssassin, Spam Filter Processors
7178 @subsection Regular Expressions Header Matching
7179 @cindex Regular Expressions Header Matching
7180
7181 Examine if regular expression matches corresponding field in message heaeder,
7182 and decide spam or not. To use this backend, add following setting to @file{~/.wl}.
7183
7184 @lisp
7185 @group
7186 (setq elmo-spam-scheme 'header)
7187 @end group
7188 @end lisp
7189
7190 If you want to check fields not included in the default overview
7191 information, add one into @code{elmo-msgdb-extra-fields}. Then it will
7192 do examination by the overview information and avoid loading whole
7193 message body as far as possible.
7194
7195 @subsubsection Customize Variables
7196
7197 @table @code
7198 @item elmo-spam-header-good-alist
7199 @vindex elmo-spam-header-good-alist
7200 The initial setting is the following list:
7201
7202 @lisp
7203 '(("X-Spam-Flag" . "No"))
7204 @end lisp
7205
7206 Specify a list of regular expressions to match with header field name
7207 for making non-spam decision. It takes precedence over
7208 @code{elmo-spam-header-spam-alist}.
7209
7210 @item elmo-spam-header-spam-alist
7211 @vindex elmo-spam-header-spam-alist
7212 The initial setting is the following list:
7213
7214 @lisp
7215 '(("X-Spam-Flag" . "Yes"))
7216 @end lisp
7217
7218 Specify a list of regular expressions to match with header field name
7219 for making spam decision.
7220 @end table
7221
7222
7223 @node Batch Processing, Customization, Spam Filter, Top
7224 @chapter Batch Processing
7225 @cindex Batch Processing
7226
7227 You can request wanderlust to do some job on the command line.
7228 For now, you can invoke prefetching new messages in specified folders.
7229
7230 Specify target folders in @code{wl-batch-prefetch-folder-list} then
7231 invoke as follows to execute prefetching:
7232
7233 @group
7234 emacs -batch -l wl-batch -f wl-batch-prefetch
7235 @end group
7236
7237 @section Customize Variables
7238
7239 @table @code
7240 @item wl-batch-prefetch-folder-list
7241 @vindex wl-batch-prefetch-folder-list
7242 Target folders of prefetching by @code{wl-batch-prefetch}, specified as
7243 a list of folder names.
7244 @end table
7245
7246
7247 @node Customization, Terminology, Batch Processing, Top
7248 @chapter Customizing Wanderlust
7249 @cindex Customization
7250
7251 @menu
7252 * Living with other packages:: Cooperating with other packages
7253 * Highlights::                 Highlights
7254 * Biff::                       Notify Mail arrival
7255 * Advanced Settings::          Advanced Settings
7256 * Customizable Variables::     Customizable Variables
7257 * Hooks::                      Hooks
7258 @end menu
7259
7260
7261 @node Living with other packages, Highlights, Customization, Customization
7262 @section Living with other packages
7263
7264 Examples with other packages.
7265
7266 @menu
7267 * imput::                       imput (im-wl.el)
7268 * BBDB::                        The Insidious Big Brother Database
7269 * LSDB::                        The Lovely Sister Database
7270 * supercite::                   supercite.el
7271 * mu-cite::                     mu-cite.el
7272 * X-Face::                      x-face,bitmap-mule
7273 * dired-dd::                    dired-dd.el
7274 * MHC::                         MHC
7275 * Addrbook::                    Addrbook
7276 * mime-w3m::                    mime-w3m.el
7277 @end menu
7278
7279
7280 @node imput, BBDB, Living with other packages, Living with other packages
7281 @subsection imput
7282 @pindex imput
7283 @cindex im-wl
7284
7285 Place @file{util/im-wl.el} on the @code{load-path} and do the following
7286 settings.
7287
7288 @lisp
7289 @group
7290 (autoload 'wl-draft-send-with-imput-async "im-wl")
7291 (setq wl-draft-send-function 'wl-draft-send-with-imput-async)
7292 @end group
7293 @end lisp
7294
7295
7296 @node BBDB, LSDB, imput, Living with other packages
7297 @subsection bbdb.el
7298 @pindex BBDB
7299
7300 To use The Insidious Big Brother Database (@uref{http://bbdb.sourceforge.net/})
7301 with Wanderlust, place @file{util/bbdb-wl.el} on the @code{load-path}
7302 and do the following settings.
7303
7304 If BBDB is on the @code{load-path} at the installation, @file{bbdb-wl.el} is
7305 byte-compiled and installed.
7306 @xref{Install}.
7307
7308 @lisp
7309 @group
7310 (require 'bbdb-wl)
7311
7312 (bbdb-wl-setup)
7313 ;; @r{enable pop-ups}
7314 (setq bbdb-use-pop-up t)
7315 ;; @r{auto collection}
7316 (setq bbdb/mail-auto-create-p t)
7317 ;; @r{exceptional folders against auto collection}
7318 (setq bbdb-wl-ignore-folder-regexp "^@@")
7319 (setq signature-use-bbdb t)
7320 (setq bbdb-north-american-phone-numbers-p nil)
7321 ;; @r{shows the name of bbdb in the summary} :-)
7322 (setq wl-summary-from-function 'bbdb-wl-from-func)
7323 ;; @r{automatically add mailing list fields}
7324 (add-hook 'bbdb-notice-hook 'bbdb-auto-notes-hook)
7325 (setq bbdb-auto-notes-alist '(("X-ML-Name" (".*$" ML 0))))
7326 @end group
7327 @end lisp
7328
7329 You can complete address with BBDB by @kbd{M-@key{TAB}}
7330 in draft buffer.
7331
7332
7333 @node LSDB, supercite, BBDB, Living with other packages
7334 @subsection lsdb.el
7335 @pindex LSDB
7336
7337 The following is an example setting to use
7338 The Lovely Sister Database (@uref{http://sourceforge.jp/projects/lsdb/})
7339 with Wanderlust.
7340
7341 @lisp
7342 @group
7343 (require 'lsdb)
7344 (lsdb-wl-insinuate)
7345 (add-hook 'wl-draft-mode-hook
7346           (lambda ()
7347              (define-key wl-draft-mode-map "\M-\t" 'lsdb-complete-name)))
7348 @end group
7349 @end lisp
7350
7351 In this example, bind @kbd{M-@key{TAB}} to @code{lsdb-complete-name}
7352 (complete address with LSDB).
7353
7354
7355 @node supercite, mu-cite, LSDB, Living with other packages
7356 @subsection sc.el(supercite), sc-register.el
7357 @pindex sc
7358 @pindex supercite
7359
7360 The same setting as usual mailers should be OK.  The following is an
7361 example of settings:
7362
7363 @lisp
7364 @group
7365 (autoload 'sc-cite-original "supercite" nil t)
7366 (add-hook 'mail-citation-hook 'sc-cite-original)
7367 @end group
7368 @end lisp
7369
7370
7371 @node mu-cite, X-Face, supercite, Living with other packages
7372 @subsection mu-cite.el
7373 @pindex mu-cite
7374
7375 The same setting as usual mailers should be OK.  The following is an
7376 example of settings.
7377
7378 If you use mu-cite version 8.0 or earlier:
7379
7380 @lisp
7381 @group
7382 (autoload 'mu-cite/cite-original "mu-cite" nil t)
7383 (setq mail-citation-hook 'mu-cite/cite-original)
7384 @end group
7385 @end lisp
7386
7387 If you use mu-cite version 8.1 or later:
7388
7389 @lisp
7390 @group
7391 (autoload 'mu-cite-original "mu-cite" nil t)
7392 (add-hook 'mail-citation-hook (function mu-cite-original))
7393 @end group
7394 @end lisp
7395
7396 @node X-Face, dired-dd, mu-cite, Living with other packages
7397 @subsection x-face
7398 @pindex x-face
7399
7400 If you have installed one of the following, you can decode
7401 @samp{X-Face:} field in message buffer and you will see face image.
7402
7403 @menu
7404 * x-face-xmas::                       XEmacs case
7405 * x-face-mule::                       Emacs case
7406 @end menu
7407
7408 If there is an encoded X-Face string in a file @file{~/.xface} (the
7409 value of the variable @code{wl-x-face-file}), it is inserted as a
7410 @samp{X-Face:} field in the draft buffer (if
7411 @code{wl-auto-insert-x-face} is non-nil).
7412
7413 @node x-face-xmas, x-face-mule, X-Face, X-Face
7414 @subsubsection x-face-xmas (for XEmacs)
7415 @pindex x-face-xmas
7416
7417 If you use @file{x-face-xmas.el} in x-face (@uref{ftp://jpl.org/pub/elisp/})
7418 1.3.6.13 or later, do the following:
7419
7420 @lisp
7421 @group
7422 (autoload 'x-face-xmas-wl-display-x-face "x-face")
7423 (setq wl-highlight-x-face-function 'x-face-xmas-wl-display-x-face)
7424 @end group
7425 @end lisp
7426
7427 @node x-face-mule,  , x-face-xmas, X-Face
7428 @subsubsection x-face-mule (for Emacs)
7429 @pindex x-face-mule
7430 @pindex bitmap-mule
7431
7432 If you use @file{x-face-mule.el} in bitmap-mule
7433 (@uref{ftp://ftp.jpl.org/pub/elisp/bitmap/}) 8.0 or later, do the following:
7434
7435 @lisp
7436 @group
7437 (autoload 'x-face-decode-message-header "x-face-mule")
7438 (setq wl-highlight-x-face-function 'x-face-decode-message-header)
7439 @end group
7440 @end lisp
7441
7442 @subsubsection x-face-e21 (for Emacs 21.x)
7443 @pindex x-face-e21
7444
7445 With Emacs 21.x, you can use @file{x-face-e21.el}
7446 (@uref{ftp://jpl.org/pub/elisp/}) instead of @file{x-face-mule.el}
7447 to display X-Face. In this case, bitmap-mule is not required.
7448 Do as follows:
7449
7450 @lisp
7451 @group
7452 (autoload 'x-face-decode-message-header "x-face-e21")
7453 (setq wl-highlight-x-face-function 'x-face-decode-message-header)
7454 @end group
7455 @end lisp
7456
7457
7458 @node dired-dd, MHC, X-Face, Living with other packages
7459 @subsection dired-dd(Dired-DragDrop)
7460 @pindex Dired-DragDrop
7461 @pindex Dired-DD
7462 @cindex Drag and Drop
7463
7464 If you embed @file{dired-dd-mime.el} in the dired-dd package, you can
7465 compose multi-part by simple Drag-and-Drop from dired to the draft
7466 buffer being edited in GNU Emacs (this feature is not Wanderlust
7467 specific, but general-purpose for SEMI).
7468
7469 @lisp
7470 @group
7471 ;; @r{dired-dd:} http://www.asahi-net.or.jp/~pi9s-nnb/dired-dd-home.html
7472 (add-hook
7473  'dired-load-hook
7474  (function
7475   (lambda ()
7476     (load "dired-x")
7477     ;; @r{Set dired-x variables here.}
7478     ;; @r{To and flo@dots{}}
7479     (if window-system
7480         (progn (require 'dired-dd)
7481                (require 'dired-dd-mime))))))
7482 @end group
7483 @end lisp
7484
7485 @node MHC, Addrbook, dired-dd, Living with other packages
7486 @subsection mhc.el
7487 @pindex MHC
7488
7489 Message Harmonized Calendaring system
7490 (@uref{http://www.quickhack.net/mhc/})
7491
7492 By using MHC, you can make a calendar from the messages.
7493
7494 For mhc-0.25:
7495
7496 @lisp
7497 @group
7498 (setq mhc-mailer-package 'wl)
7499 (autoload 'mhc-mode "mhc" nil t)
7500 (add-hook 'wl-summary-mode-hook 'mhc-mode)
7501 (add-hook 'wl-folder-mode-hook 'mhc-mode)
7502 @end group
7503 @end lisp
7504
7505 For mhc-current:
7506
7507 @lisp
7508 @group
7509 (autoload 'mhc-wl-setup "mhc-wl")
7510 (add-hook 'wl-init-hook 'mhc-wl-setup)
7511 @end group
7512 @end lisp
7513
7514 @node Addrbook, mime-w3m, MHC, Living with other packages
7515 @subsection wl-addrbook.el
7516 @pindex Addrbook
7517
7518 Addrbook of Mew
7519 (@uref{http://www.mew.org/})
7520
7521 Place @file{util/wl-addrbook.el} and @file{util/wl-complete.el} on the
7522 @code{load-path} and do the following settings.
7523
7524 @lisp
7525 @group
7526 (require 'wl-addrbook)
7527 (wl-addrbook-setup)
7528 @end group
7529 @end lisp
7530
7531 @node mime-w3m,  , Addrbook, Living with other packages
7532 @subsection mime-w3m.el
7533 @pindex mime-w3m
7534
7535 You can display html part by using @file{mime-w3m.el}
7536 distributed with emacs-w3m (@uref{http://emacs-w3m.namazu.org/}).
7537 You can find the usage in comment region at the head of @file{mime-w3m.el}.
7538
7539
7540 @node Highlights, Biff, Living with other packages, Customization
7541 @section Highlights
7542
7543 @subsection Customizable Variables
7544
7545 @table @code
7546 @item  wl-summary-highlight
7547 @vindex wl-summary-highlight
7548 The initial setting is @code{t}.
7549 If non-nil, the summary is highlighted.
7550
7551 @item  wl-highlight-max-summary-lines
7552 @vindex wl-highlight-max-summary-lines
7553 The initial setting is 10000.
7554 The summary is not highlighted if it has more lines than this value.
7555
7556 @item  wl-summary-highlight-partial-threshold
7557 @vindex wl-summary-highlight-partial-threshold
7558 The initial setting is 1000.
7559 This is a threshold whether the whole summary is highlighted.
7560 If there are more lines of messages in the summary, it is partially
7561 highlighted.
7562
7563 @item  wl-summary-partial-highlight-above-lines
7564 @vindex wl-summary-partial-highlight-above-lines
7565 The initial setting is 30.  If there are more lines of messages than
7566 @code{wl-summary-highlight-partial-threshold} in the summary, messages
7567 after the point that is the same number of lines as this value above the
7568 cursor line are highlighted partially.  (If this value is @code{nil},
7569 the last same number of lines as the value of
7570 @code{wl-summary-highlight-partial-threshold} are highlighted.)
7571
7572 @item wl-highlight-body-too
7573 @vindex  wl-highlight-body-too
7574 The initial setting is @code{t}.
7575 If non-nil, bodies of drafts and messages are also highlighted.
7576
7577 @item  wl-highlight-message-header-alist
7578 @vindex wl-highlight-message-header-alist
7579 When highlighting headers of drafts and messages, this variable
7580 specifies which faces are allocated to important
7581 (@code{wl-highlight-message-important-header-contents}), secondly
7582 important (@code{wl-highlight-message-important-header-contents2}), and
7583 unimportant (@code{wl-highlight-message-unimportant-header-contents})
7584 message headers.
7585 Similarly, it can be used for allocating arbitrary faces to arbitrary
7586 regular expressions.
7587
7588 @item wl-highlight-citation-prefix-regexp
7589 @vindex  wl-highlight-citation-prefix-regexp
7590 Specifies a regular expression to which quoted lines in bodies of
7591 drafts and messages match.
7592 Bodies matching to this regular expression are highlighted by the faces
7593 specified by (@code{wl-highlight-message-cited-text-*}).
7594
7595 @item  wl-highlight-highlight-citation-too
7596 @vindex wl-highlight-highlight-citation-too
7597 The initial setting is @code{nil}.
7598 If non-nil, the quoting regular expression itself given by
7599 @code{wl-highlight-citation-prefix-regexp} is also highlighted.
7600
7601 @item  wl-highlight-citation-header-regexp
7602 @vindex wl-highlight-citation-header-regexp
7603 Specifies a regular expression that denotes beginning of quotation.
7604 Bodies matching to this regular expression are highlighted by the face
7605 specified by @code{wl-highlight-message-headers}.
7606
7607 @item wl-highlight-max-header-size
7608 @vindex wl-highlight-max-header-size
7609 The initial setting is @code{nil}.  If a header size is larger than this
7610 value, it will not be highlighted.  If @code{nil}, always highlighted
7611 (ignore header size).
7612
7613 @item  wl-highlight-max-message-size
7614 @vindex wl-highlight-max-message-size
7615 The initial setting is 10000.
7616 If a message is larger than this value, it will not be highlighted.
7617 With this variable, highlight is suppressed for uuencode or huge digest
7618 messages.
7619
7620 @item  wl-highlight-signature-separator
7621 @vindex wl-highlight-signature-separator
7622 Specifies regular expressions that denotes the boundary of a signature.
7623 It can be a regular expression, or a list of ones.
7624 Messages after the place that matches this regular expression are
7625 highlighted by the face specified by
7626 @code{wl-highlight-message-signature}.
7627
7628 @item  wl-max-signature-size
7629 @vindex wl-max-signature-size
7630 The initial setting is 400.
7631 This is the largest size for a signature to be highlighted.
7632
7633 @item wl-use-highlight-mouse-line
7634 @vindex  wl-use-highlight-mouse-line
7635 The initial setting is @code{t}.
7636 If non-nil, the line pointed by the mouse is highlighted in the folder
7637 mode, summary mode, and the like.
7638 @end table
7639
7640 @subsection Setting Colors and Fonts of the Characters
7641
7642 If you want to change colors or fonts of the characters, you need to
7643 modify faces defined in Wanderlust.  Use @code{set-face-font} if you
7644 want to change fonts, and @code{set-face-foreground} for colors, and so
7645 on.  You cannot write face settings in @file{.emacs}; write in
7646 @file{~/.wl}.
7647
7648 For example, if you want to change the color for signatures to yellow,
7649 write
7650
7651 @lisp
7652 (set-face-foreground 'wl-highlight-message-signature "yellow")
7653 @end lisp
7654
7655 @noindent
7656 in @file{~/.wl}.
7657
7658 Faces defined in Wanderlust:
7659
7660 @table @code
7661 @item wl-highlight-message-headers
7662 The face for field names of message headers.
7663
7664 @item wl-highlight-message-header-contents
7665 The face for field bodies of message headers.
7666
7667 @item wl-highlight-message-important-header-contents
7668 The face for important parts of message headers.
7669 Per default, this face is used for a body of @samp{Subject:} field.
7670 You can change its value by editing
7671 @code{wl-highlight-message-header-alist}.
7672
7673 @item wl-highlight-message-important-header-contents2
7674 The face for secondly important parts of message headers.
7675 Per default, this face is used for bodies of @samp{From:} and @samp{To:}
7676 fields.  You can change its value by editing
7677 @code{wl-highlight-message-header-alist}.
7678
7679 @item wl-highlight-message-unimportant-header-contents
7680 The face for unimportant parts of message headers.
7681 Per default, this face is used for bodies of @samp{X-} fields
7682 @samp{User-Agent:} fields.  You can change its value by editing
7683 @code{wl-highlight-message-header-alist}.
7684
7685 @item wl-highlight-message-citation-header
7686 The face for headers of quoted messages.
7687
7688 @item wl-highlight-message-cited-text-*
7689 The face for texts of quoted messages.  The last @samp{*} is a
7690 @var{single figure} so that 10 different colors can be used according to
7691 citation levels.
7692
7693 @item wl-highlight-message-signature
7694 The face for signatures of messages.  The initial settings are
7695 @samp{khaki} for light background colors, and @samp{DarkSlateBlue} for
7696 dark background colors.
7697
7698 @item wl-highlight-header-separator-face
7699 The face for header separators of draft messages.
7700
7701 @item wl-highlight-summary-important-face
7702 The face for message lines with important marks in the summary.
7703
7704 @item wl-highlight-summary-new-face
7705 The face for message lines with new marks in the summary.
7706
7707 @item wl-highlight-summary-displaying-face
7708 The face for the message line that is currently displayed.
7709 This face is overlaid.
7710
7711 @item wl-highlight-thread-indent-face
7712 The face for the threads that is currently displayed.
7713
7714 @item wl-highlight-summary-unread-face
7715 The face for message lines with unread marks in the summary.
7716
7717 @item wl-highlight-summary-deleted-face
7718 The face for message lines with delete marks in the summary.
7719
7720 @item wl-highlight-summary-refiled-face
7721 The face for message lines with re-file marks in the summary.
7722
7723 @item wl-highlight-refile-destination-face
7724 The face for re-file information part of message lines with re-file
7725 marks in the summary.
7726
7727 @item wl-highlight-summary-copied-face
7728 The face for message lines with copy marks in the summary.
7729
7730 @item wl-highlight-summary-target-face
7731 The face for message lines with target marks @samp{*} in the summary.
7732
7733 @item wl-highlight-summary-thread-top-face
7734 The face for message lines that are on the top of the thread in the
7735 summary.
7736
7737 @item wl-highlight-summary-normal-face
7738 The face for message lines that are not on top of the thread in the
7739 summary.
7740
7741 @item wl-highlight-folder-unknown-face
7742 The face for folders that are not known to have how many unsync messages
7743 in the folder mode.
7744
7745 @item wl-highlight-folder-zero-face
7746 The face for folders that have no unsync messages in the folder mode.
7747
7748 @item wl-highlight-folder-few-face
7749 The face for folders that have some unsync messages in the folder mode.
7750
7751 @item wl-highlight-folder-many-face
7752 The face for folders that have many unsync messages in the folder mode.
7753 The boundary between `some' and `many' is specified by the variable
7754 @code{wl-folder-many-unsync-threshold}.
7755
7756 @item wl-highlight-folder-unread-face
7757 The face for folders that have no unsync but unread messages in the
7758 folder mode.
7759
7760 @item wl-highlight-folder-killed-face
7761 The face for folders that are deleted from the access group in the
7762 folder mode.
7763
7764 @item wl-highlight-folder-opened-face
7765 The face for open groups in the folder mode.
7766 It is meaningful when @code{wl-highlight-folder-by-numbers} is
7767 @code{nil} or a @var{number}.
7768
7769 @item wl-highlight-folder-closed-face
7770 The face for close groups in the folder mode.
7771 It is meaningful when @code{wl-highlight-folder-by-numbers} is
7772 @code{nil} or a @var{number}.
7773
7774 @item wl-highlight-folder-path-face
7775 The face for the path to the currently selected folder in the folder
7776 mode.
7777
7778 @item wl-highlight-logo-face
7779 The face for logo in the demo.
7780
7781 @item wl-highlight-demo-face
7782 The face for strings (for example, a version number) in the demo.
7783 @end table
7784
7785
7786 @node Biff, Advanced Settings, Highlights, Customization
7787 @section Notify Mail arrival
7788 @cindex Biff
7789
7790 Following setting is to notify mail arrival of @samp{%inbox}
7791 by the indicator on the modeline
7792
7793 @lisp
7794 (setq wl-biff-check-folder-list '("%inbox"))
7795 @end lisp
7796
7797 @subsection Customizable Variables
7798 @table @code
7799 @item wl-biff-check-folder-list
7800 @vindex wl-biff-check-folder-list
7801 The initial setting is @code{nil}.
7802 This is the list of folders to check mail arrival.
7803 If @code{nil}, wl doesn't check mail arrival.
7804
7805 @item wl-biff-check-interval
7806 @vindex wl-biff-check-interval
7807 The initial setting is 40 (in seconds).
7808 Check mail arrival in this period.
7809
7810 @item wl-biff-notify-hook
7811 @vindex wl-biff-notify-hook
7812 This hook is run at the arrival of new mail.
7813 To beep with mail arrival(initial setting), set as follows.
7814 @lisp
7815 (setq wl-biff-notify-hook '(ding))
7816 @end lisp
7817 For silence, set to @code{nil}.
7818 @end table
7819
7820
7821 @node Advanced Settings, Customizable Variables, Biff, Customization
7822 @section Advanced Settings
7823
7824 @menu
7825 * Draft for Reply::             Draft for Reply
7826 * Thread Format::               Appearance of Thread
7827 * User-Agent Field::            @samp{User-Agent:} Header Field
7828 @end menu
7829
7830
7831 @node Draft for Reply, Thread Format, Advanced Settings, Advanced Settings
7832 @subsection Draft for Replay
7833 @vindex wl-draft-reply-with-argument-list
7834 @vindex wl-draft-reply-without-argument-list
7835 @vindex wl-draft-reply-myself-with-argument-list
7836 @vindex wl-draft-reply-myself-without-argument-list
7837
7838 If you type @kbd{a} in the Summary Buffer, a draft for reply is prepared.
7839 The addressee for the draft is decided by following rules.
7840
7841 For example, you can set as follows:
7842
7843 @lisp
7844 @group
7845 (setq wl-draft-reply-without-argument-list
7846       '(("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
7847         ("Followup-To" . (nil nil ("Followup-To")))
7848         (("X-ML-Name" "Reply-To") . (("Reply-To") nil nil))
7849         ("From" . (("From") ("To" "Cc") ("Newsgroups")))))
7850 @end group
7851 @end lisp
7852
7853 Where each element of the list  @code{wl-draft-reply-without-argument-list}
7854 is in the form
7855
7856 @example
7857 (key . (to-list cc-list newsgroup-list))
7858 @end example
7859
7860 and if the field designated by @samp{key} exist in the parent message,
7861 parent's field values designated by @samp{to-list} are copied to @samp{To:}
7862 in the draft. Similarly, parent's fields designated by @samp{cc-list} and
7863 @samp{newsgroup-list} are copied to @samp{Cc:} and @samp{Newsgroups:} in
7864 the draft respectively.
7865
7866 Examples:
7867
7868 @lisp
7869 ("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
7870 @end lisp
7871
7872 Match if the parent has @samp{Mail-Followup-To} field.
7873 The components of parent's @samp{Mail-Followup-To} and @samp{Newsgroups}
7874 fields are copied to @samp{To} and @samp{Newsgroups} in the draft
7875 respectively.
7876
7877 @lisp
7878 (("X-ML-Name" "Reply-To") . (("Reply-To") nil nil))
7879 @end lisp
7880
7881 Match if the parent has both @samp{X-ML-Name} and @samp{Reply-To} fields.
7882 Parent's @samp{Reply-To} is copied to @samp{To} in the draft.
7883
7884 @lisp
7885 ("From" . (("From") ("To" "Cc") ("Newsgroups")))
7886 @end lisp
7887
7888 Copy parent's @samp{From} to @samp{To} in the draft, parent's @samp{To} and
7889 @samp{Cc} to @samp{Cc}, parent's @samp{Newsgroups} to @samp{Newsgroups}
7890 respectively.
7891
7892 These are evaluated in order and first matched one is used.
7893
7894 Moreover, the behavior of @kbd{a} with prefix argument can
7895 be directed by @code{wl-draft-reply-with-argument-list} as well.
7896
7897 By the way, you can use some function (will be evaluated in the parent
7898 message buffer) in the place of @samp{key} or @samp{to-list} etc.
7899 For example, if you only want to reply to mailing lists in
7900 @code{wl-subscribed-mailing-list} if the parent has some of them,
7901 set as follows:
7902
7903 @lisp
7904 @group
7905 (defun wl-mailing-list-addresses ()
7906   (let (list-addrs)
7907     (dolist (to (mapcar
7908                  (lambda (addr)
7909                    (nth 1 (std11-extract-address-components addr)))
7910                  (wl-parse-addresses
7911                   (wl-concat-list
7912                    (elmo-multiple-fields-body-list (list "To" "Cc"))
7913                    ","))))
7914       (when (elmo-string-matched-member to wl-subscribed-mailing-list t)
7915         (setq list-addrs (cons to list-addrs))))
7916     (nreverse list-addrs)))
7917
7918 (setq wl-draft-reply-with-argument-list
7919       '((wl-mailing-list-addresses . (wl-mailing-list-addresses nil nil))
7920         ("Reply-To" . (("Reply-To") nil nil))
7921         ("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
7922         ("From" . (("From") nil nil))))
7923 @end group
7924 @end lisp
7925
7926
7927 Note: To set the behavior when you reply to the message written by yourself,
7928 use @code{wl-draft-reply-myself-without-argument-list} and
7929 @code{wl-draft-reply-myself-with-argument-list} instead of them.
7930
7931 @node Thread Format, User-Agent Field, Draft for Reply, Advanced Settings
7932 @subsection Appearance of Threads
7933
7934 @example
7935 @group
7936   389  09/18(Fri)01:07 [ Teranishi         ] wl-0.6.3
7937   390  09/18(Fri)07:25 +-[ Tsumura-san       ]
7938   391  09/18(Fri)19:24 +-[ Murata-san        ]
7939   392  09/20(Sun)21:49 +-[ Okunishi-san      ]
7940   396  09/20(Sun)22:11 | +-[ Tsumura-san       ]
7941   398  09/21(Mon)00:17 |   +-[ Tsumura-san       ]
7942   408  09/21(Mon)22:37 |     +-[ Okunishi-san      ]
7943   411  09/22(Tue)01:34 |       +-[ Tsumura-san       ]
7944   412  09/22(Tue)09:28 |       +-[ Teranishi         ]
7945   415  09/22(Tue)11:52 |         +-[ Tsumura-san       ]
7946   416  09/22(Tue)12:38 |           +-[ Teranishi         ]
7947   395  09/20(Sun)21:49 +-[ Okunishi-san      ]
7948   397  09/21(Mon)00:15 +-[ Okunishi-san      ]
7949 @end group
7950 @end example
7951
7952 Settings to make appearance of threads like shown above:
7953
7954 @lisp
7955 @group
7956 (setq wl-thread-indent-level 2)
7957 (setq wl-thread-have-younger-brother-str "+")
7958 (setq wl-thread-youngest-child-str       "+")
7959 (setq wl-thread-vertical-str             "|")
7960 (setq wl-thread-horizontal-str           "-")
7961 (setq wl-thread-space-str                " ")
7962 @end group
7963 @end lisp
7964
7965 If you do not want to see branches, do the following:
7966
7967 @lisp
7968 @group
7969 (setq wl-thread-indent-level 2)
7970 (setq wl-thread-have-younger-brother-str " ")
7971 (setq wl-thread-youngest-child-str       " ")
7972 (setq wl-thread-vertical-str             " ")
7973 (setq wl-thread-horizontal-str           " ")
7974 (setq wl-thread-space-str                " ")
7975 @end group
7976 @end lisp
7977
7978
7979 @node User-Agent Field,  , Thread Format, Advanced Settings
7980 @subsection User-Agent Field
7981 @cindex X-Mailer
7982 @cindex User-Agent
7983
7984 If you are eccentric enough to elaborate @samp{X-Mailer:} or
7985 @samp{User-Agent:} fields, define a function that generate appropriate
7986 strings as you like, and set it to variable
7987 @code{wl-generate-mailer-string-function}.
7988
7989 If you do not want verbose @samp{User-Agent:} field, do the following:
7990
7991 @lisp
7992 @group
7993 (setq wl-generate-mailer-string-function
7994       'wl-generate-user-agent-string-1)
7995 @end group
7996 @end lisp
7997
7998 The following is a example:
7999
8000 @lisp
8001 @group
8002 (setq wl-generate-mailer-string-function nil)
8003 (setq wl-draft-additional-header-alist
8004       (list
8005        (cons 'X-Mailer (lambda () (product-string-1 'wl-version)))))
8006 @end group
8007 @end lisp
8008
8009
8010 @node Customizable Variables, Hooks, Advanced Settings, Customization
8011 @section Customizable Variables
8012
8013 Customizable variables that have not been described yet:
8014
8015 @table @code
8016 @item wl-default-folder
8017 @vindex wl-default-folder
8018 The initial setting is @samp{%inbox}.  This is the default value for moving to
8019 a folder and the like.
8020
8021 @item wl-draft-folder
8022 @vindex wl-draft-folder
8023 The initial setting is @samp{+draft}.  It is the folder to which drafts are
8024 saved.  It must be a writable folder.
8025 Note that variable settings applied by @code{wl-draft-config-exec} is saved
8026 under @code{elmo-msgdb-directory}.  That is to say, if you specified remote
8027 folder as @code{wl-draft-folder}, variable settings which are applied by
8028 @code{wl-draft-config-exec} before saving the draft will not affect on the
8029 draft buffer on another host by invoking @code{wl-summary-reedit}.
8030
8031 @item wl-trash-folder
8032 @vindex wl-trash-folder
8033 The initial setting is @samp{+trash}.  It is the wastebasket folder.
8034 If you changed this variable, you had better restart Wanderlust.
8035
8036 @item wl-interactive-exit
8037 @vindex wl-interactive-exit
8038 The initial setting is @code{t}.
8039 If non-nil, you are asked for confirmation when Wanderlust terminates.
8040
8041 @item wl-interactive-send
8042 @vindex wl-interactive-send
8043 The initial setting is @code{t}.
8044 If non-nil, you are asked for confirmation when mail is sent.
8045
8046 @item wl-default-sync-range
8047 @vindex wl-default-sync-range
8048 The initial setting is @samp{update}.
8049 Default update range of the summary. You can specify
8050 @samp{all}, @samp{update}, @samp{rescan} or @samp{no-sync}.
8051 See description of @code{wl-summary-sync} for the meaning of ranges.
8052
8053 @item wl-folder-sync-range-alist
8054 @vindex wl-folder-sync-range-alist
8055 The initial setting is the alist shown below:
8056
8057 @lisp
8058 @group
8059 (("^&.*$" . "all")
8060  ("^\\+draft$\\|^\\+queue$" . "all"))
8061 @end group
8062 @end lisp
8063
8064 @noindent
8065 This is an associative list of regular expressions of folder names and
8066 update range of the summary.  Update range is one of the @samp{all},
8067 @samp{update}, @samp{rescan} or @samp{no-sync}. If the folder do not
8068 match any of them, the value of @code{wl-default-sync-range} is used
8069 (@samp{update} by default).
8070 See description of @code{wl-summary-sync} for the meaning of ranges.
8071
8072 @item wl-ask-range
8073 @vindex wl-ask-range
8074 The initial setting is @code{t}.
8075 If @code{nil}, the value of @code{wl-folder-sync-range-alist} is used
8076 for updating the summary when you changed folders.
8077
8078 @item wl-mime-charset
8079 @vindex wl-mime-charset
8080 The initial setting is @code{x-ctext}.
8081 This is the MIME charset for messages that are not MIME (e.g. without
8082 @samp{Content-Type:}). This value also used as default charset for
8083 summary.  (If you want to share Summary on Nemacs and other Emacsen, set
8084 this value as @code{iso-2022-jp}.)
8085
8086 @item wl-highlight-folder-with-icon
8087 @vindex wl-highlight-folder-with-icon
8088 This is meaningful for XEmacs or Emacs 21..  The initial setting depends
8089 on Emacsen (@code{t} for XEmacs or Emacs 21 with icons).
8090
8091 @item wl-strict-diff-folders
8092 @vindex wl-strict-diff-folders
8093 This is a list of regular expressions of folders.
8094 Unread messages are checked, for example when you press @kbd{s} in
8095 the folder mode, usually in a brief way (rapidly processed but not
8096 accurate).
8097 The folders matching this variable are seriously checked.
8098 You may want to set this variable so as to match conditional filter
8099 folders for IMAP4 folders.
8100 The initial setting is @code{nil}.
8101
8102 @item wl-folder-use-server-diff
8103 @vindex wl-folder-use-server-diff
8104 When unread messages are checked, for example when you press @kbd{s} in
8105 the folder mode, usually (the number of messages on the server) @minus{}
8106 (the number of local messages) will be the number of unread messages.
8107 However, if this variable is non-nil, the number of unread messages on
8108 the server is checked.  This affects IMAP4 folders only, but IMAP4
8109 folders in mail boxes matching
8110 @code{elmo-imap4-disuse-server-flag-mailbox-regexp} are not checked for
8111 the number of unread messages on the server, even if they matches this
8112 variable.  The initial setting is @code{t}.
8113
8114 @item wl-auto-check-folder-name
8115 @vindex wl-auto-check-folder-name
8116 The initial setting is @code{nil}.
8117 You can specify a folder or a group which is checked for unread message
8118 at the start. You can also specify a list of folders (groups) to be checked.
8119 If the value is @code{nil}, whole Desktop is checked at the start.
8120 If it is @code{none}, no folders are checked.
8121
8122 @item wl-auto-uncheck-folder-list
8123 @vindex wl-auto-uncheck-folder-list
8124 The initial setting is the list shown below:
8125
8126 @lisp
8127 @group
8128 ("\\$.*")
8129 @end group
8130 @end lisp
8131
8132 @noindent
8133 You can set a list of regular expressions to specify folders
8134 which are not automatically checked even if they are included
8135 in some groups assigned by @code{wl-auto-check-folder-name}.
8136
8137 @item wl-auto-check-folder-list
8138 @vindex wl-auto-check-folder-list
8139 The initial setting is @code{nil}.
8140 You can set a list of regular expressions to specify exceptions
8141 for @code{wl-auto-uncheck-folder-list}.
8142
8143 @item wl-no-save-folder-list
8144 @vindex wl-no-save-folder-list
8145 The initial setting is the list shown below:
8146
8147 @lisp
8148 @group
8149 ("^/.*$")
8150 @end group
8151 @end lisp
8152
8153 @noindent
8154 This is a list of regular expressions of folders not to be saved.
8155
8156 @item wl-save-folder-list
8157 @vindex wl-save-folder-list
8158 The initial setting is @code{nil}.
8159 This is a list of regular expressions of folders to be saved.
8160 This takes precedence over @code{wl-no-save-folder-list}.
8161
8162 @item wl-folder-mime-charset-alist
8163 @vindex wl-folder-mime-charset-alist
8164 The initial setting is the alist shown below:
8165
8166 @lisp
8167 @group
8168 (("^-alt\\.chinese" . big5)
8169  ("^-relcom\\." . koi8-r)
8170  ("^-tw\\." . big5)
8171  ("^-han\\." . euc-kr))
8172 @end group
8173 @end lisp
8174
8175 @noindent
8176 This is an associative list of regular expressions of folder names and
8177 MIME charsets.
8178 If a folder do not match, @code{wl-mime-charset} is used.
8179
8180 @item wl-folder-init-load-access-folders
8181 @vindex wl-folder-init-load-access-folders
8182 The initial setting is @code{nil}.
8183 This is a list of access groups to be loaded specifically at the start.
8184 If it is @code{nil}, @code{wl-folder-init-no-load-access-folders} is referred.
8185
8186 @item wl-folder-init-no-load-access-folders
8187 @vindex wl-folder-init-no-load-access-folders
8188 The initial setting is @code{nil}.
8189 This is a list of access groups not to be loaded specifically at the
8190 start.
8191 It is ignored if @code{wl-folder-init-load-access-folders} is non-nil.
8192
8193 @item wl-delete-folder-alist
8194 @vindex wl-delete-folder-alist
8195 The initial setting is the alist shown below:
8196
8197 @lisp
8198 @group
8199 (("^-" . remove))
8200 @end group
8201 @end lisp
8202
8203 @noindent
8204 This list determines disposition of messages with delete marks.
8205 Each item in the list is a folder and destination; you can specify any
8206 one of the following in the place of destination:
8207
8208 @example
8209 @code{remove} or @code{null} : deletes the messages instantly.
8210 string             : moves the messages to the specific folder.
8211 @code{trash} or others  : moves the messages to @code{wl-trash-folder}.
8212 @end example
8213
8214 @item wl-x-face-file
8215 @vindex wl-x-face-file
8216 The initial setting is @file{~/.xface}.
8217 The name of the file that contains encoded X-Face strings.
8218 @xref{x-face-mule}.
8219
8220 @item wl-demo-display-logo
8221 @vindex wl-demo-display-logo
8222 If non-nil, bitmap image is shown on the opening demo.  If you set
8223 @code{xpm} or @code{xbm}, (if possible) display selected image type
8224 logo.
8225
8226 @item elmo-use-database
8227 @vindex  elmo-use-database
8228 This is meaningful for XEmacs only.  The initial setting depends on
8229 XEmacs (@code{t} for XEmacs with dbm).
8230 If non-nil, Message-ID is controlled by dbm.
8231
8232 @item elmo-passwd-alist-file-name
8233 @vindex elmo-passwd-alist-file-name
8234 The initial setting is @file{passwd}.
8235 This is the name of the file in which passwords are saved.
8236 @code{elmo-passwd-alist-save} saves current passwords to the file.
8237
8238 @item elmo-nntp-list-folders-use-cache
8239 @vindex elmo-nntp-list-folders-use-cache
8240 The initial setting is 600 (in seconds).
8241 This is period in seconds during which results of @samp{list} and
8242 @samp{list active} in NNTP are cached.  If it is @code{nil}, they are
8243 not cached.
8244
8245 @item elmo-nntp-max-number-precedes-list-active
8246 @vindex elmo-nntp-max-number-precedes-list-active
8247 The initial setting is @code{nil}.
8248 If non-nil, the number of article obtained by @samp{list active} in NNTP
8249 are used as the maximum article number of the folder.
8250 Set this to @code{t} if you are using for example INN 2.3 as an NNTP server,
8251 and if the number of read messages is not correct.
8252
8253 @item elmo-nntp-default-use-listgroup
8254 @vindex elmo-nntp-default-use-listgroup
8255 The initial setting is @code{t}.
8256 If non-nil, @samp{listgroup} is used for checking the total number of
8257 articles.  If it is @code{nil}, @samp{group} is used.  In the latter
8258 case, the processing will be a little faster at the sacrifice of
8259 accuracy.
8260
8261 @item elmo-pop3-send-command-synchronously
8262 @vindex elmo-pop3-send-command-synchronously
8263 The initial setting is @code{nil}.
8264 If non-nil, POP3 commands are issued synchronously.  Some implementation
8265 of POP3 server fails to get summary information without this setting.
8266 You may have to set this variable to @code{t}, if the process hangs
8267 while looking up POP3.
8268
8269 @item elmo-dop-flush-confirm
8270 @vindex elmo-dop-flush-confirm
8271 The initial setting is @code{t}.
8272 If non-nil, you are asked for confirmation if accumulated off-line
8273 operations are executed.
8274
8275 @item elmo-display-progress-threshold
8276 @vindex elmo-display-progress-threshold
8277 The initial setting is 20.
8278 Threshold for display of progress gauge.  If number of renewal is more than
8279 this value, display progress gauge.
8280 @end table
8281
8282
8283 @node Hooks,  , Customizable Variables, Customization
8284 @section Hooks
8285
8286 (Not yet written)
8287
8288 @node Terminology, Mailing List, Customization, Top
8289 @chapter Terminology around Wanderlust
8290 @cindex Terminology
8291
8292 Here we explain terminologies used in this manual.
8293
8294 @table @samp
8295 @item folder
8296 A container in which messages are stored.
8297
8298 @item group
8299 A set consists of some folders.
8300
8301 @item access group
8302 A special group consists of automatically collected folders under
8303 some specified path.
8304 @xref{Folder Definition}.
8305
8306 @item summary buffer
8307 A buffer for displaying list of messages in some folder.
8308
8309 @item sticky summary
8310 Compared with ordinary summary buffer which will be destroyed after
8311 exiting from it, this type of summary will be remain even after exiting
8312 by @kbd{q} or @kbd{g}.
8313 @xref{Sticky Summary}.
8314
8315 @item expire
8316 To delete or put into the archive expired messages.
8317 @xref{Expire}.
8318
8319 @item score
8320 @xref{Scoring}.
8321
8322 @item prefetch
8323 To cache messages beforehand in order to read messages after you will be
8324 disconnected from the server.
8325 @end table
8326
8327
8328 @node Mailing List, Addition, Terminology, Top
8329 @chapter Wanderlust Mailing List
8330 @cindex Bug report
8331 @cindex Backtrace
8332
8333 Topics related to Wanderlust are discussed in following mailing lists.
8334 The latest version is also announced there.
8335
8336 @display
8337 Wanderlust Mailing List @t{<wl@@lists.airs.net>}
8338 @end display
8339
8340 In this list Japanese is mainly used for discussion. We also have a list
8341 for discussion in English:
8342
8343 @display
8344 Wanderlust List in English @t{<wl-en@@lists.airs.net>}
8345 @end display
8346 (Messages posted to this list are also forwarded to the former one.)
8347
8348 A guide can be obtained automatically by sending mail to
8349 @t{wl-ctl@@lists.airs.net} (or to @t{wl-en-ctl@@lists.airs.net} for
8350 the English one) with the body
8351
8352 @example
8353 # guide
8354 @end example
8355
8356 Please send bug reports or patches to one of those lists.  You can post to
8357 the mailing list even though you are not a member of it.
8358
8359 If you send a bug report, please attach Backtrace with it.
8360 @footnote{@uref{http://www.jpl.org/elips/BUGS-ja.html} describes how to
8361 in Japanese.}
8362
8363 I would like to express my thanks to the members of the mailing list for
8364 valuable advice and many pieces of code they contributed.
8365
8366
8367 @node Addition, Index, Mailing List, Top
8368 @chapter Additional Information
8369
8370 @section Brief History
8371
8372 @example
8373 1998  3/05    Tried to make a prototype that displays MH messages in threads.
8374       3/10    Made a msgdb mechanism by elisp.
8375       3/26    IMAP and NNTP can be displayed in threads.
8376       4/13    Began to assemble thread display modules as elmo.
8377       5/01    Finished 0.1.0, initial version with many defects.
8378       6/12    I made a slip of the tongue and said I was writing elisp
8379               mailer supporting IMAP
8380       6/16    0.1.3 was announced at tm-ja, elisp ML.
8381       6/22    Thanks to Kitame-san, the mailing list started at northeye.org.
8382       7/01    Support for mm-backend (0.3.0).
8383       8/25    multi folder added (0.5.0).
8384       8/28    filter folder added (0.5.1).
8385       9/10    You can open/close threads (0.6.0).
8386       9/11    fldmgr by Murata-san made editing folders easy.
8387       9/18    lha folders added by Okunishi-san (0.6.3).
8388       9/24    Display of branches of threads (0.6.5).
8389       9/28    Compression folder supporting multiple archivers by Okunishi-san.
8390      10/28    Off-line operations (0.7.4).
8391      12/09    Becomes beta version.
8392      12/21    wl-expire by Murata-san.
8393 1999  2/03    auto-refile by Tsumura-san.
8394       4/28    wl-template by Murata-san.
8395       5/18    Released 1.0.0 stable.
8396       7/05    Scoring by Murata-san (2.1.0).
8397       9/26    New plugged system by Murata-san (2.2.2).
8398      12/20    Support Modified UTF7.
8399 2000  3/24    Released 1.1.0 stable.
8400       4/03    CVS development started.
8401       5/07    Thread restoration & Its speed up with Murata-san.
8402       6/12    Address completion with LDAP with Chiba-san & Goto-san.
8403       7/11    killed message feature.
8404       7/18    Use UIDL in POP3.
8405       9/12    biff feature with Satata-san & Yamaoka-san.
8406      10/17    expire-hide by Okada-san.
8407      11/08    Released 2.4.0 stable.
8408 2001  7/04    Released 2.6.0 stable.
8409       8/21    wl-addrmgr by Kitamoto-san.
8410      12/27    Released 2.8.1 stable.
8411 2002 12/11    Released 2.10.0 stable.
8412 @end example
8413
8414 See @file{ChangeLog} for details.
8415
8416 @section The Name
8417
8418 According to a dictionary, Wanderlust has the meaning:
8419
8420 @display
8421 wanderlust
8422   n eager longing for or impulse towards travelling in distant lands
8423   [Ger, fr wandern to wander + lust desire, pleasure]
8424 @end display
8425
8426 @noindent
8427 but I had no profound intention.  (if farfetched, IMAP @result{} you can
8428 read mail anywhere @result{} desire to wander ?)
8429
8430 Elmo is the abbreviation of @samp{Elisp Library for Message
8431 Orchestration}.  At first I meant the red puppet in the Sesame Street,
8432 but you may associate it with Wandering @result{} Drifting @result{}
8433 Guidepost @result{} St.@: Elmo's fire @result{} elmo.
8434
8435 @section Code Names
8436
8437 Each versions has code names (they are almost jokes).
8438 Currently they are picked up alphabetically from the top 40 hits of
8439 U.S. Billboard magazines in 1980s.
8440
8441 (@uref{http://lyrics.natalnet.com.br/html/top40/index.html})
8442
8443
8444 @node Index,  , Addition, Top
8445 @unnumbered Index
8446
8447 @menu
8448 * Concept Index::               Concept Index
8449 * Key Index::                   Key Index
8450 * Variable Index::              Variable Index
8451 * Function Index::              Function Index
8452 @end menu
8453
8454 @node Concept Index, Key Index, Index, Index
8455 @unnumberedsec Concept Index
8456 @printindex cp
8457
8458 @node Key Index, Variable Index, Concept Index, Index
8459 @unnumberedsec Key Index
8460 @printindex ky
8461
8462 @node Variable Index, Function Index, Key Index, Index
8463 @unnumberedsec Variable Index
8464 @printindex vr
8465
8466 @node Function Index,  , Variable Index, Index
8467 @unnumberedsec Function Index
8468 @printindex fn
8469
8470 @summarycontents
8471 @contents
8472 @bye
8473
8474 @c Local Variables:
8475 @c fill-column: 72
8476 @c End: