X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=doc%2Fwl.texi;h=e29f214fd659371da0c1f6da55bee99b2d83af33;hb=3095c8a8f037224fe6307aac0230f30ace665b77;hp=bfc41fd8a6c7b0fe2124b04d2418124be64cce5a;hpb=98e1238dbf25518bc334e7b61ec54d32f87fc002;p=elisp%2Fwanderlust.git diff --git a/doc/wl.texi b/doc/wl.texi index bfc41fd..e29f214 100644 --- a/doc/wl.texi +++ b/doc/wl.texi @@ -118,11 +118,9 @@ 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 * Spam Filter:: Spam filtering -* Batch Processing:: Invoke commands in batch mode -* Customization:: Customizing Wanderlust +* Advanced Issues:: Advanced Issues * Migration:: Switch from older version of Wanderlust * Terminology:: Terminologies * Mailing List:: Wanderlust mailing list @@ -673,9 +671,10 @@ This chapter describes the folder types which Wanderlust is able to handle. Wanderlust uses ELMO as it's interface, so you can use every folder types supported by ELMO. -As of version @value{VERSION}, 14 types of folders are predefined. These +As of version @value{VERSION}, 15 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. +Shimbun, Namazu, Multi, Filter, Pipe, File, Access and Internal folder +types. @menu * IMAP Folder:: @samp{%} -- IMAP folder @@ -692,6 +691,7 @@ Shimbun, Namazu, Multi, Filter, Pipe, Internal and File folder types. * Pipe Folder:: @samp{|} -- Pipe folder * Internal Folder:: @samp{'} -- Internal folder * File Folder:: -- File folder +* Access Folder:: -- Access folder @end menu @@ -1495,8 +1495,8 @@ Example: @item Date filter: @samp{since:@var{date}}, @samp{before:@var{date}} -since: only messages arrived since @var{date} are picked. -before: only messages arrived before @var{date} are picked. +since: only messages arrived since @var{date} are picked (@var{date} is included). +before: only messages arrived before @var{date} are picked (@var{date} is not included). You can specify following as @var{date}. @@ -1551,12 +1551,18 @@ You can specify following flag names: unread -> unread important -> important answered -> replied +forwarded -> forwarded digest -> unread or important -any -> unread or important or replied +any -> unread or replied or forwarded or global-flag. @end group @end example -You can also use flags which you have set as global flag. +You can also use flags which you have set as `global-flag'. global-flag +is a flag which has arbitrary name. You can put global-flag on messages +by invoking @code{wl-summary-set-flags} (Key @key{F}). By default, +@samp{important} flag is prepared. You can view messages with +global-flag by visiting the subfolder of @samp{'flag} folder. + @xref{Internal Folder}. Example: @@ -1723,7 +1729,7 @@ it is treated as @samp{important} flag is specified. 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}. +@xref{Usage of Summary Mode}. 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 @@ -1743,10 +1749,53 @@ the name of the subdirectories of the cache directory (@file{~/.elmo/cache}). -@node File Folder, , Internal Folder, Folders +@node File Folder, Access Folder, Internal Folder, Folders @section File folder @cindex File Folder +File Folder gives the view for local file system. +The one File Folder corresponds to the one directory. + +Format: + +@example +@samp{file:} @var{Path-of-the-directory} +@end example + +Example: + +@example +@group +file:~/work -> @file{~/work} +file:/etc -> @file{/etc} +@end group +@end example + + +@node Access Folder, , File Folder, Folders +@section Access folder +@cindex Access Folder + +A folder to access virtual folder which collects messages from a root +folder and subfolders of one. The add and remove of the subfolder is +automatically reflected. + + +Format: + +@example +@samp{access:} @var{root-folder} +@end example + +Example: + +@example +@group +access:%INBOX -> All subfolders of IMAP mailbox "inbox". +access:'cache -> All of 'cache folder +@end group +@end example + @node Folder, Summary, Folders, Top @chapter Folder mode @@ -1911,22 +1960,26 @@ current cursor point. @item N @kindex N (Folder) +@findex wl-folder-next-unread Jump cursor to the folder which have unread messages on the downward from current cursor point. (@code{wl-folder-next-unread}) @item p @kindex p (Folder) +@findex wl-folder-prev-entity Move cursor to the folder on the previous line. (@code{wl-folder-prev-entity}) @item n @kindex n (Folder) +@findex wl-folder-next-entity Move cursor to the folder on the next line. (@code{wl-folder-next-entity}) @item J @kindex J (Folder) +@findex wl-folder-jump-folder Jump to the folder specified by the user input. (@code{wl-folder-jump-folder}) @@ -1981,44 +2034,57 @@ Search the folders with the condition specified. All unread folder is opened. (@code{wl-folder-open-all-unread-folder}) +@item x +@kindex x (Folder) +@findex wl-execute-temp-marks +Execute marks in summary buffers. @xref{Sticky Summary}. +(@code{wl-execute-temp-marks}) + @item / @kindex / (Folder) @findex wl-folder-open-close Folder group is opened/closed. -(@code{wl-thread-open-close}) +(@code{wl-folder-open-close}) @item [ @kindex [ (Folder) +@findex wl-folder-open-all All folder group is opened. (@code{wl-folder-open-all}) @item ] @kindex ] (Folder) +@findex wl-folder-close-all All folder group is closed. (@code{wl-folder-close-all}) @item q @kindex q (Folder) +@findex wl-exit Quit Wanderlust. (@code{wl-exit}) @item z @kindex z (Folder) +@findex wl-folder-suspend Suspend Wanderlust. (@code{wl-folder-suspend}) @item M-s @kindex M-s (Folder) +@findex wl-save Save current folder status. (@code{wl-save}) @item M-t @kindex M-t (Folder) +@findex wl-toggle-plugged Toggle Wanderlust's offline/online status. (@code{wl-toggle-plugged}) @item C-t @kindex C-t (Folder) +@findex wl-plugged-change Start Wanderlust's plug-status manager. (@code{wl-plugged-change}) @end table @@ -2166,7 +2232,8 @@ You can append, delete, edit folders from folder mode. @subsubsection Append Folder -@kbd{m a} appends new folder to the folder mode. +@kbd{m a} appends new folder to your folder list. If you enter non-existent +folder, it will ask you to create a new one. @kbd{m g} appends new folder group. To append new folder to this group, firstly open it, then execute append command in the next line. @@ -2283,7 +2350,8 @@ one stroke key binding. @item m a @kindex m a (Folder) @findex wl-fldmgr-add -Insert a folder. +Add specified folder to your folder list . If you enter non-existent +folder, create it after confirmation. (@code{wl-fldmgr-add}) @item + @@ -2596,7 +2664,7 @@ message has empty subject field. @subsection Temporary Marks @cindex Mark, Temporary -There are four temporary marks, +There are seven temporary marks, @samp{*}, @samp{d}, @samp{D}, @samp{o}, @samp{O}, @samp{i} and @samp{~}. Temporary marks indicates message operations. @@ -2637,8 +2705,8 @@ Your answer is printed in the summary line. @subsection Persistent Marks -There are five persistent marks, @samp{N}, @samp{?}, @samp{U}, @samp{!}, -@samp{u}, @samp{A}, @samp{&} and @samp{$}. +There are ten persistent marks, @samp{!}, @samp{N}, @samp{n}, @samp{U}, +@samp{u}, @samp{A}, @samp{a}, @samp{F}, @samp{f} and @samp{$}. The persistent mark indicates the message's status and it is saved. Each persistent mark indicates: @@ -2646,18 +2714,27 @@ Each persistent mark indicates: @table @samp @item N It is new message. -@item ? -It is new but cached message. +@item n +It is new message. It differs from @samp{N} that message with @samp{n} +is already cached. @item U It is unread message. -@item ! -It is unread but cached message. @item u -It is read but it is not cached. +It is unread message. It differs from @samp{U} that message with @samp{u} +is already cached. +@item ! +It is message already read. It differs from message without mark that +message with @samp{!} is not cached yet. @item A It is already replied message. -@item & -It is already replied but cached message. +@item a +It is already replied message. It differs from @samp{A} that message +with @samp{a} is already cached. +@item F +It is already forwarded message. +@item f +It is already forwarded message. It differs from @samp{F} that message +with @samp{f} is already cached. @item $ 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 @@ -2671,10 +2748,10 @@ If the message is read and cached (or local message),there are no persistent mark. @end table -@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. +@samp{N}, @samp{U}, @samp{!}, @samp{A}, @samp{F} 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 @@ -2957,8 +3034,19 @@ An example follows. @end group @end lisp -Where the number set the column number of the field (for negative value, -filled from right) +Where the number set the column number of the field. If negative value, +the column is filled from right. If the number begins with @samp{0}, +@samp{0} is used for filling columns instead of @samp{ }. + +Example: + +@example +@group +%5n -> `1 ' +%-05n -> `00001' +@end group +@end example + Major control strings defined by @code{wl-summary-line-format-spec-alist} are displayed in the following list. @@ -2966,6 +3054,8 @@ are displayed in the following list. @example @group %n message number +%T temporary mark +%P persistent mark %Y year %M month %D day @@ -2980,14 +3070,15 @@ are displayed in the following list. %S size %c +number-of-children: (display only for opened thread) %C [+number-of-children] (display only for opened thread) -%T temporary mark (mandatory) -%P persistent mark (mandatory) +%# mailing list information (`(' ML-name [ ` ' ML-number ] `)') +%l number in the mailing list +%@@ `@@' only if the first MIME part is multipart/mixed +%~ ` ' only if previous column is empty @end group @end example -@code{wl-summary-line-format} must contain temporary mark (@samp{%T}) -and persistent mark (@samp{%P}). Furthermore, these marks must appear at -the constant column. For example, if you specify @samp{%T} or +The temporary mark (@samp{%T}) and persistent mark (@samp{%P}) must +appear at the constant column. For example, if you specify @samp{%T} or @samp{%P} after the @samp{%t}, which changes its length by thread position, marks are not treated correctly. @@ -3098,11 +3189,12 @@ Proceed reading a message at the current cursor point. @item . @kindex . (Summary) @findex wl-summary-redisplay -Redisplay a message at the current cursor point. -If this command is called with prefix argument, -Redisplay message regardless of the message cache (message is re-loaded -from source). -(@code{wl-summary-redisplay}) +Redisplay a message at the current cursor point with default display +type. If this command is called with prefix argument, reload and redisplay +message regardless of the message cache. +If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u .}, +reload and redisplay message with current display type regardless of the +message cache. (@code{wl-summary-redisplay}) @item < @kindex < (Summary) @@ -3126,10 +3218,13 @@ Display the previous page of the message at the current cursor point. @item @key{RET} @kindex @key{RET} (Summary) -@findex wl-summary-next-line-content +@findex wl-summary-enter-handler Display the next line of the message at the current cursor point. -Display the message at the current cursor point if it is not displayed yet. -(@code{wl-summary-next-line-content}) +Display the message at the current cursor point if it is not displayed +yet. (@code{wl-summary-next-line-content}) If prefix argument is +specified, message is scrolled up by one line. +(@code{wl-summary-prev-line-content}) If prefix argument is numeric, +cursor is jumped to the message with specified number. @item - @itemx M-@key{RET} @@ -3144,6 +3239,7 @@ Display the message at the current cursor point if it is not displayed yet. @kindex / (Summary) @findex wl-thread-open-close Toggle open or close the thread at the current cursor point. +With prefix argument, open all children threads. (@code{wl-thread-open-close}) @item [ @@ -3296,15 +3392,39 @@ list folder (refile destination), guess @samp{To:} field and completed @item H @kindex H (Summary) -@findex wl-summary-redisplay-all-header -Redisplay the message at current cursor point with all header fields. -(@code{wl-summary-redisplay-all-header}) +@findex wl-summary-toggle-all-header +Toggle display type between all and partial header fields and redisplay +the message at current cursor point. If this command is called with +prefix argument, reload and redisplay message regardless of the message cache. +If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u H}, +set default display type of summary by current display type of header fields. +(@code{wl-summary-toggle-all-header}) @item M @kindex M (Summary) -@findex wl-summary-redisplay-no-mime -Redisplay the message at current cursor point without MIME analysis. -(@code{wl-summary-redisplay-no-mime}) +@findex wl-summary-toggle-mime +Toggle display type for MIME analysis and redisplay the message at +current cursor point. A change is performed in the order set as +@code{wl-summary-display-mime-mode-list}. If this command is called +with numeric prefix argument, it switch directly as follows. + +@example +@group +1: Enable MIME analysis. +2: Enable MIME analysis only for header fields. +3: Disable MIME analysis. +@end group +@end example + +If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u +M}, set default display type of summary by current display type of MIME +analysis. (@code{wl-summary-toggle-mime}) + +@item C-c C-f +@kindex C-c C-f (Summary) +@findex wl-summary-toggle-header-narrowing +Toggle header body narrowing of the message at current cursor point. +(@code{wl-summary-toggle-header-narrowing}) @item B @kindex B (Summary) @@ -3416,6 +3536,8 @@ update-entirely Update the difference between informations in present rescan Redisplay summary by rescanning present msgdb. rescan-noscore Redisplay summary by rescanning present msgdb. Display messages killed by score, too. +rescan-thread Redisplay summary by rescanning present msgdb. + Reconstruct thread, too. cache-status Sync the all marks with the real status of cache. mark Update marks. no-sync Do nothing. @@ -3431,7 +3553,9 @@ last:NUM Move to the filter folder(partial filter). @kindex S (Summary) @findex wl-summary-sort Sort summary order. -You can sort by @samp{date}, @samp{from}, @samp{number} and @samp{subject}. +You can sort by @samp{date}, @samp{from}, @samp{number}, @samp{subject}, +@samp{size} and @samp{list-info}. +With prefix argument, sort summary lines into descending order. (@code{wl-summary-sort}) @item T @@ -3473,6 +3597,10 @@ Jump to the message which is displayed last. @item ? @kindex ? (Summary) Put @samp{*} mark on the messages that satisfies the specified condition. +If messages already have @samp{*} mark, new @samp{*} marks are overridden. +If prefix argument is specified, current @samp{*} marks are removed and +new @samp{*} marks are appended. + @findex wl-summary-pick (@code{wl-summary-pick}) @@ -4085,6 +4213,11 @@ the thread is divided. The initial setting is t. If non-nil, cursor point is moved to the center of the summary window. +@item wl-summary-max-thread-depth +@vindex wl-summary-max-thread-depth +The initial setting is 30. +If thread depth is larger than this value, divide it. + @item wl-summary-divide-thread-when-subject-changed @vindex wl-summary-divide-thread-when-subject-changed The initial setting is @code{nil}. If non-nil, thread is split if @@ -4243,9 +4376,42 @@ The initial setting is as follows: @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. +Specify the color and the mark of message in summary buffer with flag. +If the mark are omitted, the mark specified in the variable +@code{wl-summary-flag-mark} is assumed. If multiple global flags are on +one message, the former flag in this list is preferred. + +Example: + +@lisp +@group +(setq wl-summary-flag-alist + '((important "purple") + (todo "red") + (business "green" "B") + (private "blue" "X"))) +@end group +@end lisp + +@item wl-summary-display-mime-mode-list +@vindex wl-summary-display-mime-mode-list +The initial setting is the list shown below: + +@lisp +@group +(mime as-is) +@end group +@end lisp + +@noindent +The function @code{wl-summary-toggle-mime} switch specification of MIME +analysis in the order of this list. You can specify one of the follows. + +@example +@code{mime} : Header and body are decoded. +@code{header-only} : Only header is decoded. +@code{as-is} : Header and body are not decoded. +@end example @end table @@ -4360,13 +4526,13 @@ Basically it is Emacs-standard mail mode. @menu * Editing Header:: -* Editing Message Body:: +* Editing Message Body and Sending:: * Dynamical Message Re-arrangement:: * Template:: * POP-before-SMTP:: @end menu -@node Editing Header, Editing Message Body, Usage of Draft Mode, Usage of Draft Mode +@node Editing Header, Editing Message Body and Sending, Usage of Draft Mode, Usage of Draft Mode @subsection Editing Message Header You can freely edit header region above @samp{--text follows this line--}, @@ -4417,8 +4583,8 @@ If non-nil, the value of this variable is inserted as a @samp{Bcc:} of the draft when it is prepared. @end table -@node Editing Message Body, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode -@subsection Editing Messages +@node Editing Message Body and Sending, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode +@subsection Editing Messages and Sending As a matter of course, editing message body can be performed in the same way as usual writing. You may write message body under @@ -4431,9 +4597,13 @@ a MIME user interface for GNU Emacs}. You can also see help by @kbd{C-c C-x ?} in draft buffer. If you save the draft buffer you are editing, it is appended to the -folder specified by @code{wl-draft-folder}. +folder specified by @code{wl-draft-folder}. You can leave draft buffer +after storing it for future editing by @kbd{C-c C-z} (@code{wl-draft-save-and-exit}). -@node Dynamical Message Re-arrangement, Template, Editing Message Body, Usage of Draft Mode +If you have finished editing, you can send message by @kbd{C-c C-c}. + + +@node Dynamical Message Re-arrangement, Template, Editing Message Body and Sending, Usage of Draft Mode @subsection Dynamic Modification of Messages @vindex wl-draft-config-alist @c @cindex Change Message @@ -4643,6 +4813,9 @@ adjust the window size by @code{wl-template-buffer-lines}. If @code{wl-template-visible-select} is @code{nil}, you should type the name of the template in the mini buffer. +If @code{wl-template-select} is executed with prefix argument, +inversed value of @code{wl-template-visible-select} is used. + As shown in the example in @code{wl-draft-config-alist}, you can select @samp{default} template by writing: @@ -4969,6 +5142,14 @@ as an argument. The initial setting is @code{nil}. If non-nil, use new frame for the draft. +@item wl-draft-reply-default-position +@vindex wl-draft-reply-default-position +The initial setting is @code{body}. +Specify initial cursor position on draft buffer for reply. +@code{body} is to move cursor to the top of the message body, +@code{bottom} to the bottom of the message body, and @code{top} to the +top of the header. + @item wl-draft-truncate-lines @vindex wl-draft-truncate-lines The initial value is the value of @code{default-truncate-lines}. @@ -5069,21 +5250,28 @@ 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}. -This is the user name for SMTP AUTH authentication. If @code{nil}, -@code{smtp-authenticate-user} is used. +This is the user name for SMTP AUTH authentication. @item wl-smtp-authenticate-type @vindex wl-smtp-authenticate-type The initial setting is @code{nil}. -This is the authentication method for SMTP AUTH authentication. If -@code{nil}, @code{smtp-authenticate-type} is used. If -@code{smtp-authenticate-type} is still @code{nil}, authentication will -not be carried out. +This string-valued variable specifies the authentication method for SMTP +AUTH authentication. You may specify @code{plain}, @code{cram-md5}, +@code{digest-md5}, @code{login}, etc. If @code{nil}, authentication +will not be carried out. + +@item wl-smtp-authenticate-realm +@vindex wl-smtp-authenticate-realm +The initial setting is @code{nil}. +This string-valued variable specifies the authentication realm for SMTP +AUTH authentication. You have to set this variable for DIGEST-MD5 +authentication and so on. +If @code{nil}, authentication realm is not specified in the authentication. @item wl-smtp-connection-type @vindex wl-smtp-connection-type The initial setting is @code{nil}. -This variable specifies how to establish SMTP connections. +This symbol-valued variable specifies how to establish SMTP connections. If @code{nil}, use default connection type. If it is @code{starttls}, use STARTTLS (RFC2595). If it is @code{ssl}, use SSL. @@ -5154,7 +5342,7 @@ If it is @code{nil}, @code{elmo-pop3-default-server} is used. @vindex wl-pop-before-smtp-authenticate-type The initial setting is @code{nil}. This is the authentication method for POP-before-SMTP authentication. -If it is @code{nil}, @code{elmo-pop3-default-authenticate} is used. +If it is @code{nil}, @code{elmo-pop3-default-authenticate-type} is used. @item wl-pop-before-smtp-port @vindex wl-pop-before-smtp-port @@ -5271,12 +5459,15 @@ later) is non-nil, you can following operations: * Re-file and Copy queue:: Re-file and Copy (IMAP4) * Creation of Folders:: Create Folders off-line (IMAP4) * Marking:: Mark (IMAP4) -* Pre-fetching Reservations:: Pre-fetch (IMAP4, NNTP) +* Pre-fetching Reservations:: Pre-fetch @end menu As soon as Wanderlust becomes on-line, such operations invoked off-line are reflected in the servers via network. +If the variable @code{elmo-enable-disconnected-operation} is @code{nil}, +these off-line operations are not executed and causes an error on +re-file or copy operations. @node Send Messages off-line, Re-file and Copy queue, Enable Operations, Enable Operations @subsection Transmission of Messages @@ -5327,23 +5518,12 @@ are also reflected in the servers when Wanderlust becomes on-line. @node Pre-fetching Reservations, , Marking, Enable Operations -@subsection Pre-fetching (IMAP4, NNTP) - -You can make reservations for pre-fetching messages in IMAP or NNTP -folders. Reserved messages are marked with @samp{!} but not cached -yet. When Wanderlust becomes on-line, they are pre-fetched from -servers. +@subsection Pre-fetching -If the variable @code{elmo-enable-disconnected-operation} is @code{nil}, -these off-line operations for IMAP4 and NNTP do not take place, and -off-line re-file, copy or suchlike simply results in error. - -Because off-line operations use cache files, it is a bad idea to erase -them by hand; it may cause Wanderlust to malfunction. - -If you want to remove caches, be sure to execute @kbd{M-x -elmo-cache-expire-by-size}. @code{elmo-cache-expire-by-size} does not -remove caches for messages relevant to off-line operations. +You can make reservations for pre-fetching messages in networking +folders (IMAP, NNTP, POP3, shimbun). Reserved messages are marked with +@samp{u} but not cached yet. When Wanderlust becomes on-line, they are +pre-fetched from servers. @node Plugged Mode, Off-line State settings, Enable Operations, Disconnected Operations @@ -5465,8 +5645,8 @@ manually, press @kbd{F} in the folder mode. @item elmo-enable-disconnected-operation @vindex elmo-enable-disconnected-operation -The initial setting is @code{t}. Controls off-line operations -regarding IMAP4. If non-nil, off-line operations are carried out. +The initial setting is @code{t}. Controls off-line operations regarding +networking folders. If non-nil, off-line operations are carried out. @item elmo-lost+found-folder @vindex elmo-lost+found-folder @@ -5831,10 +6011,9 @@ The initial setting is the list below. @lisp @group -(list wl-summary-important-mark +(list wl-summary-flag-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) @end group @@ -6090,7 +6269,7 @@ Needless to say, you can use your own function. @end table -@node Scoring, Split messages, Expire and Archive, Top +@node Scoring, Address Book, Expire and Archive, Top @chapter Score of the Messages @cindex Scoring @c @cindex Kill File @@ -6417,7 +6596,7 @@ If non-nil, unread/important marks are synchronized when the summary does. Unread marks reflect information on the IMAP4 server. Important marks reflect information on the IMAP4 server (flagged or -not), and contents of @samp{'mark} folder. +not), and contents of @samp{'flag} folder. The initial setting is @code{t}. @end table @@ -6589,156 +6768,7 @@ pop3 N E E E @end example -@node Split messages, Address Book, Scoring, Top -@chapter Message splitting -@cindex Split messages - -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 and show result (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{ACTION} [@code{continue}]) -@end lisp - -If @samp{CONDITION} is true, @samp{ACTION} is performed. -The 1st element @samp{CONDITION} is a condition represented by a -balanced expression (sexp). Its grammar will be explained below. -The 2nd element @samp{ACTION} is the name of the folder to split -messages into, or a symbol. 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 arguments @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 an integer argument (@samp{SIZE}). - -@table @code -@item @code{<} -True if the size of the message is less than @samp{SIZE}. -@item @code{>} -True if the size of the message is greater than @samp{SIZE}. -@end table - -@item -Functions which accept any number of arguments. - -@table @code -@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 - -You can specify followings as 2nd @samp{ACTION}. - -@enumerate -@item -folder name - -If some string is specified, it will be regarded as the destination -folder, and the message will be appended to it. - -@item -@samp{delete} - -If the symbol @samp{delete} is specified, delete the substance of the -message in @code{elmo-split-folder} - -@item -@samp{noop} - -If the symbol @samp{noop} is specified, do nothing on the message and -keep it as it is. - -@item -function - -If some function is specified, execute it. -@end enumerate - -If the message passes all rules, it will be dealed along @samp{ACTION} -specified by @code{elmo-split-default-action}. - - -@node Address Book, Spam Filter, Split messages, Top +@node Address Book, Spam Filter, Scoring, Top @chapter Address Book @cindex Address Book @@ -6869,7 +6899,7 @@ Edit entry. @end table -@node Spam Filter, Batch Processing, Address Book, Top +@node Spam Filter, Advanced Issues, Address Book, Top @chapter Spam Filter @cindex Spam Filter @@ -6893,7 +6923,7 @@ To use @code{wl-spam}, write in @file{~/.wl} as follows: @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}} +;; @r{@xref{Spam Filter Processors}.} (setq elmo-spam-scheme 'bogofilter) (require 'wl-spam) @end group @@ -6951,7 +6981,7 @@ 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} +@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) @@ -7141,6 +7171,7 @@ Supported spam filtering libraries are following ones. * spamfilter:: spamfilter.el * bsfilter:: bsfilter * SpamAssassin:: SpamAssassin +* SpamOracle:: SpamOracle * Regular Expressions Header Matching:: Header regexp @end menu @@ -7287,7 +7318,7 @@ Specify options to give to @command{bsfilter} for learning messages. @end table -@node SpamAssassin, Regular Expressions Header Matching, bsfilter, Spam Filter Processors +@node SpamAssassin, SpamOracle, bsfilter, Spam Filter Processors @subsection SpamAssassin @cindex SpamAssassin @@ -7345,30 +7376,74 @@ 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 +@node SpamOracle, Regular Expressions Header Matching, SpamAssassin, Spam Filter Processors +@subsection SpamOracle +@cindex SpamOracle -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}. +SpamOracle (`http://pauillac.inria.fr/~xleroy/software.html#spamoracle') +is a spam filter implemented by Objective Caml language. + +To use spam filter with @file{spamoracle}, write following setting in +@file{~/.wl} or somewhere else. +(Of course, you have to install SpamOracle beforehand.) @lisp @group -(setq elmo-spam-scheme 'header) +(setq elmo-spam-scheme 'spamoracle) @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 +@subsubsection Customizable Variables @table @code -@item elmo-spam-header-good-alist -@vindex elmo-spam-header-good-alist -The initial setting is the following list: +@item elmo-spam-spamoracle-program +@vindex elmo-spam-spamoracle-program +The initial setting is @file{spamoracle}. Specify the name of +executable of spamoracle. If the executable is not in your +environmental variable @env{PATH}, you should set this by full path. + +@item elmo-spam-spamoracle-config-filename +@vindex elmo-spam-spamoracle-config-filename +Specify the name of config file. @code{nil} to use default file +(@file{~/.spamoracle.conf}). The initial setting is @code{nil}. + +@item elmo-spam-spamoracle-database-filename +@vindex elmo-spam-spamoracle-database-filename +The initial setting is @file{~/.elmo/.spamoracle.db}. +It specifies the name of database file. + +@item elmo-spam-spamoracle-spam-header-regexp +@vindex elmo-spam-spamoracle-spam-header-regexp +The initial setting is @code{"^X-Spam: yes;"}. It specifies the regular +expression of the header that indicates spam mail. Use this setting +when you change the @code{spam_header} parameter in the config file. + +@end table + +@node Regular Expressions Header Matching, , SpamOracle, 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")) @@ -7391,45 +7466,24 @@ 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 +@node Advanced Issues, Migration, Spam Filter, Top +@chapter Advanced Issues +@cindex Advanced Issues @menu * Living with other packages:: Cooperating with other packages * Highlights:: Highlights * Biff:: Notify Mail arrival +* Password Management:: Manage Passwords +* Split messages:: Splitting messages +* Batch Processing:: Invoke commands in batch mode * Advanced Settings:: Advanced Settings * Customizable Variables:: Customizable Variables * Hooks:: Hooks @end menu -@node Living with other packages, Highlights, Customization, Customization +@node Living with other packages, Highlights, Advanced Issues, Advanced Issues @section Living with other packages Examples with other packages. @@ -7708,7 +7762,7 @@ distributed with emacs-w3m (@uref{http://emacs-w3m.namazu.org/}). You can find the usage in comment region at the head of @file{mime-w3m.el}. -@node Highlights, Biff, Living with other packages, Customization +@node Highlights, Biff, Living with other packages, Advanced Issues @section Highlights @subsection Customizable Variables @@ -7954,7 +8008,7 @@ The face for strings (for example, a version number) in the demo. @end table -@node Biff, Advanced Settings, Highlights, Customization +@node Biff, Password Management, Highlights, Advanced Issues @section Notify Mail arrival @cindex Biff @@ -7978,6 +8032,13 @@ If @code{nil}, wl doesn't check mail arrival. The initial setting is 40 (in seconds). Check mail arrival in this period. +@item wl-biff-use-idle-timer +@vindex wl-biff-use-idle-timer +The initial setting is @code{nil}. +If it is @code{nil}, check mail arrival when the time specified by +@code{wl-biff-check-interval} has passed. If it is non-nil, check +mail arrival when idling time exceeds @code{wl-biff-check-interval}. + @item wl-biff-notify-hook @vindex wl-biff-notify-hook This hook is run at the arrival of new mail. @@ -7989,7 +8050,214 @@ For silence, set to @code{nil}. @end table -@node Advanced Settings, Customizable Variables, Biff, Customization +@node Password Management, Split messages, Biff, Advanced Issues +@section Manage Passwords + +If you input passwords to connect servers, they are stored in the +variable @code{elmo-passwd-alist} per connection. You should be careful +that others might read your passwords if they can touch your Emacs, +since encoded plain passwords are there. + +If you invoke @kbd{M-x elmo-passwd-alist-save} while you have stored +passwords, then they are saved on the file, and it will save you to +input passwords. In this case, the risk that someone reads your +keystroke might decrease, but please not that plain passwords are +stored on a file. You should treat them very carefully. +To remove saved passwords on file, invoke @kbd{M-x elmo-passwd-alist-clear} +and then @kbd{M-x elmo-passwd-alist-save}. + +@table @code +@item elmo-passwd-alist-file-name +@vindex elmo-passwd-alist-file-name +The initial setting is @file{passwd}. +This is the name of the file in which passwords are saved. +@code{elmo-passwd-alist-save} saves current passwords to the file. + +@item elmo-passwd-life-time +@vindex elmo-passwd-life-time +The initial setting is @code{nil}. +If the value is some number, timer is set to remove password entry after +@code{elmo-passwd-life-time} seconds since you input the password. +@code{nil} means never to remove passwords. +@end table + + +@node Split messages, Batch Processing, Password Management, Advanced Issues +@section Message splitting +@cindex Split messages + +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 and show result (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{ACTION} [@code{continue}]) +@end lisp + +If @samp{CONDITION} is true, @samp{ACTION} is performed. +The 1st element @samp{CONDITION} is a condition represented by a +balanced expression (sexp). Its grammar will be explained below. +The 2nd element @samp{ACTION} is the name of the folder to split +messages into, or a symbol. 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 arguments @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 an integer argument (@samp{SIZE}). + +@table @code +@item @code{<} +True if the size of the message is less than @samp{SIZE}. +@item @code{>} +True if the size of the message is greater than @samp{SIZE}. +@end table + +@item +Functions which accept any number of arguments. + +@table @code +@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 + +You can specify followings as 2nd @samp{ACTION}. + +@enumerate +@item +folder name + +If some string is specified, it will be regarded as the destination +folder, and the message will be appended to it. + +@item +@samp{delete} + +If the symbol @samp{delete} is specified, delete the substance of the +message in @code{elmo-split-folder} + +@item +@samp{noop} + +If the symbol @samp{noop} is specified, do nothing on the message and +keep it as it is. + +@item +function + +If some function is specified, execute it. +@end enumerate + +If the message passes all rules, it will be dealed along @samp{ACTION} +specified by @code{elmo-split-default-action}. + + +@node Batch Processing, Advanced Settings, Split messages, Advanced Issues +@section 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: + +@example +@group +% emacs -batch -l wl-batch -f wl-batch-prefetch +@end group +@end example + +@subsection 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 Advanced Settings, Customizable Variables, Batch Processing, Advanced Issues @section Advanced Settings @menu @@ -8063,9 +8331,14 @@ These are evaluated in order and first matched one is used. Moreover, the behavior of @kbd{a} with prefix argument can be directed by @code{wl-draft-reply-with-argument-list} as well. + By the way, you can use some function (will be evaluated in the parent message buffer) in the place of @samp{key} or @samp{to-list} etc. -For example, if you only want to reply to mailing lists in + +If you want to write a rule for replying to message written by yourself, +specify function @code{wl-draft-self-reply-p} as @samp{key}. + +If you only want to reply to mailing lists in @code{wl-subscribed-mailing-list} if the parent has some of them, set as follows: @@ -8172,7 +8445,7 @@ The following is a example: @end lisp -@node Customizable Variables, Hooks, Advanced Settings, Customization +@node Customizable Variables, Hooks, Advanced Settings, Advanced Issues @section Customizable Variables Customizable variables that have not been described yet: @@ -8187,6 +8460,7 @@ a folder and the like. @vindex wl-draft-folder The initial setting is @samp{+draft}. It is the folder to which drafts are saved. It must be a writable folder. +You can set IMAP remote folder, Maildir and so on. 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 @@ -8362,7 +8636,7 @@ The initial setting is the alist shown below: @lisp @group (("^-" . remove) - ("^@" . remove)) + ("^@@" . remove)) @end group @end lisp @@ -8395,12 +8669,6 @@ This is meaningful for XEmacs only. The initial setting depends on XEmacs (@code{t} for XEmacs with dbm). If non-nil, Message-ID is controlled by dbm. -@item elmo-passwd-alist-file-name -@vindex elmo-passwd-alist-file-name -The initial setting is @file{passwd}. -This is the name of the file in which passwords are saved. -@code{elmo-passwd-alist-save} saves current passwords to the file. - @item elmo-nntp-list-folders-use-cache @vindex elmo-nntp-list-folders-use-cache The initial setting is 600 (in seconds). @@ -8446,14 +8714,96 @@ this value, display progress gauge. @end table -@node Hooks, , Customizable Variables, Customization +@node Hooks, , Customizable Variables, Advanced Issues @section Hooks (Not yet written) -@node Migration, Terminology, Customization, Top +@node Migration, Terminology, Advanced Issues, Top @chapter Switch from older version of Wanderlust +@cindex Migration + +This chapter explains the important thing for the upgrade, +or migration from the previous version. +It includes the changes of the setup, limitations etc. + +@menu +* Before 2.12.0:: From prior to the version 2.12.0 +@end menu + +@node Before 2.12.0, , Migration, Migration +@section Migration from prior to the version 2.12.0 + +@subsection The conversion of msgdb + +From version 2.12.0 on, the structure of msgdb is changed. +The msgdb for newly created folder will use this new format when created and saved. +But by writing following line, you may use the old format of the msgdb as it was. + +@lisp +@group +(setq elmo-msgdb-default-type 'legacy) +@end group +@end lisp + +With the default setup, the old msgdb format is converted to the new +format automatically. You may change this behavior by writing following +lines in @file{~/.wl}. + +@lisp +@group +;; @r{If the format of msgdb is different from} @code{elmo-msgdb-default-type}, +;; @r{the format will be converted automatically when} +;; @r{the msgdb is being loaded (default).} +(setq elmo-msgdb-convert-type 'auto) + +;; @r{Convert msgdb when hitting @kbd{s all} in Summary mode} +(setq elmo-msgdb-convert-type 'sync) + +;; @r{Inhibit conversion} +(setq elmo-msgdb-convert-type nil) +@end group +@end lisp + +As is explained in above section, you may continue to use the old format. +But you will have following limitations. + +@enumerate +@item +You cannot use forwarded mark (@samp{F}, @samp{f}). +@item +You may only use @samp{important} flag. The other global flags may not +be available. +@end enumerate + +@subsection Changes from @samp{'mark} folder to @samp{'flag}. + +The folder @samp{'mark} will be automatically converted to @samp{'flag} +folder when you first start the new version of Wanderlust. +But there are some restrictions on this type of migrated folder. + +@enumerate +@item +@samp{important} flag attached will not be +removed by deleting the associated message in @samp{'flag} folder. + +@item +The message won't be deleted by removing +@samp{important} flag in @samp{'flag} folder. + +@item +help-echo will not show you the old message. + +@end enumerate + +If you have problem with migrating +from @samp{'mark} folder to the @samp{'flag} folder, +invoking +@kbd{M-x elmo-global-mark-upgrade} will transfer the message +from @samp{'mark} folder to the @samp{'flag} folder. +The duplicated message will not be processed, +you may issue that command repeatedly. @node Terminology, Mailing List, Migration, Top @@ -8534,6 +8884,25 @@ in Japanese.} I would like to express my thanks to the members of the mailing list for valuable advice and many pieces of code they contributed. +@subsection Archive + +You can read messages posted to the mailing list on the web or in +NetNews. + +Read messages posted to @t{} + +@example +@uref{http://lists.airs.net/wl/archive/} +@uref{news://gmane.mail.wanderlust.general.japanese@@news.gmane.org} +@end example + +Read messages posted to @t{} + +@example +@uref{http://lists.airs.net/wl-en/archive/} +@uref{news://gmane.mail.wanderlust.general@@news.gmane.org} +@end example + @node Addition, Index, Mailing List, Top @chapter Additional Information @@ -8580,6 +8949,14 @@ valuable advice and many pieces of code they contributed. 8/21 wl-addrmgr by Kitamoto-san. 12/27 Released 2.8.1 stable. 2002 12/11 Released 2.10.0 stable. +2003 7/05 Released 2.10.1 stable. + 9/18 flag folder is added. + 9/20 New msgdb format (modb-standard) by H.Murata-san. + 10/20 Spam filter by H.Murata-san. +2004 1/06 Background color of the demo become configurable. + 2/09 'file' folder is added. + 9/12 forwarded mark. + Default value of the mark strings are changed. @end example See @file{ChangeLog} for details.