update
[elisp/wanderlust.git] / doc / wl.texi
index 3bd88d2..5efa585 100644 (file)
@@ -119,6 +119,7 @@ This manual is for Wanderlust @value{VERSION}.
 * Disconnected Operations::  Off-Line management
 * Expire and Archive::       Automatic expiration and archiving of messages
 * Scoring::                  Score of the messages
+* Split messages::           Splitting messages
 * Address Book::             Management of Address Book
 * Customization::            Customizing Wanderlust
 * Terminology::              Terminologies
@@ -210,6 +211,7 @@ here.
 * Minimal Settings::  @file{.emacs} setup
 * Folder Definition:: Folder definition
 * Start Wanderlust::  Starting Wanderlust
+* Overview::          Basic components of Wanderlust
 @end menu
 
 
@@ -253,7 +255,7 @@ may help you.}.
 Recommended combination of APEL, FLIM and SEMI are following:
 
 @itemize @minus
-@item APEL 10.3, FLIM 1.14.3 and SEMI 1.14.3
+@item APEL 10.4, FLIM 1.14.4 and SEMI 1.14.4
 @end itemize
 
 You can also use many other FLIM/SEMI variants. Combination of the
@@ -261,8 +263,8 @@ latest versions should work.  For example, the following combination are
 confirmed to work.
 
 @itemize @minus
-@item APEL 10.2, Chao 1.14.1, REMI 1.14.2
-@item APEL 10.2, SLIM 1.14.3, EMY 1.13.9
+@item APEL 10.4, SLIM 1.14.9, SEMI 1.14.4
+@item APEL 10.4, CLIME 1.14.5, EMIKO 1.14.1
 @end itemize
 
 You have to re-install Wanderlust if you upgraded APEL, FLIM or SEMI.
@@ -363,9 +365,10 @@ In this case, either add destination directories of custom, APEL, FLIM
 and SEMI to environmental variable @env{EMACSLOADPATH}, or define
 @code{load-path} in @file{WL-CFG} in extracted directory.
 
-If you want to use BBDB, then the necessary modules are byte-compiled
-and installed when BBDB directory is added to @code{load-path}.
-@xref{BBDB}.
+If you want to handle shimbun folders or to use BBDB, add directory
+where emacs-w3m or BBDB is installed to @code{load-path}. Then necessary
+modules will be byte-compiled and installed.
+@xref{Shimbun Folder}, @xref{BBDB}.
 
 @subsection @file{WL-CFG}
 
@@ -488,9 +491,6 @@ The minimal requirement for settings is as the following.
 
 @lisp
 @group
