* Scoring:: Score of the messages
* Split messages:: Splitting messages
* Address Book:: Management of Address Book
+* Spam Filter:: Spam filtering
+* Batch Processing:: Invoke commands in batch mode
* Customization:: Customizing Wanderlust
+* Migration:: Switch from older version of Wanderlust
* Terminology:: Terminologies
* Mailing List:: Wanderlust mailing list
* Addition:: Additional Information
@item Manages unread messages.
@item Interactive thread display.
@item Folder Mode shows the list of subscribed folders.
-@item Message Cache, Disconnected Operation (Read Only).
+@item Message Cache, Disconnected Operation.
@item MH-like FCC. (Fcc: %Backup and Fcc: $Backup is allowed).
@item MIME compliant (by SEMI).
@item Transmission of news and mail are unified by Message transmitting draft.
Recommended combination of APEL, FLIM and SEMI are following:
@itemize @minus
-@item APEL 10.4, FLIM 1.14.4 and SEMI 1.14.5
+@item APEL 10.6, FLIM 1.14.6 and SEMI 1.14.6
@end itemize
You can also use many other FLIM/SEMI variants. Combination of the
confirmed to work.
@itemize @minus
-@item APEL 10.4, SLIM 1.14.9, SEMI 1.14.5
-@item APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
+@item APEL 10.6, SLIM 1.14.9, SEMI 1.14.5
+@item APEL 10.6, CLIME 1.14.5, EMIKO 1.14.1
@end itemize
You have to re-install Wanderlust if you upgraded APEL, FLIM or SEMI.
@example
@group
-ftp://ftp.jaist.ac.jp/pub/GNU/elisp/ftp.gohome.org/wl/
+@c ftp://ftp.jaist.ac.jp/pub/GNU/elisp/ftp.gohome.org/wl/
http://www.jpl.org/elips/wl/
http://www.ring.gr.jp/archives/text/elisp/wl/
ftp://ftp.ring.gr.jp/pub/text/elisp/wl/
-ftp://opaopa.org/pub/mirror/elisp/wl/
-@c ftp://roguelife.org/pub/tsumura/wl/
@end group
@end example
Wanderlust uses ELMO as it's interface, so you can use every folder types
supported by ELMO.
-As of version @value{VERSION}, 11 types of folders are predefined. These are
-IMAP, NNTP, LocalDir(MH), Maildir, News Spool, Archive, POP, Multi, Filter,
-Pipe and Internal folder types.
+As of version @value{VERSION}, 14 types of folders are predefined. These
+are IMAP, NNTP, LocalDir(MH), Maildir, News Spool, Archive, POP,
+Shimbun, Namazu, Multi, Filter, Pipe, Internal and File folder types.
@menu
* IMAP Folder:: @samp{%} -- IMAP folder
* Filter Folder:: @samp{/} -- Filter folder
* Pipe Folder:: @samp{|} -- Pipe folder
* Internal Folder:: @samp{'} -- Internal folder
+* File Folder:: -- File folder
@end menu
@end lisp
SSL (Secure Socket Layer) connection will be used if a folder name ends
-with @samp{!}. Or, if the value of @code{elmo-imap4-default-stream-type}
-is @code{ssl}, SSL will be the default connection. If a folder name
-ends with @samp{!!}, STARTTLS connection will be established. If the
-value of @code{elmo-imap4-default-stream-type} is @code{starttls},
-STARTTLS will be the default connection.
+with @samp{!}. If a folder name ends with @samp{!!}, STARTTLS
+connection will be established.
+
+If the value of @code{elmo-imap4-default-stream-type} is @code{ssl},
+SSL will be the default connection, i.e. you can omit @samp{!}. If it
+is is @code{starttls}, STARTTLS will be the default connection. To use
+normal connection in these cases, add @samp{!direct} at the end of
+folder name.
@lisp
@group
@end example
AUTHINFO is used as authentication method if the @var{username} is
-non-nil. SSL will be default method if
-@code{elmo-nntp-default-stream-type} is non-nil even if the folder name
-doesn't end with @samp{!}. If a folder name ends with @samp{!!},
-STARTTLS connection will be established. if the value of
-@code{elmo-nntp-default-stream-type} is @code{starttls}, STARTTLS will
-be the default connection.
+non-nil. SSL connection will be used if a folder name ends with @samp{!}.
+If a folder name ends with @samp{!!}, STARTTLS connection will be
+established.
+
+If the value of @code{elmo-nntp-default-stream-type} is @code{ssl},
+SSL will be the default connection, i.e. you can omit @samp{!}. If it
+is is @code{starttls}, STARTTLS will be the default connection. To use
+normal connection in these cases, add @samp{!direct} at the end of
+folder name.
Example:
(GPL2).
If the last character of the folder name is @samp{!}, Wanderlust
-connects to the POP server via SSL (Secure Socket Layer). If you set
-non-nil value to @code{elmo-pop3-default-stream-type}, you don't have to put
-@samp{!} in the end of the folder name to use SSL. If a folder name ends
-with @samp{!!}, STARTTLS connection will be established. if the value
-of @code{elmo-pop3-default-stream-type} is @code{starttls}, STARTTLS will be the
-default connection.
+connects to the POP server via SSL (Secure Socket Layer). If a folder
+name ends with @samp{!!}, STARTTLS connection will be established.
+
+If the value of @code{elmo-pop3-default-stream-type} is @code{ssl},
+SSL will be the default connection, i.e. you can omit @samp{!}. If it
+is is @code{starttls}, STARTTLS will be the default connection. To use
+normal connection in these cases, add @samp{!direct} at the end of
+folder name.
@node Shimbun Folder, Namazu Folder, POP Folder, Folders
@table @code
@item elmo-shimbun-update-overview-folder-list
@vindex elmo-shimbun-update-overview-folder-list
-The initial setting is @code{nil}. You can specify a list of regular
-expressions of shimbun folder names. The overview of matched shimbun
-folder is updated when messages are fetched.
-You should @kbd{s rescan} after fetching to update summary.
+The initial setting is @code{all}. Specify a set of folders to update
+overview when messages are fetched. Specify @code{all} to update
+overview in all shimbun folders. You can specify a list of regular
+expressions of shimbun folder names to restrict affected folders.
+
+Example:
+
+@example
+(setq elmo-shimbun-update-overview-folder-list
+ '("^@@airs\\." "^@@namazu\\."))
+@end example
+
+@kbd{s rescan} is needed after fetching to update summary view.
@end table
@cindex Folder, Filtering
@cindex Folder, Virtual
@cindex Folder, Conditional
+@cindex Flag
A folder to access virtual folder which collects all messages that
satisfy a condition.
@end example
@item
+Flag filter: @samp{flag:@var{flag-name}}
+
+Pick up messages with flag specified by @var{flag-name}.
+
+You can specify following flag names:
+
+@example
+@group
+unread -> unread
+important -> important
+answered -> replied
+digest -> unread or important
+any -> unread or important or replied
+@end group
+@end example
+
+You can also use flags which you have set as global flag.
+@xref{Internal Folder}.
+
+Example:
+
+@example
+@group
+/flag:digest/%inbox -> a folder consist of unread or important
+ message in %inbox.
+/flag:wl/+ML/Wanderlust -> a folder consist of messages with global flag
+ wl in +ML/Wanderlust.
+@end group
+@end example
+
+@item
Compound condition
-If you combine conditions by character @samp{|}, it is considered as OR condition. @samp{&} is considered as AND condition, likewise.
+A condition starting with @samp{!} indicates a negation.
+If you combine conditions by character @samp{|}, it is considered as OR condition.
+@samp{&} is considered as AND condition, likewise.
Condition can be grouped by parentheses (@samp{(}, and @samp{)}).
@samp{/tocc:xxxx/} is an abbreviation of @samp{/to:xxxx|cc:xxxx/}.
After messages are moved, a hook @code{elmo-pipe-drained-hook} is called.
-@node Internal Folder, , Pipe Folder, Folders
+@node Internal Folder, File Folder, Pipe Folder, Folders
@section Internal folder
@cindex @samp{'}
@cindex Internal Folder
@cindex Folder, @samp{$} mark
+@cindex Flag
@cindex Cache
@c @cindex Folder, Null
@example
@group
-'mark
-'sendlog
-'cache/00 - 1F
+@samp{'flag} [@samp{/} @var{global-flag}]
+@samp{'sendlog}
+@samp{'cache/00} - @samp{'cache/1F}
@end group
@end example
-A folder named @samp{'mark} is a special virtual folder which collects
-messages which have important mark @samp{$}.
+A folder named @samp{'flag} is a special virtual folder which collects
+messages which have @var{global-flag}.
+There is @samp{important} flag defined as @var{global-flag} by default.
You can review important messages at once after you put important marks
-on the messages in the different folders.
+on the messages in the different folders. If @var{global-flag} is omitted,
+it is treated as @samp{important} flag is specified.
-In this folder, if you delete message, important mark @samp{$} put on
-the message is removed. If you append messages to this folder, the
-message will have @samp{$} mark.
+In addition, in summary mode, to be described later, you can freely
+define global flags and put them on messages.
+@xref{Usage of Summary mode}.
-(Can't remove important mark @samp{$} on IMAP server from @samp{'mark}
-folder. If you want IMAP folder's message remove from @samp{'mark}
-folder, remove important mark at IMAP Folder.)
+In this folder, if you delete message, @var{global-flag} put on the
+message is removed. If you append messages to this folder, the message
+will have @var{global-flag}.
A folder named @samp{'sendlog} is a virtual folder which collects
(@file{~/.elmo/cache}).
+@node File Folder, , Internal Folder, Folders
+@section File folder
+@cindex File Folder
+
+
@node Folder, Summary, Folders, Top
@chapter Folder mode
@cindex Folder
@item V
@kindex V (Folder)
@findex wl-folder-virtual
-Move to the virtual folder with the condition specified.
+Move to the virtual folder (filter folder) with the condition specified.
(@code{wl-folder-virtual})
@item ?
@item wl-folder-hierarchy-access-folders
@vindex wl-folder-hierarchy-access-folders
-The initial setting is the list shown below:
-
-@lisp
-@group
-("^-$" "^-alt$")
-@end group
-@end lisp
-
-@noindent
A list of regular expressions for access groups which creates children
folder list hierarchically.
@lisp
@group
(setq wl-folder-hierarchy-access-folders
- '("^-$" "^-alt$" "^-japan$" "^-comp$" "^-comp.unix$"))
+ '("^-[^\\.]*$" "^-comp.unix$" "^-comp.unix.bsd$"))
@end group
@end lisp
* Auto Refile:: Auto refile settings
* Sticky Summary:: Summary make sticky
* Summary View:: Format of summary lines
+* Mark and Action:: Temporary marks and their effect
* Key Bindings of Summary:: Key bindings
* Variables of Summary:: Customize Summary Mode
@end menu
@cindex Mark, Temporary
There are four temporary marks,
-@samp{*}, @samp{D}, @samp{o} and @samp{O}.
+@samp{*}, @samp{d}, @samp{D}, @samp{o}, @samp{O}, @samp{i} and @samp{~}.
Temporary marks indicates message operations.
@table @samp
You can execute a command on the all messages that have @samp{*} mark,
with the key bindings which begins with @kbd{m}.
+@item d
+The mark to dispose. You can put @samp{d} by typing @kbd{d} key.
+
@item D
-The mark to delete. You can put @samp{D} by typing @kbd{d} key.
+The mark to force delete. You can put @samp{D} by typing @kbd{D} key.
@item o
The mark to refile.
You can put this mark by typing @kbd{O} key.
The difference between this mark and refile mark is,
this mark does not delete the message while latter does.
+
+@item i
+The mark to prefetch reserved.
+You can put this mark by typing @kbd{i} key.
+
+@item ~
+The mark to resend reserved.
+After you type @kbd{~} key, prompt appears to input address to resend.
+Your answer is printed in the summary line.
@end table
-@kbd{x} key executes @samp{D}, @samp{o} and @samp{O} marks.
+@kbd{x} key executes action for temporary marks, respectively.
@subsection Persistent Marks
-There are five persistent marks,
-@samp{N}, @samp{U}, @samp{!}, @samp{u} and @samp{$}.
+There are five persistent marks, @samp{N}, @samp{?}, @samp{U}, @samp{!},
+@samp{u}, @samp{A}, @samp{&} and @samp{$}.
The persistent mark indicates the message's status and it is saved.
Each persistent mark indicates:
@table @samp
@item N
It is new message.
+@item ?
+It is new but cached message.
@item U
It is unread message.
@item !
It is unread but cached message.
@item u
It is read but it is not cached.
+@item A
+It is already replied message.
+@item &
+It is already replied but cached message.
@item $
-It is important message. You can put @samp{$} mark by typing @kbd{$}
-key (if already exists, the mark is deleted). It is convenient to put
-this mark on the messages to remember (If you want to remember to write
-a reply for the message, for example) because this mark remains after
-you exited Emacs. Messages with the @samp{$} mark can be reviewed in the
-@samp{'mark} folder even the message itself is deleted in the actual folder.
+It is a message with some global flag. It is convenient to put this
+mark on the messages to remember (If you want to remember to write a
+reply for the message, for example) because this mark remains after
+you exited Emacs. Messages with the @samp{$} mark can be reviewed in
+the @samp{'flag} folder even the message itself is deleted in the actual
+folder. You can put global flag by typing @kbd{$} or @kbd{F} key.
@item None
If the message is read and cached (or local message),there are no
persistent mark.
@end table
-@samp{N}, @samp{U} and @samp{u} indicates that the message have no
-cache. Messages with the marks other than these, you can read them in
-the offline status even they are in the IMAP folder or netnews folder.
+@samp{N}, @samp{U}, @samp{u}, @samp{A} indicates that the message have
+no cache. Messages with the marks other than these, you can read them
+in the offline status even they are in the IMAP folder or netnews
+folder.
Among messages with persistent marks, ones with marks specified by
@code{wl-summary-expire-reserve-marks} are excluded from the expiration
are automatically stuck.
-@node Summary View, Key Bindings of Summary, Sticky Summary, Summary
+@node Summary View, Mark and Action, Sticky Summary, Summary
@section Format of summary lines
@cindex Format of summary lines
You can alter the format of lines in Summary mode.
@end lisp
-@node Key Bindings of Summary, Variables of Summary, Summary View, Summary
+@node Mark and Action, Key Bindings of Summary, Summary View, Summary
+@section Temporary marks and their effect
+@cindex Mark and Action
+
+You can define temporary marks and corresponding procedure by
+@code{wl-summary-mark-action-list}. Initially, refile (@samp{o}), copy
+(@samp{O}), dispose (@samp{d}), delete (@samp{D}), prefetch (@samp{i})
+and resend (@samp{~}) are defined.
+
+Each element of @code{wl-summary-mark-action-list} consists of
+
+@example
+(@samp{MARK} @samp{SYMBOL}
+ @samp{ARGUMENT-FUNCTION} @samp{SET-MARK-FUNCTION} @samp{EXEC-FUNCTION}
+ @samp{FACE} @samp{DOC-STRING})
+@end example
+
+@samp{MARK} is a temporary mark string, and @samp{SYMBOL} is the name of
+the action to be defined. @samp{ARGUMENT-FUNCTION} is a function to
+generate argument to be given to @samp{SET-MARK-FUNCTION}, which will be
+described next, and it takes arguments:
+
+@example
+(@samp{ACTION} @samp{NUMBER})
+@end example
+
+Where @samp{ACTION} equals to @samp{SYMBOL}, and @samp{NUMBER} is message
+number. @samp{SET-MARK-FUNCTION} is a function to be called when the mark
+is put. It takes arguments:
+
+@example
+(@samp{NUMBER} @samp{MARK} @samp{DATA})
+@end example
+
+Where @samp{NUMBER} is target message number, @samp{MARK} is a temporary
+mark string, and @samp{DATA} is given by @samp{ARGUMENT-FUNCTION}.
+
+@samp{EXEC-FUNCTION} is a function to be called when the action is
+executed. Its argument is a list of @samp{MARK-INFO}. Here @samp{MARK-INFO}
+means a list consists of
+
+@example
+(@samp{NUMBER} @samp{MARK} @samp{DATA})
+@end example
+
+@samp{FACE} is a face to be used for highlighting.
+
+
+@node Key Bindings of Summary, Variables of Summary, Mark and Action, Summary
@section Key bindings
@cindex Keybind, Summary Mode
@cindex Keybind, Summary Buffer
@item $
@kindex $ (Summary)
@findex wl-summary-mark-as-important
-Put @samp{$} mark on the message at current cursor point.
-If already marked as @samp{$}, delete it.
+Put @samp{important} flag on the message at current cursor point.
+If already flagged as @samp{important}, remove the flag. If it is
+called with prefix argument, ask global flag to put similarly to @kbd{F}.
(@code{wl-summary-mark-as-important})
+@item F
+@kindex F (Summary)
+@findex wl-summary-set-flags
+Put arbitrary global flag entered in the minibuffer. If you use Emacs
+21 or later, you can specify multiple flags separated by @samp{,}
+simultaneously. If it is called with prefix argument, remove existent
+global flags.
+(@code{wl-summary-set-flags})
+
@item y
@itemx e
@kindex y (Summary)
@item s
@kindex s (Summary)
@findex wl-summary-sync
-Synchronize summary view after prompting the update range
-(@samp{all}, @samp{update}, @samp{rescan}, @samp{first}, @samp{last}).
+Synchronize summary view after prompting the update range.
+You can specify one of the follows.
@example
@group
-all ...Discard current summary and update all message.
-all-visible ...Discard current summary and update all visible message.
-update ...Update the difference between summary and the folder itself.
-rescan ...Rescan the msgdb and display again.
-rescan-noscore ...Rescan the msgdb and display again (without scoring).
-cache-status ...Sync the all marks with the real status of cache.
-first, last ...Move to the filter folder(partial filter).
+all Discard present msgdb and retrieve all informations.
+ Do not retrieve killed messages.
+all-entirely Discard present msgdb and retrieve all informations.
+ Retrieve killed messages, too.
+update Update the difference between informations in present
+ msgdb and in current folder instance.
+ Do not retrieve killed messages.
+update-entirely Update the difference between informations in present
+ msgdb and in current folder instance.
+ Retrieve killed messages, too.
+rescan Redisplay summary by rescanning present msgdb.
+rescan-noscore Redisplay summary by rescanning present msgdb.
+ Display messages killed by score, too.
+cache-status Sync the all marks with the real status of cache.
+mark Update marks.
+no-sync Do nothing.
+first:NUM Move to the filter folder(partial filter).
+last:NUM Move to the filter folder(partial filter).
@end group
@end example
@item T
@kindex T (Summary)
@findex wl-summary-toggle-thread
-Toggle the threading.
+Toggle the threading. The state will be preserved after exiting
+Wanderlust. You can alter default state for newly created summary
+by @code{wl-summary-default-view} or @code{wl-summary-default-view-alist}.
Threading status is displayed on the modeline.
@samp{@{S@}} means threading is off (Sequence) and
@samp{@{T@}} means threading is on (Thread).
@item V
@kindex V (Summary)
-Move to the virtual folder with the condition specified.
+Move to the virtual folder (filter folder) with the condition specified.
If called with prefix argument and current folder is virtual, exit it.
@findex wl-summary-virtual
(@code{wl-summary-virtual})
Mark as read the message at the current cursor point.
(@code{wl-summary-mark-as-read})
-@item i
-@kindex i (Summary)
-Prefetch the message at the current cursor point.
-With prefix argument, prefetch the message even if it is cached.
-@findex wl-summary-prefetch
-(@code{wl-summary-prefetch})
-
@item x
@kindex x (Summary)
-Execute @samp{D}, @samp{o} and @samp{O} marks.
+Execute action for all temporary marks in the summary buffer.
@findex wl-summary-exec
(@code{wl-summary-exec})
@kindex * (Summary)
@findex wl-summary-target-mark-line
Put target mark on the message at the current cursor point.
-(@code{wl-summary-target-mark-line})
+(@code{wl-summary-target-mark-line}) @xref{Mark and Action}.
@item o
@kindex o (Summary)
Put refile mark on the message at the current cursor point.
@findex wl-summary-refile
-(@code{wl-summary-refile})
+(@code{wl-summary-refile}) @xref{Mark and Action}.
@item C-o
@kindex C-o (Summary)
@kindex O (Summary)
Put copy mark on the message at the current cursor point.
@findex wl-summary-copy
-(@code{wl-summary-copy})
+(@code{wl-summary-copy}) @xref{Mark and Action}.
@item M-o
@kindex M-o (Summary)
@item d
@kindex d (Summary)
+@findex wl-summary-dispose
+Put disposal mark on the message at the current cursor point.
+The result of disposal is controlled by @code{wl-dispose-folder-alist},
+refiled to @code{wl-trash-folder} by default.
+(@code{wl-summary-dispose}) @xref{Mark and Action}.
+
+@item D
+@kindex D (Summary)
@findex wl-summary-delete
-Put delete mark on the message at the current cursor point.
-(@code{wl-summary-delete})
+Put force deletion mark on the message at the current cursor point.
+(@code{wl-summary-delete}) @xref{Mark and Action}.
+
+@item i
+@kindex i (Summary)
+Put prefetch reservation mark on the message at the current cursor point.
+@findex wl-summary-prefetch
+(@code{wl-summary-prefetch}) @xref{Mark and Action}.
+
+@item ~
+@kindex ~ (Summary)
+@findex wl-summary-resend
+Put resend reservation mark on the message at the current cursor point.
+(@code{wl-summary-resend}) @xref{Mark and Action}.
@item u
@kindex u (Summary)
@item r $
@kindex r $ (Summary)
@findex wl-summary-mark-as-important-region
-Mark as important @samp{$} messages in the specified region.
-If @samp{$} already exists, it is deleted.
+Put @samp{important} flag on messages in the specified region.
+If already flagged as @samp{important}, remove the flag.
(@code{wl-summary-mark-as-important-region})
+@item r F
+@kindex r F (Summary)
+@findex wl-summary-set-flags-region
+Put arbitrary global flag entered in the minibuffer on messages in
+specified region.
+(@code{wl-summary-set-flags-region})
+
@item r !
@kindex r ! (Summary)
@findex wl-summary-mark-as-unread-region
Mark as unread messages in the specified region.
(@code{wl-summary-mark-as-unread-region})
-@item r i
-@kindex r i (Summary)
-@findex wl-summary-prefetch-region
-Prefetch messages in the specified region.
-(@code{wl-summary-prefetch-region})
-
@item r x
@kindex r x (Summary)
@findex wl-summary-exec-region
-Execute @samp{D}, @samp{o} and @samp{O} marks on the messages in the
+Execute action for each temporary marks on the messages in the
specified region.
(@code{wl-summary-exec-region})
@kindex r * (Summary)
@findex wl-summary-target-mark-region
Put target mark on the messages in the specified region.
-(@code{wl-summary-target-mark-region})
+(@code{wl-summary-target-mark-region}) @xref{Mark and Action}.
@item r o
@kindex r o (Summary)
@findex wl-summary-refile-region
Put refile mark on the messages in the specified region.
-(@code{wl-summary-refile-region})
+(@code{wl-summary-refile-region}) @xref{Mark and Action}.
@item r O
@kindex r O (Summary)
@findex wl-summary-copy-region
Put copy mark on the messages in the specified region.
-(@code{wl-summary-copy-region})
+(@code{wl-summary-copy-region}) @xref{Mark and Action}.
@item r d
@kindex r d (Summary)
+@findex wl-summary-dispose-region
+Put disposal mark on the messages in the specified region.
+(@code{wl-summary-dispose-region}) @xref{Mark and Action}.
+
+@item r D
+@kindex r D (Summary)
@findex wl-summary-delete-region
-Put delete mark on the messages in the specified region.
-(@code{wl-summary-delete-region})
+Put force deletion mark on the messages in the specified region.
+(@code{wl-summary-delete-region}) @xref{Mark and Action}.
+
+@item r i
+@kindex r i (Summary)
+@findex wl-summary-prefetch-region
+Put prefetch reservation mark on messages in the specified region.
+(@code{wl-summary-prefetch-region}) @xref{Mark and Action}.
@item r u
@kindex r u (Summary)
@item t $
@kindex t $ (Summary)
@findex wl-thread-mark-as-important
-Put important mark @samp{$} on the messages which are the
-descendant of the current thread.
-If @samp{$} mark exists, it is deleted.
-With prefix argument, it affects on the all messages in the thread tree.
+Put @samp{important} flag on the messages which are the descendant of
+the current thread. If already flagged as @samp{important}, remove the
+flag. With prefix argument, it affects on the all messages in the
+thread tree.
(@code{wl-thread-mark-as-important})
+@item t F
+@kindex t F (Summary)
+@findex wl-thread-set-flags
+Put arbitrary global flag entered in the minibuffer on the messages
+which are the descendant of the current thread. With prefix argument,
+it affects on the all messages in the thread tree.
+(@code{wl-thread-set-flags})
+
@item t !
@kindex t ! (Summary)
@findex wl-thread-mark-as-unread
With prefix argument, it affects on the all messages in the thread tree.
(@code{wl-thread-mark-as-unread})
-@item t i
-@kindex t i (Summary)
-@findex wl-thread-prefetch
-Prefetch messages which are the descendant of the current thread.
-With prefix argument, it affects on the all messages in the thread tree.
-(@code{wl-thread-prefetch})
-
@item t x
@kindex t x (Summary)
@findex wl-thread-exec
-Execute @samp{D}, @samp{o} and @samp{O} marks on the messages which are
+Execute action for temporary marks on the messages which are
the descendant of the current thread. With prefix argument, it affects
on the all messages in the thread tree.
(@code{wl-thread-exec})
Put target mark @samp{*} on the messages which are the descendant of the
current thread. With prefix argument, it affects on the all messages in
the thread tree.
-(@code{wl-thread-target-mark})
+(@code{wl-thread-target-mark}) @xref{Mark and Action}.
@item t o
@kindex t o (Summary)
@findex wl-thread-refile
Put refile mark on the messages which are the descendant of the current thread.
With prefix argument, it affects on the all messages in the thread tree.
-(@code{wl-thread-refile})
+(@code{wl-thread-refile}) @xref{Mark and Action}.
@item t O
@kindex t O (Summary)
@findex wl-thread-copy
Put copy mark on the messages which are the descendant of the current thread.
With prefix argument, it affects on the all messages in the thread tree.
-(@code{wl-thread-copy})
+(@code{wl-thread-copy}) @xref{Mark and Action}.
@item t d
@kindex t d (Summary)
-@findex wl-thread-delete
-Put delete mar on the messages which are the descendant of the current thread.
+@findex wl-thread-dispose
+Put disposal mark on the messages which are the descendant of the current thread.
With prefix argument, it affects on the all messages in the thread tree.
-(@code{wl-thread-delete})
+(@code{wl-thread-dispose}) @xref{Mark and Action}.
+
+@item t D
+@kindex t D (Summary)
+@findex wl-thread-delete
+Put force deletion mark on the messages which are the descendant of the
+current thread.
+(@code{wl-thread-delete}) @xref{Mark and Action}.
+
+@item t i
+@kindex t i (Summary)
+@findex wl-thread-prefetch
+Put prefetch reservation mark on messages which are the descendant of
+the current thread.
+(@code{wl-thread-prefetch}) @xref{Mark and Action}.
@item t u
@kindex t u (Summary)
With prefix argument, it affects on the all messages in the thread tree.
(@code{wl-thread-save})
-@item m i
-@kindex m i (Summary)
-@findex wl-summary-target-mark-prefetch
-Prefetch all messages which have target mark @samp{*}.
-With prefix argument, prefetch all targets even if some of them are cached.
-(@code{wl-summary-target-mark-prefetch})
-
@item m R
@kindex m R (Summary)
@findex wl-summary-target-mark-mark-as-read
@item m $
@kindex m $ (Summary)
@findex wl-summary-target-mark-mark-as-important
-Mark as important all messages which have target mark @samp{*}.
-If already marked as @samp{$}, it is deleted.
+Put @samp{important} flag on all messages which have target mark @samp{*}.
+If already flagged as @samp{important}, remove the flag.
(@code{wl-summary-target-mark-mark-as-important})
+@item m F
+@kindex m F (Summary)
+@findex wl-summary-target-mark-set-flags
+Put arbitrary global flag entered in the minibuffer on all messages
+which have target mark @samp{*}.
+(@code{wl-summary-target-mark-set-flags})
+
@item m !
@kindex m ! (Summary)
@findex wl-summary-target-mark-mark-as-unread
@kindex m o (Summary)
@findex wl-summary-target-mark-refile
Put refile mark on the messages which have target mark @samp{*}.
-(@code{wl-summary-target-mark-refile})
+(@code{wl-summary-target-mark-refile}) @xref{Mark and Action}.
@item m O
@kindex m O (Summary)
@findex wl-summary-target-mark-copy
Put copy mark on the messages which have target mark @samp{*}.
-(@code{wl-summary-target-mark-copy})
+(@code{wl-summary-target-mark-copy}) @xref{Mark and Action}.
@item m d
@kindex m d (Summary)
+@findex wl-summary-target-mark-dispose
+Put disposal mark on the messages which have target mark @samp{*}.
+(@code{wl-summary-target-mark-dispose}) @xref{Mark and Action}.
+
+@item m D
+@kindex m D (Summary)
@findex wl-summary-target-mark-delete
-Put delete mark on the messages which have target mark @samp{*}.
-(@code{wl-summary-target-mark-delete})
+Put force deletion mark on the messages which have target mark @samp{*}.
+(@code{wl-summary-target-mark-delete}) @xref{Mark and Action}.
+
+@item m i
+@kindex m i (Summary)
+@findex wl-summary-target-mark-prefetch
+Put prefetch reservation mark on messages which have target mark @samp{*}.
+(@code{wl-summary-target-mark-prefetch}) @xref{Mark and Action}.
@item m y
@kindex m y (Summary)
external process.
(@code{wl-summary-target-mark-pipe})
-@item D
-@kindex D (Summary)
-@findex wl-summary-erase
-Actually erase the message at once, without moving it to trash.
-(@code{wl-summary-erase})
-
@item M-t
@kindex M-t (Summary)
@findex wl-toggle-plugged
@item wl-summary-weekday-name-lang
@vindex wl-summary-weekday-name-lang
-The initial setting is @samp{ja}. Specify language of the weekday.
+Specify language of the weekday.
@samp{en} displays English, @samp{fr} displays French, @samp{de}
displays Deutsch. You should rescan summary view after changing this value.
A cons cell to specify the rate of summary and message window.
car:cdr corresponds summary:message.
+@item wl-summary-from-function
+@vindex wl-summary-from-function
+Format function to display sender in summary.
+The initial setting is @code{wl-summary-default-from}.
+
@item wl-summary-no-from-message
@vindex wl-summary-no-from-message
The initial setting is @samp{nobody@@nowhere?}. A string which is
displayed when there's no @samp{From:} field in the message.
+@item wl-summary-subject-function
+@vindex wl-summary-subject-function
+Format function to display subject in summary.
+The initial setting is @code{wl-summary-default-subject} and
+it will cut the list name part etc. on the top of the subject.
+To display subject as it is, set as follows.
+
+@lisp
+(setq wl-summary-subject-function 'identity)
+@end lisp
+
@item wl-summary-no-subject-message
@vindex wl-summary-no-subject-message
The initial setting is @samp{(WL:No Subject in original.)}. A string
which is displayed when there's no @samp{Subject:} field in the message.
+@item wl-summary-default-view
+@vindex wl-summary-default-view
+The initial setting is @code{'thread}.
+The default state for newly created summary. You can set either
+@code{'thread} for thread view or @code{'sequence} for sequential view.
+
@item wl-summary-use-frame
@vindex wl-summary-use-frame
The initial setting is @code{nil}.
The initial setting is 80.
Width of summary line. If @code{nil}, summary line's width is as is.
-@item wl-summary-from-width
-@vindex wl-summary-from-width
-The initial setting is 17.
-Width of sender part of summary line.
+@item wl-summary-print-argument-within-window
+@vindex wl-summary-print-argument-within-window
+The initial setting is @code{nil}.
+If non-nil, the action argument is always printed on right side of
+window.
@item wl-summary-indent-length-limit
@vindex wl-summary-indent-length-limit
If you set this to @code{nil} you should set @code{wl-summary-width}
to @code{nil}, too.
+@item wl-summary-max-thread-depth
+@vindex wl-summary-max-thread-depth
+The initial setting is 15.
+If thread depth of the message is larger than this value,
+the thread is divided.
+
@item wl-summary-recenter
@vindex wl-summary-recenter
The initial setting is t.
@lisp
@group
-("o" "O" "D")
+("o" "O" "D" "d" "i")
@end group
@end lisp
@lisp
@group
-("D")
+("D" "d")
@end group
@end lisp
("^\\*.*" . hide) (".*" . read)))
@end group
@end lisp
+
+@item wl-summary-flag-alist
+@vindex wl-summary-flag-alist
+The initial setting is as follows:
+
+@lisp
+@group
+((important "orange"))
+@end group
+@end lisp
+
+Specify the color of message in summary buffer with flag. If multiple
+global flags are on one message, the former flag in this list is
+preferred.
@end table
@item wl-message-ignored-field-list
@vindex wl-message-ignored-field-list
-(SEMI only) Initial setting is @code{nil}.
+Initial setting is @code{nil}.
All fields that match this list will be hidden in message buffer.
Each elements are regexp of field-name.
If @code{nil}, the value of @code{mime-view-ignored-field-list} is used.
@item wl-message-visible-field-list
@vindex wl-message-visible-field-list
-(SEMI only) Initial setting is @code{nil}.
+Initial setting is @code{nil}.
All fields that match this list will be display in message buffer.
Each elements are regexp of field-name. This value precedes
@code{wl-message-ignored-field-list}.
@item wl-message-sort-field-list
@vindex wl-message-sort-field-list
-(SEMI only) Initial setting is
+Initial setting is
'("Return-Path" "Received" "^To" "^Cc" "Newsgroups" "Subject" "^From").
Header fields in message buffer are ordered by this value.
Each elements are regexp of field-name.
@end group
@end example
-Per default, there are 10 following sub-functions.
+Per default, there are 13 following sub-functions.
@example
'header: Inserts the specified string at the bottom of the header.
The format of @code{wl-template-alist} is almost the same as
@code{wl-draft-config-alist}.
+@xref{Dynamical Message Re-arrangement}.
@lisp
@group
If unset, @code{elmo-pop3-default-port} is used.
@item wl-pop-before-smtp-stream-type
-If non-nil, POP connection is established using SSL. If
+If @code{ssl}, POP connection is established using SSL. If
@code{starttls}, STARTTLS (RFC2595) connection will be established. If
unset, @code{elmo-pop3-default-stream-type} is used.
@end table
@node Variables of Draft Mode, , Key Bindings of Draft, Draft
@section Customizable Variables
+@cindex SMTP AUTH
@table @code
@item wl-subscribed-mailing-list
@vindex wl-reply-subject-prefix
The initial setting is @samp{Re: }.
In the @samp{Subject:} of the reply draft, this string is prepended to
-the @samp{Subject:} of being replied.
+the @samp{Subject:} of being replied. You can specify a function to be
+message buffer of the reply target.
@item wl-forward-subject-prefix
@vindex wl-forward-subject-prefix
The initial setting is @samp{Forward: }.
In the @samp{Subject:} of the forwarding draft, this string is prepended
-to the @samp{Subject:} of being forwarded.
+to the @samp{Subject:} of being forwarded. You can specify a function
+to be message buffer of the forward target.
@item wl-draft-reply-use-address-with-full-name
@vindex wl-draft-reply-use-address-with-full-name
@item wl-fcc-force-as-read
@vindex wl-fcc-force-as-read
The initial setting is @code{nil}. If the value is non-nil,
-Mark as read the message saved by @samp{Fcc:} (only for IMAP folders).
+Mark as read the message saved by @samp{Fcc:}.
@item wl-auto-flush-queue
@vindex wl-auto-flush-queue
@vindex wl-smtp-connection-type
The initial setting is @code{nil}.
This variable specifies how to establish SMTP connections.
-If @code{nil}, @code{smtp-connection-type} is used.
-If it is @code{starttls}, STARTTLS (RFC2595) is used.
+If @code{nil}, use default connection type.
+If it is @code{starttls}, use STARTTLS (RFC2595).
+If it is @code{ssl}, use SSL.
@item wl-nntp-posting-server
@vindex wl-nntp-posting-server
@item wl-nntp-posting-stream-type
@vindex wl-nntp-posting-stream-type
The initial setting is @code{nil}.
-If @code{nil}, @code{elmo-nntp-default-stream-type} is evaluated. If non-nil,
+If @code{nil}, @code{elmo-nntp-default-stream-type} is evaluated. If @code{ssl},
SSL is used for news submission. If @code{starttls}, STARTTLS (RFC2595)
connection will be established.
@vindex wl-pop-before-smtp-stream-type
The initial setting is @code{nil}.
This flag controls the use of SSL for POP-before-SMTP. If it is
-@code{nil}, @code{elmo-pop3-default-stream-type} is used. If @code{starttls},
-STARTTLS (RFC2595) connection will be established.
+@code{nil}, @code{elmo-pop3-default-stream-type} is used. If @code{ssl},
+SSL is used. If @code{starttls}, STARTTLS (RFC2595) connection will be
+established.
@item wl-draft-queue-save-variables
@vindex wl-draft-queue-save-variables
@lisp
@group
(list wl-summary-important-mark
- wl-summary-new-mark
+ wl-summary-new-uncached-mark
+ wl-summary-new-cached-mark
wl-summary-unread-mark
wl-summary-unread-uncached-mark
wl-summary-unread-cached-mark)
@lisp
@group
-(list wl-summary-new-mark)
+(list wl-summary-new-uncached-mark
+ wl-summary-new-cached-mark)
@end group
@end lisp
@chapter Message splitting
@cindex Split messages
-You can use @code{elmo-split} to split message in folder
-@code{elmo-split-folder} a la @command{procmail} according to some
-specified rules. To use this feature, set as follows in your
+You can use @code{elmo-split} to split message in folder specified by
+the variable @code{elmo-split-folder} a la @command{procmail} according
+to some specified rules. To use this feature, set as follows in your
@file{~/.emacs} at first.
@lisp
(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
@end lisp
+Set source folder like following.
+
+@lisp
+(setq elmo-split-folder "%inbox")
+@end lisp
+
+And specify the rule in the variable @code{elmo-split-rule} (its format
+will be is described below).
Then you can invoke @kbd{M-x elmo-split} to split messages according to
@code{elmo-split-rule}. On the other hand, invoke @kbd{C-u M-x elmo-split}
-to do a rehearsal (do not split actually).
+to do a rehearsal and show result (do not split actually).
+
We will describe how to specify the rule. First of all, see following
example, please.
@end table
@item
-Functions which accept an argument @samp{SIZE}, @samp{SIZE} is some number.
+Functions which accept an integer argument (@samp{SIZE}).
@table @code
@item @code{<}
specified by @code{elmo-split-default-action}.
-@node Address Book, Customization, Split messages, Top
+@node Address Book, Spam Filter, Split messages, Top
@chapter Address Book
@cindex Address Book
* Address Manager:: Address Manager
@end menu
+
@node Mail Addresses, Address Manager, Address Book, Address Book
@section Address book
@cindex Address book Definition
@end table
-@node Customization, Terminology, Address Book, Top
+@node Spam Filter, Batch Processing, Address Book, Top
+@chapter Spam Filter
+@cindex Spam Filter
+
+@code{wl-spam} provides an frontend to external spam filtering programs.
+You can register to or judge spam by the filtering program cooperateing
+with messages operations on Wanderlust.
+
+@menu
+* Usage of Spam Filter:: Usage of Spam Filter
+* Spam Filter Processors:: Supported spam filters
+@end menu
+
+@node Usage of Spam Filter, Spam Filter Processors, Spam Filter, Spam Filter
+@section Usage of Spam Filter
+
+@subsection Initial Setting
+
+To use @code{wl-spam}, write in @file{~/.wl} as follows:
+
+@lisp
+@group
+;; @r{Use @samp{bogofilter} as spam back end}
+;; @r{Set @samp{scheme} here as the spam filter you will use.}
+;; @r{@xref{Spam Filter Processor}}
+(setq elmo-spam-scheme 'bogofilter)
+(require 'wl-spam)
+@end group
+@end lisp
+
+@subsection spam mark
+
+The spam mark (@samp{s}) will be provided as new temporary mark.
+Messages marked by this will be refiled into @code{wl-spam-folder} when
+the action is called for execution. Marked messages will be skipped by
+summary walking in ordinary way.
+
+The spam mark is be put on by spam judgement described later, or by
+invoking @kbd{k m} at any time.
+
+@subsection spam judgment
+
+You can judge spam messages by following ways:
+
+@enumerate
+@item
+Make judgement on execution of auto-refile.
+
+Insert @code{wl-refile-guess-by-spam} to arbitrary position in
+@code{wl-auto-refile-guess-functions} as follows.
+
+@lisp
+@group
+(setq wl-auto-refile-guess-functions
+ '(wl-refile-guess-by-rule
+ wl-refile-guess-by-spam))
+@end group
+@end lisp
+
+In this example, judge spam if it could not decide refile destination by
+@code{wl-refile-rule-alist}.
+
+@item
+Make judgement on entering the summary of specified folder.
+
+Specify the value of @code{wl-spam-auto-check-folder-regexp-list}
+as the list of regular expressions for folder names to be
+automatically judged by spam filter.
+
+@lisp
+(setq wl-spam-auto-check-folder-regexp-list '("\\+inbox"))
+@end lisp
+
+In this example, judgement will be processed when you enter summary of
+the folder whose name contains @samp{+inbox}.
+
+@item
+Make judgement on splitting messages with @code{elmo-split}.
+
+It provides new function @code{spam-p} to be specified as @samp{CONDITION}
+in @code{elmo-split-rule}. This function returns true when the message
+is judged as spam.
+@xref{Split messages}
+
+You can also process learning by the result of judgement. (You would
+better turn on this feature after learning to some extent)
+
+Example follows:
+
+@lisp
+@group
+(setq elmo-split-rule
+ '(((spam-p) "+spam")
+ ;; @r{to learn by the judgement, use following instead}
+ ;((spam-p :register t) "+spam")
+ (t "+inbox"))
+@end group
+@end lisp
+@end enumerate
+
+@subsection spam learning
+
+@code{wl-spam} automatically learn spam with refiling messages.
+
+At first, @code{wl-spam} classifies the folders controlled by Wanderlust
+into following 4 domains by the class of containig messages
+
+@table @samp
+@item spam
+Folders containing messages judged as spam.
+(The folder specified by @code{wl-spam-folder})
+@item good
+Folders containing messages judged as non-spam.
+@item undecide
+Folders containing messages not yet judged. Folders without
+pre-distribution may belong to this domain e.g. @samp{+inbox}.
+(specified by @code{wl-spam-undecided-folder-regexp-list})
+@item ignored
+Foldes have nothing to do with spam processing e.g.
+@code{wl-trash-folder} or @code{wl-draft-folder}. (specified by
+@code{wl-spam-ignored-folder-regexp-list})
+@end table
+
+When you refile messages across different domains, it automatically
+learn messages as @samp{spam} or @samp{non-spam} according to domains
+it belongs before and after.
+
+To put it concretely, it will learn by following rule:
+
+@table @samp
+@item undecide -> spam
+learn as spam.
+@item good -> spam
+learn as spam and cancel previous study as non-spam.
+@item undecide -> good
+learn as non-spam.
+@item spam -> good
+learn as non-spam and cancel previous study as spam.
+@end table
+
+It do not learn anything in other cases.
+
+@subsection Key Bindings
+@cindex Keybind, spam filter
+
+@table @kbd
+@item k m
+@kindex k m (Summary)
+@findex wl-summary-spam
+Put spam mark (@samp{s}) on current message.
+
+@item k c
+@kindex k c (Summary)
+@findex wl-summary-test-spam
+Test current message and put spam mark if judged as spam.
+
+@item k C
+@kindex k C (Summary)
+@findex wl-summary-mark-spam
+Test messages with the mark in @code{wl-spam-auto-check-marks},
+and put spam mark if judged as spam. If it is called with prefix
+argument, test all messages regardless of their marks.
+
+@item k s
+@kindex k s (Summary)
+@findex wl-summary-register-as-spam
+Register current message as spam.
+
+@item k S
+@kindex k S (Summary)
+@findex wl-summary-register-as-spam-all
+Register all messages in the folder as spam.
+
+@item k n
+@kindex k n (Summary)
+@findex wl-summary-register-as-good
+Register current message as non-spam.
+
+@item k N
+@kindex k N (Summary)
+@findex wl-summary-register-as-good-all
+Register all messages in the folder as non-spam.
+
+@item m k
+@kindex m k (Summary)
+@findex wl-summary-target-mark-spam
+Put spam mark (@samp{s}) on messages with the target mark @samp{*}.
+
+@item m s
+@kindex m s (Summary)
+@findex wl-summary-target-mark-register-as-spam
+Register messages with the target mark @samp{*} as spam.
+
+@item m n
+@kindex m n (Summary)
+@findex wl-summary-target-mark-register-as-good
+Register messages with the target mark @samp{*} as non-spam.
+@end table
+
+@subsection Customizable Variables
+
+@table @code
+@item wl-spam-folder
+@vindex wl-spam-folder
+Specify the name of destination folder for the spam messages.
+The initial setting is @samp{+spam}.
+
+@item wl-spam-undecided-folder-regexp-list
+@vindex wl-spam-undecided-folder-regexp-list
+Specify the list of regexp of folder names which contain messages
+not yet decided as spam or non-spam.
+The initial setting is @code{'("inbox")}.
+
+@item wl-spam-ignored-folder-regexp-list
+@vindex wl-spam-ignored-folder-regexp-list
+The initial setting is as follows.
+
+@lisp
+@group
+(list (regexp-opt (list wl-draft-folder
+ wl-trash-folder
+ wl-queue-folder)))
+@end group
+@end lisp
+
+Folders of no effect against spam judgement, specified by the list of
+folder name regular expressions.
+
+@item wl-spam-auto-check-folder-regexp-list
+@vindex wl-spam-auto-check-folder-regexp-list
+Folders to make spam judgement on entering the summary of them,
+specified by the list of folder name regular expressions.
+The initial setting is @code{nil}.
+
+@item wl-spam-auto-check-marks
+@vindex wl-spam-auto-check-marks
+The initial setting is the following list:
+
+@lisp
+@group
+(list wl-summary-new-uncached-mark
+ wl-summary-new-cached-mark)
+@end group
+@end lisp
+
+Messages with mark specified by this variable will be processed
+by whole-folder judgement including auto test by
+@code{wl-spam-auto-check-folder-regexp-list}.
+Persistent marks can be used in this method, but temporary marks cannot.
+
+You can specify the list of marks as the initial setting, or you can
+specify follwing symbol:
+
+@table @code
+@item all
+Process all messages regardless of persistent marks.
+@end table
+@end table
+
+
+@node Spam Filter Processors, , Usage of Spam Filter, Spam Filter
+@section Supported Spam Filters
+@cindex Spam Filter, Bogofilter
+@cindex Spam Filter, Spamfilter
+
+Supported spam filtering libraries are following ones.
+
+@menu
+* bogofilter:: bogofilter
+* spamfilter:: spamfilter.el
+* bsfilter:: bsfilter
+* SpamAssassin:: SpamAssassin
+* Regular Expressions Header Matching:: Header regexp
+@end menu
+
+
+@node bogofilter, spamfilter, Spam Filter Processors, Spam Filter Processors
+@subsection bogofilter
+@cindex bogofilter
+
+bogofilter (@uref{http://bogofilter.sourceforge.net/}) is a spam filter
+implemented by C language.
+
+To use spam filter with bogofilter, write following setting in
+@file{~/.wl} or somewhere else.
+
+@lisp
+@group
+(setq elmo-spam-scheme 'bogofilter)
+@end group
+@end lisp
+
+@subsubsection Customizable Variables
+
+@table @code
+@item elmo-spam-bogofilter-program
+@vindex elmo-spam-bogofilter-program
+The initial setting is @file{bogofilter}.
+Specify the name of executable of bogofilter. If the executable
+is not in your environmental variable @env{PATH}, you should
+set this by full path.
+
+@item elmo-spam-bogofilter-args
+@vindex elmo-spam-bogofilter-args
+The initial setting is @code{nil}.
+Specify arguments to be supplied for bogofilter executable.
+
+@item elmo-spam-bogofilter-database-directory
+@vindex elmo-spam-bogofilter-database-directory
+Specify the directory for statistical database to be used.
+@code{nil} to use default directory (@file{~/.bogofilter}).
+The initial setting is @code{nil}.
+
+@item elmo-spam-bogofilter-max-messages-per-process
+@vindex elmo-spam-bogofilter-max-messages-per-process
+The initial setting is 30. This variable specifies the number of
+messages to be learned by one process.
+
+@item elmo-spam-bogofilter-debug
+@vindex elmo-spam-bogofilter-debug
+The initial setting is @code{nil}.
+If you specify non-nil, the output from @command{bogofilter} is
+stored in the buffer named @code{"*Debug ELMO SPAM Bogofilter*"}.
+@end table
+
+
+@node spamfilter, bsfilter, bogofilter, Spam Filter Processors
+@subsection spamfilter.el
+@cindex spamfilter
+
+@file{spamfilter.el}
+(@uref{http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/}) is a
+spam filtering library implemented by Emacs Lisp.
+
+Corresponding modules will be compiled/installed, if you have
+@file{spamfilter.el} within @code{load-path} when you are to install wl.
+@xref{Install}.
+
+To use @file{spamfilter.el}, write following setting in @file{~/.wl} or
+somewhere else.
+(Of cource, you have to have settings for @file{spamfilter.el} itself)
+
+@lisp
+@group
+(setq elmo-spam-scheme 'spamfilter)
+@end group
+@end lisp
+
+@subsubsection Customizable Variables
+
+@table @code
+@item elmo-spam-spamfilter-corpus-filename
+@vindex elmo-spam-spamfilter-corpus-filename
+The initial setting is @file{~/.elmo/.spamfilter}.
+It specifies the name of corpus file.
+@end table
+
+@node bsfilter, SpamAssassin, spamfilter, Spam Filter Processors
+@subsection bsfilter
+@cindex bsfilter
+
+bsfilter (@uref{http://bsfilter.org/index-e.html}) is a spam filter
+implemented by Ruby language.
+
+To use spam filter with bsfilter, write following setting in
+@file{~/.wl} or somewhere else.
+
+@lisp
+@group
+(setq elmo-spam-scheme 'bsfilter)
+@end group
+@end lisp
+
+@subsubsection Customizable Variables
+
+@table @code
+@item elmo-spam-bsfilter-program
+@vindex elmo-spam-bsfilter-program
+The initial setting is @file{bsfilter}.
+Specify the name of executable of @command{bsfilter}. If the executable
+is not in your environmental variable @env{PATH}, you should
+set this by full path.
+
+@item elmo-spam-bsfilter-args
+@vindex elmo-spam-bsfilter-args
+The initial setting is @code{nil}.
+Specify arguments to be supplied for bsfilter executable.
+
+@item elmo-spam-bsfilter-database-directory
+@vindex elmo-spam-bsfilter-database-directory
+Specify the directory for statistical database to be used.
+@code{nil} to use default directory (@file{~/.bsfilter}).
+The initial setting is @code{nil}.
+
+@item elmo-spam-bsfilter-debug
+@vindex elmo-spam-bsfilter-debug
+The initial setting is @code{nil}.
+If you specify non-nil, the output from @command{bsfilter} is
+stored in the buffer named @code{"*Debug ELMO Bsfilter*"}.
+
+@item elmo-spam-bsfilter-shell-program
+@vindex elmo-spam-bsfilter-shell-program
+The initial setting is @file{ruby}.
+Specify the shell to execute @command{bsfilter}. If the shell is not
+in your environmental variable @env{PATH}, you should set this by full path.
+
+@item elmo-spam-bsfilter-shell-switch
+@vindex elmo-spam-bsfilter-shell-switch
+The initial setting is @code{nil}.
+Specify options to give to the shell executing @command{bsfilter}.
+
+@item elmo-spam-bsfilter-update-switch
+@vindex elmo-spam-bsfilter-update-switch
+The initial setting is @code{"--synchronous-auto-update"}.
+Specify options to give to @command{bsfilter} for learning messages.
+
+@end table
+
+@node SpamAssassin, Regular Expressions Header Matching, bsfilter, Spam Filter Processors
+@subsection SpamAssassin
+@cindex SpamAssassin
+
+SpamAssassin (@uref{http://spamassassin.org/}) is one of the most
+popular spam filtering program implemented on Perl. SpamAssassin
+attempts to identify spam using text analysis and several internet-based
+realtime blacklists. SpamAssassin also uses a Bayesian learning filter
+which enables more accurate spam filtering.
+
+To use @file{SpamAssassin} on Wanderlust, write following setting
+in @file{~/.wl} or somewhere else.
+(Of course, you have to install SpamAssassin beforehand.)
+
+@lisp
+@group
+(setq elmo-spam-scheme 'sa)
+@end group
+@end lisp
+
+@subsubsection Customize Variables
+
+@table @code
+@item elmo-spam-spamassassin-program
+@vindex elmo-spam-spamassassin-program
+The initial setting is @file{spamassassin}.
+Specify the name of executable @command{spamassassin}. If the executable
+is not in your environmental variable @env{PATH}, you should
+set this by full path.
+
+@item elmo-spam-spamassassin-learn-program
+@vindex elmo-spam-spamassassin-learn-program
+The initial setting is @file{sa-learn}.
+Specify the name of the SpamAssassin's Bayesian filtering learner
+program, @command{sa-learn}. If the executable is not in your
+environmental variable @env{PATH}, you should set this by full path.
+
+@item elmo-spam-spamassassin-program-arguments
+@vindex elmo-spam-spamassassin-program-arguments
+The initial setting is @code{'("-e")}.
+Specify the arguments to be supplied for @command{spamassassin} executable.
+You have to specify the argument to exit the program with an error exit code
+when the result is spam. For example, if you want to use @command{spamc}
+ instead of @command{spamassassin}, you should specify @code{'("-c")}.
+
+@item elmo-spam-spamassassin-learn-program-arguments
+@vindex elmo-spam-spamassassin-lern-program-arguments
+The initial setting is @code{nil}.
+Specify the arguments to be supplied for @command{sa-learn}.
+
+@item elmo-spamassassin-debug
+@vindex elmo-spamassassin-debug
+The initial setting is @code{nil}.
+If you specify @code{t}, the output from @command{spamassassin} is
+stored in the buffer named @code{"*Debug ELMO SpamAssassin*"}.
+
+@end table
+
+@node Regular Expressions Header Matching, , SpamAssassin, Spam Filter Processors
+@subsection Regular Expressions Header Matching
+@cindex Regular Expressions Header Matching
+
+Examine if regular expression matches corresponding field in message heaeder,
+and decide spam or not. To use this backend, add following setting to @file{~/.wl}.
+
+@lisp
+@group
+(setq elmo-spam-scheme 'header)
+@end group
+@end lisp
+
+If you want to check fields not included in the default overview
+information, add one into @code{elmo-msgdb-extra-fields}. Then it will
+do examination by the overview information and avoid loading whole
+message body as far as possible.
+
+@subsubsection Customize Variables
+
+@table @code
+@item elmo-spam-header-good-alist
+@vindex elmo-spam-header-good-alist
+The initial setting is the following list:
+
+@lisp
+'(("X-Spam-Flag" . "No"))
+@end lisp
+
+Specify a list of regular expressions to match with header field name
+for making non-spam decision. It takes precedence over
+@code{elmo-spam-header-spam-alist}.
+
+@item elmo-spam-header-spam-alist
+@vindex elmo-spam-header-spam-alist
+The initial setting is the following list:
+
+@lisp
+'(("X-Spam-Flag" . "Yes"))
+@end lisp
+
+Specify a list of regular expressions to match with header field name
+for making spam decision.
+@end table
+
+
+@node Batch Processing, Customization, Spam Filter, Top
+@chapter Batch Processing
+@cindex Batch Processing
+
+You can request wanderlust to do some job on the command line.
+For now, you can invoke prefetching new messages in specified folders.
+
+Specify target folders in @code{wl-batch-prefetch-folder-list} then
+invoke as follows to execute prefetching:
+
+@group
+emacs -batch -l wl-batch -f wl-batch-prefetch
+@end group
+
+@section Customize Variables
+
+@table @code
+@item wl-batch-prefetch-folder-list
+@vindex wl-batch-prefetch-folder-list
+Target folders of prefetching by @code{wl-batch-prefetch}, specified as
+a list of folder names.
+@end table
+
+
+@node Customization, Migration, Batch Processing, Top
@chapter Customizing Wanderlust
@cindex Customization
Place @file{util/im-wl.el} on the @code{load-path} and do the following
settings.
-If @command{imput} is on the @code{exec-path} at the installation,
-@file{im-wl.el} is byte-compiled and installed. @xref{Install}.
-
@lisp
@group
(autoload 'wl-draft-send-with-imput-async "im-wl")
@subsection Draft for Replay
@vindex wl-draft-reply-with-argument-list
@vindex wl-draft-reply-without-argument-list
-@vindex wl-draft-reply-myself-with-argument-list
-@vindex wl-draft-reply-myself-without-argument-list
If you type @kbd{a} in the Summary Buffer, a draft for reply is prepared.
The addressee for the draft is decided by following rules.
@end lisp
-Note: To set the behavior when you reply to the message written by yourself,
-use @code{wl-draft-reply-myself-without-argument-list} and
-@code{wl-draft-reply-myself-with-argument-list} instead of them.
-
@node Thread Format, User-Agent Field, Draft for Reply, Advanced Settings
@subsection Appearance of Threads
@item wl-draft-folder
@vindex wl-draft-folder
The initial setting is @samp{+draft}. It is the folder to which drafts are
-saved. It must be a localdir folder.
+saved. It must be a writable folder.
+Note that variable settings applied by @code{wl-draft-config-exec} is saved
+under @code{elmo-msgdb-directory}. That is to say, if you specified remote
+folder as @code{wl-draft-folder}, variable settings which are applied by
+@code{wl-draft-config-exec} before saving the draft will not affect on the
+draft buffer on another host by invoking @code{wl-summary-reedit}.
@item wl-trash-folder
@vindex wl-trash-folder
The initial setting is @code{t}.
If non-nil, you are asked for confirmation when mail is sent.
+@item wl-default-sync-range
+@vindex wl-default-sync-range
+The initial setting is @samp{update}.
+Default update range of the summary. You can specify
+@samp{all}, @samp{update}, @samp{rescan} or @samp{no-sync}.
+See description of @code{wl-summary-sync} for the meaning of ranges.
+
@item wl-folder-sync-range-alist
@vindex wl-folder-sync-range-alist
The initial setting is the alist shown below:
@noindent
This is an associative list of regular expressions of folder names and
update range of the summary. Update range is one of the @samp{all},
-@samp{update}, @samp{rescan}, @samp{rescan-noscore}, @samp{first} and
-@samp{last}. If a folder do not match, @samp{update} is used.
+@samp{update}, @samp{rescan} or @samp{no-sync}. If the folder do not
+match any of them, the value of @code{wl-default-sync-range} is used
+(@samp{update} by default).
+See description of @code{wl-summary-sync} for the meaning of ranges.
@item wl-ask-range
@vindex wl-ask-range
start.
It is ignored if @code{wl-folder-init-load-access-folders} is non-nil.
-@item wl-delete-folder-alist
-@vindex wl-delete-folder-alist
+@item wl-dispose-folder-alist
+@vindex wl-dispose-folder-alist
The initial setting is the alist shown below:
@lisp
@group
-(("^-" . remove))
+(("^-" . remove)
+ ("^@" . remove))
@end group
@end lisp
@noindent
-This list determines disposition of messages with delete marks.
+This list determines disposition of messages with disposal marks.
Each item in the list is a folder and destination; you can specify any
one of the following in the place of destination:
@code{trash} or others : moves the messages to @code{wl-trash-folder}.
@end example
-@item wl-refile-policy-alist
-@vindex wl-refile-policy-alist
-The initial setting is the list shown below:
-
-@lisp
-@group
-(("^[-=]" . copy)
- (".*" . move))
-@end group
-@end lisp
-
-@noindent
-This list determines whether messages with re-file marks are moved or
-copied. Each item in the list is a cons cell of a folder and
-@code{copy} or @code{move}.
-
@item wl-x-face-file
@vindex wl-x-face-file
The initial setting is @file{~/.xface}.
(Not yet written)
-@node Terminology, Mailing List, Customization, Top
+
+@node Migration, Terminology, Customization, Top
+@chapter Switch from older version of Wanderlust
+
+
+@node Terminology, Mailing List, Migration, Top
@chapter Terminology around Wanderlust
@cindex Terminology
2001 7/04 Released 2.6.0 stable.
8/21 wl-addrmgr by Kitamoto-san.
12/27 Released 2.8.1 stable.
+2002 12/11 Released 2.10.0 stable.
@end example
See @file{ChangeLog} for details.