X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=doc%2Fwl.texi;h=e2bdcc27122bab563af0d2d4a269c501edba8fe3;hb=9d7002a0026ae26d0be76f456ba3dd32edbfbc2c;hp=ec3cbdf22b06ef7655d1e13b6f34754d95d2cc93;hpb=ef93676a8c511ab099bebfcf5218ba5224950329;p=elisp%2Fwanderlust.git diff --git a/doc/wl.texi b/doc/wl.texi index ec3cbdf..e2bdcc2 100644 --- a/doc/wl.texi +++ b/doc/wl.texi @@ -4,7 +4,6 @@ @settitle Wanderlust -- Yet Another Message Interface On Emacsen -- @c %**end of header @documentlanguage en -@documentencoding us-ascii @include version.texi @synindex pg cp @finalout @@ -121,6 +120,7 @@ This manual is for Wanderlust @value{VERSION}. * Scoring:: Score of the messages * Split messages:: Splitting messages * Address Book:: Management of Address Book +* Spam Filter:: Spam filtering * Customization:: Customizing Wanderlust * Terminology:: Terminologies * Mailing List:: Wanderlust mailing list @@ -146,7 +146,7 @@ The main features of Wanderlust: @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. @@ -255,7 +255,7 @@ may help you.}. Recommended combination of APEL, FLIM and SEMI are following: @itemize @minus -@item APEL 10.4, FLIM 1.14.4 and SEMI 1.14.4 +@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 @@ -263,8 +263,8 @@ latest versions should work. For example, the following combination are confirmed to work. @itemize @minus -@item APEL 10.4, SLIM 1.14.9, SEMI 1.14.4 -@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. @@ -285,12 +285,10 @@ Mirrored ftp/http sites: @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 @@ -673,9 +671,9 @@ 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}, 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}, 13 types of folders are predefined. These +are IMAP, NNTP, LocalDir(MH), Maildir, News Spool, Archive, POP, +Shimbun, Namazu, Multi, Filter, Pipe and Internal folder types. @menu * IMAP Folder:: @samp{%} -- IMAP folder @@ -849,7 +847,7 @@ default: 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 +@code{elmo-nntp-default-stream-type} is @code{ssl} 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 @@ -1264,7 +1262,7 @@ To use apop as an @var{authenticate-type}, @file{md5.el} is needed 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 +@code{ssl} 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 @@ -1654,25 +1652,22 @@ Format: @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}. -You can review important messages at once after you put important marks -on the messages in the different folders. +Now, @samp{important} flag is supported as @var{global-flag}. You can +review important messages at once after you put important marks on the +messages in the different folders. -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. - -(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 @@ -1906,7 +1901,7 @@ Flush queue. @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 ? @@ -2049,15 +2044,6 @@ Example: @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. @@ -2067,7 +2053,7 @@ For example, if you specify @lisp @group (setq wl-folder-hierarchy-access-folders - '("^-$" "^-alt$" "^-japan$" "^-comp$" "^-comp.unix$")) + '("^-[^\\.]*$" "^-comp.unix$" "^-comp.unix.bsd$")) @end group @end lisp @@ -2545,7 +2531,7 @@ message has empty subject field. @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 @@ -2554,8 +2540,11 @@ Target mark. 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. @@ -2567,14 +2556,23 @@ 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: @@ -2582,12 +2580,18 @@ 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 @@ -2601,9 +2605,10 @@ 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 @@ -3078,8 +3083,8 @@ If the message at current cursor point is your own netnews article, a draft for `supersedes message' for the message is prepared. (@code{wl-summary-reedit}) -@item M-e -@kindex M-e (Summary) +@item M-E +@kindex M-E (Summary) @findex wl-summary-resend-bounced-mail If the message at current cursor point is a bounced message, a draft for re-sending original message is prepared. @@ -3095,7 +3100,7 @@ A draft for forwarding the message at current cursor point is prepared. @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. +If already marked as @samp{$}, remove the mark. (@code{wl-summary-mark-as-important}) @item y @@ -3269,18 +3274,29 @@ Mark as unread the message at current cursor point. @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 @@ -3297,7 +3313,9 @@ You can sort by @samp{date}, @samp{from}, @samp{number} and @samp{subject}. @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). @@ -3317,7 +3335,7 @@ Toggle displaying of message window. @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}) @@ -3340,16 +3358,9 @@ Put @samp{*} mark on the messages that satisfies the specified condition. 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}) @@ -3386,10 +3397,30 @@ previously specified. @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}) + +@item D +@kindex D (Summary) @findex wl-summary-delete -Put delete mark on the message at the current cursor point. +Put force deletion mark on the message at the current cursor point. (@code{wl-summary-delete}) +@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}) + +@item ~ +@kindex ~ (Summary) +@findex wl-summary-resend +Put resend reservation mark on the message at the current cursor point. +(@code{wl-summary-resend}) + @item u @kindex u (Summary) @findex wl-summary-unmark @@ -3412,7 +3443,7 @@ Mark as read messages in the specified region. @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. +If @samp{$} mark already exists, remove the mark. (@code{wl-summary-mark-as-important-region}) @item r ! @@ -3421,16 +3452,10 @@ If @samp{$} already exists, it is deleted. 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}) @@ -3454,9 +3479,15 @@ Put copy mark on the messages in the specified region. @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}) +@findex wl-summary-dispose-region +Put disposal mark on the messages in the specified region. +(@code{wl-summary-dispose-region}) + +@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}) @item r u @kindex r u (Summary) @@ -3482,7 +3513,7 @@ With prefix argument, it affects on the all messages in the thread tree. @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. +If @samp{$} mark exists, remove the mark. With prefix argument, it affects on the all messages in the thread tree. (@code{wl-thread-mark-as-important}) @@ -3493,17 +3524,10 @@ Mark as unread 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-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}) @@ -3532,10 +3556,17 @@ With prefix argument, it affects on the all messages in the thread tree. @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}) + +@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}) @item t u @kindex t u (Summary) @@ -3552,13 +3583,6 @@ Save 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-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 @@ -3569,7 +3593,7 @@ Mark as read all messages which have target mark @samp{*}. @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. +If already marked as @samp{$}, remove the mark. (@code{wl-summary-target-mark-mark-as-important}) @item m ! @@ -3592,9 +3616,15 @@ Put copy mark on the messages which have target mark @samp{*}. @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}) +@findex wl-summary-target-mark-dispose +Put disposal mark on the messages which have target mark @samp{*}. +(@code{wl-summary-target-mark-dispose}) + +@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}) @item m y @kindex m y (Summary) @@ -3765,7 +3795,7 @@ folder is moved. @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. @@ -3792,16 +3822,38 @@ The initial setting is '(1 . 4). 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}. @@ -3843,10 +3895,11 @@ want to aware of reading direction, set this to @code{t}. 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 @@ -3856,6 +3909,12 @@ indent level. 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. @@ -3917,7 +3976,7 @@ The initial setting is the list shown below: @lisp @group -("o" "O" "D") +("o" "O" "D" "d" "i") @end group @end lisp @@ -3931,7 +3990,7 @@ The initial setting is the list shown below: @lisp @group -("D") +("D" "d") @end group @end lisp @@ -4074,14 +4133,14 @@ windows. @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}. @@ -4089,7 +4148,7 @@ If @code{nil}, the value of @code{mime-view-visible-field-list} is used. @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. @@ -4131,6 +4190,9 @@ Basically it is Emacs-standard mail mode. @node Editing Header, Editing Message Body, Usage of Draft Mode, Usage of Draft Mode @subsection Editing Message Header +You can freely edit header region above @samp{--text follows this line--}, +until you invoke the sending operation. + Initially, the cursor is at the @samp{To:} field. Fill in recipients addresses. @kbd{@key{TAB}} completes them. @@ -4179,6 +4241,11 @@ the draft when it is prepared. @node Editing Message Body, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode @subsection Editing Messages +As a matter of course, editing message body can be performed in the same +way as usual writing. You may write message body under +@samp{--text follows this line--} line. (NOTE: Be sure to leave the line +@samp{--text follows this line--} intact.) + Multi-part editing utilize MIME edit mode of SEMI. For procedures of editing, refer to respective documents. @xref{MIME-Edit, , ,mime-ui-en, a MIME user interface for GNU Emacs}. @@ -4239,7 +4306,7 @@ The format of @code{wl-draft-config-alist} is: @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. @@ -4358,6 +4425,7 @@ Set a variable @code{wl-template-alist}, and type @kbd{C-c C-j} or The format of @code{wl-template-alist} is almost the same as @code{wl-draft-config-alist}. +@xref{Dynamical Message Re-arrangement}. @lisp @group @@ -4434,7 +4502,7 @@ The POP port number for POP-before-SMTP authentication. 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 @@ -4576,6 +4644,7 @@ The text is killed and replaced with the contents of the variable @node Variables of Draft Mode, , Key Bindings of Draft, Draft @section Customizable Variables +@cindex SMTP AUTH @table @code @item wl-subscribed-mailing-list @@ -4696,11 +4765,25 @@ The initial setting is 7. If @code{wl-template-visible-select} is non-nil, this variable specifies the size of the preview window. +@item wl-draft-buffer-style +@vindex wl-draft-buffer-style +The initial setting is @code{full}. +Style of draft buffer window (except for replying and forwarding). +@code{keep} is to use current window, +@code{full} is to use full frame window, +@code{split} is to split current window and use it. +If some function is specified, it is called with the draft buffer +as an argument. + @item wl-draft-reply-buffer-style @vindex wl-draft-reply-buffer-style -The initial setting is @code{split}. @code{split} or @code{full} can be -specified. In the case of @code{full}, the whole frame will be used for -a reply draft buffer when it is prepared. +The initial setting is @code{split}. +Style of draft buffer for replying and forwarding. +@code{keep} is to use message buffer window, +@code{full} is to use full frame window, +@code{split} is to split message buffer window and use it. +If some function is specified, it is called with the draft buffer +as an argument. @item wl-draft-use-frame @vindex wl-draft-use-frame @@ -4820,8 +4903,9 @@ not be carried out. @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 @@ -4845,7 +4929,7 @@ If @code{nil}, @code{elmo-nntp-default-server} is used. @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. @@ -4901,8 +4985,9 @@ This is the POP port number for POP-before-SMTP. If it is @code{nil}, @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 @@ -5199,7 +5284,7 @@ manually, press @kbd{F} in the folder mode. @item elmo-enable-disconnected-operation @vindex elmo-enable-disconnected-operation -The initial setting is @code{nil}. Controls off-line operations +The initial setting is @code{t}. Controls off-line operations regarding IMAP4. If non-nil, off-line operations are carried out. @item elmo-lost+found-folder @@ -5566,7 +5651,8 @@ The initial setting is the list below. @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) @@ -6088,7 +6174,8 @@ The initial setting is the list shown below: @lisp @group -(list wl-summary-new-mark) +(list wl-summary-new-uncached-mark + wl-summary-new-cached-mark) @end group @end lisp @@ -6325,18 +6412,27 @@ pop3 N E E E @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. @@ -6367,12 +6463,14 @@ example, please. The basic unit of the rule is a combination like @lisp -(@samp{CONDITION} @samp{FOLDER} [@code{continue}]) +(@samp{CONDITION} @samp{ACTION} [@code{continue}]) @end lisp -The 1st element @samp{CONDITION} is a 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 +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. @@ -6381,7 +6479,7 @@ learn how to write the condition practically. @enumerate @item -Functions which accept argument @samp{FIELD-NAME} and @samp{VALUE}. +Functions which accept arguments @samp{FIELD-NAME} and @samp{VALUE}. (@samp{FIELD-NAME} is a symbol that describes the field name) @table @code @@ -6403,6 +6501,16 @@ 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 @@ -6418,8 +6526,38 @@ A symbol. When a symbol is specified, it is evaluated. @end enumerate +You can specify followings as 2nd @samp{ACTION}. -@node Address Book, Customization, Split messages, Top +@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 @chapter Address Book @cindex Address Book @@ -6431,6 +6569,7 @@ summary displayed with nicknames. * Address Manager:: Address Manager @end menu + @node Mail Addresses, Address Manager, Address Book, Address Book @section Address book @cindex Address book Definition @@ -6549,7 +6688,427 @@ Edit entry. @end table -@node Customization, Terminology, Address Book, Top +@node Spam Filter, Customization, 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 Processor:: Supported spam filters +@end menu + +@node Usage of Spam Filter, Spam Filter Processor, 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 Processor, , 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 +@end menu + + +@node bogofilter, spamfilter, Spam Filter Processor, Spam Filter Processor +@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 bogofiler. 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 Processor +@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 Processor +@subsection bsfilter +@cindex bsfilter + +not yet documented... + +@node SpamAssassin, , Bsfilter, Spam Filter Processor +@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 Customization, Terminology, Spam Filter, Top @chapter Customizing Wanderlust @cindex Customization @@ -6590,9 +7149,6 @@ Examples with other packages. 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") @@ -6605,8 +7161,9 @@ If @command{imput} is on the @code{exec-path} at the installation, @subsection bbdb.el @pindex BBDB -Place @file{util/bbdb-wl.el} on the @code{load-path} and do the following -settings. +To use The Insidious Big Brother Database (@uref{http://bbdb.sourceforge.net/}) +with Wanderlust, place @file{util/bbdb-wl.el} on the @code{load-path} +and do the following settings. If BBDB is on the @code{load-path} at the installation, @file{bbdb-wl.el} is byte-compiled and installed. @@ -6641,7 +7198,9 @@ in draft buffer. @subsection lsdb.el @pindex LSDB -The following is an example of settings: +The following is an example setting to use +The Lovely Sister Database (@uref{http://sourceforge.jp/projects/lsdb/}) +with Wanderlust. @lisp @group @@ -7343,6 +7902,13 @@ If non-nil, you are asked for confirmation when Wanderlust terminates. 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: @@ -7357,8 +7923,10 @@ 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 @@ -7502,22 +8070,6 @@ string : moves the messages to the specific folder. @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}. @@ -7715,6 +8267,7 @@ valuable advice and many pieces of code they contributed. 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.