-;; @r{The setting to use SEMI}
-(require 'mime-setup)
-
 ;; @r{autoload configuration}
 ;; @r{(Not required if you have installed Wanderlust as XEmacs package)}
 (autoload 'wl "wl" "Wanderlust" t)
@@ -516,9 +516,8 @@ because you can't write them in @file{.emacs}
 (if you write it to @file{.emacs}, you'll get an error).
 @xref{Highlights}.
 
-All above described settings except @samp{(require 'mime-setup)} and autoload
-configuration can be written in
-@file{~/.wl}).
+All above described settings except autoload configuration can be written
+in @file{~/.wl}).
 
 @subsection @code{mail-user-agent}
 @cindex Default Mailer
@@ -526,13 +525,13 @@ configuration can be written in
 @vindex mail-user-agent
 @findex compose-mail
 
-If you write following setting in you @file{.emacs}, you can
+If you write following setting in your @file{~/.emacs}, you can
 start Wanderlust draft mode by typing @kbd{C-x m} (@code{compose-mail}).
 This means it enables you to run Wanderlust as a default mail composer
  of Emacsen.
 
 It is effective only when your Emacs can define @code{mail-user-agent}.
-@xref{Mail Methods, , ,emacs-ja, The Emacs Editor}.
+@xref{Mail Methods, , ,emacs, The Emacs Editor}.
 
 @lisp
 @group
@@ -613,15 +612,15 @@ There are two types of groups. One is like @samp{Emacsen} from above
 example which the user chooses his favorite folders as a group.
 
 The other one is @dfn{access group} like @samp{+ /} from above example.
-It makes all the sub-folders in a folder to a group.  (It differs from
-the type of the folder. For example, @samp{+} followed by @samp{/}
-makes entire MH sub-directories to one group)
+It collects all sub-folders in the folder to make a group.  (Its
+behavior differs by the type of the folder. For example, @samp{+}
+followed by @samp{/} makes entire MH sub-directories to one group)
 
 This behavior is better understood if you try it and confirmed the
 function first. You can write and try a small folder definition, so you
 will know the idea of the folder function before writing the real one.
 
-@node Start Wanderlust,  , Folder Definition, Start Me Up
+@node Start Wanderlust, Overview, Folder Definition, Start Me Up
 @section Start Wanderlust
 @cindex Start Wanderlust
 
@@ -633,31 +632,37 @@ M-x wl
 @end example
 
 @noindent
-After initialization, Folder Mode which shows the list of folders will appear.
-That means the folders you defined in the @file{~/.folders} are listed
+After initialization, Folder Mode which shows the list of folders will
+appear. That means the folders you defined in the @file{~/.folders} are
+listed.
+
 If you start Wanderlust with prefix argument like @kbd{C-u M-x wl}, you
 can skip folder checking.
 
+
+@node Overview,  , Start Wanderlust, Start Me Up
+@section Overview
+@cindex Overview
+
 Basically, you will handle messages in wanderlust while you come and go
-from/to each of the following buffers.
+from/to each of the following buffers.  Details of each ones are
+explained in following chapters.
 
 @table @samp
 @item Folder Buffer
 You can see the list of folders. You can select some folder and go into the summary
 of it. You can subscribe new folder or edit subscription list.
 @item Summary Buffer
-You can see the list of messages in the folder. You can select message and view its
-contents, and reply to some message. You can delete ones or move ones to another
-folder.
+You can see the list of messages in the folder. You can select message
+and view its contents, and reply to some message. You can delete ones or
+move ones to another folder.
 @item Message Buffer
-You can see the contents of the message. You can save part to disk or open in external
-programs.
+You can see the contents of the message. You can save part to disk or
+open in external programs.
 @item Draft Buffer
 You can edit message.
 @end table
 
-Details of each ones are explained later.
-
 
 @node Folders, Folder, Start Me Up, Top
 @chapter Wanderlust's folders
@@ -792,47 +797,24 @@ Example:
 @pindex ucs-conv
 
 You can use international mailbox names in @var{mailbox} part, if you
-are using Emacs which can treat unicode and
+are using Emacs with UTF-7 support and
 @code{elmo-imap4-use-modified-utf7} is set to non-nil value (default
 value is @code{nil}).
 
-Currently, following Emacsen can treat unicode.
+Currently, Mule-UCS package is required to use UTF-7.
+Mule-UCS works on following Emacsen.
 
 @itemize @bullet
-@item Emacs 20.3 or later + Mule-UCS
+@item Emacs 20.3 or later
+@item XEmacs 21.2.37 or later
+@end itemize
 
-If you installed Mule-UCS package, Emacs can treat unicode.
 You can obtain Mule-UCS package from following URL.
 
 @example
 ftp://ftp.m17n.org/pub/mule/Mule-UCS/
 @end example
 
-@item XEmacs 21.2.13 or later + ucs-conv package
-
-By default, XEmacs 21 cannot treat unicodes, but if you installed
-ucs-conv package, it can.
-You can obtain ucs-conv package from following anonymous CVS.
-
-@example
-@group
-cvs -d :pserver:anonymous@@cvs.m17n.org:/cvs/root login
-Password: @var{NULL} (Just enter return key)
-cvs -d :pserver:anonymous@@cvs.m17n.org:/cvs/root checkout ucs-conv
-@end group
-@end example
-
-You also need utf7 conversion programs, @command{u7tou8} and
-@command{u8tou7} to use international mailbox name in the current
-XEmacs.  These programs are included in the UTF7 package which can be
-obtained from following URL.
-
-@example
-ftp://ftp.ifcss.org/pub/software/unix/convert/utf7.tar.gz
-@end example
-@end itemize
-
-
 @node NNTP Folder, MH Folder, IMAP Folder, Folders
 @section NNTP Folder
 @cindex @samp{-}
@@ -2529,7 +2511,9 @@ Each line displays:
 @end example
 
 @noindent
-You cannot change this in the current version.
+If you want to know how to change the format for this, please refer
+the section format of Summary lines.
+@xref{Summary View}.
 
 @var{Message number} is the message's unique number in the folder. In
 the NNTP folder, it is article number, in the IMAP folder, it is UID and
@@ -2689,14 +2673,16 @@ message then you have the reconstructed thread.
 @subsection Cache File
 
 The messages which have to access via network (e.x. IMAP, NNTP folder)
-are cached as a local file.  The cache file is saved under the directory
+are cached as a local file so as to save network traffic or to enable
+off-line operation.  The cache file is saved under the directory
 @file{~/.elmo/cache}.  To expire cache, type @kbd{M-x
 elmo-cache-expire-by-size}.  The command deletes cache files to the
 specified size by the order of last accessed time.
 
 @subsection Buffer Cache and Prefetching
 
-The messages that are read are kept in the cache buffer.  It is called
+The messages that are read are kept in the cache buffer so as to make
+the behavior fast when you are to read the message again.  It is called
 `buffer cache'. The number of cache buffer is specified by
 @code{wl-message-buffer-cache-size}.
 
@@ -2959,6 +2945,22 @@ example.
 @end group
 @end lisp
 
+@subsection on the format for sender name
+
+The format string @samp{%f} displays the return value of the function specified
+by @code{wl-summary-from-function}. If you use the function
+@code{wl-summary-default-from} (default), it displays sender name ordinarily,
+while displays the recipient names if the folder name matches with
+@code{wl-summary-showto-folder-regexp} and the sender is yourself.
+If the value of @code{wl-use-petname} is Non-nil, it uses petname to display.
+
+For example, to display recipient names for the message in @samp{+backup} if
+its sender is yourself, set up as follows.
+
+@lisp
+(setq wl-summary-showto-folder-regexp "^\\+backup$")
+@end lisp
+
 
 @node Key Bindings of Summary, Variables of Summary, Summary View, Summary
 @section Key bindings
@@ -3181,6 +3183,8 @@ Redisplay the message at current cursor point without MIME analysis.
 If the message at current cursor point has
 encapsulates multiple messages using MIME,
 de-capsulate and extract them on the current folder.
+If it is invoked in non-writable folder or it is called with prefix
+argument, it asks the destination folder.
 (@code{wl-summary-burst})
 
 @item @@
@@ -3844,11 +3848,6 @@ Width of summary line. If @code{nil}, summary line's width is as is.
 The initial setting is 17.
 Width of sender part of summary line.
 
-@item wl-summary-subject-length-limit
-@vindex wl-summary-subject-length-limit
-The initial setting is @code{nil}. Specify the limit for the length of
-subject parts in summary. @code{nil} means unlimited.
-
 @item wl-summary-indent-length-limit
 @vindex  wl-summary-indent-length-limit
 The initial setting is 46.
@@ -4031,7 +4030,7 @@ mode buffer.
 @item l
 @kindex l (Message)
 @findex wl-message-toggle-disp-summary
-Toggles display of Summary mode buffer.
+Toggles display of Summary buffer.
 (@code{wl-message-toggle-disp-summary})
 
 @item Button-2
@@ -4054,6 +4053,14 @@ moves to the previous message.
 Scrolls the message forward.  When the bottom of the message is hit,
 moves to the next message.
 (@code{wl-message-wheel-up})
+
+@item D
+@kindex D (Message)
+@findex wl-message-delete-current-part
+Delete the part under cursor. In fact it appends modified message to
+the current folder then moves old one to trash folder. Therefore the
+message number will be changed.
+(@code{wl-message-delete-current-part})
 @end table
 
 @section Customizable Variables
@@ -4276,9 +4283,6 @@ In the cdr part of a cons, not only a variable but also an elisp
 expression can be specified as is.  If the car part is a header field
 and the cdr part is @code{nil}, the field will be deleted.
 
-If you want to use name of parent folder, you can refer the buffer local
-variable @code{wl-draft-parent-folder}.
-
 See the next example as well:
 
 @lisp
@@ -4299,6 +4303,22 @@ example, and when it matches the header being replied.  It is ignored
 when there is no buffer being replied, like after @code{wl-draft} was
 invoked.
 
+If you want to use name of parent folder, you can refer the buffer local
+variable @code{wl-draft-parent-folder}. In the following example, Wanderlust
+changes From according to the folder name of the summary in which the draft
+was invoked.
+
+@lisp
+@group
+(setq wl-draft-config-alist
+      '(((string-match \".*@@domain1$\" wl-draft-parent-folder)
+         (\"From\" . \"user@@domain1\"))
+        ((string-match \".*@@domain2$\" wl-draft-parent-folder)
+         (\"From\" . \"user@@domain2\"))))
+@end group
+@end lisp
+
+
 Note that @code{wl-draft-config-alist} is applied only once when
 @code{wl-draft-send-and-exit} or @code{wl-draft-send} is invoked.
 Therefore, if you want to apply @code{wl-draft-config-alist} again after
@@ -4446,7 +4466,10 @@ http://www.iecc.com/pop-before-smtp.html
 @item C-c C-y
 @kindex C-c C-y (Draft)
 @findex wl-draft-yank-original
-Cites the content of the current message buffer.
+Cites the content of the current message buffer (the part under cursor).
+If the region is active, cites the region (it affects only if
+@code{transient-mark-mode} (on GNU Emacs) or @code{zmacs-regions}
+(on XEmacs) is Non-nil).
 (@code{wl-draft-yank-original})
 
 @item C-c C-p
@@ -4773,6 +4796,12 @@ or @samp{Cc:} field, do not insert @samp{Bcc:} or @samp{Fcc:} field.
 The initial setting is @code{nil}.
 This is the SMTP server name for mail transmission.
 
+@item wl-smtp-posting-port
+@vindex wl-smtp-posting-port
+The initial setting is @code{nil}.
+This is the SMTP port number for mail transmission.
+If @code{nil}, default SMTP port number (25) is used.
+
 @item wl-smtp-posting-user
 @vindex wl-smtp-posting-user
 The initial setting is @code{nil}.
@@ -4986,10 +5015,12 @@ are reflected in the servers via network.
 @node Send Messages off-line, Re-file and Copy queue, Enable Operations, Enable Operations
 @subsection Transmission of Messages
 
-You can send mail/news messages off-line (if you are using
-@file{im-wl.el}, it is irrelevant).  Messages sent off-line are
-accumulated in the queue folder, @samp{+queue}.  These messages are
-transmitted at once when Wanderlust becomes on-line.
+You can proceed sending operation for  mail/news messages while you are
+off-line, then it will be reserved for sending (if you are using
+@file{im-wl.el}, it is irrelevant).
+Messages reserved for sending while off-line are accumulated in the
+queue folder, @samp{+queue}. These messages are transmitted at once when
+Wanderlust becomes on-line.
 
 You can visit @samp{+queue} in the off-line state and confirm content of
 messages in the queue.  You can also remove messages.  Removed messages
@@ -5792,7 +5823,7 @@ Needless to say, you can use your own function.
 @end table
 
 
-@node Scoring, Address Book, Expire and Archive, Top
+@node Scoring, Split messages, Expire and Archive, Top
 @chapter Score of the Messages
 @cindex Scoring
 @c @cindex Kill File
@@ -6290,7 +6321,105 @@ pop3                      N     E     E     E
 @end example
 
 
-@node Address Book, Customization, Scoring, Top
+@node Split messages, Address Book, Scoring, Top
+@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
+@file{~/.emacs} at first.
+
+@lisp
+(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
+@end lisp
+
+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).
+
+We will describe how to specify the rule. First of all, see following
+example, please.
+
+@lisp
+@group
+(setq elmo-split-rule
+      ;; @r{Store messages from spammers into @samp{+junk}}
+      '(((or (address-equal from "i.am@@spammer")
+            (address-equal from "dull-work@@dull-boy")
+            (address-equal from "death-march@@software")
+            (address-equal from "ares@@aon.at")
+            (address-equal from "get-money@@richman"))
+        "+junk")
+       ;; @r{Store messages from mule mailing list into @samp{%mule}}
+       ((equal x-ml-name "mule") "%mule")
+       ;; @r{Store messages from wanderlust mailing list into @samp{%wanderlust}}
+       ;; @r{and continue evaluating following rules}
+       ((equal x-ml-name "wanderlust") "%wanderlust" continue)
+       ;; @r{Store messages from Yahoo user into @samp{+yahoo-@{username@}}}
+       ((match from "\\(.*\\)@@yahoo\\.com")
+        "+yahoo-\\1")
+       ;; @r{Store unmatched mails into @samp{+inbox}}
+       (t "+inbox")))
+@end group
+@end lisp
+
+The basic unit of the rule is a combination like
+
+@lisp
+(@samp{CONDITION} @samp{FOLDER} [@code{continue}])
+@end lisp
+
+The 1st element @samp{CONDITION} is a balanced expression (sexp). Its
+grammar will be explained below. The 2nd element @samp{FOLDER} is the
+name of the folder to split messages into. When the 3rd element
+@code{continue} is specified as symbol, evaluating rules is not stopped
+even when the condition is satisfied.
+
+The grammar for @samp{CONDITION} is as follows. See example above to
+learn how to write the condition practically.
+
+@enumerate
+@item
+Functions which accept argument @samp{FIELD-NAME} and @samp{VALUE}.
+(@samp{FIELD-NAME} is a symbol that describes the field name)
+
+@table @code
+@item @code{equal}
+True if the field value equals to @samp{VALUE}.
+Case of the letters are ignored.
+@item @code{match}
+True if the field value matches to VALUE.
+@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
+from matching @code{\(\)} patterns in the previous @samp{VALUE}.
+@item @code{address-equal}
+True if one of the addresses in the field equals to
+@samp{VALUE}. Case of the letters are ignored.
+@item @code{address-match}
+True if one of the addresses in the field matches to
+@samp{VALUE}.
+@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
+from matching @code{\(\)} patterns in the previous @samp{VALUE}.
+@end table
+
+@item
+Functions which accept any number of arguments.
+
+@table @code
+@item @code{or}
+True if one of the argument returns true.
+@item @code{and}
+True if all of the arguments return true.
+@end table
+
+@item
+A symbol.
+
+When a symbol is specified, it is evaluated.
+@end enumerate
+
+
+@node Address Book, Customization, Split messages, Top
 @chapter Address Book
 @cindex Address Book