\input texinfo-ja @c -*-texinfo -*- coding: utf-8 -*-
@c %**start of header
@setfilename wl-ja.info
@settitle Wanderlust -- Yet Another Message Interface On Emacsen --
@c %**end of header
@documentlanguage ja
@documentencoding UTF-8
@include version.texi
@synindex pg cp
@finalout

@dircategory GNU Emacs Lisp
@direntry
* Wanderlust-ja: (wl-ja).  Yet Another Message Interface On Emacsen
@end direntry

@c permissions text appears in an Info file before the first node.
@ifinfo
This file documents Wanderlust,
Yet another message interface on Emacsen.

このファイルは Emacs で動くメール/ニュース管理システム Wanderlust に関す
る説明書です。

Copyright @copyright{} 1998, 1999, 2000, 2001, 2002 @w{Yuuichi Teranishi},
@w{Fujikazu Okunishi}, @w{Masahiro Murata},
@w{Kenichi Okada}, @w{Kaoru Takahashi}, @w{Katsumi Yamaoka},
@w{Hiroya Murata} and @w{Yoichi Nakayama}.

This edition is for Wanderlust version @value{VERSION}.

この版は Wanderlust version @value{VERSION} に対応します。

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

著作権表示とこの許可文がすべての複製に存在する限り、この説明書のまったく
同一の複製を作り、配布することを許可する。

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

この段落が取り除かれているのを除き、これと同じ複製に関する許可文が表示さ
れている限り、このファイルを TeX にかけて、その結果を印刷することを許可
する(この段落は印刷されたマニュアルでは参照されません)。

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

同一複製の条件の下で、それによって得られた結果もこの許可文の表示と同一の
条件のもとで配布する限り、この説明書の修正版の複製をし、配布することを許
可する。

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.

上記の修正版に関する条件の下で、この説明書の翻訳の複製を作り、配布するこ
とを許可する。
@end ifinfo

@titlepage
@sp 10
@title Wanderlust ユーザマニュアル
@subtitle Yet another message interface on Emacsen
@subtitle for Wanderlust version @value{VERSION}
@author 寺西裕一
@author 奥西藤和
@author 村田全寛
@author 岡田健一
@author 高橋  郁
@author 山岡克美
@author 村田浩也
@author 中山洋一
@page

@vskip 0pt plus 1filll
Copyright @copyright{} 1998, 1999, 2000, 2001, 2002 @w{Yuuichi Teranishi},
@w{Fujikazu Okunishi}, @w{Masahiro Murata}, @w{Kenichi Okada},
@w{Kaoru Takahashi}, @w{Katsumi Yamaoka}, @w{Hiroya Murata} and 
@w{Yoichi Nakayama}.

This manual is for Wanderlust version @value{VERSION}.

このマニュアルは Wanderlust version @value{VERSION} に対応します。

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

著作権表示とこの許可文がすべての複製に存在する限り、この説明書のまったく
同一の複製を作り、配布することを許可する。

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

同一複製の条件の下で、それによって得られた結果をこの許可文の表示と同一の
条件のもとで配布する限り、この説明書の修正版の複製をし、配布することを許
可する。

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.

上記の修正版に関する条件の下で、この説明書の翻訳の複製を作り、配布するこ
とを許可する。
@end titlepage


@ifinfo
@node Top, Introduction, (dir), (dir)
@top Wanderlust ユーザマニュアル

@flushright
寺西裕一
奥西藤和
村田全寛
岡田健一
高橋  郁
山岡克美
村田浩也
中山洋一
@end flushright

この文書は Wanderlust @value{VERSION} に対応します。

@end ifinfo

@menu
* Introduction::             はじめに
* Start Me Up::              Wanderlust を起動する
* Folders::                  Wanderlust で扱えるフォルダたち
* Folder::                   フォルダモード
* Summary::                  サマリモード
* Message::                  メッセージバッファ
* Draft::                    ドラフトバッファ
* Disconnected Operations::  オフライン処理
* Expire and Archive::       メッセージの自動削除とアーカイブ
* Scoring::                  メッセージのスコア
* Address Book::             アドレス帳
* Quick Search::             Quickly search your mail archive
* Spam Filter::              Spam フィルタ
* Advanced Issues::           より進んだ使い方
* Migration::                旧バージョンからの移行
* Terminology::              用語の解説
* Mailing List::             メーリングリスト
* Addition::                 おまけ
* Index::                    索引
@end menu


@node Introduction, Start Me Up, Top, Top
@chapter はじめに
@cindex Introduction

Wanderlust は Emacs で動くメール/ニュース管理システムです。
IMAP4rev1(RFC2060), NNTP, POP およびローカルのメッセージに対応しています。

Wanderlust の主な特徴/特長は以下の通りです。

@itemize @minus
@item elisp のみによる実装。
@item IMAP4rev1, NNTP, POP(POP3/APOP), MH, Maildir 形式のサポート。
@item Mew っぽい Folder Specification に基づくメッセージへの統一的アクセス。
@item Mew っぽいキーバインドとマーク処理。
@item 未読管理。
@item インタラクティブなスレッド表示。
@item 購読フォルダの一覧を表示するフォルダモード。
@item メッセージキャッシュ、Disconnected Operation。
@item MH 的 FCC。(@samp{Fcc: %Backup} や @samp{Fcc: $Backup} も可)。
@item MIME 対応 (by SEMI)。
@item ニュース/メールの送信を統合したメッセージ送信ドラフト。
@item フォルダ一覧のアイコン表示。
@item 大きなパートを取り寄せずに表示(IMAP4)。
@item メッセージの検索をサーバ側で実行(IMAP4)。日本語検索も可。
@item 仮想フォルダ。
@item 多い日も安心の、マルチアーカイバ対応圧縮フォルダ。
@item フォルダ中の古い記事を自動的にアーカイブ/削除して整理する expire 機能。
@item 自動リファイル。
@item 定型メッセージの送信に便利なテンプレート機能。
@end itemize


@section 動作環境

Wanderlust は Emacs 24.5 以降で動作することが期待されています。
加えて、32ビット環境においてはwide intが有効になっている必要があります。

Wanderlust から利用できると確認されている IMAP サーバは以下の通りです。

@itemize @bullet
@item UW imapd 4.1〜4.7, 4.7a, 4.7b, 4.7c, 2000 以降
@item Cyrus imapd 1.4, 1.5.19, 1.6.22〜1.6.24, 2.0.5 以降
@item Courier-IMAP 1.3.2 以降
@item AIR MAIL (AIRC imapd release 2.00)
@item Express Mail
@item Microsoft Exchange Server 5.5
@item Sun Internet Mail Server 3.5, 3.5.alpha, 4.0
@end itemize

Wanderlust から利用できると確認されている LDAP サーバは以下の通りです。

@itemize @bullet
@item OpenLDAP 2.0.6 以降
@end itemize


@node Start Me Up, Folders, Introduction, Top
@chapter Wanderlust を起動する
@cindex Start up

Wanderlust を起動するまでに必要な手順を順番に説明します。

(当然のことながら、これらよりも先に、メール/ニュースを読むことのできる環
境があらかじめ必要です。)

@menu
* MIME Modules::      MIME 用モジュールのインストール
* Download::          パッケージの入手と展開
* Install::           バイトコンパイルとインストール
* Minimal Settings::  @file{.emacs} の設定
* Folder Definition:: 購読するフォルダの定義
* Start Wanderlust::  Wanderlust の起動
* Overview::          概観
@end menu


@node MIME Modules, Download, Start Me Up, Start Me Up
@section MIME 用モジュールのインストール
@cindex MIME modules
@pindex APEL
@pindex FLIM
@pindex SEMI

Wanderlust を使うためには、APEL, FLIM, SEMI のバリアントである、
APEL-LB, FLIM-LB, SEMI-EPG と呼ばれるパッケージが必要です。

@example
@group
APEL-LB:  @uref{https://github.com/wanderlust/apel}
FLIM-LB:  @uref{https://github.com/wanderlust/flim}
SEMI-EPG: @uref{https://github.com/wanderlust/semi}
@end group
@end example

オリジナルの APEL, FLIM, SEMI は以下の場所からダウンロードできます。

@example
@group
APEL:   @uref{http://git.chise.org/elisp/dist/semi/}
FLIM:   @uref{http://git.chise.org/elisp/dist/apel/}
SEMI:   @uref{http://git.chise.org/elisp/dist/semi/}
@end group
@end example

APEL-LB, FLIM-LB, SEMI-EPG の順にインストールしてください。
基本的にすべて @samp{make install} の実行で済むはずです。

インストールの方法の詳細については、各パッケージに添付されているドキュメ
ントを参照してください。

APEL-LB, FLIM-LB もしくは SEMI-EPG のバージョンアップを行った場合は、
Wanderlust をインストールし直してください。


@node Download, Install, MIME Modules, Start Me Up
@section パッケージの入手と展開
@cindex Download

Wanderlust 本体は以下の場所からダウンロードできます。

一次配布元:

@example
@uref{https://github.com/wanderlust/wanderlust}
@end example

ミラーしていただいている ftp, http サイト:

@example
@group
@uref{http://www.jpl.org/ftp/pub/github-snapshots/}
@end group
@end example

入手したパッケージは適当な作業ディレクトリに展開しましょう。

@example
@group
% cd ~/work
% tar zxvf wl-@var{version}.tar.gz
% cd wl-@var{version}
@end group
@end example

@subsection SSL (Secure Socket Layer) の利用
@cindex SSL
@pindex OpenSSL
@pindex starttls

Wanderlust では、SMTP, IMAP, NNTP, POP のコネクションにおいて、SSL
(Secure Socket Layer) を使用でき、Emacs 24 以降でサポートされた
組み込み GnuTLS が利用可能な場合はそれを使います。

SSL の利用形態には、コネクションと同時に SSL negotiation を始めるものと、
@command{STARTTLS} command の後に SSL negotiation を始めるものの二種類
があります。

組み込み GnuTLS が利用不能な場合、前者については @file{tls.el} が存在すれば
それを使います。この時に GnuTLS に含まれる @command{gnutls-cli} にパスが
通っている必要があります。どちらもない場合は、本パッケージの
@file{utils} ディレクトリにある@file{ssl.el} をインストールする必要があ
ります。なおかつ、OpenSSL に含まれる @command{openssl} にパスが通ってい
る必要があります。

後者については、組み込み GnuTLS が利用不能な場合は @file{starttls.el} が
必要になります。
また、変数 @code{starttls-use-gnutls} の値によって、GnuTLS もしくは starttls
パッケージが必要です。
@file{starttls.el} が無い、もしくは @file{starttls.el} 内に
@code{starttls-use-gnutls} の定義が無い場合は starttls パッケージを
インストールする必要があります。

starttls パッケージは以下の場所から入手できます。

@example
@uref{ftp://opaopa.org/pub/elisp/}
@end example


@node Install, Minimal Settings, Download, Start Me Up
@section バイトコンパイルとインストール
@cindex Bytecompile
@cindex Compile
@cindex Install
@cindex Makefile
@cindex Make

@subsection 通常のインストール

@file{Makefile} の @code{LISPDIR}, @code{EMACS} のあたりを編集します。
@code{LISPDIR} にはパッケージのインストール先、
@code{EMACS} には利用する Emacs のコマンド名を指定します。

@example
@group
% make
% make install
@end group
@end example

@file{Makefile} 中の @code{LISPDIR} を変更せず、
そのまま(@samp{NONE} のままでも)インストールした場合、
適当なインストール先を自動的に検出します。
実際のインストール先については後述します。

新聞フォルダを利用する場合には、emacs-w3m がインストールされている
ディレクトリに @code{load-path} を通しておくと必要なモジュールが
バイトコンパイル/インストールされます。@xref{Shimbun Folder}.

@subsection @file{WL-CFG}

@file{WL-CFG} というファイルが展開ディレクトリに存在すると、
インストール時に読み込まれるようになっています。
インストールで SEMI 等の @code{load-path} の設定が必要であれば、
@file{WL-CFG} に設定してください。

インストール先は @file{Makefile} 中の @code{LISPDIR} で指定しますが、
実際に @file{*.el}, @file{*.elc} が入るディレクトリ
(@code{LISPDIR} からの相対パス)は
 @file{WL-CFG} 中の変数 @code{WL_PREFIX}, @code{ELMO_PREFIX} で指定します。

@table @code
@item WL_PREFIX
WL モジュールをインストールするディレクトリを指定します。
これは @code{LISPDIR} からの相対パスです。
WL モジュールはファイル @file{wl*.el} @file{wl*.elc} を含んでいます。
@c  必要に応じて @file{util/} 以下のファイルもインストールします。

@item ELMO_PREFIX
ELMO モジュールをインストールするディレクトリを指定します。
これは  @code{LISPDIR} からの相対パスです。
ELMO モジュールはファイル @file{elmo*.el} @file{elmo*.elc} を含んでいます。
@c  @file{utf7.el}, @file{utf7.elc} も ELMO モジュールの一部となっています。
@end table

@noindent
@code{WL_PREFIX}, @code{ELMO_PREFIX}
 のデフォルトはいずれも @file{wl} です。

@file{elmo*} (ELMO モジュール) を @file{elmo} 配下にインストールしたければ、

@lisp
(setq ELMO_PREFIX "elmo")
@end lisp

@noindent
とします。

@subsection インストールしないで利用

Wanderlust はバイトコンパイル、インストールをしなくても、@file{wl},
@file{elmo} のディレクトリに @code{load-path} を設定すれば起動する
ことができます。例えば @file{~/work} にパッケージを展開した場合、
@file{~/.emacs} に以下の設定をすれば起動できます。

@lisp
@group
(add-to-list 'load-path "~/work/wl-@var{version}/wl")
(add-to-list 'load-path "~/work/wl-@var{version}/elmo")
@end group
@end lisp

@subsection マニュアルについて

マニュアルは Info 形式です。
インストールするには下記を実行してください。

@example
@group
% make info
% make install-info
@end group
@end example

また、下記にもマニュアルがあります。

@example
@uref{http://wanderlust.github.io/wl-docs/wl-ja.html}
@end example


@node Minimal Settings, Folder Definition, Install, Start Me Up
@section @file{.emacs}, @file{.wl} の設定
@cindex Minimal Settings
@cindex Settings
@cindex Configuration
@cindex .emacs
@cindex .wl

Wanderlust のパッケージは、大きく分けて二つのモジュール群を含んでいます。

@table @samp
@item ELMO (elmo-*.el)
すべてをフォルダに見せるモジュール群です。WL のバックエンドです。
@item WL (wl-*.el)
Wanderlust 本体の動作を決めるモジュール群です。ELMO のフロントエンドです。
@end table

ユーザは @code{elmo-}, @code{wl-} で始まる変数の設定を変えることによって
Wanderlust の動作をカスタマイズできます。

最低限必要な設定は以下の通りです。

@lisp
@group
;; @r{autoload の設定}
(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-other-frame "wl" "Wanderlust on new frame." t)
(autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)

;; @r{アイコンを置くディレクトリ。初期設定は Emacs 固有のデフォルト値。}
;; @r{(デフォルトの値が正しければ必要ありません)}
(setq wl-icon-directory "~/work/wl/etc")

;; @r{メールを送信する SMTP サーバ。 初期設定は @code{nil}。}
(setq wl-smtp-posting-server "your.smtp.example.com")
;; @r{ニュース投稿用の NNTP サーバ。 初期設定は @code{nil}。}
(setq wl-nntp-posting-server "your.nntp.example.com")
@end group
@end lisp

Wanderlust 起動後、@file{~/.wl} が存在すればそれをロードします。したがって
Wanderlust に固有の設定は @file{~/.wl} に記述しておくと整理しやすいでしょ
う。face の設定は @file{~/.emacs} に書くことはできないので@file{~/.wl} 
に書いてください。@xref{Highlights}.

上記のうち、@code{autoload} の設定は @file{~/.emacs} に書く必要があります。
それ以外の設定は @file{~/.wl} に記述できます。

@subsection @code{mail-user-agent}
@cindex Default Mailer
@cindex Mailer, Default
@vindex mail-user-agent
@findex compose-mail

以下のような設定を @file{~/.emacs} にしておくと、@kbd{C-x m}
(@code{compose-mail}) によって Wanderlust のドラフトモードを起動する
ようになります。Wanderlust を Emacs 上の標準メーラとして使いたい場合は設
定しておくと良いでしょう。ただし、これは @code{mail-user-agent} の定義が
可能な Emacsen の場合のみ有効です。
@xref{Mail Methods, , Mail-Composition Methods, emacs-ja, GNU Emacs Manual}.

@lisp
@group
(autoload 'wl-user-agent-compose "wl-draft" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'wl-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'wl-user-agent
      'wl-user-agent-compose
      'wl-draft-send
      'wl-draft-kill
      'mail-send-hook))
@end group
@end lisp


@node Folder Definition, Start Wanderlust, Minimal Settings, Start Me Up
@section 購読するフォルダの定義
@cindex Folder Definition
@cindex .folders

購読するフォルダをファイル @file{~/.folders} に定義します。
@file{~/.folders} に書かれた内容がそのままあなたの購読するフォルダとなります。

起動した状態でフォルダ一覧のバッファから購読フォルダを追加/編集すること
も可能ですので、この項は読み飛ばしても構いません。
@xref{Folder Manager}.

@file{~/.folders} の書き方はとても単純です。こんな感じです。

@example
@group
#
# @r{@samp{#} で始まる行はコメント。}
# @r{空行は無視。}
#
# @var{フォルダ}  "@var{あだ名}"
# @r{(あだ名は無くてもよい)}
#
%inbox  "受信箱"
+trash  "ゴミ箱"
+draft  "草稿"
%#mh/Backup@@my.imap.example.com "送信済み"
# グループの定義
Emacsen@{
    %#mh/spool/wl            "Wanderlust ML"
    %#mh/spool/elips         "ELIPS ML"
    %#mh/spool/apel-ja       "APEL (日本語) ML"
    %#mh/spool/xemacs-beta   "XEmacs ベータ"
    -fj.news.reader.gnus@@other.nntp.example.com
    *-fj.editor.xemacs,-fj.editor.mule,-fj.editor.emacs "fj の Emacsen"
@}
#
# @r{行末に @samp{/} がつくと、そのフォルダに含まれるサブフォルダ全てが}
# @r{ひとつのグループとなる（アクセスグループ）。}
#
%#mh/expire@@localhost /
# @r{MH のフォルダ全てをひとつのグループにする例。}
+ /
@end group
@end example

一行にひとつ、読みたいフォルダを書きます。
各フォルダの定義については次の章で詳しく説明します。

@samp{@var{グループ名}@{} と @samp{@}} で囲まれた部分は一つのグループと
なります。ひとつのグループはフォルダモードでは開閉できるディレクトリのよ
うに見えます。いくつかのフォルダをまとめて整理するのに便利です。

注意すべきなのは、@samp{@var{グループ名}@{} と @samp{@}} は１行を占領し
て書く必要があることです(これはパーサがダサいからです)。

グループには、２つの種類があります。一つは、上の例の @samp{Emacsen} のよ
うに直接自分で好きなフォルダをグループとして定義するタイプです。

もう一つは、上の例の @samp{+ /} のような @dfn{アクセスグループ} です。これ
は、あるフォルダに含まれるサブフォルダ全てをまとめて一つのグループとするもの
です。(その動作はフォルダのタイプによって異なります。例えば @samp{+ /} なら
MH のサブディレクトリすべてがひとつのグループとなります。)

実際に試してみて、確認してからの方がわかりやすいかもしれません。
ちょっと書いて試してみてから、またフォルダの定義をやり直すと良いでしょう。


@node Start Wanderlust, Overview, Folder Definition, Start Me Up
@section Wanderlust の起動
@cindex Start Wanderlust

インストール、および設定がうまくいっていれば、

@example
M-x wl
@end example

@noindent
で起動できます。
初期化の後、フォルダ一覧を表示するフォルダモードが現れます。

@kbd{C-u M-x wl} のように prefix argument つきで実行すると、
フォルダのチェックを省略して起動します。


@node Overview,  , Start Wanderlust, Start Me Up
@section 概観
@cindex Overview

Wanderlust では基本的に、次に挙げるバッファを互いに行き来しながらメッセージ
を取り扱います。それぞれの詳細については以下の各章で説明します。

@table @samp
@item フォルダバッファ
フォルダの一覧を表示します。フォルダを選択して、そのフォルダのサマリに入ることができます。
また、購読するフォルダを追加したり、編集することもできます。
@item サマリバッファ
フォルダに含まれるメッセージの一覧を表示します。
ここではメッセージを選択してその内容を表示したり、メッセージに対して返信をすることができます。
また、メッセージを削除したり、別のフォルダに移動させたりすることができます。
@item メッセージバッファ
メッセージの内容を表示します。パートを保存したり、外部プログラムで開くことができます。
@item ドラフトバッファ
メッセージの編集を行います。
@end table


@node Folders, Folder, Start Me Up, Top
@chapter Wanderlust で扱えるフォルダたち
@cindex Folder Type

以下では Wanderlust で扱えるフォルダについて説明します。

Wanderlust は ELMO のインタフェースを利用しているため、ELMO モジュールが
サポートしていれば、どんなフォルダでも利用できます。

バージョン @value{VERSION} 現在、用意されているフォルダは、IMAP, NNTP,
LocalDir(MH), Maildir, News Spool, Archive, POP, Shimbun, Search, Multi,
Filter, Pipe, File, Access, Internal の 15 種類です。

@menu
* IMAP Folder::              @samp{%} -- IMAP フォルダ
* NNTP Folder::              @samp{-} -- NNTP フォルダ
* MH Folder::                @samp{+} -- MH フォルダ
* Maildir Folder::           @samp{.} -- Maildir フォルダ
* News Spool Folder::        @samp{=} -- News Spool フォルダ
* Archive Folder::           @samp{$} -- アーカイブフォルダ
* POP Folder::               @samp{&} -- POP フォルダ
* Shimbun Folder::           @samp{@@} -- 新聞フォルダ
* RSS Folder::               @samp{rss} -- RSS フォルダ
* Search Folder::            @samp{[} -- 検索フォルダ
* Multi Folder::             @samp{*} -- マルチフォルダ
* Filter Folder::            @samp{/} -- フィルタフォルダ
* Pipe Folder::              @samp{|} -- パイプフォルダ
* Internal Folder::          @samp{'} -- 内部フォルダ
* File Folder::                  -- ファイルフォルダ
* Access Folder::                -- アクセスフォルダ
@end menu


@node IMAP Folder, NNTP Folder, Folders, Folders
@section IMAP フォルダ
@cindex @samp{%}
@cindex IMAP Folder
@cindex Folder, IMAP
@cindex RFC 2060
@cindex IMAP4rev1

RFC 2060 で規定された IMAP4rev1 を利用してメールを読むためのフォルダです。

書式:

@example
@group
@samp{%} @var{メールボックス名} [@samp{:} @var{ユーザ名} [@samp{/} @var{認証法}]][@samp{@@} @var{ホスト名}][@samp{:} @var{ポート番号}][@samp{!}]
@end group
@end example

@example
@var{認証法}には @code{login} (エンコードしてパスワードを送信)か
           @code{cram-md5} (CRAM-MD5 による認証)か
           @code{digest-md5} (DIGEST-MD5 による認証)か
           @code{clear} (または @code{nil}。生パスワードを送信) のいずれかを指定。
@end example

default 値:

@example
ユーザ名  -> 変数 @code{elmo-imap4-default-user} の値。
             初期設定は 環境変数 @env{USER} か、@env{LOGNAME} か、
             @code{(user-login-name)} の返り値。
認証法    -> 変数 @code{elmo-imap4-default-authenticate-type} の値。
             初期設定は @code{login}。
ホスト名  -> 変数 @code{elmo-imap4-default-server} の値。
             初期設定は @samp{localhost}。
ポート番号-> 変数 @code{elmo-imap4-default-port} の値。
             初期設定は 143。
@end example

メインで使用する IMAP サーバを変数 @code{elmo-imap4-default-server} 
に指定すると、いちいちフォルダ名にホスト名を書かずに済みます。例えばファ
イアウォールを越えなければならない場合でも @samp{foo%imap@@gateway} のよ
うに指定できます。

@lisp
@group
;; @r{例: imap4.exaple.org をメインで使用する IMAP サーバとして設定}
(setq elmo-imap4-default-server "imap4.example.org")
@end group
@end lisp

フォルダ名の最後に @samp{!} が付いていると、SSL (Secure Socket Layer)を
利用してコネクションを張ります。@samp{!!} だと、STARTTLS によりSSL コネ
クションを張ります。

変数 @code{elmo-imap4-default-stream-type} の値が @code{ssl} なら、
@samp{!} を付けなくても SSL を使います。@code{starttls} なら @samp{!!}
を意味します。これらの場合、通常の接続をするにはフォルダ名の最後に
@samp{!direct} を付けます。

@lisp
@group
;; @r{例: SSL を利用してコネクションを張る}
(setq elmo-imap4-default-stream-type 'ssl) 
@end group
@end lisp

認証法として、@code{login}、@code{cram-md5} もしくは @code{digest-md5} 
を指定した場合、パスワードをエンコードして送信します。ただし、サーバ側が
パスワードをエンコードして受け取る能力が無い場合は、確認の後、
@code{clear} (生パスワードを送る) に切替えます。変数 
@code{elmo-imap4-force-login} が non-nil ならば、確認無しに @code{clear} 
に切替えます(初期設定は @code{nil})。

@lisp
;; @r{例: 生パスワードで認証}
(setq elmo-imap4-default-authenticate-type 'clear) 
@end lisp

例:

@example
@group
%inbox     -> IMAP のメールボックス、"inbox"
%#mh/inbox -> IMAP のメールボックス、"#mh/inbox"

%inbox:hoge -> IMAP のメールボックス、"inbox" へユーザ "hoge" でアクセス。
%inbox:hoge/clear@@server1
            -> server1 上の IMAP のメールボックス "inbox" へ
               ユーザ "hoge" で、生パスワードを送って('clear で)
               アクセス。
@end group
@end example

@subsection 日本語メールボックス名の扱い(Modified UTF7)
@cindex Modified UTF7
@cindex UTF7
@cindex UTF8
@cindex Unicode

変数 @code{elmo-imap4-use-modified-utf7} に non-nil の値を設定すれば
(デフォルトは @code{t})、日本語 (や、その他の英語以外の言語) で
メールボックス名を指定することができます。

@node NNTP Folder, MH Folder, IMAP Folder, Folders
@section NNTP フォルダ
@cindex @samp{-}
@cindex NNTP Folder
@cindex Folder, NNTP
@cindex Folder, News
@cindex NetNews
@cindex News
@cindex Newsgroup
@cindex RFC 977

ネットニュースを読むためのフォルダです。
一つのニュースグループを一つのフォルダとして扱います。

書式:

@example
@group
@samp{-} @var{ニュースグループ名} [@samp{:} @var{ユーザ名}][@samp{@@} @var{ホスト名}][@samp{:} @var{ポート番号}][@samp{!}]
@end group
@end example

default 値:
@example
ホスト名  -> 変数 @code{elmo-nntp-default-server} の値。初期設定は "localhost"。
ユーザ名  -> 変数 @code{elmo-nntp-default-user} の値。初期設定は @code{nil}。
ポート番号-> 変数 @code{elmo-nntp-default-port} の値。
             初期設定は 119。
@end example

@var{ユーザ名}が non-nil の場合は AUTHINFO による認証を行ないます。
フォルダ名の最後に @samp{!} が付いていると、SSL を利用してコネクションを張ります。
@samp{!!} だと、STARTTLS により SSL コネクションを張ります。

変数 @code{elmo-nntp-default-stream-type} の値が @code{ssl} なら、@samp{!} を付け
なくても SSL を使います。@code{starttls} なら @samp{!!} を意味します。
これらの場合、通常の接続をするにはフォルダ名の最後に @samp{!direct} を付けます。

例:

@example
@group
-fj.rec.tv            -> ニュースグループ、@samp{fj.rec.tv}。
-fj.rec.tv@@newsserver -> @samp{newsserver} 上のニュースグループ、@samp{fj.rec.tv}。
@end group
@end example


@node MH Folder, Maildir Folder, NNTP Folder, Folders
@section MH フォルダ
@cindex @samp{+}
@cindex MH Folder
@cindex Folder, MH
@pindex MH

MH 形式(1ファイル1メール)で保存されたメールを読むためのフォルダです。

書式:

@example
@samp{+} @var{ディレクトリ名}
@end example

@var{ディレクトリ名}は、通常、変数 @code{elmo-localdir-folder-path}
(初期設定は @file{~/Mail}) からの相対パスですが、
@samp{/} や @samp{~} で始まっていれば絶対パスと見做します
(ドライブレターも同様です)。

メッセージが保存されるファイルのファイル名には、メッセージ番号を使用します。

例:

@example
@group
+inbox         -> @file{~/Mail/inbox}
+from/teranisi -> @file{~/Mail/from/teranisi}
+~/test        -> @file{~/test}
@end group
@end example


@node Localdir Vars,  , MH Folder, MH Folder
@subsection MH フォルダに関する変数
@cindex Localdir variables

@table @code
@item elmo-localdir-folder-path
@vindex elmo-localdir-folder-path
MH フォルダの基準となるディレクトリを指定します。
初期値は @file{~/Mail} です。

@item elmo-localdir-warnings
@vindex elmo-localdir-warnings
non-nilの場合、対象のディレクトに @file{001} のような 0 で始まる
ファイルがあると警告を出します。
対象のファイルはこの変数の値にかかわらず無視されます。
@end table


@node Maildir Folder, News Spool Folder, MH Folder, Folders
@section Maildir フォルダ
@cindex @samp{.}
@cindex Maildir Folder
@pindex Maildir
@pindex qmail

Maildir 形式(1ファイル1メール)で保存されたメールを読むためのフォルダです。

書式:

@example
@samp{.} @var{ディレクトリ名}
@end example

@var{ディレクトリ名}は、通常、変数 @code{elmo-maildir-folder-path} (初期
設定は @file{~/Maildir}) からの相対パスですが、@samp{/} や @samp{~} で始
まっていれば絶対パスと見做します(ドライブレターも同様です)。

Maildir は、@file{cur}, @file{new}, @file{tmp} のディレクトリを含んでい
ます。実際にメッセージが存在するのは、指定ディレクトリ直下の @file{cur} 
ディレクトリです。指定ディレクトリ直下の @file{new} ディレクトリに存在する
メッセージファイルは、アクセス時に @file{cur} ディレクトリへ移動されます。
また、@file{tmp} ディレクトリにあり、かつ 36 時間以上アクセスが無いメッ
セージファイルは削除されます。

この動作は @uref{http://cr.yp.to/proto/maildir.html} に従っています。@*
(日本語訳は @uref{http://man.qmail.jp/jman5/maildir.html})

例:

@example
@group
.              -> @file{~/Maildir}
.inbox         -> @file{~/Maildir/inbox}
.from/teranisi -> @file{~/Maildir/from/teranisi}
.~/test        -> @file{~/test}
@end group
@end example


@node News Spool Folder, Archive Folder, Maildir Folder, Folders
@section News Spool フォルダ
@cindex @samp{=}
@cindex News spool Folder
@pindex gnspool

Mew/IM が提唱する、ローカルに保存されたニュース記事を読み書きするための
フォルダです。NNTP 経由ではなく、@command{gnspool} などを使って取り寄せ
ているような場合にそのスプールを直接読む、という使い方も想定しています。

書式:

@example
@samp{=} @var{ディレクトリ名}
@end example

@var{ディレクトリ名}は、変数 @code{elmo-localnews-folder-path} (初期設定
は @file{~/News})で指定したディレクトリのサブディレクトリを指します。ディ
レクトリの区切りは @samp{.} でも可です。

例:

@example
@group
=fj/os/os2         -> @file{~/News/fj/os/os2}
=fj.os.bsd.freebsd -> @file{~/News/fj/os/bsd/freebsd}
@end group
@end example


@node Archive Folder, POP Folder, News Spool Folder, Folders
@section アーカイブフォルダ
@cindex Archive Folder
@cindex @samp{$}
@c @pindex ange-ftp

Info-ZIP や LHA などで圧縮されたアーカイブファイルを一つのフォルダとし
て扱います。

書式:

@example
@group
@samp{$} @var{ディレクトリ名} [@samp{;} @var{アーカイバタイプ} @samp{;} @var{プレフィクス}]
@end group
@end example

@var{ディレクトリ名}は、通常、変数 @code{elmo-archive-folder-path}
(初期設定は @file{~/Mail}) からの相対パスですが、
@samp{/} や @samp{~} で始まっていれば絶対パスと見做します
(ドライブレターも OK)。
ange-ftp 表記も ange-ftp, efs が使える環境では OK です。

フォルダの実体としての書庫ファイルは、上述のディレクトリにある
@code{elmo-archive-basename}(初期値は @file{elmo-archive})になります。
ただし、ディレクトリでなくファイルであった場合、そのファイルをフォルダ
と見做します。
拡張子はアーカイバ毎に自動的に(動的に)選択されます。

@var{アーカイバタイプ}を省略した場合、変数 @code{elmo-archive-default-type}
(初期設定は @code{zip})が参照されます。

@var{プレフィクス}は、書庫がディレクトリ構造を持っている場合に、そのディ
レクトリ部分を指定します。これは主にアーカイブサービスや @command{tar} +
@command{gzip} + @command{uuencode} によるダイジェスト配送を提供している 
ML の書庫ファイルを展開することなくマウントするためのもの、つまり閲覧時
の便宜のためのものです。

例えば ML サーバが fml の場合、@file{msend.tar.gz} は @file{spool/1} の
ような構造なので、@samp{spool} を指定します。

例:

@example
@group
$teranisi         -> @file{~/Mail/teranisi/elmo-archive.zip}
$bsd/freebsd;lha  -> @file{~/Mail/bsd/freebsd/elmo-archive.lzh}
$/foo@@server:~/bar;zoo     -> @samp{server} 上の @file{~/bar/elmo-archive.zoo}
$d:/msend.tar.gz;tgz;spool -> @file{d:/msend.tar.gz}
$ml;zip/        -> @file{~/Mail/ml} 以下のアーカイブフォルダからなる
                   アクセスグループ
@end group
@end example

@menu
* Archiver::     対応(可能)アーカイバ
* Archive Tips:: TIPS
* Archive Vars:: カスタマイズ変数
@end menu


@node Archiver, Archive Tips, Archive Folder, Archive Folder
@subsection アーカイブフォルダが対応している(対応可能な)アーカイバ
@cindex Archiver
@pindex LHA
@pindex Info-ZIP
@pindex UNZIP
@pindex ZOO
@pindex RAR
@pindex TAR
@pindex GNU TAR

デフォルトで以下のアーカイバに対応します。

@example
@group
        LHA, Info-ZIP/UNZIP, ZOO, RAR  ;; フルスペック
        GNU TAR(@code{tgz}, @code{tar}) ;; デフォルトでは閲覧専用
@end group
@end example

複数ファイルを１プロセスで一つの書庫へまとめることができるアーカイバであ
れば、必要な変数を追加定義するだけで使える可能性があります(ARJ/UNARJ,
ARC は、手許で使ってないので定義していません。TAR は元ファイルを消す
(@code{mv}) ことができない点で真面目にサポートしていません)。複数ファイ
ルを一つにまとめられない点で @command{gzip}, @command{bzip},
@command{bzip2} は使えません。標準出力へ解凍できないアーカイバにも標準で
は対応しません。

@subsection 各 OS でのアーカイバに関する特記事項

フルスペックで読み書き可能なことを確認しているアーカイバは、以下のとお
りです(@samp{*} 印のものは処理速度などの点で最も適しているもの)。

@example
[OS/2]  Warp4.0J(w/o VoiceType)+Fx00505/emx0.9c(fix04)/PMMule,EmacsPM
         LHA  OS/2 version Rel.2.06b    Feb 18, 1998
        *UnZip 5.32 of 3 November 1997, by Info-ZIP.
        *Zip 2.2 (November 3rd 1997).
         Zoo archiver, zoo 2.1 $@asis{}Date: 91/07/09 02:10:34 $
         GNU tar version 1.10 - AK 2.58 (DBCS/SJIS) 981216(homy)版
         gzip 1.2.4 (18 Aug 93) + bzip2 パッチ(by 飯田さん)

[UN|X]  FreeBSD 2.2.7-RELEASE, Linux 2.0.30, Solaris2.6, HP-UX 9.07
         LHa for UNIX  V 1.14c
         UnZip 5.32 of 3 November 1997
         Zip 2.2 (November 3rd 1997)
         GNU tar 1.12 (1.11.x は不可)
         gzip 1.2.4 (18 Aug 93)

[Win32] Win.98/Meadow
         Lha32 version 1.28
         Zip 2.2
         UnZip 5.40
         GNU tar 1.11.8 + 1.5(WIN32)
         GZIP 1.2.4
         RAR 2.06
@end example

※ LHA に関する注意

OS/2 の場合、Peter Fitzsimmons 氏作の LH/2 には対応しません。平松版をお
使いください。
Win32 では DOS 版でなく、LHa32 でないと動かないとのことです。

※ GNU tar に関する注意

GNU tar は書庫からの削除に問題があるものが多いので、特に注意してください。
書庫が破壊される危険性が高いので、フルスペックで読み書きする前に
@option{--delete} @option{-f} を充分テストしておいてください。なお、上記
のものでは今のところ問題は報告されていません。


@node Archive Tips, Archive Vars, Archiver, Archive Folder
@subsection TIPS
@cindex Archive Tips

快適に移行するには、@code{wl-summary-archive} を実行する 
(@pxref{Archive}) か、Expire 機能 (@pxref{Expire}) と組み合わせると良い
でしょう。ただし、Expire 機能で作成したアーカイブフォルダを扱う場合は、
変数 @code{elmo-archive-treat-file} を non-nil に設定する必要があります。

一つの書庫ファイルが多くのファイルを含んでいるとアーカイバ起動時
のオーバーヘッドが加速度的に増加する(特に LHA の場合)ため、150 通程度、
最大でも 200 通までにしておくと、ストレスなく読み書きできるでしょう。

なお、当然のことながら

@lisp
@group
(setq wl-fcc "$backup")
(setq wl-trash-folder "$trash;lha")
@end group
@end lisp

@noindent
も可能です@t{:-)}。


@node Archive Vars,  , Archive Tips, Archive Folder
@subsection アーカイブフォルダに関する変数
@cindex Archive variables

@table @code
@item elmo-archive-default-type
@vindex elmo-archive-default-type
デフォルトのアーカイバタイプをシンボルで指定します。初期値は @code{zip} です。

@item elmo-archive-@var{type}-method-alist
@vindex elmo-archive-TYPE-method-alist
アーカイバの @var{type} (実際には @samp{lha}, @samp{zip}, @samp{zoo},
@samp{tgz} などの文字列が入る)毎の、各種メソッドを記述します。連想リスト
の各要素は以下のようになります。

@example
@group
(@var{action} . (@var{exec-name} @var{options}))   ;; 外部プログラムとオプション
(@var{action} . @var{function})              ;; 関数
@end group
@end example

現在のところ、有効な @var{action} は

@example
@group
'ls, 'cat ('cat-headers)        ;; 最低限必要(閲覧のみ)
'mv ('mv-pipe), 'rm ('rm-pipe)  ;; 上とセットでフルスペック
'cp ('cp-pipe)                  ;;
@end group
@end example

@noindent
です。括弧内のものは、無くても構いません(あれば優先的に使います)。

@item elmo-archive-suffix-alist
@vindex elmo-archive-suffix-alist
アーカイバタイプ(シンボル) 毎に対応する書庫の拡張子を記述します。

@item elmo-archive-file-regexp-alist
@vindex elmo-archive-file-regexp-alist
書庫のリスト閲覧時の出力からファイル名を取得するための正規表現を、アー
カイバタイプ (シンボル) 毎に記述します。

@item elmo-archive-method-list
@vindex elmo-archive-method-list
有効にしたい @var{type} の elmo-archive-@var{type}-method-alist
(@var{type} はアーカイバのシンボル)をリストで記述します。

@item elmo-archive-lha-dos-compatible
@vindex elmo-archive-lha-dos-compatible
この変数が non-nil であれば DOS 版(吉崎氏オリジナル)の LHA とオプション
互換と見做します。初期値では OS/2 と Win32 のみ @code{t} です。

@item elmo-archive-cmdstr-max-length
@vindex elmo-archive-cmdstr-max-length
elmo-archive からは(標準状態では)アーカイバをシェルを経由せずに起動し
ます。elisp レベルでのコマンド文字列の総バイト数には制限はないとのことな
ので、多くのパラメータを一度に与えて動かせるかどうかは OS レベルの問題に
なります。これは、例えば数百通単位のメッセージを一度に消去できるかどうか
の問題、と読み替えてください。

OS/2 ではシェルを介さずに発行できるコマンド文字列は 8190 バイトまでなの
で、余裕を見てデフォルトを 8000 にしています。OS/2 REXX やシェルスクリプ
トなどを噛ます場合、シェルの実装に依存することに注意してください。

なお、アーカイバが処理対象となるファイルのリストを標準入力から受け付ける
(前述の @code{rm-pipe}, @code{mv-pipe}, @code{cat-headers} action
を指定している)場合、1プロセスで処理することができます。
@end table


@node POP Folder, Shimbun Folder, Archive Folder, Folders
@section POP フォルダ
@cindex @samp{&}
@cindex POP Folder
@cindex RFC 1939
@cindex POP3
@cindex APOP

RFC 1939 で規定されている POP3 を利用してメールを読むためのフォルダです。

書式:

@example
@group
@samp{&} [@var{ユーザ名}][@samp{/} @var{認証法}][@samp{:} @var{番号の振り方}][@samp{@@} @var{ホスト名}][@samp{:} @var{ポート番号}][@samp{!}]
@end group
@end example

@var{認証法}には、@samp{user} (生パスワードを送信して認証) と
@samp{apop} (APOP で認証) の 2 種類があります。

@var{番号の振り方}には、@samp{uidl} (UIDL コマンドによる番号付け) か
@samp{list} (LIST コマンドによる番号付け) のいずれかを指定します。

default 値:

@example
ユーザ名    -> 変数 @code{elmo-pop3-default-user} の値。
               初期設定は 環境変数 @env{USER} か、@env{LOGNAME} か、
               @code{(user-login-name)} の返り値。
認証法      -> 変数 @code{elmo-pop3-default-authenticate-type} の値。
               初期設定は "user"。
番号の振り方-> 変数 @code{elmo-pop3-default-use-uidl} の値による。
               t なら UIDL を用いる。初期設定は t。
ホスト名    -> 変数 @code{elmo-pop3-default-server} の値。
               初期設定は "localhost"。
ポート番号  -> 変数 @code{elmo-pop3-default-port} の値。
               初期設定は 110。
@end example

例:

@example
@group
&hoge@@localhost -> localhost へユーザ @samp{hoge} でアクセス。
&hoge@@popserver:109 -> ホスト @samp{popserver} のポート 109 番へ
                        ユーザ @samp{hoge} でアクセス。
@end group
@end example

フォルダ名の最後に @samp{!} が付いていると、SSL を利用してコネクションを張ります。

変数 @code{elmo-pop3-default-stream-type} の値が @code{ssl} なら、@samp{!} を付け
なくても SSL を使います。@code{starttls} なら @samp{!!} を意味します。
これらの場合、通常の接続をするにはフォルダ名の最後に@samp{!direct} を付けます。


@node Shimbun Folder, RSS Folder, POP Folder, Folders
@section 新聞フォルダ
@cindex @samp{@@}
@cindex Shimbun Folder
@cindex Folder, Shimbun
@cindex Folder, Web
@pindex w3m
@pindex emacs-w3m

emacs-w3m (@uref{http://emacs-w3m.namazu.org/}) を用いて
WWW 上の新聞やニュースサイト、メーリングリストアーカイブなどを
読むためのフォルダです。

w3m および emacs-w3m がインストールされている必要があります。

書式:

@example
@group
@samp{@@} @var{モジュール名} @samp{.} @var{フォルダ名}
@end group
@end example

@var{モジュール名}、および @var{フォルダ名} に入る値については
emacs-w3m に付属の @file{README.shimbun.ja} を参照してください。

例:

@example
@group
@@airs.wl  -> wanderlust ML アーカイブ (モジュール @file{sb-airs.el} 使用)
@@asahi/   -> @file{sb-asahi.el} モジュールに含まれるフォルダのアクセスグループ
@end group
@end example

@subsection 新聞フォルダに関する変数

@table @code
@item elmo-shimbun-update-overview-folder-list
@vindex elmo-shimbun-update-overview-folder-list
初期設定は @code{all}。メッセージをフェッチしたときに overview を更新す
る新聞フォルダを指定します。全ての新聞フォルダで overview を更新したい場
合には、@code{all} を設定します。フォルダ名の正規表現からなるリストを設
定する事で、更新するフォルダを限定する事も出来ます。

例:

@example
(setq elmo-shimbun-update-overview-folder-list
      '("^@@airs\\." "^@@namazu\\."))
@end example

サマリの表示は、自動的に更新されます。
@end table


@node RSS Folder, Search Folder, Shimbun Folder, Folders
@section RSS フォルダ
@cindex RSS Folder
@cindex Atom Folder

RSS や Atom フィードに含まれるメッセージを閲覧する為のフォルダです。

書式:

@example
@samp{rss:} @var{RSS または Atom のURL}
@end example

例:

@example
rss:https://github.com/wanderlust/wanderlust/commits/master.atom
@end example

サポートする RSS や Atom は全て自動的に扱われます。
より細かい設定が必要な場合は、新聞フォルダ (@pxref{Shimbun Folder}) を
使ってください。

メッセージのキャッシュは持たないので、メッセージはフィードから無くなると
フォルダからも直ちに消失します。
保存する必要がある場合はパイプフォルダ (@pxref{Pipe Folder}) と
組み合わせてください。

@example
|rss:http://lwn.net/headlines/newrss|+lwn
@end example

RSS や Atom 及び OPML をアクセスグループとして扱うことができ、
その場合、関連するフィードはサブフォルダ内に現れます。

@node Search Folder, Multi Folder, RSS Folder, Folders
@section 検索フォルダ
@cindex Search Folder
@cindex @samp{[}
@cindex Folder, Search
@cindex Folder, Text Search

外部プログラムを用いて、検索式にマッチしたメッセージを集めた仮想的なフォ
ルダを構成します。

書式:

@example
@group
@samp{[} @var{検索式} @samp{]} [ @var{検索対象} [ @samp{!} @var{検索方式} ] ]
@end group
@end example

検索式と検索対象の指定方法は、検索方式によって異なります。

@subsection 対応している検索方式

デフォルトでは、以下の検索方式に対応しています。検索方式を省略した場合は、
@code{elmo-search-default-engine} で指定された検索方式が使用されます。

@menu
* namazu::      namazu
* grep::        grep
* rgrep::       rgrep
* mu::          mu
* notmuch::     notmuch
@end menu


@node namazu, grep, Search Folder, Search Folder
@subsection namazu
@pindex namazu

namazu (@uref{http://www.namazu.org/}) を使って、インデックスに登録された
文書を検索します。

検索式は、namazu の検索式です。詳しくは、namazu に付属の文書を参照して下
さい。

検索対象には、使用するインデックスを指定します。インデックスのあるディレ
クトリのパスをそのまま指定するか、以下の説明にある別名を指定する事が出来
ます。インデックスを省略した場合は、
@code{elmo-search-namazu-default-index-path} で指定された値が使用されます。

例:

@example
@group
[wanderlust]           -> デフォルトのインデックスから "wanderlust"
                          にマッチするものを探す
[semi flim]~/Mail/semi -> ディレクトリ "~/Mail/semi" にあるインデックス
                          から "semi flim" を探す
@end group
@end example

@c @subsection TIPS

@subsubsection 複数キーワードの入力

フォルダ名入力時に空白を入力したい場合、@kbd{C-q @key{SPC}} でできます。

@subsubsection インデックスのエイリアス名

インデックスにはエイリアス名(別名)を定義できます。

@example
(setq elmo-search-namazu-index-alias-alist
      '(("cache" . "~/.elmo/cache")
        ("docs" . "~/documents")))
@end example

の様に設定することによりインデックスの別名を定義できます。
上記例であれば、

@example
[wanderlust]cache
@end example

と入力すれば、@file{~/.elmo/cache} にある namazu インデックスを対象として、
キーワード @samp{wanderlust} で検索を行います。

@subsubsection 複数インデックスの指定

@code{elmo-search-namazu-default-index-path},
@code{elmo-search-namazu-index-alias-alist} の値としてインデックスのリス
トを指定することも可能です。リストを指定すると、複数のインデックスを対象
とした検索となります。

例えば、

@example
(setq elmo-search-namazu-index-alias-alist
      '(("all" . ("~/.elmo/cache" "~/documents"))
        ("cache" . "~/.elmo/cache")))
@end example

のように指定すると、

@example
[wanderlust]all
@end example

と入力すれば、@file{~/.elmo/cache} と @file{~/documents} のインデックスを
対象として、キーワード @samp{wanderlust} で検索を行います。

@node grep, rgrep, namazu, Search Folder
@subsection grep
@pindex grep
@pindex find

grep を使って、検索対象で指定されたディレクトリにあるファイルを検索します。

検索式には、grep の正規表現を指定します。検索対象とするディレクトリを省略
する事は出来ません。

例:

@example
@group
[wanderlust]~/Mail/inbox!grep
    -> ディレクトリ "~/Mail/inbox" から
       "wanderlust" にマッチするものを探す

["[sr]emi"]~/Mail/semi!grep
    -> 検索式が @samp{]} を含む正規表現である場合は、
       @samp{"} で囲む必要があります
@end group
@end example

検索対象となるファイル名をすべて引数として grep を起動渡すため、
ファイルが多すぎると失敗する場合があります。
find が @samp{-maxdepth} オプションを受け付けるのであれば、
@file{~/.wl} に以下のように記載する事でこの問題を回避できます。

@example
(eval-after-load "elmo-search"
  '(elmo-search-register-engine
    'grep 'local-file
    :prog "find"
    :args '(elmo-search-rgrep-target
            "-maxdepth" "1" "-type" "f" "-exec" "grep" "-l" "-e"
            pattern "@{@}" "+")))
@end example

find の @samp{-exec command @{@} +} オプションが正しく動作しない
場合は 最後の @samp{+} を @samp{;} に変えると動作するかもしれませんが、
ものすごく遅いかもしれません。

@node rgrep, mu, grep, Search Folder
@subsection rgrep

grep の @samp{-r} オプションをを使って、検索対象で指定された
ディレクトリ以下にあるファイルを検索します。
@samp{-r} オプションを受け付ける grep が必要です。

検索方式 grep とは異なり、対象ディレクトリのサブディレクトリにある
ファイルも検索対象になります (@pxref{grep})。
また、ファイル数に関する制限は生じません。
その他、書式などは検索方式grepに準じます。

@example
@group
[wanderlust]~/Mail/inbox!rgrep
    -> ディレクトリ "~/Mail/inbox" 以下から
       "wanderlust" にマッチするものを探す
@end group
@end example

@node mu, notmuch, rgrep, Search Folder
@subsection mu
@pindex mu

mu (@uref{http://www.djcbsoftware.nl/code/mu/}) を使って、文書を検索します。

例:（Mu cheatsheet より）

@example
@group
[Helsinki]
    -> messages about Helsinki (in message body, subject, sender, ...)

[to:Jack subject:jellyfish tumbleweed]
    -> messages to Jack with subject jellyfish containing the word tumbleweed

[size:2k..2m date:20091201..20093112 flag:attach from:bill]
    -> messages between 2 kilobytes and a 2Mb,
       written in December 2009 with an attachment from Bill

[subject:soc* flag:unread]
    -> サブジェクトが　'soc' で始まる (soccer, society, socrates, ...)
       未読のメッセージを探す

[mime:image/*]
    -> 画像が添付されたメッセージを探す

['foo bar']
    -> "foo bar" というフレーズを含むメッセージを探す

@end group
@end example

@node notmuch,  , mu, Search Folder
@subsection notmuch
@pindex notmuch

notmuch (@uref{http://notmuchmail.org/}) を使って、文書を検索します。

例（notmuch マニュアルより）

@example
@group
[term1]
    -> 'term1' を含むメッセージを探す

[-term1]
    -> 'term1' を@emph{含まない}メッセージを探す

[term1 term2]
    -> 'term1' と 'term2' の両方を含むメッセージを探す

['foo bar']
    -> "foo bar" というフレーズを含むメッセージを探す

@end group
@end example

@node Multi Folder, Filter Folder, Search Folder, Folders
@section マルチフォルダ
@cindex @samp{*}
@cindex Multi Folder
@cindex Folder, Multiple
@cindex Folder, Marge

複数のフォルダを仮想的に一つに見えるようにするフォルダです。

書式:

@example
@group
@samp{*} @var{フォルダ1} [@samp{,} @var{フォルダ2}] @dots{} [@samp{,} @var{フォルダN}]
@end group
@end example

@samp{*} の後に、@samp{@var{フォルダ1},@var{フォルダ2},@dots{},@var{フォ
ルダN}}のように @samp{,} (コンマ)で区切って、一つに見えるようにしたいフォ
ルダ群を指定します。

例:

@example
@group
*-fj.editor.xemacs,-fj.editor.mule,-fj.editor.emacs
-> -fj.editor.xemacs, -fj.editor.mule, -fj.editor.emacs が一つの
   フォルダとして見える。

*+inbox,-fj.rec.tv,%inbox
-> +inbox, -fj.rec.tv, %inbox が一つのフォルダとして見える。
@end group
@end example


@node Filter Folder, Pipe Folder, Multi Folder, Folders
@section フィルタフォルダ
@cindex @samp{/}
@cindex Filter Folder
@cindex Folder, Filtering
@cindex Folder, Virtual
@cindex Folder, Conditional
@cindex Flag

指定した条件を満たすメッセージのみを含む仮想的なフォルダです。

書式:

@example
@samp{/} @var{条件} @samp{/} @var{フォルダ}
@end example

@var{条件}には、以下を書けます。

@enumerate
@item
部分フィルタ： @samp{first:@var{数字}}, @samp{last:@var{数字}}

first: 全メッセージの先頭から@var{数字}の数だけメッセージを切り出します。
last: 全メッセージの末尾から@var{数字}の数だけメッセージを切り出します。

例:

@example
@group
/last:10/-fj.os.linux -> -fj.os.linux の最近の 10 個のメッセージ
                         のみを表示するフォルダ
/first:20/%inbox      -> %inbox の最初の 20 個を表示するフォルダ
@end group
@end example

@item
日付フィルタ： @samp{since:@var{日付}}, @samp{before:@var{日付}}

since: @var{日付}より最近のメッセージのみを取り出します。(@var{日付}を含みます)
before: @var{日付}より以前のメッセージのみを取り出します。(@var{日付}を含みません)

@var{日付}には以下が書けます。

@example
@group
yesterday ->  昨日
lastweek  ->  先週の今日
lastmonth ->  先月の今日
lastyear  ->  去年の今日
@var{数字}daysago -> @var{数字} 日前 (e.x. 3daysago)
@var{日}-@var{月の略名}-@var{年} ->  日付そのものの指定 (ex. 1-Nov-1998)
@end group
@end example

例:

@example
@group
/since:3daysago/+inbox → 最近３日間の +inbox 中のメッセージ。
/before:yesterday/+inbox → 昨日より以前の +inbox 中のメッセージ。
@end group
@end example

@item
フィールドフィルタ： @samp{@var{フィールド名}:@var{文字列}}

メッセージの@var{フィールド}の中身が@var{文字列}にマッチするメッセージを取り出します。
@var{フィールド名}、@var{文字列}に大文字小文字の区別はありません。

例:

@example
@group
/from:teranisi/+inbox -> +inbox で、From: フィールドに
                         "teranisi" という文字列を含むメッセージのフォルダ
/body:なんとか/%inbox -> %inbox で、本文に "なんとか"
                         という文字列を含むメッセージのフォルダ
@end group
@end example

@item
フラグフィルタ： @samp{flag:@var{フラグ名}}

@var{フラグ名}で指定されたフラグを持つメッセージを取り出します。

指定出来るフラグ名には、以下のものがあります。

@example
@group
unread    -> 未読
important -> 重要
answered  -> 返信済み
forwarded -> 転送済み
digest    -> 未読またはグローバルフラグ付き
any       -> 未読、返信済み、転送済み、グローバルフラグ付き
@end group
@end example

また、グローバルフラグとして設定したフラグも同様に設定することが出来ます。
グローバルフラグとは、@code{wl-summary-set-flags} (F キー)により付与できる
任意の名前を持つフラグです。フラグの名前は自由に定義することができます。
デフォルトでは、@samp{important} フラグが用意されています。
グローバルフラグが付与されたメッセージは、@samp{'flag} フォルダの
サブフォルダを閲覧することで、まとめて読むことができます。
@xref{Internal Folder}.

例:

@example
@group
/flag:digest/%inbox     -> %inbox のうち、未読または重要な
                           メッセージのフォルダ
/flag:wl/+ML/Wanderlust -> +ML/Wanderlust のうち、wl という
                           グローバルフラグが付いたメッセージのフォルダ
@end group
@end example

@item
複合条件

条件部分が @samp{!} で始まると否定の条件指定となります。複数の条件を 
@samp{|} で区切って指定すると、OR 条件となります。同様に、@samp{&} で区
切ると AND 条件を指定できます(AND 条件は OR 条件よりも優先して評価されま
す)。さらに、@samp{(}, @samp{)}, で囲うと条件式をグルーピング指定できます。

また、条件の省略記法として @samp{tocc} を用意しています。
@samp{/tocc:xxxx/} は、@samp{/to:xxxx|cc:xxxx/} に展開されます。
@samp{/!tocc:xxxx/} は、@samp{/!to:xxxx&!cc:xxxx/} に展開されます。

例:

@example
@group
/from:teranisi&!to:teranisi/+inbox
                      -> +inbox で From: フィールドに "teranisi" を含み、
                        To: フィールドに "teranisi" を含まない
                        メッセージのフォルダ

/tocc:"Yuuichi Teranishi"/+inbox -> +inbox で、To: フィールドか
                         Cc: フィールドに "Yuuichi Teranishi" を含む
                         メッセージのフォルダ

/(from:yt|from:teranisi)&subject:報告/+inbox
                      -> +inbox で、From: フィールドが "yt" か
                        "teranisi" を含み、かつ Subject が "報告" を含む
                        メッセージのフォルダ
@end group
@end example
@end enumerate

@noindent
注意

文字列部分に、空白文字、@samp{"}、@samp{/}、@samp{)}、@samp{|}、@samp{&} 
を含みたい場合は、文字列全体を @samp{"} で括る必要があります。(@samp{"}
で括られている文字列中に @samp{"} を含む場合は、@samp{\} でエスケープす
る必要があります)。これらの文字を含まない場合でも @samp{"} で括るのは問
題ありません。

@noindent
応用編

@example
*%inbox,/from:teranisi/%inbox@@server
       -> %inbox、および、
          %inbox@@server の中で From フィールドが "teranisi" のメッセージ群、
          をいっぺんに表示するフォルダ。

/last:100//to:teranisi/*+inbox,%inbox
       -> +inbox と %inbox 中のメッセージのうち、
          To: フィールドが "teranisi" にマッチする
          メッセージの最近の 100 個を表示するフォルダ。

/from:hogehoge//last:20//tocc:teranisi/%#mh/inbox@@localhost
       -> %#mh/inbox@@localhost の中で、To か Cc に "teranisi" が含まれる
          メッセージの最近の 20 個のうち、From が "hogehoge" のものを
          表示するフォルダ。
@end example


@node Pipe Folder, Internal Folder, Filter Folder, Folders
@section パイプフォルダ
@cindex @samp{|}
@cindex Pipe Folder
@cindex Get Message
@cindex Download Message
@cindex Incorporate Message

フォルダ閲覧時に、自動的にメッセージの取り込みを実行するフォルダです。

書式:

@example
@samp{|} @var{取り込み元} @samp{|} @var{取り込み先}
@end example

フォルダ閲覧時、@var{取り込み元}から@var{取り込み先}へ自動的にメッセージ
が移動します。POP を利用してメッセージをローカルにダウンロードして閲覧し
たい場合は、

@example
|&username@@popserver|+inbox
@end example

@noindent
のように指定すると、フォルダの表示を更新するときに
@samp{&username@@popserver} から @samp{+inbox} へ、メッセージを自動的に
取り込みます。

また、二つ目の @samp{|} を @samp{|:} にして、

@example
@samp{|} @var{取り込み元} @samp{|:} @var{取り込み先}
@end example

とすると、取り込み元から取り込み先にメッセージをコピーします。次に
そのフォルダにアクセスした際には差分だけを取り込みます。
POP サーバにメールを残したまま、メッセージを @samp{+inbox} にコピーして
閲覧したい場合は、

@example
|&username@@popserver|:+inbox
@end example

のようにします。

例:

@example
@group
|%inbox|%myinbox   -> %inbox から %myinbox へメッセージを取り込んで
                       閲覧するフォルダ。
|*&user@@popserver1,&user@@popserver2|+inbox
  -> &user@@popserver1 と &user@@popserver2 から +inbox へメッセージを
     取り込んで閲覧するフォルダ。
|-gnu.emacs.sources|:+sources
  -> -gnu.emacs.sources から +sources へメッセージをコピーして閲覧する
     フォルダ。
@end group
@end example

メッセージが移動した後、フック @code{elmo-pipe-drained-hook} が呼ばれ
ますので、ダウンロード後に実行したい関数を登録しておくと良いでしょう。


@node Internal Folder, File Folder, Pipe Folder, Folders
@section 内部フォルダ
@cindex @samp{'}
@cindex Internal Folder
@cindex Folder, @samp{$} mark
@cindex Flag
@cindex Cache
@c @cindex Folder, Null

Wanderlust の内部に保持したメッセージを閲覧するためのフォルダです。

書式:

@example
@group
@samp{'flag} [@samp{/} @var{グローバルフラグ}]
@samp{'sendlog}
@samp{'cache/00} 〜 @samp{'cache/1F}
@end group
@end example

@samp{'flag} というフォルダは、@var{グローバルフラグ}で指定したフラグの
付いたメッセージを集めた仮想フォルダです。

デフォルトで定義されている@var{グローバルフラグ}として @samp{important} 
フラグがあります。このフラグは、後述の重要マーク(@samp{$})を付けることで
メッセージに付加されます。重要マークをメッセージにつけておいて、あとから
見直したいときなどに便利です。@var{グローバルフラグ}を省略した場合は、こ
の @samp{important} フラグを指定したものと看倣されます。

また、後述のサマリモードにおいて、自由にグローバルフラグを定義してメッセー
ジに付加することも出来ます。@xref{Usage of Summary Mode}.

このフォルダでメッセージを削除すると、そのメッセージについていた 
@var{グローバルフラグ} が削除されます。また、このフォルダにメッセージ
を追加すると、そのメッセージには @var{グローバルフラグ} が付けられます。


@samp{'sendlog} は @file{~/.elmo/sendlog} に記載されているメッセージのうち
キャッシュしているものを集めた仮想フォルダです。自分自身への cc を
付け忘れた時などに有用かもしれません。
これを利用するには、@code{wl-draft-use-cache} を non-nil に設定して、
送信したメッセージをキャッシュするようにしてください。


@samp{'cache/00} 〜 @samp{'cache/1F} はネットワーク経由で読んだメッセー
ジのキャッシュにアクセスするためのフォルダです。00 〜 1F には、キャッシュ
ディレクトリ (@file{~/.elmo/cache})のサブディレクトリ名を指定します。


@node File Folder, Access Folder, Internal Folder, Folders
@section ファイルフォルダ
@cindex File Folder

ローカルファイルシステムのファイルを閲覧するためのフォルダです。一つのディ
レクトリを一つのフォルダとして扱います。

書式:

@example
@samp{file:} @var{ディレクトリのパス}
@end example

例:

@example
@group
file:~/work     -> @file{~/work}
file:/etc       -> @file{/etc}
@end group
@end example


@node Access Folder,, File Folder, Folders
@section アクセスフォルダ
@cindex Access Folder

指定されたフォルダの配下のサブフォルダを仮想的に一つのフォルダとして扱え
るようにするフォルダです。サブフォルダの増減は自動的に反映されます。

書式:

@example
@samp{access:} @var{ルートフォルダ}
@end example

例:

@example
@group
access:%INBOX -> %INBOX 以下の IMAP のメールボックスの全て
access:'cache -> 全ての 'cache フォルダ
@end group
@end example


@node Folder, Summary, Folders, Top
@chapter フォルダモード
@cindex Folder

起動して最初に現れるのがフォルダモード(フォルダの一覧表示)です。

フォルダモードでは、読みたいフォルダの選択、購読フォルダの編集を行ないます。

@menu
* Selecting Folder:: 読みたいフォルダの選択
* Folder Manager::   購読フォルダの編集
@end menu


@node Selecting Folder, Folder Manager, Folder, Folder
@section 読みたいフォルダの選択
@cindex Selecting Folder

@subsection 使用方法(TIPS)

@subsubsection 新規数、未読数のチェック

フォルダモードの見ためはこんな感じになるはずです。

@example
@group
[-]Desktop:14186/35580/67263
   受信箱:3/10/10
   ゴミ箱:2/7/10
   草稿:0/0/3
   送信済み:0/9/348
   [-]Emacsen:0/34/4837
     Wanderlust ML:0/0/558
     ELIPS ML:0/0/626
     tm (日本語) ML:0/0/821
     XEmacs ベータ:0/29/255
     Mew:0/0/998
     Mule-Win32:0/0/1491
     fj の Emacsen:0/5/88
@end group
@end example

各行は、

@example
@var{フォルダ名}:@var{未同期}(@var{新規})@var{数}/@var{未読数}/@var{総数}
@end example

@noindent
を表示しています。
チェックしたいフォルダの上にカーソルを合わせて @kbd{s} を押すと、
これらの数を最新のものに更新します。
たくさん新規メッセージがあると色が変わります。

フォルダモード全体は @samp{Desktop} というグループフォルダになります。
グループフォルダはリターンキーで開閉できます。
グループフォルダに対する操作は、そのグループフォルダに属する全ての子
フォルダに対して適用されます。
例えば、@samp{[-]Emacsen} のところにカーソルを合わせて @kbd{s} を押すと、
これに含まれる６つのフォルダの表示を最新のものに更新します。

@subsubsection フォルダの選択
フォルダの行にカーソルを置いてリターン(スペース)キーを押すとそのフォルダ
の内容を表示するサマリモードに移動します。

このとき、変数 @code{wl-stay-folder-window} が non-nil ならサマリに移動
したときにフォルダバッファの右にサマリのバッファが現れます。

@subsection キーバインド

フォルダモードでのフォルダ選択に関するコマンドのキーバインドは以下の通りです。

@table @kbd
@item @key{SPC}
@itemx @key{RET}
@kindex @key{SPC} (Folder)
@kindex @key{RET} (Folder)
@findex wl-folder-jump-to-current-entity
現在カーソルがある行のフォルダのサマリ表示へ移動します。
prefix argument をつけると、スティッキーサマリに入ります。
グループフォルダにカーソルがある場合は、グループフォルダの開閉を行ないます。
アクセスグループでは、prefix argument つきでグループフォルダを開くと、
内容を最新のリストに更新します。
アクセスグループが階層構造になっている場合は再帰的に更新します。
(@code{wl-folder-jump-to-current-entity})

@item M-@key{RET}
@kindex M-@key{RET} (Folder)
@findex wl-folder-update-recursive-current-entity
現在カーソルがあるアクセスグループの内容を最新のリストに更新します。
アクセスグループが階層構造になっている場合は再帰的に更新します。
(@code{wl-folder-update-recursive-current-entity})

@item w
@kindex w (Folder)
@findex wl-draft
新規ドラフトを用意します。
(@code{wl-draft})

@item W
@kindex W (Folder)
@findex wl-folder-write-current-folder
現在カーソルがあるフォルダが NNTP フォルダなら、@samp{Newsgroups:} フィー
ルドを補ってドラフトを用意します。メーリングリストのリファイル先なら、メー
リングリストのアドレスを推測して、@samp{To:} フィールドを補ってドラフト
を用意します。変数 @code{wl-subscribed-mailing-list} を設定しておく必要
があります。
(@code{wl-folder-write-current-folder})

@item C-c C-o
@kindex C-c C-o (Folder)
@findex wl-jump-to-draft-buffer
ドラフトバッファがあれば移動します。 複数のドラフトバッファが存在する場合は、
次々と切り替えていきます。また、prefix argument をつけることにより、
バッファが存在していない場合は、ドラフトフォルダからファイルを(存在すれば)
読み込みます。
(@code{wl-jump-to-draft-buffer})

@item s
@kindex s (Folder)
@findex wl-folder-check-current-entity
現在カーソルがある行のフォルダの未同期メッセージ数を更新します。
(@code{wl-folder-check-current-entity})

@item S
@kindex S (Folder)
@findex wl-folder-sync-current-entity
現在カーソルがある行のフォルダのサマリを更新します。
(@code{wl-folder-sync-current-entity})

@item r s
@kindex r s (Folder)
@findex wl-folder-check-region
リージョンにあるフォルダの未同期メッセージ数を更新します。
(@code{wl-folder-check-region})

@item r S
@kindex r S (Folder)
@findex wl-folder-sync-region
リージョンにあるフォルダのサマリを更新します。
(@code{wl-folder-sync-region})

@item Z
@kindex Z (Folder)
@findex wl-status-update
@file{~/.addresses} 等の状態を最新のものに更新します。
(@code{wl-status-update})

@item P
@kindex P (Folder)
@findex wl-folder-prev-unread
ひとつ上の未読があるフォルダ(もしくはグループ)に移動します。
(@code{wl-folder-prev-unread})

@item N
@kindex N (Folder)
@findex wl-folder-next-unread
ひとつ下の未読があるフォルダ(もしくはグループ)に移動します。
(@code{wl-folder-next-unread})

@item p
@kindex p (Folder)
@findex wl-folder-prev-entity
ひとつ上のフォルダへ移動します。
(@code{wl-folder-prev-entity})

@item n
@kindex n (Folder)
@findex wl-folder-next-entity
ひとつ下のフォルダへ移動します。
(@code{wl-folder-next-entity})

@item J
@kindex J (Folder)
@findex wl-folder-jump-folder
指定したフォルダへカーソルを移動します。
(@code{wl-folder-jump-folder})

@item I
@kindex I (Folder)
@findex wl-folder-prefetch-current-entity
現在カーソルがある行のフォルダに対して、
@code{wl-summary-incorporate}により、
新着記事をプリフェッチします。
グループフォルダにカーソルがある場合は、
再帰的に実行します。
(@code{wl-folder-prefetch-current-entity})

@item c
@kindex c (Folder)
@findex wl-folder-mark-as-read-all-current-entity
現在カーソルがある行のフォルダの
メッセージを全て読んだことにします。
グループフォルダにカーソルがある場合は、
再帰的に実行します。
(@code{wl-folder-mark-as-read-all-current-entity})

@item f
@kindex f (Folder)
@findex wl-folder-goto-first-unread-folder
最初の未読があるフォルダのサマリへ移動します。
(@code{wl-folder-goto-first-unread-folder})

@item E
@kindex E (Folder)
@findex wl-folder-empty-trash
ゴミ箱を空にします。
(@code{wl-folder-empty-trash})

@item F
@kindex F (Folder)
@findex wl-folder-flush-queue
キューにあるメッセージを送信します。
(@code{wl-folder-flush-queue})

@item V
@kindex V (Folder)
@findex wl-folder-virtual
指定した条件と合致するメッセージのみを含む仮想フォルダ(フィルタフォルダ)
へ移動します。
(@code{wl-folder-virtual})

@item ?
@kindex ? (Folder)
@findex wl-folder-pick
指定した条件と合致するメッセージを含むフォルダを探します。
(@code{wl-folder-pick})

@item o
@kindex o (Folder)
@findex wl-folder-open-all-unread-folder
全ての未読があるフォルダが含まれるグループを開きます。
(@code{wl-folder-open-all-unread-folder})

@item x
@kindex x (Folder)
@findex wl-execute-temp-marks
サマリバッファのマークを実行します。@xref{Sticky Summary}.
(@code{wl-execute-temp-marks})

@item /
@kindex / (Folder)
@findex wl-folder-open-close
カーソル行のグループの開閉をトグルします。
(@code{wl-folder-open-close})

@item [
@kindex [ (Folder)
@findex wl-folder-open-all
全てのグループを開きます。
(@code{wl-folder-open-all})

@item ]
@kindex ] (Folder)
@findex wl-folder-close-all
全てのグループを閉じます。
(@code{wl-folder-close-all})

@item q
@kindex q (Folder)
@findex wl-exit
Wanderlust を終了します。
(@code{wl-exit})

@item z
@kindex z (Folder)
@findex wl-folder-suspend
Wanderlust をサスペンドします。
(@code{wl-folder-suspend})

@item C-x C-s
@kindex C-x C-s (Folder)
@findex wl-save
現在のフォルダの状態をセーブします。
(@code{wl-save})

@item M-t
@kindex M-t (Folder)
@findex wl-toggle-plugged
Wanderlust のオフラインモード/オンラインモードをトグルします。
(@code{wl-toggle-plugged})

@item C-t
@kindex C-t (Folder)
@findex wl-plugged-change
Wanderlust のサーバ・ポート別のオフライン/オンラインを変更します。
(@code{wl-plugged-change})
@end table

@subsection カスタマイズ変数

@table @code
@item wl-folders-file
@vindex wl-folders-file
初期設定は @file{~/.folders}。
購読するフォルダを記述するファイルの名前です。

@item wl-folder-info-save
@vindex wl-folder-info-save
初期設定は @code{t}。
次に立ち上げ直したときに前回の未読数などの結果を使い回しするかどうか、です。

@item wl-stay-folder-window
@vindex wl-stay-folder-window
初期設定は @code{nil}。
Non-nil ならサマリに移動したときにフォルダバッファの右にサマリのバッファが現れます。

@item wl-folder-window-width
@vindex wl-folder-window-width
初期設定は 20。
@code{wl-stay-folder-window} が non-nil のときに残すフォルダバッファのウィンドウの幅です。

@item wl-folder-use-frame
@vindex wl-folder-use-frame
初期設定は @code{nil}。
Non-nil ならフォルダ一覧用に新しいフレームを開きます。

@item wl-folder-many-unsync-threshold
@vindex wl-folder-many-unsync-threshold
初期設定は 70。
未同期数がたくさんかどうかの閾値。この値を越えると色が変わります。

@item wl-highlight-folder-by-numbers
@vindex wl-highlight-folder-by-numbers
フォルダバッファにおける各行のハイライトの形式を指定します。初期値は
@code{t} で、行全体にメッセージ数に応じた色を付けます。@code{nil} ではフォ
ルダの状態に応じた色を付けます。また、数字 (例えば 1) にしておくと、メッ
セージ数とフォルダの状態の両方に応じたハイライトが行なわれます。

@item wl-folder-desktop-name
@vindex wl-folder-desktop-name
初期設定は @samp{Desktop}。
トップのグループの名前です。

@item wl-folder-petname-alist
@vindex wl-folder-petname-alist
初期設定は @code{nil}。
フォルダの本名とあだ名の cons のリストです。

@item wl-folder-access-subscribe-alist
@vindex wl-folder-access-subscribe-alist
初期設定は @code{nil}。
アクセスグループのリスト取得で自動的に subscribe、もしくは unsubscribe
するフォルダを指定します。

リストの各要素は

@example
(@var{アクセスグループの正規表現} . (@var{購読フラグ} @var{フォルダの正規表現} @dots{}))
@end example

@noindent
となっています。@var{購読フラグ}が non-nil の場合は@var{フォルダの正規表
現}にマッチしたフォルダのみ表示し、@var{購読フラグ}が @code{nil} の場合
は@var{フォルダの正規表現}にマッチしたフォルダは表示しません。ただし、
@var{購読フラグ}が non-nil でも既に unsubscribe 済のフォルダは表示しませ
ん。また、@var{フォルダの正規表現}は複数個記述できます。

例:

@lisp
@group
'(("^-fj$" . (t   "^-fj\\.\\(comp\\|editor\\|mail\\)"
                  "^-fj\\.\\(net\\|news\\|os\\|rec\\)"))
  ("^-$" . (t   "^-\\(fj\\|tnn\\|japan\\|gnu\\|comp\\)"))
  ("^\\+ml$" . (nil "^\\+ml$" "^\\+ml/tmp")))
@end group
@end lisp

@item wl-folder-hierarchy-access-folders
@vindex wl-folder-hierarchy-access-folders
階層構造に作成するアクセスグループの正規表現からなるリストです。

例えば、以下のように 
@code{wl-folder-hierarchy-access-folders} を設定すると、

@lisp
@group
(setq wl-folder-hierarchy-access-folders
     '("^-[^\\.]*$" "^-comp.unix$" "^-comp.unix.bsd$"))
@end group
@end lisp

@noindent
次のような階層構造になったアクセスグループを作ります。

@example
@group
   [-]-:912/912/3011
     [-]-fj:674/674/1314
       -fj.comp.announce:0/0/2
       -fj.comp.dev.cdrom:0/0/0
       @dots{}
     [+]-japan:238/238/1688
     [-]-comp:0/0/4
       [-]-comp.unix:0/0/0
         -comp.unix.admin:0/0/0
         -comp.unix.dos-under-unix:0/0/0
         -comp.unix.programmer:0/0/0
         [-]-comp.unix.bsd:0/0/23
           -comp.unix.bsd.freebsd.announce:0/0/0
     @dots{}
@end group
@end example

ただし、@samp{-} を開いただけでは1つ目の階層(@samp{-fj}, @samp{-japan},
@samp{-tnn}, @dots{}) を作るだけです。2つ目の階層
(@samp{-fj.comp.announce}, @dots{}, @samp{-comp.unix}, @dots{}) 以下のフォ
ルダは、あらためてそのグループを開いた時に作られます。
@end table


@node Folder Manager,  , Selecting Folder, Folder
@section 購読フォルダの編集
@cindex Folder Manager
@cindex Folder, Edit
@cindex Folder, Subscribe
@cindex Folder, Unsubscribe

前に述べた通り、購読するフォルダは @file{~/.folders} に保持されますが、
@file{~/.folders} を直接編集するまでもなく、フォルダモードからもフォルダ
の追加/削除/グループの定義などを編集できます。


@subsection 使用方法(TIPS)

@subsubsection フォルダの追加

@kbd{m a} で新規に購読するフォルダを追加します。存在しないフォルダを入力
すると、新規に作成してよいか聞いてきます。@kbd{m g} でグループが追加され
ます。このグループにフォルダを追加するには、まずこのグループを開いた状態
にします。そして次の行で挿入のコマンドを実行すると、そのグループにフォル
ダを追加できます。

@subsubsection フォルダの編集

@kbd{C-k} でカット(切り取り)、@kbd{C-y} でペースト(張り付け)ができます。
つまり、通常の文書編集の行編集と同じようにフォルダの位置を変更可能です。

@subsubsection マルチフォルダの作成方法

@enumerate
@item
@kbd{m q}で @code{wl-fldmgr-cut-entity-list} を消します。
@item
@kbd{C-k} でフォルダを切り取り、または @kbd{M-c} でフォルダをコピーします。
@item
@kbd{m m} を実行するとマルチフォルダが作成されます。
@end enumerate

@subsubsection あだ名(petname)やフィルタの削除

あだ名やフィルタを削除するためには、ミニバッファで ``''(@var{NULL}) を入
力します。

@subsubsection 空グループへの追加

@kbd{m g} などでグループを作成した後、このグループにフォルダを追加するに
は、まずこのグループを開いた状態にします。そして次の行で追加や挿入のコマ
ンドを実行するとグループにフォルダを追加できます。一方、上の行のグループが
閉じた状態のときは、そのグループと同じレベルに挿入されます。
言葉で説明するのは難しいので実際に実行してみると良いでしょう。
つまり、カーソル位置より上にあるグループの開閉状態に
より挿入される位置が異なるのです。

@subsubsection セーブ時の言語コード

@code{wl-folders-file} をセーブするときは @code{wl-mime-charset} の言語
コードになります。

@subsubsection フィルタフォルダの作成

カーソル上のフォルダをフィルタ付きに変更するには、フィルタフォルダ作成コ
マンドを用います。もしカーソル上のフォルダを残したまま新たにフィルタフォ
ルダを作成する場合は、まずコピーしてからフィルタを作成し、その後コピーし
たフォルダを挿入します。フィルタフォルダ作成時には一度に複数の(多段の)フィ
ルタが指定できます。先頭のフィルタをすべて削除するためには、
``''(@var{NULL})を入力します。

@subsubsection フォルダの並び替え

グループ内のフォルダを並び替える際には、@code{wl-fldmgr-sort-function} 
で指定した関数を用います。初期設定は @code{wl-fldmgr-sort-standard} になっ
ています。これはアルファベット順に並び替え、グループを最初にする関数です。
並び替えの対象になるのは指定したグループのみで、下位のグループは並び
替えません。つまり、再帰的には行わないということです。

@subsubsection アクセスグループ内の表示しないフォルダの指定

アクセスグループを開くと通常全てのフォルダを表示しますが、表示しないフォ
ルダを指定することもできます。以下の操作はアクセスグループ内でのみ有効で
す。

コマンド @code{wl-fldmgr-unsubscribe} (@kbd{u}) はカーソル位置のフォルダの
表示(subscribe)・非表示(unsubscribe)設定をトグルします。これに対して
@code{wl-fldmgr-unsubscribe-region} (@kbd{U}) は指定範囲のフォルダを非表示に
します。

@code{wl-fldmgr-unsubscribe} はトグルしますが、
@code{wl-fldmgr-unsubscribe-region} だと通常トグルにならないことに注意し
て下さい。リージョンの場合トグルにするよりどちらかに設定させる方が使いや
すいと考え、このようにしています。しかし、上記2つの関数とも prefix
argument の値が正ならフォルダを非表示、負なら表示、0ならトグルします。

またキーには割り当てていませんが、フォルダを表示に設定するだけの
@code{wl-fldmgr-subscribe} と @code{wl-fldmgr-subscribe-region} も用意して
います。使用する場合は適当なキーに割り当ててください。

さらに、アクセスグループ内で @code{wl-fldmgr-cut} と 
@code{wl-fldmgr-cut-region} を実行すると、それぞれ 
@code{wl-fldmgr-unsubscribe} と @code{wl-fldmgr-unsubscribe-region} を実
行したのと同じ効果が得られます。違いは cut の場合は画面からも消去するこ
とです。

@subsubsection アクセスグループ内の操作

アクセスグループ内でも削除や挿入を行えます。といっても実際には 
unsubscribe するかどうかを設定しているだけなので、変更が可能なのは、当
然そのアクセスグループに属しているフォルダだけです。つまり、挿入は 
subscribe し、削除は unsubscribe したことと同じです。
@footnote{現在は、指定範囲を表示しないフォルダにするとき、
指定範囲の削除を行った方が高速です。}
従って、Wanderlust 以外でフォルダを変更した場合、そのフォルダを実際に追
加したり削除したりするには、アクセスグループを @kbd{C-u @key{RET}} で更
新してください。@xref{Selecting Folder}.

また、挿入/削除/並び替えなどを行ったあとのフォルダの並びは保持されます。
もし @code{wl-force-fetch-folders} を設定するか、
@kbd{C-u @key{RET}} でグループを開くかすると、
存在しないフォルダは削除され、
新たに作成されたフォルダは先頭に追加されます。

@subsection キーバインド
@cindex Keybind, Folder Mode
@cindex Keybind, Folder Buffer

フォルダの編集に関する主なコマンドのキーバインドは以下の通りです。一応 
@kbd{m} で始まるキーに全て割り当てて、主な機能のみ1ストロークで使用できるよ
うにしています。

@table @kbd
@item m a
@kindex m a (Folder)
@findex wl-fldmgr-add
フォルダ一覧にフォルダを追加します。存在しないフォルダを入力した場合には
確認の後、新規に作成します。
(@code{wl-fldmgr-add})

@item +
@itemx m g
@kindex + (Folder)
@kindex m g (Folder)
@findex wl-fldmgr-make-group
グループを作成します。
(@code{wl-fldmgr-make-group})

@item m A
@kindex m A (Folder)
@findex wl-fldmgr-make-access-group
アクセスグループを作成します。
(@code{wl-fldmgr-make-access-group})

@item m d
@kindex m d (Folder)
@findex wl-fldmgr-delete
フォルダの実体とその msgdb を削除します。
nntp などの削除できないフォルダでは msgdb のみ削除します。
(@code{wl-fldmgr-delete})

@item R
@itemx m R
@kindex R (Folder)
@kindex m R (Folder)
@findex wl-fldmgr-rename
フォルダ、もしくはグループ名を変更します。
フォルダを変更する場合は msgdb のパスも変更します。
(@code{wl-fldmgr-rename})

@item *
@itemx m m
@kindex * (Folder)
@kindex m m(Folder)
@findex wl-fldmgr-make-multi
マルチフォルダを作成します (コピー、削除されたフォルダを結合します)。
(@code{wl-fldmgr-make-multi})

@item |
@itemx m f
@kindex | (Folder)
@kindex m f (Folder)
@findex wl-fldmgr-make-filter
フィルタフォルダを作成します (選択したフォルダに filter を付けます)。
(@code{wl-fldmgr-make-filter})

@item M-c
@itemx m c
@kindex M-c (Folder)
@kindex m c (Folder)
@findex wl-fldmgr-copy
フォルダをコピーする (グループはコピー不可)。
(@code{wl-fldmgr-copy})

@item M-w
@itemx m W
@kindex M-w (Folder)
@kindex m W (Folder)
@findex wl-fldmgr-copy-region
指定範囲のフォルダのコピー。
(@code{wl-fldmgr-copy-region})

@item C-k
@itemx m k
@kindex C-k (Folder)
@kindex m k (Folder)
@findex wl-fldmgr-cut
フォルダの削除 (切り取り)。フォルダの実体は削除しません。
(@code{wl-fldmgr-cut})

@item C-w
@itemx m C-w
@kindex C-w (Folder)
@kindex m C-w (Folder)
@findex wl-fldmgr-cut-region
指定範囲のフォルダの削除 (切り取り)。
(@code{wl-fldmgr-cut-region})

@item C-y
@itemx m y
@kindex C-y (Folder)
@kindex m y (Folder)
@findex wl-fldmgr-yank
コピー、削除したフォルダ(cut-list)を挿入する(ペースト、貼り付け)。
(@code{wl-fldmgr-yank})

@item m p
@kindex m p (Folder)
@findex wl-fldmgr-set-petname
フォルダにあだ名(petname)を付ける。
(@code{wl-fldmgr-set-petname})

@item m q
@kindex m q (Folder)
@findex wl-fldmgr-clear-cut-entity-list
コピー、削除したフォルダ情報(cut-list)を消す。
(@code{wl-fldmgr-clear-cut-entity-list})

@item m s
@kindex m s (Folder)
@findex wl-fldmgr-sort
グループ内のフォルダを並び替える (そのグループ階層のみ)。
(@code{wl-fldmgr-sort})

@item m C-s
@kindex m C-s (Folder)
@findex wl-fldmgr-save
wl-folders-file にセーブする。
(@code{wl-fldmgr-save})
@end table

[以下の操作はアクセスグループに対してのみ有効]

@table @kbd
@item u
@itemx m u
@kindex u (Folder)
@kindex m u (Folder)
@findex wl-fldmgr-unsubscribe
フォルダの表示/非表示の設定。
(@code{wl-fldmgr-unsubscribe})

@item U
@itemx r u
@kindex U (Folder)
@kindex r u (Folder)
@findex wl-fldmgr-unsubscribe-region
指定範囲にあるフォルダの表示/非表示の設定。
(@code{wl-fldmgr-unsubscribe-region})

@item l
@itemx m l
@kindex l (Folder)
@kindex m l (Folder)
@findex wl-fldmgr-access-display-normal
現在有効なフォルダのみ一覧表示する。
(@code{wl-fldmgr-access-display-normal})

@item L
@itemx m L
@kindex L (Folder)
@kindex m L (Folder)
@findex wl-fldmgr-access-display-all
非表示のフォルダも含めて全てのフォルダを一覧表示する。
(@code{wl-fldmgr-access-display-all})
@end table


@subsection カスタマイズ変数

@table @code
@item  wl-interactive-save-folders
@vindex wl-interactive-save-folders
初期設定は @code{t}。フォルダ変更の操作を行った場合、Wanderlust 終了時も
しくは Emacs 終了時にセーブするか確認を行います。@code{nil} だと確認なし
でセーブします。

@item wl-fldmgr-make-backup
@vindex wl-fldmgr-make-backup
初期設定は @code{t}。Non-nil なら、セーブする際に @file{~/.folders.bak} 
にバックアップを取ります。

@item wl-fldmgr-sort-function
@vindex wl-fldmgr-sort-function
初期設定は @code{wl-fldmgr-sort-standard}。sort 時に使用する関数を指定し
ます。初期設定は、アルファベット順に並べグループは最初にする関数です。
(@code{wl-fldmgr-sort-group-first} が non-nil の場合)。

@item wl-fldmgr-sort-group-first
@vindex wl-fldmgr-sort-group-first
初期設定は @code{t}。
Non-nil なら、@code{wl-fldmgr-sort-standard} で並び替えるときグループを最
初に置く。@code{nil} なら、グループも含めてアルファベット順に並び替えます。

@item wl-folder-check-async
@vindex wl-folder-check-async
初期設定は @code{t}。
Non-nil の場合、フォルダの新規メッセージ数のチェックを非同期に行ないます。
ニュースグループのチェックが大幅に速くなります。

@item wl-folder-check-fast
@vindex wl-folder-check-fast
初期設定は @code{nil}。
Non-nil の場合、フォルダの新規メッセージ数のチェックを行うたびに
フォルダの表示を更新しません。

@item wl-folder-notify-deleted
@vindex wl-folder-notify-deleted
初期設定は @code{nil}。
@c  nil means?
Non-nil ならメッセージが削除されたときにフォルダモードで未読数をチェック
すると負の値が表示されます。値が @code{sync} ならば、メッセージが削除さ
れていたときにフォルダの内容と同期を取ります。

@item wl-fldmgr-add-complete-with-current-folder-list
@vindex wl-fldmgr-add-complete-with-current-folder-list
初期設定は @code{nil}。
Non-nil なら @code{wl-fldmgr-add} の補完候補を
@code{elmo-folder-list-subfolders} で得ます。
@end table

@subsection その他

フォルダの編集に関して、以下のような仕掛けや制限があります。

@enumerate
@item
削除やコピーを行うと、スタックのように変数 
@code{wl-fldmgr-cut-entity-list} にたまっていきます。ペースト(張り付け)
は削除やコピーした単位で(リージョンでコピーしたなら、そのリージョン内の
フォルダを一度に) 吐き出します。

@item
@samp{Desktop} グループの削除、コピーはできません。
また、@samp{Desktop} 外への挿入はできません。

@item
グループのコピーはできません。

@item
アクセスグループ内での操作は、そのアクセスグループに実際に属しているフォルダ
のみが対象になります。

@item
全体で同じ名前のグループは複数作れません。

@item
同じグループ(階層)に同じフォルダは作れません。階層が違えば複数作れます。
異なるフォルダに同じあだ名は指定できません。
@end enumerate


@node Summary, Message, Folder, Top
@chapter サマリモード

フォルダモードで読みたいフォルダを選択すると、サマリモードに移動します。
サマリモードは、メッセージの一覧を表示するモードです。

@menu
* Usage of Summary Mode::       使用方法
* Thread Operations::           スレッドの操作
* Cache::                       キャッシュと先読み機能
* Auto Refile::                 自動リファイル
* Sticky Summary::              スティッキーサマリ
* Summary View::                サマリ行の形式
* Mark and Action::             一時マークとその処理
* Key Bindings of Summary::     キーバインド
* Variables of Summary::        カスタマイズ変数
@end menu


@node Usage of Summary Mode, Thread Operations, Summary, Summary
@section 使用方法(TIPS)

@subsection サマリの表示内容

サマリモードには、以下のようにメッセージの一覧が表示されます。

@example
@group
  377  09/16(水)11:57 [+1: 北目さん       ] Bug?
  381  09/17(木)00:16 [+3: 奥西さん       ] elmo-lha.el -- LHA interface
  384  09/17(木)01:32 [+1: てらにし       ] wl-0.6.2
  389 N09/18(金)01:07 [+2: てらにし       ] wl-0.6.3
@end group
@end example

各行は、メッセージの

@example
@var{メッセージ番号}、@var{一時的マーク}、@var{永続的マーク}、@var{日付け}、@var{差出人}、@var{サブジェクト}
@end example

@noindent
を順に表示しています。表示形式の変更については、サマリ行の形式の節を
参照して下さい。@xref{Summary View}.

@var{メッセージ番号}はそのフォルダ中にあるメッセージに対するラベルです。
News フォルダでは article 番号、IMAP フォルダでは UID、MH フォルダではファ
イル名になります。

@var{一時的マーク}/@var{永続的マーク}については、あとで詳しく説明します。

@var{日付け}は、@samp{@var{月}/@var{日}(@var{曜日})@var{時}:@var{分}} の
ように表示されます。曜日を日本語ではなく英語表記したい場合は、
@code{wl-summary-weekday-name-lang} を @samp{en} に設定してください。

@var{差出人}は、スレッドの深さ分インデントされて表示されます。@var{差出
人}は、アドレス帳にあだ名があればあだ名で表示します。あだ名表記を止めた
い場合は、@code{wl-use-petname} を @code{nil} に設定してください。

@var{差出人}の部分にある @samp{+2} のような数字は、そのメッセージに対す
る返事の数を表します。例えば @samp{+2} なら返事が 2 通あることを示します。

@var{サブジェクト}は、メッセージの @samp{Subject:} フィールドです。同じ
スレッドで、かつ親と同じ @samp{Subject:} を持つメッセージの場合には、
@var{サブジェクト} を表示しません。メーリングリストなどの通し番号表示は
無視します。@samp{Subject:} が無い場合には、変数 
@code{wl-summary-no-subject-message} の内容を表示します。

@subsection 一時的マーク
@cindex Mark, Temporary

一時的マークは、メッセージを操作するためマークです。

一時的マークには、@samp{*}, @samp{d}, @samp{D}, @samp{o}, @samp{O},
@samp{i}, @samp{~} があります。

@table @samp
@item *
まとめ処理用マークです。
@kbd{m} で始まるコマンドで @samp{*}マークのついたメッセージ対して一括した処理
ができます。

@item d
処分するメッセージに付くマークです。@kbd{d} を押すと付きます。

@item D
削除するメッセージに付くマークです。@kbd{D} を押すと付きます。

@item o
リファイルするメッセージに付くマークです。@kbd{o}を押すと、リファイル先
を聞いて来ます。それに答えると、リファイル先のフォルダ情報が付け加わります。

@item O
コピーするメッセージに付くマークです。@kbd{O}を押すと、コピー先を聞いて
来ます。それに答えると、コピー先のフォルダ情報が付け加わります。

@item i
プリフェッチ予約されたメッセージに付くマークです。@kbd{i}を押すと付きます。

@item ~
再送予約されたメッセージに付くマークです。@kbd{~}を押すと、再送先アドレ
スを聞いて来ます。それに答えると、再送先のアドレス情報が付け加わります。
@end table

@kbd{x} を押すと、それぞれの一時的マークに対応したアクションを実行します。

@subsection 永続的マーク

永続的マークは、メッセージの状態を示すマークです。

永続的マークには、@samp{!}, @samp{N}, @samp{n}, @samp{U}, @samp{u},
@samp{A}, @samp{a}, @samp{F}, @samp{f}, @samp{$} があります。


@table @samp
@item N
新規メッセージに付きます。
@item n
新規メッセージに付きます。@samp{N} とは異なり、@samp{n} のメッセージは
キャッシュされています。
@item U
未読メッセージに付きます。
@item u
未読メッセージに付きます。@samp{U} とは異なり、@samp{u} のメッセージは
キャッシュされています。
@item !
既読メッセージに付きます。マーク無しとは異なり、@samp{!} のメッセージは
キャッシュされていません。
@item A
返信済みメッセージに付きます。
@item a
返信済みメッセージに付きます。@samp{A} とは異なり、@samp{a} のメッセージ
はキャッシュされています。
@item F
転送済みメッセージに付きます。
@item f
転送済みメッセージに付きます。@samp{F} とは異なり、@samp{f} のメッセージ
はキャッシュされています。
@item $
グローバルフラグの設定されたメッセージに付きます。このマークは Emacs を
終了しても保存されるため、あとで返事を書きたい場合など、覚えておきたい重
要なメッセージに付けておくと便利です。@samp{$} の付いたメッセージは、(実
際のメッセージが消されたとしても) @samp{'flag} フォルダで閲覧できます。
グローバルフラグは、@kbd{$} または、@kbd{F} で付けることが出来ます。

@item なし
既読メッセージにはマークが存在しません。
@end table

@samp{N}, @samp{U}, @samp{!}, @samp{A}, @samp{F} は、そのメッセージがキャッ
シュされていないことを示しています。これらのマークが付いていない場合、つ
まり、そのメッセージがキャッシュされている場合は、ネットワークに接続され
ていなくてもIMAP フォルダのメッセージや NNTP フォルダのニュース記事を読
むことができます。

永続的マークのうち、@code{wl-summary-expire-reserve-marks} で指定した
マークの付いたメッセージは、後で説明する (Wanderlust の機能としての)
expire の対象から除外されます。@xref{Expire and Archive}.

@subsection メッセージの読み進めかた

サマリモードでは、基本的にスペースキーを押すだけでメッセージを
読み進めることができます。
サマリの表示内容をフォルダの最新の状態に合わせる(同期する)には、
@kbd{s} を押します。

@kbd{N} で次の未読、@kbd{n} で次のメッセージを表示します。
@kbd{j} を押すと現在表示中のメッセージのバッファに移動します。
マルチパートの操作はメッセージバッファに移動してから行います。
@xref{Message}.

@subsection メッセージ番号を詰める
サマリで @kbd{M-x wl-summary-pack-number} とすることで
メッセージ番号を詰めることができます。ただし対応しているフォルダの種類は
MH Folder, News Spool Folder, Maildir Folder のみです。


@node Thread Operations, Cache, Usage of Summary Mode, Summary
@section スレッドの操作

例えば、

@example
  384  09/17(木)01:32 [+1: てらにし       ] wl-0.6.2
@end example

@noindent
は一つのスレッド(一つの話題の流れ)を示しています。
この行で @kbd{/} を押すと、スレッドが開いて次のような表示になります。

@example
@group
  384  09/17(木)01:32 [ てらにし          ] wl-0.6.2
  388  09/17(木)22:34 └[ 村田さん          ]
@end group
@end example

(388 番のメッセージは 384 番のメッセージに対する返事です。)
もう一回 @kbd{/} を押すと、スレッドを閉じます。
prefix argument つきで @kbd{/} を押すと、全ての子スレッドを開きます。

@kbd{[} でサマリの全てのスレッドを開き、@kbd{]}で全てのスレッドを閉じま
す。

そのスレッドに属するメッセージに対して一括して処理を行うためには @kbd{t} 
から始まるコマンドを用います。@xref{Key Bindings of Summary}.


@subsection スレッドの繋ぎなおし

手動でスレッドの繋ぎなおしができます。サマリで該当するメッセージにカーソ
ルを合わせて @kbd{M-w} (@code{wl-summary-save-current-message}) し、新し
い親メッセージのところで @kbd{C-y}
(@code{wl-summary-yank-saved-message})を実行してください。


@node Cache, Auto Refile, Thread Operations, Summary
@section キャッシュ

@subsection キャッシュファイル

ネットワーク経由のメッセージはキャッシュされます。これにより、ネットワーク
流量が節約され、またオフライン操作が可能となります。キャッシュは、ディレク
トリ @file{~/.elmo/cache} に保持されます。キャッシュをクリアするには、
@kbd{M-x elmo-cache-expire-by-size} と入力してください。最近使われてない
キャッシュから順に、一定のディスク容量になるまで消します。

@subsection キャッシュファイル名

@vindex elmo-msgid-to-cache-max-length
@vindex elmo-msgid-to-cache-algorithm
キャッシュファイルのファイル名は、 Message-ID を単純に加工したファイル名
が生成されます。しかし、Message-ID が極端に長い場合にファイルを作成でき
ない場合があります。その為、 @code{elmo-msgid-to-cache-max-length} に指
定された整数より長いファイル名が作られた場合はハッシュ関数を用いて一定の
長さのファイル名になるように調整します。 変数の値が @code{nil} の場合に
はこの処理は行われません。ハッシュ関数のアルゴリズムは
@code{elmo-msgid-to-cache-algorithm} で指定します。

いずれかの値を変更した場合、既存のキャッシュファイルが参照されなく場合
があります。

@subsection バッファキャッシュと先読み機能

一度読んだメッセージは一定数バッファに保持されます。これにより、次にその
メッセージを表示する際の動作を高速にします。保持するバッファの数は
@code{wl-message-buffer-cache-size} で指定します。

また、メッセージを読んでいる間に次のメッセージを取得しておく先読み機能が
あります。

この先読みするフォルダは次の2つの変数により指定できます。

@table @code
@item wl-message-buffer-prefetch-folder-type-list
@vindex wl-message-buffer-prefetch-folder-type-list
初期設定は @code{'(imap4 nntp)}。先読み機能を有効にしたいフォルダタイプ
のシンボルリストを指定します。初期設定では、IMAP4 とNNTP フォルダで先読
み機能が有効になります。もし localdir と IMAP フォルダが混在したマルチフォ
ルダでは IMAP のメッセージだけが先読みの対象となります。この変数は 
@code{wl-message-buffer-prefetch-folder-list} よりも優先されます。すべて
のフォルダで先読み機能を有効にしたい場合には、t を指定します。

@item wl-message-buffer-prefetch-folder-list
@vindex wl-message-buffer-prefetch-folder-list
初期設定は @code{nil}。
先読み機能を有効にするフォルダをフォルダ名(正規表現)のリストで指定します。

@item wl-message-buffer-prefetch-depth
@vindex wl-message-buffer-prefetch-depth
初期設定は 1。先読み機能するメッセージの数。

@item wl-message-buffer-prefetch-idle-time
@vindex wl-message-buffer-prefetch-idle-time
初期設定は 1 (単位:秒)。先読み機能する時間間隔。

@item wl-message-buffer-prefetch-threshold
@vindex wl-message-buffer-prefetch-threshold
初期設定は 30000 (bytes)。この値を越えるサイズのメッセージは、先読みしません。
@code{wl-message-buffer-prefetch-threshold}を @code{nil} に設定すると、
先読みするメッセージのサイズをチェックしません。

@item wl-auto-prefetch-first
@vindex wl-auto-prefetch-first
初期設定は @code{nil}。
Non-nil であればフォルダに移動した時に最初のメッセージを自動的に先読みします。
@end table


@node Auto Refile, Sticky Summary, Cache, Summary
@section 自動リファイル
@vindex elmo-msgdb-extra-fields
@vindex wl-refile-rule-alist
@findex wl-summary-auto-refile

メッセージのヘッダ情報から任意のフォルダへ振り分ける自動リファイル機能が
@kbd{C-o} (@code{wl-summary-auto-refile}) で使用できます。自動リファイル
は msgdb の overview 情報を元に振り分けします。標準では @samp{From:}
@samp{Subject:} @samp{To:} @samp{Cc:} が含まれています。これ以外の拡張項
目で振り分けたいときには、

@lisp
@group
(setq elmo-msgdb-extra-fields
      '("x-ml-name"
        "reply-to"
        "sender"
        "mailing-list"
        "newsgroups"))
@end group
@end lisp

@noindent
として拡張項目を msgdb に含めるようにしてください。既に取得したメッセージ
の拡張項目を取り込むには @kbd{s all} などで msgdb を作り直す必要があり
ます。

次に振り分けするルールを設定します。
自動振り分けは，変数 @code{wl-refile-rule-alist} の値に基づいて行われます。
@code{wl-refile-rule-alist} は、

@example
@group
(@var{フィールド} (@var{正規表現} . @var{振り分け先})
            (@var{正規表現} . @var{振り分け先})
            @dots{})
@end group
@end example

のようなルールのリストとなっています。各ルールは、『@var{フィールド}』の値が
『@var{正規表現}』にマッチするときに『@var{振り分け先}』に振り分けるという意味を持ち
ます。前方に指定されたルールが優先されます。

『@var{フィールド}』部分には、フィールド名の文字列を指定します。また、フィール
ド名の文字列のリストを指定することもできます。この場合、リストのいずれか
のフィールドの値がマッチしたときに振り分けを行います(OR 条件となります)。

『@var{正規表現}』にはフィールドの値にマッチさせる正規表現文字列を指定します。
『@var{振り分け先}』には振り分け先のフォルダ名の文字列を指定します。
『@var{振り分け先}』部分には、再びルールを書くこともでき、その場合
そのルールのフィールドの値の条件と現在のルールのフィールドの値の条件が
満たされたときに振り分けを行ないます(AND 条件となります)。

また、『@var{正規表現}』でマッチした部分文字列を用いて、『@var{振り分け先}』
を指定することもできます。実際には次のようにして参照します。

@table @samp
@item \&
マッチした文字列全体を参照します。

@item \@var{N}
@var{N} 番目の @samp{\(@dots{}\)} にマッチした文字列を参照します。
(@var{N} は数字)
@end table

以下は @code{wl-refile-rule-alist} の一例です。

@lisp
@group
(setq wl-refile-rule-alist
      '(("x-ml-name"
         ("^Wanderlust" . "+wl")
         ("^Elisp" . "+elisp"))
        (("To" "Cc")
         ("\\([a-z]+\\)@@gohome\\.org" . "+\\1"))
        ("From"
         ("me@@gohome\\.org" . ("To" ("you@@gohome\\.org" . 
                                    "+from-me-to-you"))))))
@end group
@end lisp

@kbd{C-o} (@code{wl-summary-auto-refile}) で条件にマッチしたメッセージに
リファイルマークが付加されます。@kbd{x} でリファイルを実行します。

@code{wl-summary-auto-refile-skip-marks} を設定することにより、
自動リファイルの対象とならないメッセージを指定することができます。
標準では @samp{N} @samp{U} @samp{!} が設定されており、
これらの永続的マークのついたメッセージは、自動リファイルしません。
つまり標準では未読のメッセージを自動リファイルしないことになります。
すべてのメッセージを自動リファイルの対象にするには、

@lisp
(setq wl-summary-auto-refile-skip-marks nil)
@end lisp

@noindent
の様に @code{wl-summary-auto-refile-skip-marks} を @code{nil} にします。


@node Sticky Summary, Summary View, Auto Refile, Summary
@section スティッキーサマリ
@cindex Summary, Sticky
@cindex Sticky Summary

スティッキーサマリは、@kbd{q} で現在のサマリを終了してもバッファが消えな
い、その名の通りスティッキー(しつこい)サマリです。

フォルダモードから @kbd{Shift RET} 、もしくはサマリ から @kbd{G} して
サマリに入ると、スティッキーサマリが作られます。
また、通常のサマリで @kbd{M-S} (@code{wl-summary-stick}) を実行すると
現在のサマリがスティッキーサマリになります。

スティッキーサマリのバッファ名は、@samp{Summary:@var{フォルダ名}} と
なります。 @kbd{C-x b} (@code{switch-to-buffer}) などで、適当にバッファ
を切替えればいつでもスティッキーサマリを参照できます。また、サマリモード
で @kbd{C-c C-n} (@code{wl-summary-previous-buffer}) や @kbd{C-c C-p}
(@code{wl-summary-next-buffer}) するとサマリを巡回できます。

スティッキーサマリでは、@kbd{q} や @kbd{g} の際に元のバッファを
残します。スティッキーサマリを終了するには @kbd{C-u q} でサマリを抜ける
か、@kbd{C-u g} で別のサマリに移動して下さい。その他の操作に関しては通常
のサマリと同様です。

変数 @code{wl-summary-always-sticky-folder-list} にフォルダ名(正規表現)
のリストを設定することにより、フォルダ移動時に自動的にスティッキーサマリ
とすることもできます。


@node Summary View, Mark and Action, Sticky Summary, Summary
@section サマリ行の形式
@cindex Format of summary lines
@vindex wl-summary-line-format
@vindex wl-summary-line-format-spec-alist
@vindex wl-folder-summary-line-format-alist
@vindex wl-summary-default-number-column
@vindex wl-summary-number-column-alist

サマリ行の形式は、ある程度自由に変更できます。

サマリ行の形式を変更するには @code{wl-summary-line-format} を設定します。
@code{wl-summary-line-format-spec-alist} で定義された書式を用います。
以下に例を示します。

@lisp
@group
;; @r{番号 一時マーク 永続マーク 日付 枝 [ (子の数) 差出人 ] 件名}
(setq wl-summary-line-format "%n%T%P%M/%D(%W) %t%[%17(%c %f%) %] %s")
@end group
@end lisp

数字は桁数を表します。負の数の場合は、右詰めになります。また、最初の数字
を @samp{0} にすると、桁数が足りない場合に @samp{ } の代わりに @samp{0}
を追加して桁数を揃えます。

例:

@example
@group
%5l   -> `1    '
%-05l -> `00001'
@end group
@end example

デフォルトの @code{wl-summary-line-format-spec-alist} で用意されている
書式記号のうち主なものは以下の通りです。

@example
@group
%n  メッセージ番号
%T  一時的マーク
%P  永続的マーク
%Y  年
%M  月
%D  日
%W  曜日
%h  時
%m  分
%t  スレッドの枝
%[  [ (繋ぎ直した子の場合は <)
%]  ] (繋ぎ直した子の場合は >)
%f  差出人
%s  件名
%S  サイズ
%c  +子の数: (スレッドを開いた時のみ表示)
%C  [+子の数] (スレッドを開いた時のみ表示)
%#  メーリングリストの情報 (`(' ML名 [ ` ' ML番号 ] `)')
%l  メーリングリストでの番号
%@@  最初の MIME パートが multipart/mixed の場合に `@@'
%~  直前の項目が空でない場合に ` '
@end group
@end example

メッセージ番号 (@samp{%n}) の桁数を変更したい場合は、
@code{wl-summary-default-number-column} もしくは
@code{wl-summary-number-column-alist} の値を変更してください。

@code{wl-summary-line-format} に一時的マーク (@samp{%T}) と永続的マーク
(@samp{%P}) を含める場合には、必ず一定の位置に表示されるように定義しなけ
ればなりません。例えば、スレッドによって長さが変わる @samp{%t} のうしろに
@samp{%T} や @samp{%P} を表示するようにしてしまうと、正しくマーク処理を行
なえなくなる可能性があります。

また，@samp{%数字(}, @samp{%)} で囲んだ範囲は，'数字'の桁数になります(入
れ子も可)。複数の書式記号に対する幅を設定するときに使います。例えば、上
記例の

@example
%17(%c %f%)
@end example

という指定は、『「子の数」と「差出人」をつなげた文字列を 17 桁にする』と
いう意味です。

また、@code{wl-folder-summary-line-format-alist} を設定すると、サマリ行
の形式をフォルダ毎に指定することができます。以下の例のように、フォルダ名
の正規表現とサマリ行の書式を指定して下さい。

@lisp
@group
(setq wl-folder-summary-line-format-alist
      '(("^%" . "%T%P%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")
        ("^+" . "%n%T%P%M/%D %[ %17f %] %t%C%s")))
@end group
@end lisp

@subsection 差出し人の表示形式について

書式記号 @samp{%f} は、@code{wl-summary-from-function} で指定した関数が返す値を
表示します。関数 @code{wl-summary-default-from} を用いる場合(デフォルト)、通常は
差出人を表示しますが、フォルダ名が @code{wl-summary-showto-folder-regexp}
にマッチし、かつ差出人が自分であるメッセージについては、宛先を表示します。
また、 @code{wl-use-petname} が Non-nil の場合にはペットネームを用いて表示します。

例えば、@samp{+backup} では自分が出したメッセージについては宛先を表示したい場合、
次のように設定します。

@lisp
(setq wl-summary-showto-folder-regexp "^\\+backup$")
@end lisp


@node Mark and Action, Key Bindings of Summary, Summary View, Summary
@section 一時マークとその処理
@cindex Mark and Action

一時マークとそれに対応する処理手順を @code{wl-summary-mark-action-list}
で定義することができます。初期設定では、refile (@samp{o}), copy (@samp{O}),
dispose (@samp{d}), delete (@samp{D}), prefetch (@samp{i}), resend (@samp{~})
が定義されています。

@code{wl-summary-mark-action-list} の各要素は

@example
(@samp{MARK} @samp{SYMBOL}
 @samp{ARGUMENT-FUNCTION} @samp{SET-MARK-FUNCTION} @samp{EXEC-FUNCTION}
 @samp{FACE} @samp{DOC-STRING})
@end example

の組です。ここで @samp{MARK} は定義する一時マークの文字列で、
@samp{SYMBOL} は定義するアクションの名前です。
@samp{ARGUMENT-FUNCTION} は次に説明する @samp{SET-MARK-FUNCTION} に
与える引数を設定するための関数で、その引数としては

@example
(@samp{ACTION} @samp{NUMBER})
@end example

が与えられます。@samp{ACTION} には @samp{SYMBOL} と同じものが入り、
@samp{NUMBER} にはメッセージ番号が入ります。
@samp{SET-MARK-FUNCTION} はマークを設定する際に呼ばれる関数で、引数は

@example
(@samp{NUMBER} @samp{MARK} @samp{DATA})
@end example

です。@samp{NUMBER} は対象となるメッセージの番号、@samp{MARK} は一時マー
クの文字列、@samp{DATA} は @samp{ARGUMENT-FUNCTION} で与えられるものです。

@samp{EXEC-FUNCTION} はアクションを実行する際に呼ばれる関数で、その引数は
@samp{MARK-INFO} からなるリストです。ここで @samp{MARK-INFO} は

@example
(@samp{NUMBER} @samp{MARK} @samp{DATA})
@end example

からなるリストです。@samp{FACE} はハイライトに用いる face です。


@node Key Bindings of Summary, Variables of Summary, Mark and Action, Summary
@section キーバインド
@cindex Keybind, Summary Mode
@cindex Keybind, Summary Buffer

サマリモードのキーバインドは以下の通りです。

@table @kbd
@item @key{SPC}
@kindex @key{SPC} (Summary)
@findex wl-summary-read
現在カーソルがある行のメッセージをメッセージバッファに表示します。
(@code{wl-summary-read})

@item .
@kindex . (Summary)
@findex wl-summary-redisplay
現在カーソルがある行のメッセージをデフォルトの表示形式で再表示します。
prefix argument つきならばキャッシュが存在しても無視して再読み込みし直し
ます。@kbd{C-u C-u .} のように 2回の @kbd{C-u} を付けて実行した場合、現在
の表示形式を維持して再読み込みし直します。(@code{wl-summary-redisplay})

@item <
@kindex < (Summary)
@findex wl-summary-display-top
最初のメッセージを表示します。
(@code{wl-summary-display-top})

@item >
@kindex > (Summary)
@findex wl-summary-display-bottom
最後尾のメッセージを表示します。
(@code{wl-summary-display-bottom})

@item @key{BS}
@itemx @key{DEL}
@kindex @key{BS} (Summary)
@kindex @key{DEL} (Summary)
前のページを表示します。
@findex wl-summary-prev-page
(@code{wl-summary-prev-page})

@item @key{RET}
@kindex @key{RET} (Summary)
@findex wl-summary-enter-handler
@findex wl-summary-next-line-content
カーソル行のメッセージが表示中であればメッセージを一行上にスクロールしま
す。表示中でなければ、表示します。(@code{wl-summary-next-line-content})
prefix argument をつけて実行した場合には、逆にメッセージを一行下にスクロー
ルします。(@code{wl-summary-prev-line-content}) また、prefix argument が
数値であった場合には、指定したメッセージ番号を持つメッセージへジャンプし
ます。

@item -
@itemx M-@key{RET}
@kindex - (Summary)
@kindex M-@key{RET} (Summary)
@findex wl-summary-prev-line-content
カーソル行のメッセージが表示中であればメッセージを一行下にスクロールします。
表示中でなければ、表示します。
(@code{wl-summary-prev-line-content})

@item /
@kindex / (Summary)
@findex wl-thread-open-close
カーソル行のスレッドの開閉をトグルします。
prefix argument つきならば、カーソル行の子スレッドを全て開きます。
(@code{wl-thread-open-close})

@item [
@kindex [ (Summary)
全てのスレッドを開きます。
@findex wl-thread-open-all
(@code{wl-thread-open-all})

@item ]
@kindex ] (Summary)
全てのスレッドを閉じます。
@findex wl-thread-close-all
(@code{wl-thread-close-all})

@item g
@kindex g (Summary)
@findex wl-summary-goto-folder
違うフォルダに移動します。
(@code{wl-summary-goto-folder})

@item c
@kindex c (Summary)
全てのメッセージを読んだことにします。
@findex wl-summary-mark-as-read-all
(@code{wl-summary-mark-as-read-all})

@item a
@kindex a (Summary)
@findex wl-summary-reply
現在カーソルがある行のメッセージへの返事用のドラフトを用意します。
(@code{wl-summary-reply})

@item A
@kindex A (Summary)
@findex wl-summary-reply-with-citation
現在カーソルがある行のメッセージへの返事用のドラフトを本文を引用して用意します。
(@code{wl-summary-reply-with-citation})

@item C
@kindex C (Summary)
@findex wl-summary-cancel-message
現在のカーソルがある行のメッセージが自分が出したニュース記事の場合、その投稿をキャンセルします。
(@code{wl-summary-cancel-message})

@item E
@kindex E (Summary)
@findex wl-summary-reedit
現在カーソルがある行のメッセージの内容を持つドラフトを用意します。
もし、prefix argument つきで実行すれば Supersedes メッセージを作成します。
ただし、NNTP フォルダでかつ自分が投稿したメッセージに限ります。
(@code{wl-summary-reedit})

@item M-E
@kindex M-E (Summary)
@findex wl-summary-resend-bounced-mail
カーソル行のメッセージが、自分のところに返ってきたエラーメッセージならば、
もう一回送るためのドラフトを用意します。
(@code{wl-summary-resend-bounced-mail})

@item f
@kindex f (Summary)
@findex wl-summary-forward
現在カーソルがある行のメッセージを他の人に転送するドラフトを用意します。
(@code{wl-summary-forward})

@item $
@kindex $ (Summary)
@findex wl-summary-mark-as-important
@samp{important} フラグをつけます。既に @samp{important} フラグがあれば
フラグを取り除きます。prefix argument をつけて実行した場合は、@kbd{F} と
同様に付加するグローバルフラグを尋ねてきます。
(@code{wl-summary-mark-as-important})

@item F
@kindex F (Summary)
@findex wl-summary-set-flags
ミニバッファで入力した任意のグローバルフラグをつけます。Emacs 21以降なら 
@samp{,} で区切って複数のフラグを同時に設定出来ます。prefix argument を
つけて実行した場合は、既についているグローバルフラグを取り除きます。
(@code{wl-summary-set-flags})

@item y
@itemx e
@kindex y (Summary)
@kindex e (Summary)
現在カーソルがある行のメッセージを保存します。
@findex wl-summary-save
(@code{wl-summary-save})

@item n
@kindex n (Summary)
@findex wl-summary-next
一つ下のメッセージへ移動します。
@code{wl-summary-skip-mark-list} にある一時マークが付いたメッセージへは
移動しません。オフラインモードのときには、
キャッシュされていないメッセージにも移動しません。
(@code{wl-summary-next})

@item p
@kindex p (Summary)
@findex wl-summary-prev
一つ上のメッセージへ移動します。
@code{wl-summary-skip-mark-list} にある一時マークが付いたメッセージへは
移動しません。オフラインモードのときには、
キャッシュされていないメッセージにも移動しません。
(@code{wl-summary-prev})

@item N
@kindex N (Summary)
@findex wl-summary-down
下方向にある未読もしくは @samp{$}マークつきのメッセージへ移動します。
オフラインモードのときには、キャッシュされていないメッセージに移動しません。
ただし、まとめ処理マーク @samp{*} がついたメッセージがある場合は、
まとめ処理マーク @samp{*} がついたメッセージに優先的に移動します。
この挙動は @code{wl-summary-move-order}の値に応じて変わります。
(@code{wl-summary-down})

@item P
@kindex P (Summary)
@findex wl-summary-up
上方向にある未読もしくは @samp{$}マークつきのメッセージへ移動します。
オフラインモードのときには、キャッシュされていないメッセージに移動しません。
ただし、まとめ処理マーク @samp{*} がついたメッセージがある場合は、
まとめ処理マーク @samp{*} がついたメッセージに優先的に移動します。
この挙動は @code{wl-summary-move-order}の値に応じて変わります。
(@code{wl-summary-up})

@item w
@kindex w (Summary)
@findex wl-summary-write
新規ドラフトを用意します。
(@code{wl-summary-write})

@item W
@kindex W (Summary)
@findex wl-summary-write-current-folder
現在のサマリがニュースグループの場合、@samp{Newsgroups:} フィールドを補っ
てドラフトを用意します。
現在のサマリがメーリングリストの場合、メーリングリストのアドレスを推測し
て @samp{To:} フィールドを補ってドラフトを用意します。
@code{wl-subscribed-mailing-list} を設定しておく必要があります。
(@code{wl-summary-write-current-folder})

@item H
@kindex H (Summary)
@findex wl-summary-toggle-all-header
現在カーソルがある行のメッセージを、全てヘッダ情報を表示するかどうかを切
り換えて再表示します。prefix argument つきならばキャッシュが存在しても
無視して再読み込みし直します。@kbd{C-u C-u H} のように 2回の @kbd{C-u} を
付けて実行した場合、現在のヘッダの表示形式をサマリのデフォルト値として
設定します。
(@code{wl-summary-toggle-all-header})

@item M
@kindex M (Summary)
@findex wl-summary-toggle-mime
現在カーソルがある行のメッセージを、MIME 解析の指定を切り換えて再表示しま
す。切り換えは、@code{wl-summary-display-mime-mode-list} に指定された順に
行われます。また、数値の prefix argument つきで実行した場合、以下のように
直接切り換えることが出来ます。

@example
@group
1: MIME 解析を有効にします
2: ヘッダのみ MIME 解析を有効にします
3: MIME 解析を無効にします
@end group
@end example

@kbd{C-u C-u M} のように 2回の @kbd{C-u} を付けて実行した場合、現在の指定
をサマリのデフォルト値として設定します。(@code{wl-summary-toggle-mime})

@item C-c C-f
@kindex C-c C-f (Summary)
@findex wl-summary-toggle-header-narrowing
現在カーソルがある行のメッセージのヘッダの省略表示をトグルします。
(@code{wl-summary-toggle-header-narrowing})

@item B
@kindex B (Summary)
@findex wl-summary-burst
現在カーソルがある行のメッセージが
MIME でカプセル化された複数のメッセージ含む場合、
それらを現在のフォルダにほどきます。
書き込み不可のフォルダに居る場合や prefix argument をつけて実行した場合
には、展開先のフォルダを尋ねます。
(@code{wl-summary-burst})

@item @@
@kindex @@ (Summary)
@findex wl-summary-edit-petname
サマリ行のメールの @samp{From:} (発信者)を @file{~/.addresses} にインタ
ラクティブに追加します。既に登録されている場合は変更/削除もできます。
prefix argument つきで実行すると、任意の入力アドレスを登録/変更/削除でき
ます。(@code{wl-summary-edit-petname})

@item Z
@kindex Z (Summary)
@findex wl-status-update
@file{~/.addresses} 等の状態を最新のものに更新します。
(@code{wl-status-update})

@item |
@kindex | (Summary)
@findex wl-summary-pipe-message
現在のメッセージの内容を他のプロセスにパイプ経由で引き渡します。
(@code{wl-summary-pipe-message})

@item #
@kindex # (Summary)
@findex wl-summary-print-message
現在のメッセージの内容を印刷します。@code{ps-print} を使います。
白黒プリンタでは、@code{wl-ps-print-buffer-function} を
@code{ps-print-buffer} に設定したほうが良いかもしれません。

@lisp
(setq wl-ps-print-buffer-function 'ps-print-buffer)
@end lisp

@noindent
(@code{wl-summary-print-message})

@item q
@kindex q (Summary)
@findex wl-summary-exit
現在のフォルダを脱出します。
(@code{wl-summary-exit})

@item j
@kindex j (Summary)
@findex wl-summary-jump-to-current-message
現在表示中のメッセージのバッファに移動します。
(@code{wl-summary-jump-to-current-message})

@item J
@kindex J (Summary)
他のメッセージにジャンプします。
@findex wl-summary-jump-to-msg
(@code{wl-summary-jump-to-msg})

@item I
@kindex I (Summary)
サマリの表示を更新した後、
@code{wl-summary-incorporate-marks} に含まれるマークを持つメッセージを
プリフェッチします。
@findex wl-summary-incorporate
(@code{wl-summary-incorporate})

@item M-j
@kindex M-j (Summary)
@findex wl-summary-jump-to-msg-by-message-id
入力した @samp{Message-ID:} を持つメッセージの行にジャンプします。

@item ^
@kindex ^ (Summary)
現在のメッセージの親メッセージに移動します。
@findex wl-summary-jump-to-parent-message
(@code{wl-summary-jump-to-parent-message})

@item !
@kindex ! (Summary)
@findex wl-summary-mark-as-unread
カーソルがある行のメッセージを読まなかったことにします。
(@code{wl-summary-mark-as-unread})

@item s
@kindex s (Summary)
@findex wl-summary-sync
メッセージの一覧表示の更新レンジの入力を受け付けた後、それに基づいてメッ
セージの一覧表示を更新します。更新レンジとしては以下のいずれかを指定でき
ます。

@example
@group
all              現在の msgdb の内容を破棄し、全情報を取り寄せ直します。
                 killed メッセージは取り寄せ直しません。
all-entirely     現在の msgdb の内容を破棄し、全情報を取り寄せ直します。
                 killed メッセージも取り寄せ直します。
update           保持している msgdb の情報と最新情報の差分を更新します。
                 killed メッセージは更新しません。
update-entirely  保持している msgdb の情報と最新情報の差分を更新します。
                 killed メッセージも更新します。
rescan           現在の msgdb に基づいて再表示を行います。
rescan-noscore   現在の msgdb に基づいて再表示を行います。
                 スコアにより消えたメッセージも表示します。
rescan-thread    現在の msgdb に基づいて再表示を行います。
                 スレッドの情報も再構築します。
cache-status     キャッシュの状態をマークに反映します。
mark             マークの状態を最新にします。
no-sync          何もしません。
first:数字       フィルタフォルダに移動します。
last:数字        フィルタフォルダに移動します。
@end group
@end example

@noindent
(@code{wl-summary-sync})

@item S
@kindex S (Summary)
@findex wl-summary-sort
サマリの表示順序を並び替えます。@samp{date} (日付)、@samp{from} (発信者)、
@samp{number} (メッセージ番号)、@samp{subject} (サブジェクト)、
@samp{size} (メッセージのサイズ)、@samp{list-info} (メーリングリストの名前とメッセージ番号)
のいずれかを元に並び替えます。
prefix argument つきならば、選んだ順序の逆順でサマリを並び替えます。
(@code{wl-summary-sort})

@item T
@kindex T (Summary)
@findex wl-summary-toggle-thread
スレッド表示をトグルします。その状態は Wanderlust を終了しても保存され
ます。新規に作成されたサマリに対してのデフォルトの状態は
@code{wl-summary-default-view} や @code{wl-summary-default-view-alist}
で指定することができます。
現在のスレッド表示状態はモードラインに表示されます。
@samp{@{S@}} はスレッド・オフ(Sequence)の状態、
@samp{@{T@}} はスレッド・オン(Thread)の状態を示します。
(@code{wl-summary-toggle-thread})

@item l
@kindex l (Summary)
@findex wl-summary-toggle-disp-folder
フォルダモードのバッファの表示をトグルします。
(@code{wl-summary-toggle-disp-folder})

@item v
@kindex v (Summary)
メッセージのバッファの表示をトグルします。
@findex wl-summary-toggle-disp-msg
(@code{wl-summary-toggle-disp-msg})

@item V
@kindex V (Summary)
与えられた条件を持つメッセージのみを持つ仮想フォルダ(フィルタフォルダ)へ
移動します。prefix argument つきで実行すると仮想フォルダから脱出します。
@findex wl-summary-virtual
(@code{wl-summary-virtual})

@item @key{TAB}
@kindex @key{TAB} (Summary)
@findex wl-summary-goto-last-displayed-msg
さっき表示したメッセージに飛びます。
(@code{wl-summary-goto-last-displayed-msg})

@item ?
@kindex ? (Summary)
@findex wl-summary-pick
与えられた条件を持つメッセージにまとめ処理マーク @samp{*} をつけます。通
常は、既についている @samp{*} マークはそのままで、単に追加されますが、
prefix argument をつけて実行した場合には、以前のマークを削除して置き換え
ます。(@code{wl-summary-pick})

@item R
@kindex R (Summary)
@findex wl-summary-mark-as-read
カーソル行のメッセージを読んだことにします。
(@code{wl-summary-mark-as-read})

@item x
@kindex x (Summary)
サマリバッファのすべてのメッセージに対して、一時的マークに対応するアクション
を実行します。
@findex wl-summary-exec
(@code{wl-summary-exec})

@item *
@kindex * (Summary)
@findex wl-summary-target-mark-line
カーソル行のメッセージにまとめ処理用マークをつけます。
(@code{wl-summary-target-mark-line}) @xref{Mark and Action}.

@item o
@kindex o (Summary)
カーソル行のメッセージにリファイルマークをつけます。
@findex wl-summary-refile
(@code{wl-summary-refile}) @xref{Mark and Action}.

@item C-o
@kindex C-o (Summary)
自動リファイルを実行します。
@findex wl-summary-auto-refile
(@code{wl-summary-auto-refile})

@item O
@kindex O (Summary)
カーソル行のメッセージにコピーマークをつけます。
@findex wl-summary-copy
(@code{wl-summary-copy}) @xref{Mark and Action}.

@item M-o
@kindex M-o (Summary)
カーソル行のメッセージに、直前にリファイルしたフォルダと同じフォルダ宛に、
リファイルマークをつけます。
@findex wl-summary-refile-prev-destination
(@code{wl-summary-refile-prev-destination})

@item d
@kindex d (Summary)
@findex wl-summary-dispose
カーソル行のメッセージに処分マークをつけます。
処分の結果は @code{wl-dispose-folder-alist} で制御でき、デフォルトでは
@code{wl-trash-folder} にリファイルされます。
(@code{wl-summary-dispose}) @xref{Mark and Action}.

@item D
@kindex D (Summary)
@findex wl-summary-delete
カーソル行のメッセージに強制削除マークをつけます。
(@code{wl-summary-delete}) @xref{Mark and Action}.

@item i
@kindex i (Summary)
カーソル行のメッセージにプリフェッチ予約マークを付けます。
@findex wl-summary-prefetch
(@code{wl-summary-prefetch}) @xref{Mark and Action}.

@item ~
@kindex ~ (Summary)
@findex wl-summary-resend
カーソル行のメッセージに再送予約マークを付けます。
(@code{wl-summary-resend}) @xref{Mark and Action}.

@item u
@kindex u (Summary)
@findex wl-summary-unmark
カーソル行のメッセージに一時的マークがあれば取り除きます。
(@code{wl-summary-unmark})

@item U
@kindex U (Summary)
指定した一時的マークをすべて取り除きます。
@findex wl-summary-unmark-all
(@code{wl-summary-unmark-all})

@item r R
@kindex r R (Summary)
@findex wl-summary-mark-as-read-region
指定リージョンにあるメッセージを全て読んだことにします。
(@code{wl-summary-mark-as-read-region})

@item r $
@kindex r $ (Summary)
@findex wl-summary-mark-as-important-region
指定リージョンにあるメッセージ全てに @samp{important} フラグをつけます。
すでに @samp{important} フラグがあればそのフラグを取り除きます。
(@code{wl-summary-mark-as-important-region})

@item r F
@kindex r F (Summary)
@findex wl-summary-set-flags-region
指定リージョンにあるメッセージ全てにミニバッファで入力した任意のグローバ
ルフラグをつけます。
(@code{wl-summary-set-flags-region})

@item r !
@kindex r ! (Summary)
@findex wl-summary-mark-as-unread-region
指定リージョンにあるメッセージを全て読まなかったことにします。
(@code{wl-summary-mark-as-unread-region})

@item r x
@kindex r x (Summary)
@findex wl-summary-exec-region
指定リージョンにあるメッセージに対して、一時的マークに対応するアクション
を実行します。
(@code{wl-summary-exec-region})

@item r *
@kindex r * (Summary)
@findex wl-summary-target-mark-region
指定リージョンにあるメッセージにまとめ処理用マークをつけます。
(@code{wl-summary-target-mark-region}) @xref{Mark and Action}.

@item r o
@kindex r o (Summary)
@findex wl-summary-refile-region
指定リージョンにあるメッセージにリファイルマークをつけます。
(@code{wl-summary-refile-region}) @xref{Mark and Action}.

@item r O
@kindex r O (Summary)
@findex wl-summary-copy-region
指定リージョンにあるメッセージにコピーマークをつけます。
(@code{wl-summary-copy-region}) @xref{Mark and Action}.

@item r d
@kindex r d (Summary)
@findex wl-summary-dispose-region
指定リージョンにあるメッセージに処分マークをつけます。
(@code{wl-summary-dispose-region}) @xref{Mark and Action}.

@item r D
@kindex r D (Summary)
@findex wl-summary-delete-region
指定リージョンにあるメッセージに強制削除マークをつけます。
(@code{wl-summary-delete-region}) @xref{Mark and Action}.

@item r i
@kindex r i (Summary)
@findex wl-summary-prefetch-region
指定リージョンにあるメッセージにプリフェッチ予約マークを付けます。
(@code{wl-summary-prefetch-region}) @xref{Mark and Action}.

@item r u
@kindex r u (Summary)
@findex wl-summary-unmark-region
指定リージョンにあるメッセージにマークがあれば削除します。
(@code{wl-summary-unmark-region})

@item r y
@kindex r y (Summary)
指定リージョンにあるメッセージを保存します。
@findex wl-summary-save-region
(@code{wl-summary-save-region})

@item t R
@kindex t R (Summary)
@findex wl-thread-mark-as-read
カーソル行があるメッセージを先頭とするスレッドを読んだことにします。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てを読んだことにします。
(@code{wl-thread-mark-as-read})

@item t $
@kindex t $ (Summary)
@findex wl-thread-mark-as-important
カーソル行があるメッセージを先頭とするスレッドに @samp{important} フラグ
をつけます。既に @samp{important} フラグがあれば取り除きます。prefix
argument つきならばカーソル行があるメッセージを含むスレッド全体に適用し
ます。(@code{wl-thread-mark-as-important})

@item t F
@kindex t F (Summary)
@findex wl-thread-set-flags
カーソル行があるメッセージを先頭とするスレッドにミニバッファで入力した任
意のグローバルフラグをつけます。prefix argument つきならばカーソル行があ
るメッセージを含むスレッド全体に適用します。
(@code{wl-thread-set-flags})

@item t !
@kindex t ! (Summary)
@findex wl-thread-mark-as-unread
カーソル行があるメッセージを先頭とするスレッドを読まなかったことにします。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てを読まなかったことにします。
(@code{wl-thread-mark-as-unread})

@item t x
@kindex t x (Summary)
@findex wl-thread-exec
カーソル行があるメッセージを先頭とするスレッドのメッセージに対して、一時
的マークに対応するアクションを実行します。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てに
適用します。
(@code{wl-thread-exec})

@item t *
@kindex t * (Summary)
@findex wl-thread-target-mark
カーソル行があるメッセージを先頭とするスレッドにまとめ処理用マークをつけます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体に
適用します。
(@code{wl-thread-target-mark}) @xref{Mark and Action}.

@item t o
@kindex t o (Summary)
@findex wl-thread-refile
カーソル行があるメッセージを先頭とするスレッドにリファイルマークをつけます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体に
適用します。
(@code{wl-thread-refile}) @xref{Mark and Action}.

@item t O
@kindex t O (Summary)
@findex wl-thread-copy
カーソル行があるメッセージを先頭とするスレッドにコピーマークをつけます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体に
適用します。
(@code{wl-thread-copy}) @xref{Mark and Action}.

@item t d
@kindex t d (Summary)
@findex wl-thread-dispose
カーソル行があるメッセージを先頭とするスレッドに処分マークをつけます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体に
適用します。
(@code{wl-thread-dispose}) @xref{Mark and Action}.

@item t D
@kindex t D (Summary)
@findex wl-thread-delete
カーソル行があるメッセージを先頭とするスレッドに強制削除マークを付けます。
(@code{wl-thread-delete}) @xref{Mark and Action}.

@item t i
@kindex t i (Summary)
@findex wl-thread-prefetch
カーソル行があるメッセージを先頭とするスレッドにプリフェッチ予約マークを
付けます。
(@code{wl-thread-prefetch}) @xref{Mark and Action}.

@item t u
@kindex t u (Summary)
@findex wl-thread-unmark
カーソル行があるメッセージを先頭とするスレッドのメッセージにマークがあれば削除します。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体に
適用します。
(@code{wl-thread-unmark})

@item t y
@kindex t y (Summary)
@findex wl-thread-save
カーソル行があるメッセージを先頭とするスレッドを保存します。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全体を保存します。
(@code{wl-thread-save})

@item m R
@kindex m R (Summary)
@findex wl-summary-target-mark-mark-as-read
まとめ処理用マーク @samp{*} のついたメッセージを読んだことにします。
(@code{wl-summary-target-mark-mark-as-read})

@item m $
@kindex m $ (Summary)
@findex wl-summary-target-mark-mark-as-important
まとめ処理用マーク @samp{*} のついたメッセージに @samp{important} フラグ
をつけます。すでに @samp{important} フラグがあれば取り除きます。
(@code{wl-summary-target-mark-mark-as-important})

@item m F
@kindex m F (Summary)
@findex wl-summary-target-mark-set-flags
まとめ処理用マーク @samp{*} のついたメッセージにミニバッファで入力した任
意のグローバルフラグをつけます。
(@code{wl-summary-target-mark-set-flags})

@item m !
@kindex m ! (Summary)
@findex wl-summary-target-mark-mark-as-unread
まとめ処理用マーク @samp{*} のついたメッセージを読まなかったことにします。
(@code{wl-summary-target-mark-mark-as-unread})

@item m o
@kindex m o (Summary)
@findex wl-summary-target-mark-refile
まとめ処理用マーク @samp{*} のついたメッセージにリファイルマークをつけます。
(@code{wl-summary-target-mark-refile}) @xref{Mark and Action}.

@item m O
@kindex m O (Summary)
@findex wl-summary-target-mark-copy
まとめ処理用マーク @samp{*} のついたメッセージにコピーマークをつけます。
(@code{wl-summary-target-mark-copy}) @xref{Mark and Action}.

@item m d
@kindex m d (Summary)
@findex wl-summary-target-mark-dispose
まとめ処理用マーク @samp{*} のついたメッセージに処分マークをつけます。
(@code{wl-summary-target-mark-dispose}) @xref{Mark and Action}.

@item m D
@kindex m D (Summary)
@findex wl-summary-target-mark-delete
まとめ処理用マーク @samp{*} のついたメッセージに強制削除マークを付けます。
(@code{wl-summary-target-mark-delete}) @xref{Mark and Action}.

@item m i
@kindex m i (Summary)
@findex wl-summary-target-mark-prefetch
まとめ処理用マーク @samp{*} のついたメッセージにプリフェッチ予約マークを
付けます。
(@code{wl-summary-target-mark-prefetch}) @xref{Mark and Action}.

@item m y
@kindex m y (Summary)
@findex wl-summary-target-mark-save
まとめ処理用マーク @samp{*} のついたメッセージを保存します。
(@code{wl-summary-target-mark-save})

@item m u
@kindex m u (Summary)
全ての一時的マークを消します。
(@code{wl-summary-delete-all-temp-marks})
@findex wl-summary-delete-all-temp-marks

@item m a
@kindex m a (Summary)
全てのメッセージにまとめ処理用マーク @samp{*} を付けます。
(@code{wl-summary-target-mark-all})
@findex wl-summary-target-mark-all

@item m t
@kindex m t (Summary)
まとめ処理用マーク @samp{*} を現在のスレッドにつけます。
@findex wl-summary-target-mark-thread
(@code{wl-summary-target-mark-thread})

@item m T
@kindex m T (Summary)
まとめ処理用マーク @samp{*} を、現在マークされたメッセージを含むスレッド全体に拡大します。
@findex wl-summary-target-mark-threads
(@code{wl-summary-target-mark-threads})

@item m r
@kindex m r (Summary)
@findex wl-summary-target-mark-region
指定されたリージョンにまとめ処理用マーク @samp{*} をつけます。
(@code{wl-summary-target-mark-region})

@item m A
@kindex m A (Summary)
@findex wl-summary-target-mark-reply-with-citation
まとめ処理用マーク @samp{*} のついたメッセージを引用して返事を書くドラフト
を用意します。
(@code{wl-summary-target-mark-reply-with-citation})

@item m f
@kindex m f (Summary)
@findex wl-summary-target-mark-forward
まとめ処理用マーク @samp{*} のついたメッセージをフォワードするドラフトを
用意します。
(@code{wl-summary-target-mark-forward})

@item m U
@kindex m U (Summary)
@findex wl-summary-target-mark-uudecode
まとめ処理用マーク @samp{*} のついたメッセージをまとめて uudecode します。
(@code{wl-summary-target-mark-uudecode})

@item m ?
@kindex m ? (Summary)
@findex wl-summary-target-mark-pick
まとめ処理用マーク @samp{*} のついたメッセージの内、
条件にマッチするメッセージの @samp{*} マークのみを残します。
(@code{wl-summary-target-mark-pick})

@item m #
@kindex m # (Summary)
@findex wl-summary-target-mark-print
まとめ処理用マーク @samp{*} のついたメッセージを印刷します。
(@code{wl-summary-target-mark-print})

@item m |
@kindex m | (Summary)
@findex wl-summary-target-mark-pipe
まとめ処理用マーク @samp{*} のついたメッセージそれぞれを、
指定した他のプロセスにパイプ経由で引き渡します。
(@code{wl-summary-target-mark-pipe})

@item M-t
@kindex M-t (Summary)
@findex wl-toggle-plugged
Wanderlust のオフラインモード/オンラインモードをトグルします。
(@code{wl-toggle-plugged})

@item C-t
@kindex C-t (Summary)
Wanderlust のサーバ・ポート別のオフライン/オンラインを変更します。
(@code{wl-plugged-change})

@item C-c C-o
@kindex C-c C-o (Summary)
@findex wl-jump-to-draft-buffer
ドラフトバッファがあれば移動します。 複数のドラフトバッファが存在する場合は、
次々と切り替えていきます。また、prefix argument をつけることにより、
バッファが存在していない場合は、ドラフトフォルダからファイルを(存在すれば)
読み込みます。
(@code{wl-jump-to-draft-buffer})

@item M-w
@kindex M-w (Summary)
@findex wl-summary-save-current-message
カーソル行のメッセージのコピー。
(@code{wl-summary-save-current-message})

@item C-y
@kindex C-y (Summary)
@findex wl-summary-yank-saved-message
カーソル行のメッセージを親メッセージとして、
@code{wl-summary-save-current-message} で保存されたメッセージを
スレッドに繋ぎます。
(@code{wl-summary-yank-saved-message})

@item C-x C-s
@kindex C-x C-s (Summary)
@findex wl-summary-save-status
現在のサマリをセーブします。
(@code{wl-summary-save-status})
@end table


@node Variables of Summary,  , Key Bindings of Summary, Summary
@section カスタマイズ変数

@table @code
@item wl-summary-move-order
@vindex wl-summary-move-order
初期設定は @code{unread}。メッセージを読み進めるときに、何を優先するかを
指定します。新規メッセージを優先したいときは @code{new} を設定します。未
読をメッセージを優先したいときは @code{unread} を設定します。@code{nil} 
なら単純に次のメッセージに進みます。

@item wl-auto-select-first
@vindex wl-auto-select-first
初期設定は @code{nil}。
Non-nil ならフォルダに移動した時に最初のメッセージを自動的に表示します。

@item wl-auto-select-next
@vindex wl-auto-select-next
初期設定は @code{nil}。サマリに未読メッセージがなくなった時の動作を指定します。

@example
nil： フォルダモードに戻るか尋ねる
'unread： 次の未読ありのフォルダに行くか尋ねる。
  移動先のフォルダで crosspost 処理や Score 機能などにより
  未読がなくなれば、さらに次のフォルダに行くか尋ねる。
'skip-no-unread： unread と同様。
  ただし、移動した先で未読がなくなった場合には、自動的に次の
  フォルダに行く。
上記以外： 次の未読ありのフォルダに行くか尋ねる。
@end example

スペースキーでひたすら読み進めたい人は @code{'skip-no-unread} にしておくのが
便利かもしれません。

@item wl-thread-insert-opened
@vindex wl-thread-insert-opened
初期設定は @code{nil}。Non-nil なら最初から thread が開かれた状態でサマ
リに表示されます。

@item wl-thread-open-reading-thread
@vindex wl-thread-open-reading-thread
初期設定は @code{t}。Non-nil なら、閉じた状態の thread へ移動した時に自
動的に thread を開きます。

@item wl-summary-exit-next-move
@vindex wl-summary-exit-next-move
初期設定は @code{t}。Non-nil なら、サマリを終了するときに次のフォルダに
移動します。

@item wl-folder-move-cur-folder
@vindex wl-folder-move-cur-folder
初期設定は @code{nil}。Non-nil ならサマリで他のフォルダに移動するとフォ
ルダモードでのカーソル位置も合わせて移動します。

@item wl-summary-weekday-name-lang
@vindex  wl-summary-weekday-name-lang
サマリの曜日表示の言語を指定します。@samp{en} なら
英語、@samp{fr} ならフランス語、@samp{de} ならドイツ語となります。
値を変更した後には、サマリを rescan して下さい。

@item wl-summary-fix-timezone
@vindex wl-summary-fix-timezone
初期設定は @code{nil}。サマリの日時表示を指定したタイムゾーンに直します。
@code{nil} ならば、デフォルトのタイムゾーンを参照して直します。
デフォルトのタイムゾーンとは、システムにあらかじめ設定されたタイムゾーンか、
環境変数 @samp{TZ} の値です。

@item wl-use-petname
@vindex  wl-use-petname
初期設定は @code{t}。
Non-nil ならサマリの From 部分にあだ名を表示します。

@item wl-break-pages
@vindex  wl-break-pages
初期設定は @code{t}。
Non-nil なら、@samp{^L} で改ページしてメッセージを表示します。

@item wl-summary-from-function
@vindex wl-summary-from-function
サマリの差出人表示の整形に使う関数を指定します。
初期設定は @code{wl-summary-default-from} です。

@item wl-summary-no-from-message
@vindex  wl-summary-no-from-message
初期設定は @samp{nobody@@nowhere?}。
メッセージに @samp{From:} が無かった場合にサマリに表示する文字列です。

@item wl-summary-subject-function
@vindex wl-summary-subject-function
サマリのサブジェクト表示の整形に使う関数を指定します。
初期設定は @code{wl-summary-default-subject} で、サブジェクト先頭の
リスト名など部分をカットします。
サブジェクトをそのまま表示するには以下のように設定します。

@lisp
(setq wl-summary-subject-function 'identity)
@end lisp

@item wl-summary-no-subject-message
@vindex  wl-summary-no-subject-message
初期設定は @samp{(WL:No Subject in original.)}。メッセージに 
@samp{Subject:} が無かった場合にサマリに表示する文字列です。

@item wl-summary-default-view
@vindex wl-summary-default-view
初期設定は @code{'thread}。
新規に作成されたサマリの状態をスレッド表示なら @code{'thread}、
番号順なら @code{'sequence} のいずれかで指定します。

@item wl-summary-order
@vindex wl-summary-order
初期設定は @code{'ascending}。
@code{'descending} ならサマリバッファのメッセージを降順に並べます。
各スレッド中のメッセージの順序はこの値に関わらず常に昇順です。

@item wl-summary-nobreak-char-display
@vindex wl-summary-nobreak-char-display
初期設定は @code{nil}。
サマリバッファ内での @code{nobreak-char-display} の値を
この値で上書きします。

@item wl-summary-use-frame
@vindex wl-summary-use-frame
初期設定は @code{nil}。
Non-nil ならサマリ表示用に新しいフレームを開きます。

@item wl-use-folder-petname
@vindex  wl-use-folder-petname
初期設定は以下のリスト。

@lisp
@group
(modeline)
@end group
@end lisp

@noindent
フォルダのあだ名 (petname) を使用する場所(シンボル)のリストを指定します。
指定できるシンボルは次の通りです。

@table @code
@item modeline
サマリのモードラインを petname で表示します。
@item ask-folder
@code{wl-auto-select-next} が non-nil のとき、
移動先フォルダを petname で表示します。
@item read-folder
@code{wl-summary-read-folder} におけるフォルダ入力の際、
petname でも補完ができます。
@end table

@item wl-summary-move-direction-toggle
@vindex  wl-summary-move-direction-toggle
初期設定は @code{t}。Non-nil なら最後に実行された @kbd{p}, @kbd{P},
@kbd{n}, @kbd{N} の結果で、次のメッセージが上か下かを切り替える。読んで
いる方向を意識したいときは @code{t} にすると良いでしょう。

@item wl-summary-width
@vindex  wl-summary-width
初期設定は 80。サマリの表示幅を設定された値に切り詰めます。@code{nil} な
ら表示幅を切り詰めません。

@item wl-summary-print-argument-within-window
@vindex wl-summary-print-argument-within-window
初期設定は @code{nil}。Non-nil なら @code{wl-summary-width} が 
@code{nil} であってもウィンドウの右端に揃えて、アクション引数を表示しま
す。

@item wl-summary-indent-length-limit
@vindex  wl-summary-indent-length-limit
初期設定は 46。設定された値以上サマリをインデントしません。@code{nil} な
らサマリのインデントを無制限にします。
値を @code{nil} にするときは、@code{wl-summary-width} も @code{nil} に設定
するとよいでしょう。

@item wl-summary-max-thread-depth
@vindex wl-summary-max-thread-depth
初期設定は 30。設定された値以上の深さのスレッドを分割します。

@item wl-summary-recenter
@vindex  wl-summary-recenter
初期設定は @code{t}。Non-nil ならば表示したときに表示中のメッセージのサ
マリ行をウィンドウの中央付近に移動します。

@item wl-summary-max-thread-depth
@vindex wl-summary-max-thread-depth
初期設定は 30。
スレッドの深さがこの値より大きくなるとスレッドを分割します。

@item wl-summary-divide-thread-when-subject-changed
@vindex wl-summary-divide-thread-when-subject-changed
初期設定は @code{nil}。
Non-nil ならサブジェクトが変わったときにスレッドを切ります。

@item wl-summary-search-via-nntp
@vindex wl-summary-search-via-nntp
初期設定は @code{confirm}。

Non-nil なら @code{wl-summary-jump-to-msg-by-message-id} で、メッセージ
を見つけることができなかったときに、
@code{wl-summary-jump-to-msg-by-message-id-via-nntp} を呼び、
@code{elmo-nntp-default-server} で指定されたサーバから検索します。このと
き @code{elmo-nntp-default-user}, @code{elmo-nntp-default-port},
@code{elmo-nntp-default-stream-type} で指定した条件でサーバと接続します。

@code{confirm} なら @code{elmo-nntp-default-*} で指定されたサーバから検
索するか、サーバを指定するかを確認します。この場合、サーバのホスト名、も
しくは @samp{-:username@@servername:119!}  のように NNTP フォルダ形式での
指定が可能です。

@item wl-summary-keep-cursor-command
@vindex wl-summary-keep-cursor-command
初期設定は以下のリスト。
@lisp
@group
(wl-summary-goto-folder wl-summary-goto-last-visited-folder)
@end group
@end lisp

@noindent
既に存在するサマリへ移動したときに更新せず、カーソル位置を保存する
コマンドのリストです。

@item elmo-folder-update-threshold
@vindex elmo-folder-update-threshold
初期設定は 500。この値よりサマリの更新数が多い場合、一部分だけ更新するか
どうか、質問します（@code{elmo-folder-update-confirm} が non-nil の場合）。

@item elmo-folder-update-confirm
@vindex elmo-folder-update-confirm
初期設定は @code{t}。Non-nil ならば @code{elmo-folder-update-threshold}
による判定を行います。

@item wl-summary-always-sticky-folder-list
@vindex wl-summary-always-sticky-folder-list
初期設定は @code{nil}。フォルダ名(正規表現)のリストを設定することにより、
自動的にスティッキーサマリとするかどうかをフォルダ毎に指定します。

@item wl-summary-reserve-mark-list
@vindex wl-summary-reserve-mark-list
初期設定は以下のリスト。

@lisp
@group
("o" "O" "D" "d" "i")
@end group
@end lisp

@noindent
このリストにある一時マークは、消さない限り上書きされません。

@item wl-summary-skip-mark-list
@vindex wl-summary-skip-mark-list
初期設定は以下のリスト。

@lisp
@group
("D" "d")
@end group
@end lisp

@noindent
このリストにある一時マークの付いたメッセージは、カーソル移動の際にスキッ
プされます。

@item elmo-message-fetch-threshold
@vindex elmo-message-fetch-threshold
初期設定は 30000 (bytes)。この値を越えるサイズのメッセージを表示する時に、
確認を求めます（@code{elmo-message-fetch-confirm} が non-nil の場合）。

@item elmo-message-fetch-confirm
@vindex elmo-message-fetch-confirm
初期設定は @code{t}。Non-nil ならば @code{elmo-message-fetch-threshold} に
よる判定を行います。

@item wl-prefetch-threshold
@vindex wl-prefetch-threshold
初期設定は 30000 (bytes)。@code{wl-prefetch-threshold} を越えるサイズの
メッセージは、@code{wl-prefetch-confirm} が non-nil の場合、プリフェッチ
時に確認を求めます。@code{wl-prefetch-threshold}を @code{nil} にすると、
@code{wl-prefetch-confirm} の値にかかわらずプリフェッチを実行します。

@item wl-prefetch-confirm
@vindex wl-prefetch-confirm
初期設定は @code{t}。Non-nil ならば @code{wl-prefetch-threshold} を越え
るサイズのメッセージをプリフェッチしようとしたときに、確認を求めます。

@item elmo-imap4-use-cache
@vindex elmo-imap4-use-cache
初期設定は @code{t}。Non-nil なら、IMAP4 で読んだメッセージをキャッシュ
します。

@item elmo-nntp-use-cache
@vindex elmo-nntp-use-cache
初期設定は @code{t}。Non-nil なら、NNTP で読んだメッセージをキャッシュし
ます。

@item elmo-pop3-use-cache
@vindex elmo-pop3-use-cache
初期設定は @code{t}。Non-nil なら、POP3 で読んだメッセージをキャッシュし
ます。

@item elmo-shimbun-use-cache
@vindex elmo-shimbun-use-cache
初期設定は @code{t}。Non-nil なら、新聞フォルダで読んだメッセージを
キャッシュします。

@item wl-summary-resend-use-cache
@vindex wl-summary-resend-use-cache
初期設定は @code{nil}。Non-nil はら、オフライン状態でもキャッシュを
使って再送します。キャッシュを用いて再送すると、必ずしも意図した
メッセージが使われるとは限らないことに留意してください。

@item wl-folder-process-duplicates-alist
@vindex wl-folder-process-duplicates-alist
初期設定は @code{nil}。重複したメッセージが同じフォルダにある場合の動作
を指定します。各項目は、フォルダ名の正規表現と動作からなります。
動作としては以下のものが指定できます。

@example
@code{nil} : 重複メッセージに対し，何もしない．
@code{hide} : 重複メッセージをサマリに表示しない．
@code{read} : 重複メッセージを既読にする．
@end example

@noindent
例えば以下のように設定します (マルチフォルダで重複メッセージを隠す場合)

@lisp
@group
(setq wl-folder-process-duplicates-alist
                 '(("^\\+draft$" . nil) ("^\\+trash$" . nil)
                   ("^\\*.*" . hide) (".*" . read)))
@end group
@end lisp

@item wl-summary-flag-alist
@vindex wl-summary-flag-alist
初期設定は以下の通り。

@lisp
@group
((important "orange"))
@end group
@end lisp

サマリでのフラグつきメッセージの色とマークを指定します。マークを省略した
場合は、@code{wl-summary-flag-mark} に指定されたマークが使用されます。一
つのメッセージに複数のグローバルフラグが設定されている場合には、このリス
トの前方にあるフラグが優先されます。

設定例:

@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
初期設定は以下のリスト。

@lisp
@group
(mime as-is)
@end group
@end lisp

@noindent
@code{wl-summary-toggle-mime} はこのリストの順に MIME 解析の指定を切り換
えます。MIME 解析の方式には以下のものが指定できます。

@example
@code{mime}        : MIME 解析を行います
@code{header-only} : ヘッダのみ MIME 解析を行います
@code{as-is}       : MIME 解析を行いません
@end example
@end table


@node Message, Draft, Summary, Top
@chapter メッセージバッファ

メッセージバッファは SEMI の MIME-View mode です。
操作の方法、キーバインドはそれぞれのドキュメントを参照してください。
@xref{MIME-View, , ,mime-ui-ja, a MIME user interface for GNU Emacs}.
また、メッセージバッファにおいて、@kbd{?} でヘルプが参照できます。

メッセージの先頭で @kbd{p}、メッセージの最後尾で @kbd{n} を押すと、サマ
リモードに戻ります。また、@kbd{l} を押すと、サマリモードバッファの表示を
トグルします。

@section キーバインド
@cindex Keybind, Message Mode
@cindex Keybind, Message Buffer

@table @kbd
@item l
@kindex l (Message)
@findex wl-message-toggle-disp-summary
サマリバッファを表示するかどうかをトグルします。
(@code{wl-message-toggle-disp-summary})

@item Button-2
@kindex Button-2 (Message)
@findex wl-message-button-refer-article
@findex wl-message-header-narrowing
マウスポインタの位置に @samp{Message-ID:} があったときに対応するメッセー
ジが見つかれば表示します。(@code{wl-message-button-refer-article})

マウスポインタの位置のヘッダが省略表示されていた場合には、全ての内容を表
示します。もう一度押すと再度省略表示します。

@item Button-4 (ホイールつきマウスのホイールを上へ)
@kindex Button-4 (Message)
@findex wl-message-wheel-down
メッセージを上にスクロールします。メッセージの末尾まで到達すると、
次のメッセージに移動します。
(@code{wl-message-wheel-down})

@item Button-5 (ホイールつきマウスのホイールを下へ)
@kindex Button-5 (Message)
@findex wl-message-wheel-up
メッセージを上にスクロールします。メッセージの先頭まで到達すると、
前のメッセージに移動します。
(@code{wl-message-wheel-up})

@item D
@kindex D (Message)
@findex wl-message-delete-current-part
カーソル位置のパートを削除します。実際には、変更したメッセージを
今居るフォルダに追加してから、古いメッセージをゴミ箱に移動するので、
メッセージ番号は変化します。
(@code{wl-message-delete-current-part})
@end table

@section カスタマイズ変数

@table @code
@item wl-message-window-size
@vindex wl-message-window-size
初期設定は @code{(1 . 4)}。cons セルで、car 値: cdr 値がサマリのウィンド
ウ幅：メッセージのウィンドウ幅となります。

@item wl-message-ignored-field-list
@vindex wl-message-ignored-field-list
初期設定は @code{nil}。
メッセージバッファに表示しないヘッダフィールドを正規表現のリストで
指定します。
@code{nil} なら、@code{mime-view-ignored-field-list} の値を使います。

@item wl-message-visible-field-list
@vindex wl-message-visible-field-list
初期設定は @code{nil}。
メッセージバッファに必ず表示したいヘッダフィールドを正規表現のリストで
指定します。@code{wl-message-ignored-field-list} よりも優先されます。
@code{nil} なら、@code{mime-view-visible-field-list} の値を使います。

@item wl-message-sort-field-list
@vindex wl-message-sort-field-list
初期設定は 
'("Return-Path" "Received" "^To" "^Cc" "Newsgroups" "Subject" "^From")。
メッセージバッファに表示するヘッダフィールドの順番を正規表現のリストで
指定します。

@item wl-message-truncate-lines
@vindex wl-message-truncate-lines
初期設定では @code{default-truncate-lines} の値を使います。
Non-nil ならメッセージバッファで長い行の折り返しをしません。

@item wl-message-use-header-narrowing
@vindex wl-message-use-header-narrowing
初期設定は @code{t}。
Non-nil ならヘッダの省略表示を有効にします。

@item wl-message-header-narrowing-fields
@vindex wl-message-header-narrowing-fields
初期設定は以下のリスト。

@lisp
("to" "cc")
@end lisp

@noindent
省略表示するフィールドを指定します。

@item wl-message-header-narrowing-lines
@vindex wl-message-header-narrowing-lines
初期設定は 4。
指定行数以上ある場合に省略表示します。

@item wl-message-header-narrowing-string
@vindex wl-message-header-narrowing-string
初期設定は @samp{...}。
ヘッダの内容を省略した時に表示する文字列を指定します。

@item wl-message-auto-reassemble-message/partial
@vindex wl-message-auto-reassemble-message/partial
初期設定は @code{nil}。
Non-nil なら MIME メディアタイプが message/partial のメッセージを表示する
際に、自動的に結合して表示します。
@end table


@node Draft, Disconnected Operations, Message, Top
@chapter ドラフトバッファ

サマリモードやフォルダモードで @kbd{w} を押すと新規ドラフトバッファが用意
されます。このバッファでは、メールやニュース記事の(新規)編集、送信を行います。

@kbd{W} を押すと、(可能であれば)宛先を推測してドラフトバッファを用意しま
す。

@menu
* Usage of Draft Mode::         基本的な使い方
* Key Bindings of Draft::       キーバインド
* Variables of Draft Mode::     カスタマイズ変数
@end menu

@node Usage of Draft Mode, Key Bindings of Draft, Draft, Draft
@section 使い方(TIPS)

基本は Emacs 標準のメールモードです。

@menu
* Parameters for Sending::              送信の為のパラメータ
* Editing Header::                      ヘッダの編集
* Editing Message Body and Sending::    メッセージの編集と送信
* Dynamical Message Re-arrangement::    メッセージの動的な変更
* Template::                            テンプレートの挿入
* POP-before-SMTP::                     POP-before-SMTP によるメールの送信
@end menu

@node Parameters for Sending, Editing Header, Usage of Draft Mode, Usage of Draft Mode
@subsection 送信の為のパラメータ

メッセージの送信に使うサーバの情報に沿って以下の変数を設定して下さい。

@table @code
@item wl-smtp-posting-server
メール送信時の SMTP サーバ名です。

@item wl-smtp-posting-port
メール送信時の SMTP ポート番号です。
設定していない場合はデフォルトの SMTP ポート番号(25)を使います。

@item wl-nntp-posting-server
ニュース投稿時の NNTP サーバ名です。
設定していない場合は @code{elmo-nntp-default-server} を使います。

@item wl-nntp-posting-port
ニュース投稿時の NNTP サーバのポート番号です。
設定していない場合は @code{elmo-nntp-default-port} を使います。
@end table

必要に応じて以下の変数も設定して下さい。詳細はカスタマイズ変数の節を参照
して下さい。
@xref{Variables of Draft Mode}.

@table @code
@item wl-smtp-posting-user
SMTP AUTH による認証を行なうときのユーザ名です。

@item wl-smtp-authenticate-type
SMTP AUTH による認証を行なうときの認証方式です。
設定していない場合は認証を行いません。

@item wl-smtp-authenticate-realm
SMTP AUTH による認証を行なうときのレルム(realm)を指定します。
設定していない場合はレルムの指定を行いません。

@item wl-smtp-connection-type
SMTP のコネクションをどのように張るかを指定します。

@item wl-nntp-posting-user
ニュース投稿時に AUTHINFO による認証を行なうときのユーザ名です。

@item wl-nntp-posting-stream-type
NNTP のコネクションをどのように張るかを指定します。
@end table

@node Editing Header, Editing Message Body and Sending, Parameters for Sending, Usage of Draft Mode
@subsection ヘッダの編集

実際に送信操作を行なうまでであれば、@samp{--text follows this line--}
より上のヘッダ領域は自由に編集することができます。

初期状態では @samp{To:} にカーソルがあります。送信相手のアドレスを入力し
てください。アドレスを入力する際には、@kbd{@key{TAB}} で補完ができます。

メッセージの宛先を指定するために、以下のフィールドが利用できます。それぞれ
自分で書き加えて下さい。フィールド名を入力する際には、@kbd{@key{TAB}}で
補完ができます。

@table @asis
@item @samp{Newsgroups:}
ニュース記事として出す場合の投稿先を指定します。

@item @samp{Cc:}
メッセージのコピー(Carbon Copy)を送付するアドレス。
@end table

以下のヘッダは、送信されるメッセージからは削除されます。

@table @asis
@item @samp{Bcc:}
メッセージのコピー(Blind Carbon Copy)を送付するアドレス。

@item @samp{Fcc:}
送信したメッセージを保存するフォルダを指定します。

@item @samp{Ecc:}
送信したメッセージをカプセル化して転送します。
@end table

以下の変数により、最初に用意するヘッダを追加できます。

@table @code
@item wl-fcc
@vindex wl-fcc
初期設定は @code{nil}。
Non-nil なら、設定された値をドラフトの @samp{Fcc:} として最初から挿入します。
関数が指定されている場合、関数の返り値(string) が挿入されます。

@item wl-bcc
@vindex wl-bcc
初期設定は @code{nil}。
Non-nil なら、設定された値をドラフトの @samp{Bcc:} として最初から挿入します。
@end table


@node Editing Message Body and Sending, Dynamical Message Re-arrangement, Editing Header, Usage of Draft Mode
@subsection メッセージの編集と送信

説明するまでもないですが、メッセージ本文の編集は基本的に通常の文章作成と
同様に行ないます。本文は @samp{--text follows this line--} の行より下に
記述します。(注意： @samp{--text follows this line--} の行はいじらないで
下さい。)

マルチパートの編集は SEMI の MIME 編集モードを利用しています。
編集の方法については各パッケージ付属のドキュメントを参照してください。
@xref{MIME-Edit, , ,mime-ui-ja, a MIME user interface for GNU Emacs}.
また、ドラフトバッファにおいて、@kbd{C-c C-x ?} でヘルプが参照できます。

編集中のドラフトをセーブすると、@code{wl-draft-folder} で設定したドラフ
トフォルダに追加されます。@kbd{C-c C-z} (@code{wl-draft-save-and-exit})
により、後から編集できるようにそれをセーブした上でドラフトバッファを離脱
できます。ドラフトフォルダに入って @kbd{E} (@code{wl-summary-reedit}) を
押せば、編集を再開できます (@pxref{Key Bindings of Summary})。

メッセージの編集が完了したら、@kbd{C-c C-c} で送信できます。


@node Dynamical Message Re-arrangement, Template, Editing Message Body and Sending, Usage of Draft Mode
@subsection メッセージの動的な変更
@vindex wl-draft-config-alist
@c @cindex Chage Message
@c @cindex Message, Chage Dynamic

@code{wl-draft-config-alist} を設定すると、ヘッダやその他の情報に基づい
て、自動的に他のヘッダや本文を変更することができます。

変数 @code{wl-draft-config-alist} について説明します。この変数の初期設定
は @code{nil} です。

例えば以下のように設定すると、@code{wl-draft-send-and-exit} や
@code{wl-draft-send} を実行した時にヘッダが変更されます。
@code{wl-interactive-send} を non-nil に設定しておくと、送信前に変更点が
確認できるので安心です。

@lisp
@group
(setq wl-draft-config-alist
      '(((string-match "aaa\\.example\\.com$" (system-name))
         ;; @r{式がnon-nilなら適用する}
         (wl-smtp-posting-server . "mailserver-B")
         (wl-nntp-posting-server . "newsserver-B")
         ;; @r{一時的な変数の設定}
         )
        ("^To: .*user@@aaa\\.bbb\\.example\\.com"
         ;; @r{ドラフトバッファのヘッダにマッチすれば適用する}
         ("Organization" . (format "Go %s" my-webpage)))
                           ;; @r{elisp 式が書ける (eval しているだけ)}
         (top . "  ○○です。\n")    ;; @r{本文先頭へ文字列を挿入します}
         (bottom . "\n以上です。\n") ;; @r{本文末尾へ文字列を挿入します}
        ))
@end group
@end lisp

@code{wl-draft-config-alist} は次の形式になっています。

@example
@group
'((@var{ヘッダの正規表現} または elisp式
   ("@var{Field}" . 値(elisp式))
   (@var{variable} . 値(elisp式))
   (@var{サブ関数} . 値(elisp式))
   @var{関数}
   @dots{})
  (@var{ヘッダの正規表現} または elisp式
   ("@var{Field}" . 値(elisp式))
   @dots{}))
@end group
@end example

[サブ関数]には、デフォルトで以下の13個を用意しています。

@example
'header:      ヘッダの末尾に指定した文字列を挿入します。
'header-top:  ヘッダの先頭に指定した文字列を挿入します。
'header-file: ヘッダの末尾に指定したファイルを挿入します。
'x-face:      指定したファイルの内容を持つ @samp{X-Face:} フィールドを
              挿入します。
'top:         本文の先頭に指定した文字列を挿入します。
'top-file:    本文の先頭に指定したファイルを挿入します。
'body:        本文を指定した文字列に置き換えます。
              @code{nil} を指定すると本文の文字列を削除します。
'body-file:   本文を指定したファイルの内容で置き換えます。
'bottom:      本文の末尾に指定した文字列を挿入します。
'bottom-file: 本文の末尾に指定したファイルを挿入します。
'part-top:    現在のマルチパートの先頭に指定した文字列を挿入します。
'part-bottom: 現在のマルチパートの末尾に指定した文字列を挿入します。
'template:    指定したテンプレートを適用します。
              (次項 テンプレートの挿入参照)
@end example

また、これらを定義しているのは @code{wl-draft-config-sub-func-alist} で
あり、定義を変更したり自分で作った関数を追加することができます。関数の書
き方はここで説明するより直接コードを見た方が分かりやすいでしょうから、省
略します。

各要素の1番目には @var{ヘッダの正規表現} か elisp 式 を指定します。elisp
式の場合は評価した値が non-nil の場合に適用されます。

また、デフォルトでは複数の要素がマッチまたは non-nil になった場合に、その
全てが適用されます。ここで、変数 @code{wl-draft-config-matchone} を
@code{t} にしてあれば、最初にマッチした1つだけを適用することもできます。

要素の2番目には cons か関数の list を指定します。cons にはヘッダの Field 
か変数、サブ関数を指定します。Field を指定した場合はその Field を変更し、
変数を指定した場合は一時的にその変数値を変更します。

値には文字列や変数の他、elisp式をそのまま記述することもできます。もし、
Field の値が @code{nil} ならばその Field を削除します。

つづいて、次の例を見て下さい。

@lisp
@group
(setq wl-draft-config-alist
      '((reply                         ;; @r{(1)}
         "X-ML-Name: \\(Wanderlust\\|emacs-mime-ja\\|apel-ja\\)"
         ;; @r{返信元バッファのヘッダにマッチすれば適用する}
         (body . "  こんにちは\n")
         (template . "default")
         )))
@end group
@end lisp

この例 (1)のように、ヘッダの正規表現の前に @code{reply} をつけると
@code{wl-summary-reply} などでドラフトを作成した場合、返信元のヘッダにマッ
チすれば適用されるようになります。ただし、@code{wl-draft} を実行したとき
など返信元のバッファがない場合は無視されます。

親フォルダの名前を利用したい場合には、バッファローカル変数
@code{wl-draft-parent-folder} を利用できます。次の例では、ドラフトを開く時に
居たサマリバッファのフォルダ名によって From を変更します。

@lisp
@group
(setq wl-draft-config-alist
      '(((string-match \".*@@domain1$\" wl-draft-parent-folder)
         (\"From\" . \"user@@domain1\"))
        ((string-match \".*@@domain2$\" wl-draft-parent-folder)
         (\"From\" . \"user@@domain2\"))))
@end group
@end lisp


何も特別な設定をしなければ、@code{wl-draft-config-alist} は、
@code{wl-draft-send-and-exit} か @code{wl-draft-send} が実行される直前に
一度だけ適用されます。送信を取りやめた後に再度 
@code{wl-draft-config-alist} を適用したい場合は、@kbd{C-c C-e}
(@code{wl-draft-config-exec}) を実行してください。

@code{wl-draft-send-and-exit}、@code{wl-draft-send} の実行時に自動的に 
@code{wl-draft-config-alist} を適用したくない場合は、次のように設定して
下さい。

@lisp
(remove-hook 'wl-draft-send-hook 'wl-draft-config-exec)
@end lisp

ドラフトバッファの作成時に自動的に
@code{wl-draft-config-alist} を適用したい場合は、次のように設定します。

@lisp
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)
@end lisp

サマリモードから 'E'(@code{wl-summary-reedit})を押してメールを
編集する時にも自動的に @code{wl-draft-config-alist} を適用したい場合は、
次のように設定します。

@lisp
(add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec)
@end lisp


@node Template, POP-before-SMTP, Dynamical Message Re-arrangement, Usage of Draft Mode
@subsection テンプレートの挿入
@cindex Template
@cindex Apply Template

変数 @code{wl-template-alist} を設定し、ドラフトバッファで@kbd{C-c C-j} 
もしくは @kbd{M-x wl-template-select}と入力することで適用します。
@code{wl-template-alist} の書式は @code{wl-draft-config-alist} とほぼ同
じです。
@xref{Dynamical Message Re-arrangement}.

@lisp
@group
(setq wl-template-alist
      '(("default"
         ("From" . wl-from)
         ("Organization" . "組織名")
         (body . "  ○○です。\n"))
        ("report"
         (template . "default")                 ;; @r{(a)}
         ("To" . "jousi@@example.com")
         ("Subject" . "報告")
         (body-file . "~/work/report.txt")
         )
        ))
@end group
@end lisp

このようにヘッダの正規表現の代わりに @samp{default} や @samp{report} の
ように各要素の名前(テンプレート名)をつけるだけです。各要素の定義は 
@code{wl-draft-config-alist} と同じなので、(a)のように別のテンプレートを
呼ぶことも可能です。

コマンド @code{wl-template-select} を実行すると、テンプレートを選択できま
す。変数 @code{wl-template-visible-select} の値によって、それぞれ以下の
ように振舞います。

@code{wl-template-visible-select} が @code{t} (デフォルト)の場合、ドラフ
トバッファの下に適用後のバッファウィンドウが表示されるので、それを見なが
ら @kbd{n} と @kbd{p} で選択します。そしてリターンキーで決定すると実際に
ドラフトバッファに適用されます。@kbd{q} を押すと何も適用されません。なお、
@code{wl-template-buffer-lines} でウィンドウの大きさを変更できます。

@code{wl-template-visible-select} が @code{nil} の場合、ミニバッファでテ
ンプレート名を入力することで選択します。

@code{wl-template-select} を prefix argument つきで実行した場合には、
@code{wl-template-visible-select} の値を逆にした動作になります。

また、@code{wl-draft-config-alist} の例のように例えば

@lisp
(template . "default")
@end lisp

@noindent
と書くことで @samp{default} のテンプレートを適用できます。


@node POP-before-SMTP,  , Template, Usage of Draft Mode
@subsection POP-before-SMTP によるメールの送信
@cindex POP-before-SMTP
@cindex SMTP-after-POP

POP-before-SMTP によるメールの送信ができます。
そのために必要な設定は、メール送信に用いる関数をデフォルトの
@code{wl-draft-send-mail-with-smtp} から変更する

@lisp
(setq wl-draft-send-mail-function 'wl-draft-send-mail-with-pop-before-smtp)
@end lisp

@noindent
と合わせて、必要に応じて以下の変数を設定してください。

@table @code
@item wl-pop-before-smtp-user
POP-before-SMTP で認証を行なうときの POP ユーザ名です。
設定していない場合は @code{elmo-pop3-default-user} を使います。

@item wl-pop-before-smtp-server
POP-before-SMTP で認証を行なうときの POP サーバ名です。
設定していない場合は @code{elmo-pop3-default-server} を使います。

@item wl-pop-before-smtp-authenticate-type
POP-before-SMTP で認証を行なうときの POP 認証方式です。
設定していない場合は @code{elmo-pop3-default-authenticate-type}
を使います。

@item wl-pop-before-smtp-port
POP-before-SMTP で認証を行なうときの POP ポート番号です。
設定していない場合は  @code{elmo-pop3-default-port} を使います。

@item wl-pop-before-smtp-stream-type
@code{ssl} なら SSL を利用して POP コネクションを張ります。@code{starttls} 
なら STARTTLS (RFC2595) を利用してコネクションを張ります。設定していな
い場合は @code{elmo-pop3-default-stream-type} を使います。
@end table

POP-before-SMTP 用の変数 (@code{wl-pop-before-smtp-*})を設定していない場
合には、POP フォルダの設定 (@code{elmo-pop3-default-*}) が用いられます。その
ため、SMTP サーバと POP サーバの実体が同じで、デフォルト設定の POP フォル
ダ(@samp{&} など)が利用可能なら、設定は不要です。

なお、POP-before-SMTP については以下を参照してください。

@example
@group
@uref{http://www.iecc.com/pop-before-smtp.html}
@end group
@end example


@node Key Bindings of Draft, Variables of Draft Mode, Usage of Draft Mode, Draft
@section キーバインド
@cindex Keybind, Draft Mode
@cindex Keybind, Draft Buffer

@table @kbd
@item C-c C-y
@kindex C-c C-y (Draft)
@findex wl-draft-yank-original
現在表示中のメッセージバッファ(カーソル位置のパート)の内容を引用します。
リージョンが有効な場合には、リージョンを引用します
(@code{transient-mark-mode} が Non-nil の時のみ)。
また、prefix argument を付けると、yank で挿入されるテキスト
の内容(クリップボードの内容)が引用されます。
(@code{wl-draft-yank-original})

@item C-c C-p
@kindex C-c C-p (Draft)
@findex wl-draft-preview-message
現在のドラフトの内容をプレビューします。
MIME のマルチパートメッセージの確認に使うと便利です。
(@code{wl-draft-preview-message})

@item C-c C-s
@kindex C-c C-s (Draft)
@findex wl-draft-send
現在のドラフトの内容を送信します。ドラフトバッファは消去しません。
複数の人に少しずつ内容を変えてメッセージを送りたい場合に便利です。
(@code{wl-draft-send})

@item C-c C-c
@kindex C-c C-c (Draft)
@findex wl-draft-send-and-exit
現在のドラフトの内容を送信し、ドラフトバッファを消去します。
(@code{wl-draft-send-and-exit})

@item C-x C-s
@kindex C-x C-s (Draft)
@findex wl-draft-save
現在のドラフトをセーブします。
(@code{wl-draft-save})

@item C-c C-k
@kindex C-c C-k (Draft)
@findex wl-draft-kill
現在のドラフトを破棄します。
セーブしていた場合、@samp{+draft} フォルダからも削除されます。
(@code{wl-draft-kill})

@item C-x k
@kindex C-x k (Draft)
@findex wl-draft-mimic-kill-buffer
現在のドラフトを破棄します。
(@code{wl-draft-mimic-kill-buffer})

@item C-c C-z
@kindex C-c C-z (Draft)
@findex wl-draft-save-and-exit
現在のドラフトをセーブし、ドラフトバッファを消去します。
ドラフトの編集を中断したいときに便利です。
(@code{wl-draft-save-and-exit})

@item C-c C-r
@kindex C-c C-r (Draft)
@findex wl-caesar-region
指定されたリージョンをシーザ暗号でエンコード/デコードします。
(@code{wl-caesar-region})

@item C-l
@kindex C-l (Draft)
@findex wl-draft-highlight-and-recenter
現在のドラフトをハイライトしなおします。
(@code{wl-draft-highlight-and-recenter})

@item M-t
@kindex M-t (Draft)
@findex wl-toggle-plugged
Wanderlust のオフラインモード/オンラインモードをトグルします。
(@code{wl-toggle-plugged})

@item C-c C-o
@kindex C-c C-o (Draft)
@findex wl-jump-to-draft-buffer
他のドラフトバッファがあれば移動します。
また、prefix argument をつけることにより、バッファが存在していない場合は、
ドラフトフォルダからファイルを(存在すれば)読み込みます。
(@code{wl-jump-to-draft-buffer})

@item C-c C-e
@kindex C-c C-e (Draft)
@findex wl-draft-config-exec
@code{wl-draft-config-alist}を適用します。
(@code{wl-draft-config-exec})

@item C-c C-j
@kindex C-c C-j (Draft)
@findex wl-template-select
テンプレートを選択します。
(@code{wl-template-select})

@item C-c C-a
@kindex C-c C-a (Draft)
@findex wl-addrmgr
アドレスマネージャを起動します。
@xref{Address Manager}.
(@code{wl-addrmgr})

@item C-c C-d
@kindex C-c C-d (Draft)
@findex wl-draft-elide-region
ポイントとマークの間の文を省きます (@code{wl-draft-elide-region})。文章
は切られて (killed) 変数 @code{wl-draft-elide-ellipsis} の値で置き換えら
れます。デフォルトの省略符号として使われる値は (@samp{[...]}) です。
@end table


@node Variables of Draft Mode,  , Key Bindings of Draft, Draft
@section カスタマイズ変数
@cindex SMTP AUTH

@table @code
@item wl-subscribed-mailing-list
@vindex wl-subscribed-mailing-list
初期設定は @code{nil}。参加しているメーリングリストのリスト。返事のドラ
フトを用意するときに @samp{Mail-Followup-To:} や @samp{Cc:} にこれらが含
まれるときは自分のアドレスを除きます。また、これらが @samp{To:} か 
@samp{Cc:} に含まれるときには、そのアドレスでリファイル先を覚えます。

設定例:

@lisp
@group
(setq wl-subscribed-mailing-list
      '("wl@@ml.gentei.org"
        "apel-ja@@m17n.org"
        "emacs-mime-ja@@m17n.org"))
@end group
@end lisp

@item wl-insert-mail-followup-to
@vindex wl-insert-mail-followup-to
初期設定は @code{nil}。Non-nil なら、@samp{Mail-Followup-To:} フィールド
をドラフトバッファに自動的に挿入します。

@item wl-insert-mail-reply-to
@vindex wl-insert-mail-reply-to
初期設定は @code{nil}。Non-nil なら、@samp{Mail-Reply-To:} フィールドを
ドラフトバッファに自動的に挿入します。

@item wl-auto-insert-x-face
@vindex wl-auto-insert-x-face
初期設定は @code{t}。Non-nil でかつ、エンコードされた X-Face 文字列を 
@file{~/.xface} (変数 @code{wl-x-face-file} の値)の内容に用意しておくと、
ドラフトを準備するときに自動的に @samp{X-Face:} フィールドとして挿入され
ます。@code{nil} の場合は自動的には挿入しません。

@item wl-insert-message-id
@vindex wl-insert-message-id
初期設定は @code{t}。
Non-nil なら、送信時に @samp{Message-ID:} フィールドを自動的に挿入します。

@item wl-message-id-use-message-from
@vindex wl-message-id-use-message-from
初期設定は @code{t}。Non-nil なら、@samp{Message-ID:} のドメインパートに 
@samp{From:} フィールド、もしくは @code{wl-from} の値を利用します。

@item wl-local-domain
@vindex wl-local-domain
初期設定は @code{nil}。@code{nil} ならば @samp{Message-ID:} のドメインパー
トには関数 @code{system-name} の返り値を設定します。

@code{system-name} が FQDN (@samp{smtp.gohome.org} のようなホストのフル
ネーム) を返さない場合は、この変数に @strong{必ず} ホスト名を除いたドメ
イン名 (@samp{gohome.org}など) を設定してください。 もし、グローバルな IP
アドレスを持たない場合は、@code{wl-message-id-domain}を設定してください。
(@samp{Message-ID:} のドメインがおかしいと、ネットニュースでふくろ叩きに
あってしまう可能性があります。)

また、この値を設定している場合、@code{system-name} にこの値を付加したホ
スト名を SMTP の HELO の引数として利用します。

@item wl-message-id-domain
@vindex wl-message-id-domain
初期設定は @code{nil}。Non-nil なら、@samp{Message-ID:} のドメインパート
に使用されます。グローバルな IP アドレスを持たない場合など、ドメインパー
トを決められない場合は、@code{wl-message-id-domain} に一意な文字列(例え
ば、メールアドレスなど)を設定してください。

@item wl-unique-id-suffix
@vindex wl-unique-id-suffix
初期設定は @samp{.wl}。Message-ID を生成する際に @samp{@@} または 
@samp{%} の直前に現れる文字列を指定します。

@item wl-draft-config-alist
@vindex wl-draft-config-alist
初期設定は @code{nil}。
送信直前にドラフトメッセージを変更します。自動的に 
@code{wl-draft-config-alist} の内容が適用されるのは送信時に一度だけです。
もし，手動で適用する場合は，@kbd{C-c C-e} (@code{wl-draft-config-exec}) 
を使用してください。このコマンドは何度でも適用できます。

@item wl-template-alist
@vindex wl-template-alist
初期設定は @code{nil}。
ドラフトバッファで適用するテンプレートを設定します。

@item wl-draft-config-matchone
@vindex wl-draft-config-matchone
初期設定は @code{nil}。Non-nil なら @code{wl-draft-config-alist} の適用
時に最初にマッチした要素のみを適用します。@code{nil} ならマッチしたもの
すべてを適用します。

@item wl-template-visible-select
@vindex wl-template-visible-select
初期設定は @code{t}。
Non-nil なら別ウィンドウに適用後の状態を表示しながらテンプレートを選択します。

@item wl-template-confirm
@vindex wl-template-confirm
初期設定は @code{nil}。
Non-nil ならウィンドウを表示しながらテンプレートを選択する場合、リターン
キーで選択する時に確認を行います。

@item wl-template-buffer-lines
@vindex wl-template-buffer-lines
初期設定は 7。
@code{wl-template-visible-select}が non-nil の場合、
適用後の状態を表示するウィンドウの大きさを指定します。

@item wl-draft-buffer-style
@vindex wl-draft-buffer-style
初期設定は @code{full}。
(返信と転送の場合以外の)ドラフトバッファのウインドウの形態を指定します。

@table @code
@item keep
現在のウィンドウを使います。

@item full
フレーム全体のウインドウを使います。

@item split
現在のウィンドウを垂直に分割して使います。

@item split-horiz
現在のウィンドウを水平に分割して使います。

@item msg-split
返信時のようにメッセージバッファのウィンドウを垂直に分割して使います。

@item msg-split-horiz
返信時のようにメッセージバッファのウィンドウを水平に分割して使います。
@end table

関数が指定された場合、ドラフトバッファを引数としてそれ呼び出します。

@item wl-draft-reply-buffer-style
@vindex wl-draft-reply-buffer-style
初期設定は @code{split}。
返信と転送の場合のドラフトバッファのウインドウの形態を指定します。
@table @code
@item keep
メッセージバッファのウィンドウを使います。
@item full
フレーム全体のウインドウを使います。
@item split
メッセージバッファのウィンドウを垂直に分割して使います。
@item split-horiz
メッセージバッファのウィンドウを水平に分割して使います。
@end table
関数が指定された場合、ドラフトバッファを引数としてそれ呼び出します。

@item wl-draft-use-frame
@vindex wl-draft-use-frame
初期設定は @code{nil}。
Non-nil ならドラフト用に新しいフレームを開きます。

@item wl-draft-reply-default-position
@vindex wl-draft-reply-default-position
初期設定は @code{body}
返信の場合のドラフトでのカーソルの初期位置を指定します。
@code{body} とするとメッセージ本文の先頭、@code{bottom} とすると本文末尾、
@code{top} とするとヘッダの先頭にカーソルを移動します。

@item wl-draft-truncate-lines
@vindex wl-draft-truncate-lines
初期設定では @code{default-truncate-lines} の値を使います。Non-nil なら
ドラフトバッファで長い行の折り返しをしません。

@item wl-from
@vindex wl-from
初期設定は変数 @code{user-mail-address} の値。
設定された値をドラフトの @samp{From:} フィールドとして最初から挿入します。

@item wl-envelope-from
@vindex wl-envelope-from
初期設定は @code{nil}。
設定した値を envelope from (MAIL FROM) に使用します。
@code{nil} なら @code{wl-from} のアドレス部分を使用します。

@item wl-user-mail-address-list
@vindex wl-user-mail-address-list
初期設定は @code{nil}。
ユーザのアドレスリストです。
アドレスを複数持っている場合は設定してください。

@item wl-reply-subject-prefix
@vindex wl-reply-subject-prefix
初期設定は @samp{Re: }。
返信時のドラフトの @samp{Subject:} で、元記事の @samp{Subject:} の先頭に
付け加える文字列です。返信対象のメッセージバッファで評価される関数を指定
することもできます。

@item wl-forward-subject-prefix
@vindex wl-forward-subject-prefix
初期設定は @samp{Forward: }。
転送時のドラフトの @samp{Subject:} で、元記事の @samp{Subject:} の先頭に
付け加える文字列です。転送対象のメッセージバッファで評価される関数を指定
することもできます。

@item wl-draft-reply-use-address-with-full-name
@vindex wl-draft-reply-use-address-with-full-name
初期設定は @code{t}。
Non-nil なら返信アドレスの @samp{To:}, @samp{Cc:} フィールドに相手のフル
ネームを挿入します。@code{nil} ならアドレスだけを挿入します。

@item wl-draft-enable-queuing
@vindex wl-draft-enable-queuing
初期設定は @code{t}。
オフライン送信するかどうかを示すフラグです。Non-nil ならオフライン送信します。

@item wl-draft-use-cache
@vindex wl-draft-use-cache
初期設定は @code{nil}。送信するメッセージをキャッシュするかどうかを示すフ
ラグです。Non-nil ならキャッシュします。ただし @code{wl-insert-message-id}が
nil の場合はキャッシュしません。

@item wl-fcc-force-as-read
@vindex wl-fcc-force-as-read
初期設定は @code{nil}。Non-nil なら @samp{Fcc:} で保存したメッセージを
既読にします。

@item wl-auto-flush-queue
@vindex wl-auto-flush-queue
初期設定は @code{t}。
オンラインになったときに自動的にキューを送信するかどうかを示すフラグです。
Non-nil なら自動的に送信します (一応 @code{y-or-n-p} で確認します)。
手動でキューを送信するには、フォルダモードで @kbd{F} を押してください。

@item wl-ignored-forwarded-headers
@vindex wl-ignored-forwarded-headers
初期設定は @samp{\\(received\\|return-path\\|x-uidl\\)}。
転送時に削除するヘッダフィールド名を正規表現で指定します。

@item wl-ignored-resent-headers
初期設定は @samp{\\(return-receipt\\|[bdf]cc\\)}。
再送時に削除するヘッダフィールド名を正規表現で指定します。

@item wl-draft-always-delete-myself
@vindex wl-draft-always-delete-myself
Non-nil なら、自分宛てのメールに返信する場合、常に @samp{To:},
@samp{Cc:} から自分のメールアドレスを削除します。

@item wl-draft-delete-myself-from-bcc-fcc
@vindex wl-draft-delete-myself-from-bcc-fcc
Non-nil で、@samp{To:}, @samp{Cc:} が 変数 @code{wl-subscribed-mailing-list} に
含まれている場合、@samp{Bcc:} , @samp{Fcc:} をつけません．

@item wl-draft-send-mail-function
@vindex wl-draft-send-mail-function
初期設定は @code{wl-draft-send-mail-with-smtp}。
メール送信に使う関数です。POP-before-SMTP を利用する場合は
@code{wl-draft-send-mail-with-pop-before-smtp} に設定します。

@item wl-smtp-posting-server
@vindex wl-smtp-posting-server
初期設定は @code{nil}。
メール送信時の SMTP サーバ名です。

@item wl-smtp-posting-port
@vindex wl-smtp-posting-port
初期設定は @code{nil}。
メール送信時の SMTP ポート番号です。
@code{nil} ならデフォルトの SMTP ポート番号(25)を使います。

@item wl-smtp-posting-user
@vindex wl-smtp-posting-user
初期設定は @code{nil}。
SMTP AUTH による認証を行なうときのユーザ名です。

@item wl-smtp-authenticate-type
@vindex wl-smtp-authenticate-type
初期設定は @code{nil}。
SMTP AUTH による認証を行なうときの認証方式を文字列で指定します。
値として @code{plain}, @code{cram-md5}, @code{digest-md5}, @code{login}
などが指定できます。
@code{nil} なら認証を行いません。

@item wl-smtp-authenticate-realm
@vindex wl-smtp-authenticate-realm
初期設定は @code{nil}。
SMTP AUTH による認証を行なうときのレルム(realm)を文字列で指定します。
レルムの指定は DIGEST-MD5 等の認証方式で必要な場合があります。
@code{nil} の場合はレルムの指定を行いません。

@item wl-smtp-connection-type
@vindex wl-smtp-connection-type
初期設定は @code{nil}。
SMTP のコネクションをどのように張るかをシンボルで指定します。
@code{nil} ならデフォルトの接続型式を利用します。
@code{starttls} なら STARTTLS (RFC3207)を利用してコネクションを張ります。
@code{ssl} なら SSL を利用します。

@item wl-nntp-posting-server
@vindex wl-nntp-posting-server
初期設定は @code{nil}。
ニュース投稿時の NNTP サーバ名です。
@code{nil} なら @code{elmo-nntp-default-server} を使います。

@item wl-nntp-posting-user
@vindex wl-nntp-posting-user
初期設定は @code{nil}。
ニュース投稿時に AUTHINFO による認証を行なうときのユーザ名です。
@code{nil} なら @code{elmo-nntp-default-user} を使います。
それでも @code{nil} なら AUTHINFO による認証を行ないません。

@item wl-nntp-posting-port
@vindex wl-nntp-posting-port
初期設定は @code{nil}。
ニュース投稿時の NNTP サーバのポート番号。
@code{nil} なら @code{elmo-nntp-default-port} を使います。

@item wl-nntp-posting-stream-type
@vindex wl-nntp-posting-stream-type
初期設定は @code{nil}。
@code{nil} なら @code{elmo-nntp-default-stream-type} を評価します。
@code{ssl} ならニュース投稿時に SSL を利用します。
@code{starttls}なら STARTTLS (RFC2595)を利用してコネクションを張ります。

@item wl-nntp-posting-function
@vindex wl-nntp-posting-function
初期設定は @code{elmo-nntp-post}。
ニュース投稿のための関数。

@item wl-nntp-posting-config-alist
@vindex wl-nntp-posting-config-alist
初期設定は @code{nil}。
以下の例のようにして、ニュース投稿時のサーバ選択方法を設定します。
@code{wl-nntp-posting-@{server|user|port|function@}}より優先されます。

@lisp
@group
(setq wl-nntp-posting-config-alist
      '((",?gmane\\." . "news.gmane.org")
        (",?comp\\." .
         ((server . "news-server")
          (user . "newsmaster")
          (port . 119)
          (function . elmo-nntp-post)))
        (".*" . "default-news-server")))
@end group
@end lisp

@item wl-pop-before-smtp-user
@vindex wl-pop-before-smtp-user
初期設定は @code{nil}。
POP-before-SMTP で POP を行なうときのユーザ名です。
@code{nil} のままなら @code{elmo-pop3-default-user}を利用します。

@item wl-pop-before-smtp-server
@vindex wl-pop-before-smtp-server
初期設定は @code{nil}。
POP-before-SMTP で POP を行なうときのサーバ名です。
@code{nil} のままなら @code{elmo-pop3-default-server}を利用します。

@item wl-pop-before-smtp-authenticate-type
@vindex wl-pop-before-smtp-authenticate-type
初期設定は @code{nil}。
POP-before-SMTP で POP を行なうときの認証方式です。
@code{nil} のままなら @code{elmo-pop3-default-authenticate-type}を利用します。

@item wl-pop-before-smtp-port
@vindex wl-pop-before-smtp-port
初期設定は @code{nil}。
POP-before-SMTP で POP を行なうときのポート番号です。
@code{nil} のままなら @code{elmo-pop3-default-port}を利用します。

@item wl-pop-before-smtp-stream-type
@vindex wl-pop-before-smtp-stream-type
初期設定は @code{nil}。
POP-before-SMTP で SSL を利用するかどうかを示すフラグです。@code{nil} の
ままなら @code{elmo-pop3-default-stream-type}を利用します。
@code{ssl} なら SSL を利用します。
@code{starttls}なら STARTTLS (RFC2595)を利用してコネクションを張ります。

@item wl-draft-queue-save-variables
@vindex wl-draft-queue-save-variables
オフライン送信時にキューに格納したメッセージについて保存しておく変数を
リストで指定します。

@item wl-draft-sendlog
@vindex wl-draft-sendlog
初期設定は @code{t}。
@code{t} なら @file{~/.elmo/sendlog} に送信ログを出力します。
ログを出力するタイミングは以下の通りです(失敗の場合も)。

@itemize @minus
@item smtp, qmail による送信
@item fcc によるフォルダへの格納
@item queuing によるフォルダへの格納
@end itemize

@noindent
ただし、@file{im-wl.el} による送信では、
@file{sendlog} には出力せずに @command{imput} のログ機能におまかせします。

@item wl-draft-sendlog-max-size
@vindex wl-draft-sendlog-max-size
初期設定は 20000 (バイト)。
@code{wl-draft-sendlog} が @code{t} の場合、保存したログの大きさが指定し
た大きさ以上になれば、ログをローテーションします。

@item wl-use-ldap
@vindex wl-use-ldap
初期設定は @code{nil}。
Non-nil なら LDAP を利用してアドレス補完します。

@item wl-ldap-server
@vindex wl-ldap-server
初期設定は @samp{localhost}。
アドレス補完に用いる LDAP サーバ名です。

@item wl-ldap-port
@vindex wl-ldap-port
初期設定は @code{nil}．
アドレス補完に用いる LDAP サーバのポート番号です。

@item wl-ldap-base
@vindex wl-ldap-base
初期設定は @samp{c=US}。
アドレス補完時の LDAP 検索の開始点(base)を指定します。

@item wl-draft-remove-group-list-contents
@vindex wl-draft-remove-group-list-contents
初期設定は @code{t}。
Non-nil ならメール送信の際に宛先から group-list の内容を削除します
(group-list とは宛先に含まれる @samp{Group: foo@@gohome.org,
bar@@gohome.org;}のような記述を指します)。
@end table


@node Disconnected Operations, Expire and Archive, Draft, Top
@chapter オフライン処理
@cindex Disconnected Operations
@cindex Offline
@cindex Unplugged

Wanderlust にはオンラインモードとオフラインモードがあります。

@menu
* Off-line State::              オフラインモード
* Enable Operations::           オフラインモードで実行できる操作
* Plugged Mode::                サーバ・ポート別の切り替え
* Off-line State settings::     起動時のオフライン状態設定
* Variables of Plugged Mode::   カスタマイズ変数
@end menu


@node Off-line State, Enable Operations, Disconnected Operations, Disconnected Operations
@section オフラインモード

Wanderlust にはオンラインモードとオフラインモードがあります。オフライン
モードでは、ネットワーク経由でなければ読めないメッセージにはアクセスでき
ません(キャッシュされていればアクセスできます)。

モードラインの @samp{[ON]} という表示は、オンラインモードにあることを示
しています。モードラインが @samp{[--]} という表示になっているときはオフ
ラインモードです。フォルダモード、サマリモードで @kbd{M-t} を押すとオフ
ライン/ オンラインの切り替えができます。

オフラインモードではサマリモードの @kbd{n} と @kbd{p} の動作が変わり、
キャッシュされていないメッセージへは移動しなくなります。

@file{~/.wl} などで変数 @code{wl-plugged} を @code{nil} に設定してから起
動すると、起動時からオフラインモードとなります。


@node Enable Operations, Plugged Mode, Off-line State, Disconnected Operations
@section オフラインモードで実行できる操作

以下の操作は(対象となるメッセージがキャッシュされていれば) オフラインモー
ドでも実行できます。(変数 @code{elmo-enable-disconnected-operation} (後
述) が non-nil のとき。)
@xref{Plugged Mode}, @xref{Off-line State settings}.

@menu
* Send Messages off-line::      メッセージの送信
* Re-file and Copy queue::      リファイル/コピー (IMAP4)
* Creation of Folders::         フォルダ生成 (IMAP4)
* Marking::                     マーク付け (IMAP4)
* Pre-fetching Reservations::   プリフェッチ
@end menu

オフラインモードで行ったこれらの操作が、ネットワーク経由でサーバ上に反映
されるのは、Wanderlust がオンラインモードになった瞬間です。

変数 @code{elmo-enable-disconnected-operation} が @code{nil} なら、これら
のネットワークフォルダに関するオフライン処理を実行せず、オフライン中のリ
ファイル/コピー等の操作は単にエラーになります。

@node Send Messages off-line, Re-file and Copy queue, Enable Operations, Enable Operations
@subsection メッセージの送信

オフライン状態でメール/ニュース記事の送信操作をすると、送信の予約がされ
ます。(@file{im-wl.el} をお使いの場合は、関係ありません。) オフラインの
ときに送信予約されたメッセージはキューフォルダ @samp{+queue} に溜ります。
溜ったメッセージは、オンラインになったときに一気に送信されます。

オフラインのうちに @samp{+queue} を訪れて、キューにあるメッセージの内容
を確認できます。メッセージを削除することも可能です。(削除されたメッセー
ジはオンラインになっても送信されません。)

@c キューにあるメッセージを再編集することも可能ですが、
@c 問題が起こる可能性がありますのでお勧めできません。


@node Re-file and Copy queue, Creation of Folders, Send Messages off-line, Enable Operations
@subsection リファイル/コピー(IMAP4)

オフライン状態のあいだに実行された IMAP フォルダに対するリファイル/コピー
操作はキューに溜められ、オンラインになったときにサーバ側に反映されます。
オフライン・リファイル/コピーの後、リファイル/コピー先のフォルダを訪れ
ると、オフラインでもメッセージが追加されているように見えます。

オフライン・リファイルのキュー処理時の削除処理は安全を期してサーバ上のメッ
セージと @samp{Message-ID:} が一致した場合のみ実行されます。また、キュー処
理時にリファイル/コピー先に指定したフォルダへメッセージを追加できなかった
場合には、それらのメッセージを @samp{+lost+found} フォルダに追加します。


@node Creation of Folders, Marking, Re-file and Copy queue, Enable Operations
@subsection フォルダ生成(IMAP4)

IMAP フォルダの生成もオフライン状態で実行できます。オンラインになったと
きにフォルダ生成がサーバに反映されますが、このとき、何らかの原因でフォル
ダ生成が失敗してしまった場合、オフライン中に生成されたフォルダへリファイ
ルされたメッセージは @samp{+lost+found} フォルダに追加されます。


@node Marking, Pre-fetching Reservations, Creation of Folders, Enable Operations
@subsection マーク付け(IMAP4)

IMAP フォルダにあるメッセージに対する未読/既読の情報、および、重要マーク 
@samp{$} がついているかどうかも、オフライン中の変更がオンラインになった
ときにサーバに反映されます。


@node Pre-fetching Reservations,  , Marking, Enable Operations
@subsection プリフェッチ

ネットワークフォルダ (IMAP, NNTP, POP3, shimbun) にあるメッセージに対して、
プリフェッチの予約をします。プリフェッチを予約したメッセージには
@samp{u} が付きますが、この時点ではキャッシュされておらず、オンラインになっ
たときにサーバからプリフェッチされます。


@node Plugged Mode, Off-line State settings, Enable Operations, Disconnected Operations
@section サーバ・ポート別のオンライン、オフラインの切り替え

上記の @kbd{M-t} による操作ではネットワークの状態を一括して切り替えますが、
サーバ・ポート別にオンラインとオフラインを切り替えることもできます。

フォルダモード、サマリモードで @kbd{C-t} を押すと以下のような 
wl-plugged-mode に入り、このモードで各ポートの plug 状態を変更します。

@example
@group
Queuing:[ON] AutoFlushQueue:[--] DisconnectedOperation:[ON]
[ON](wl-plugged)
  [--]hosta
    [--]smtp        +queue: 2 msgs (1,2)        @dots{}@r{sending queue}
    [--]nntp(119)   +queue: 1 msg (3)           @dots{}@r{sending queue}
  [ON]hostb
    [--]imap4/cram-md5(143) %#mh/wl(prefetch-msgs:3,mark-as-important:1)
                            %inbox(delete-msgids:1)    @dots{}@r{dop queue}
    [ON]nntp(119)
    [ON]smtp
@end group
@end example

1行目はオフライン操作に関係する次の3つの変数の状態を表示しています。
それぞれのラベル欄で @kbd{@key{SPC}} や @kbd{@key{RET}} を押すことで
変数の値を簡単に変更できるようになっています。

@example
@group
"Queuing"               @code{wl-draft-enable-queuing}
"AutoFlushQueue"        @code{wl-auto-flush-queue}
"DisconnectedOperation" @code{elmo-enable-disconnected-operation}
@end group
@end example

ここで、@samp{[ON]} はその変数の値が @code{t} であることを、@samp{[--]} 
は @code{nil} であることを示しています。

また、2行目以降ではサーバとポートのオンラインとオフライン状態を表示し、
@samp{[ON]} はそのサーバやポートがオンラインであることを、
@samp{[--]} はオフラインであることを示しています
可能ならアイコンで表示されます。
そしてそれぞれの行で @kbd{@key{SPC}} や @kbd{@key{RET}} を押すことで
状態を切り替えることができます。

@dfn{sending queue} はオフライン送信時に @samp{+queue} フォルダに格納さ
れている送信待ちのメッセージを指し、@dfn{dop queue} はオフラインで行った
リファイル/コピー等の操作を指すとします。
@c 変数 @code{elmo-enable-disconnected-operation} が non-nil なら
@c オフライン操作ができます。

そしてもし、これらの sending queue や dop queue があればその状態が画面に
表示されます。上記例では、sending queue には hosta の smtp 向けに 2 つ
(queue フォルダの1番と2番)と、hosta の nntp 向けに 1 つ(3番)のメッセージ
があり、dop queue には @samp{%inbox} の操作が1つと、@samp{%#mh/wl} の操
作が2つあることを示しています。

このモードで2行目にある @samp{(wl-plugged)} を変更すると、
@code{wl-plugged} 変数が変更され、これによりモードラインの indicator と
全体の ポート plug 状態が ON/OFF されます。また、各サーバやポートの plug 
状態を変更すると、@code{elmo-plugged-condition} (後述)の設定と各ポートの 
plug 状態により 2行目の @samp{(wl-plugged)} が変化します。


@node Off-line State settings, Variables of Plugged Mode, Plugged Mode, Disconnected Operations
@section 起動時のオフライン状態設定

前述の通り、@file{~/.wl} などで変数 @code{wl-plugged} を @code{nil} に設
定してから起動すると、起動時からオフラインモードにすることができます。さ
らに細かくサーバやポート毎にオフライン状態を設定することも可能です。併せ
て変数 @code{wl-reset-plugged-alist} も参照して下さい。

通常、起動時には @file{~/.folders} と @code{wl-smtp-posting-server},
@code{wl-nntp-posting-server} などから各ポートの plug 状態が自動的に追加
されますが、これらのポートの plug 状態を変更したり、上記以外のポートを追加
したりする場合には @code{wl-make-plugged-hook} に変更する関数を記述しま
す。

@lisp
@group
(add-hook 'wl-make-plugged-hook
          '(lambda ()
             (elmo-set-plugged plugged値(t/nil) server port)
                     ;; @r{server,portのplug状態を新規追加もしくは変更する}
             (elmo-set-plugged plugged値(t/nil) server)
                     ;; @r{port を省略するとserverの全portが変更される}
                     ;; @r{(port を省略して新規の追加はできない)}
             ))
@end group
@end lisp


@node Variables of Plugged Mode,  , Off-line State settings, Disconnected Operations
@section カスタマイズ変数

@table @code
@item wl-plugged
@vindex wl-plugged
この値を @code{nil} に設定して Wanderlust を起動すると、起動時からオフラ
インモードとなります。

@item wl-queue-folder
@vindex wl-queue-folder
初期設定は @samp{+queue}。送信キューのメッセージが溜るフォルダ。

@item wl-auto-flush-queue
@vindex wl-auto-flush-queue
初期設定は @code{t}。オンラインになったときに自動的にキューを送信するか
どうか。Non-nil なら自動的に送信します (一応 @code{y-or-n-p} で確認
します)。手動でキューを送信するには、フォルダモードで @kbd{F} を押してく
ださい。

@item elmo-enable-disconnected-operation
@vindex elmo-enable-disconnected-operation
初期設定は @code{t}。ネットワークフォルダに関するオフライン処理を実行する
かどうか。Non-nil ならオフライン処理を実行します。

@item elmo-lost+found-folder
@vindex elmo-lost+found-folder
初期設定は @samp{+lost+found}。オフライン・リファイル/コピーのキュー処理
でメッセージの追加に失敗したときにメッセージを退避させるフォルダです。

@item elmo-plugged-condition
@vindex elmo-plugged-condition
初期設定は @code{one}。
@code{wl-plugged} の値は関数 @code{elmo-plugged-p} (引数なし)の戻り値に
より決定されます。この変数 @code{elmo-plugged-condition} は 
@code{(elmo-plugged-p)} の戻り値が @code{t} になる条件を各ポートの plug 状
態により指定します。

@example
'one         : 1つ以上のポートが plugged なら plugged である
'all         : 全てのポートが plugged なら plugged である
'independent : ポートの plug 状態に関係なく wl-plugged (elmo-plugged)
               を参照する
@var{function}     : 関数 @var{function} の戻り値により変化する
 標準で用意されている関数
 'elmo-plug-on-by-servrs
             : 変数 elmo-plug-on-servers で指定したサーバの plug
               状態により変化する
 'elmo-plug-on-by-exclude-servers
             : 変数 elmo-plug-on-exclude-servers で指定した以外の
               サーバの plug 状態により変化する
                  elmo-plug-on-exclude-servers のデフォルト値は
                   '("localhost"
                     (system-name)
                     (system-name)からドメイン部を除いたもの)
                  である
@end example

@example
@group
例1:
 (setq elmo-plugged-condition 'all)
例2:
 (setq elmo-plug-on-servers '("smtpserver" "newsserver"))
 (setq elmo-plugged-condition 'elmo-plug-on-by-servers)
例3:
 (setq elmo-plug-on-exclude-servers '("localhost" "myname"))
 (setq elmo-plugged-condition 'elmo-plug-on-by-exclude-servers)
@end group
@end example

@item wl-reset-plugged-alist
@vindex wl-reset-plugged-alist
初期設定は @code{t}。Non-nil なら Wanderlust の起動時にサーバ・ポート別
のプラグ状態を @code{wl-plugged} の値により初期化します。

@code{nil} なら、Emacs が動作している間、前回終了した時点のプラグ状態を
保持します。言い換えれば @code{nil} であっても Emacs を再起動すると初期
化されます。
@end table


@node Expire and Archive, Scoring, Disconnected Operations, Top
@chapter メッセージの自動削除とアーカイブ
@cindex Expire and Archive

@menu
* Expire::      期限メッセージの自動削除、アーカイブ
* Archive::     全メッセージのアーカイブ
@end menu


@node Expire, Archive, Expire and Archive, Expire and Archive
@section メッセージの自動削除
@cindex Expire Message

Expire とは、指定した期間を過ぎた古いメッセージを削除する機能です。

しかし、@code{wl-expire} ではメッセージを単純に消すだけではなく、指定したアーカ
イブフォルダに移動することも出来ます。

@section 使い方

@code{wl-expire-alist}を設定して、フォルダモードで @kbd{e}、もしくはサマ
リモードで @kbd{M-e} を押します。

@subsection @code{wl-expire-alist}の設定

次に@code{wl-expire-alist}の設定例を示します。この@code{wl-expire-alist}
の書き方一つで expire の実施方法が大きく変わりますので、慎重に設定してく
ださい。最初のうちは@code{wl-expire-use-log}を @code{t} にセットしておく
と良いでしょう。

@lisp
@group
(setq wl-expire-alist
      '(("^\\+trash$"   (date 14) remove)
                                  ;; @r{削除する。}
        ("^\\+tmp$"     (date 7) trash)
                                 ;; @r{@code{wl-trash-folder} にリファイルする。}
        ("^\\+outbox$"  (number 300) "$outbox;lha")
                                     ;; @r{特定のフォルダにリファイルする。}
        ("^\\+ml/tmp$"  nil)
                        ;; @r{expireしない}
        ("^\\+ml/wl$"   (number 500 510) wl-expire-archive-number1 t)
                           ;; @r{番号ごとにアーカイブする(番号は保持する)。}
        ("^\\+ml/.*"    (number 300 310) wl-expire-archive-number2 t)
                           ;; @r{一定数ごとにアーカイブする(番号は保持する)。}
        ("^\\+nikki$"   (date 30) wl-expire-archive-date)
                           ;; @r{年月ごとにアーカイブする(番号は保持しない)。}
        ))
@end group
@end lisp

各リストの要素は

@example
(@var{フォルダの正規表現}  @var{削除メッセージの指定}  @var{削除先})
@end example

@noindent
となっています。リストの先頭から@var{フォルダの正規表現}にマッチするかど
うかを調べます。もし、@var{フォルダの正規表現}にマッチしないフォルダで、
expire を実行しても何もしません。また、2,3 番目の要素のいずれかが 
@code{nil} であれば expire しません。

@var{削除メッセージの指定}には次のものを指定します。

@table @code
@item (number @var{n1} [@var{n2}])
フォルダにあるメッセージ数に応じて削除を行います。

@var{n1} は削除後のメッセージ数で、
例えば値が 500 なら最新の 500 個を残して残りを削除することになります。

@var{n2} は expire を実行するためのメッセージの総数で、省略すると 
@var{n1} + 1 になります。例えば値が 510 ならメッセージが 510 以上のとき
に expire を実行することになります。これは自動実行で expire を行うように
した場合、頻繁にメールが来るフォルダでは毎回 expire を実行するようになる
ので、メールを読むまでに時間がかかり、煩わしくなってしまいます。そこで
@var{n2} を @var{n1} よりも大きめの値に設定することで、一定数溜まるまでは 
expire を実行しないようにできます。

また、@code{wl-summary-expire-reserve-marks}で指定したメッセージ(重要マー
クや新規・未読マークの付いたメッセージ)は削除しないようになっていますが、
もし、@code{wl-expire-number-with-reserve-marks} が non-nil の場合、この
ようなメッセージも含めて 500 個になるように expire します。@code{nil} 
の場合は上記メッセージ以外で 500 になるように expire します。

@item (date @var{d1})
メッセージの日付により削除を行います。

@var{d1} は現在より何日前のメッセージを削除するどうかであり、
例えば値が 7 なら 7日より前のメッセージを削除します。
なお、この日付とはメッセージの @samp{Date:} フィールドの日付であり、
メッセージがフォルダに入った日付ではないことに注意してください。

もし、メッセージに @samp{Date:} フィールドがなかったり、@samp{Date:} フィー
ルドが不正な値なら、expire されませんので手で削除するなりして下さい。
@end table

@var{削除先}には次のものを指定します。

@table @asis
@item @code{remove}
即メッセージを削除します。

@item @code{hide}
メッセージをサマリから見えなくします(削除はされません)。

@item @code{trash}
メッセージを @code{wl-trash-folder} に移動します。

@item @var{string}(folder)
メッセージを@var{string}で指定したフォルダに移動します。

アーカイブフォルダを指定すると便利ですが、@samp{$} マークの付いた重要メッ
セージなどは移動されないので、下記の標準関数を使う方がより良いです。

@item @var{function}
指定の関数を呼び出します。

指定した関数には次の3つの引数、フォルダ名、削除するメッセージのリスト、
そしてサマリの msgdb 情報が渡されます。また、関数名の後に関数独自の引数も
指定できます。なお、この関数には@code{wl-summary-expire-reserve-marks}で
指定したメッセージも含んだリストが渡されますので、独自に関数を作る場合は
注意してください。

ここで指定できる関数には、標準で次の4つが用意されています。そのうち3つは指
定した方法でアーカイブフォルダにメッセージを移動するもので、古いメッセー
ジをフォルダから削除しながら別ファイルに圧縮して保存しておくことができま
す。残り1つはメッセージを MH フォルダに振り分けるものです。

@table @code
@item wl-expire-archive-number1
削除対象のメッセージ番号に対するアーカイブフォルダにリファイルします。例
えば、102 番であるなら @file{wl-00100.zip}、390 番であるなら 
@file{wl-00300.zip}、などのようにです。なお、
@code{wl-expire-archive-files} を 200 にすると、@file{wl-00000.zip},
@file{wl-00200.zip}, @file{wl-00400.zip}, @dots{} にリファイルしていきま
す。

リファイル先のアーカイブフォルダは削除元のフォルダ名に基づいて次のように
決定されます。(このとき、アーカイブフォルダは
@code{elmo-archive-treat-file} が non-nil の場合として扱われます)

@table @asis
@item フォルダタイプがlocaldirの場合
@file{@var{ArchiveDir}/@var{foldername}-xxxxx.zip}

例えば @samp{+ml/wl} は @samp{$ml/wl;zip}
(@file{~/Mail/ml/wl-00100.zip})となります。

@item フォルダタイプがlocaldir以外の場合
@file{@var{ArchiveDir}/@var{foldertype}/@var{foldername}-xxxxx.zip}

例えば、@samp{%#mh/ml/wl} は @samp{$imap4/#mh/ml/wl;zip}
(@file{~/Mail/imap4/#mh/ml/wl-00100.zip})となります。
@end table

すなわち、localdir の場合は種別がパス名に含まれませんが、それ以外は種別
がパス名に含まれるのです。
また、@code{wl-expire-archive-folder-prefix} により、
アーカイブフォルダに付ける prefix を制御できます。
@code{wl-expire-archive-folder-prefix}の説明を良く見ておいてください。

@item wl-expire-archive-number2
指定した個数ごとにアーカイブフォルダにリファイルします。

@samp{wl-expire-archive-number1}
と異なる点はメッセージ番号に関係なくアーカイブフォルダが指定数に達するまで
そのフォルダにリファイルする、という点です。
なお、リファイル先のアーカイブフォルダは @code{wl-expire-archive-number1}
と同じように決定されます。

この関数を使用する場合、@code{elmo-localdir-folder-path}と
@code{elmo-archive-folder-path}を同じディレクトリにしないで下さい。
デフォルトでは同じディレクトになっているので、注意してください。

@item wl-expire-archive-date
メッセージの日付(年月)ごとにアーカイブフォルダにリファイルします。

例えば、1998年12月のメッセージは @code{$folder-199812;zip} にリファイル
されます。なお、日付の部分以外のアーカイブフォルダ名は 
@code{wl-expire-archive-number1}と同じように決定されます。


また、上記の3つの標準関数では @code{wl-expire-alist} での第1引数に 
non-nil を指定すると、フォルダのメッセージ番号をそのまま保存できます。例
えば、次のように関数名の後に続けて指定します。

@lisp
("^\\+ml/wl$" (number 300 310) wl-expire-archive-number1 t)
@end lisp

引数を指定しない場合は、各アーカイブフォルダごとに 1 から順に番号を与え
て保存されます。

@item wl-expire-localdir-date
メッセージの日付（年月）ごとに、例えば、@samp{+ml/wl/1999_11/},
@samp{+ml/wl/1999_12/} といった MH フォルダにリファイルします。
@end table
@end table

@subsection 重要メッセージや未読メッセージの扱い

削除先に @code{remove} や @code{trash}、フォルダ名、標準関数のいずれを指
定した場合でも、@code{wl-summary-expire-reserve-marks}で指定したマークの
メッセージ(以下、@dfn{reserveメッセージ}と呼びます)は残すようになってい
ます。

この変数にはデフォルトで、重要マーク、新規マーク、未読マークが設定されて
いるので、これらのマークのついたメッセージは削除されないことになります。
ただし、この変数には一時的マークは指定できないため(すなわち削除されるた
め)、expire を実行する前に一時的マークは処理しておいてください。

@subsection 自動実行

サマリに移動したときに自動的に expire を実行するには次のように設定します。
ただし、この場合は確認せずに自動実行するため、フォルダの正規表現などに誤
りがないかどうかを十分確認してから設定して下さい。

@lisp
@group
(add-hook 'wl-summary-prepared-pre-hook 'wl-summary-expire)
@end group
@end lisp

また、フォルダモードで各フォルダごとに expire を実行できるのはもちろん、
グループ単位の実行も可能です。従って、@samp{Desktop} グループを指定すれ
ば@code{wl-expire-alist}にマッチする全てのフォルダで expire を実行します。

@section TIPS

@subsection 作成したアーカイブフォルダの取り扱い

上記の標準関数 @code{wl-expire-archive-number1} などで作成したアーカイブ
フォルダを扱う場合は、変数 @code{elmo-archive-treat-file} を non-nil に設
定しておく必要があります。

@subsection 動作確認

@code{remove} を指定する場合は、まず @code{trash} にして期待通りにメール
が @code{wl-trash-folder} に移動されることを確認してから @code{remove} 
に変えるとよいでしょう。いきなり @code{remove} を指定するのは危険です。

また、@code{wl-expire-archive-number1}などの関数を利用する場合、まずは使
用するアーカイバタイプ(@code{zip} や @code{lha})などのフォルダを試しに作
って、正しく追加できるかどうかを確認してください。たとえ、
@code{wl-expire-alist} や @code{elmo-archive} の設定が正しくても、アーカ
イブプログラムが正しく動かなければどこにも保存されずにメッセージが消えて
しまうかも知れません。

アーカイブフォルダの動作が確認でき、実際に expire を実行するようになれば、
ログを活用してください。@code{wl-expire-use-log} を @code{t} にすると、
@file{~/.elmo/expired-log}には以下のような記録が残ります。

@example
@group
delete  +ml/wl  (593 594 595 596 597 598 599)
move    +ml/wl -> $ml/wl-00600;tgz;wl  (600 601 602)
@end group
@end example

最初の項目は動作を示すもので、@samp{delete}, @samp{copy}, @samp{move} が
あります。次が expire を実行したフォルダ名で、@samp{copy} と @samp{move} 
の場合は@samp{->}に続けてコピーもしくは移動先のフォルダ名が記録されます。
最後の項目は、実際に削除や移動されたメッセージ番号のリストです
(@samp{copy} や @samp{move} の場合、移動後ではなく移動前のメッセージ番号
です)。

@subsection reserveメッセージのリファイル

標準で用意されている3つの関数では、reserve メッセージはアーカイブフォルダ
にコピーしますが、元のフォルダからは削除しないようになっています。なお、
重要マークなどは常に残るため、何度もコピーされることがないように
@file{~/.elmo/expired-alist} に記録するようになっています。ただしこれは
reserve メッセージが refile 対象になったときの話です。
@code{wl-summary-archive} などでコピーされる場合は記録を残しません。

ログ機能を有効にしていた場合は、リファイル時には通常 @samp{move} が記
録されますが、reserve メッセージが含まれていると、@samp{copy} と 
@samp{delete} に分けて記録されます。これは reserve メッセージを含めたメッ
セージをコピーした後、reserve メッセージを除いたメッセージを削除する、
という処理を行っているためです。

@section カスタマイズ変数

@table @code
@item wl-expire-alist
@vindex wl-expire-alist
初期設定は @code{nil}。
expire を行うフォルダと expire 方法の指定を行います。詳しくは上記の
@code{wl-expire-alist}の設定をご覧下さい。

@item wl-summary-expire-reserve-marks
@vindex wl-summary-expire-reserve-marks
初期設定は以下のリスト。

@lisp
@group
(list wl-summary-flag-mark
      wl-summary-new-uncached-mark
      wl-summary-new-cached-mark
      wl-summary-unread-uncached-mark
      wl-summary-unread-cached-mark)
@end group
@end lisp

expire を行っても、フォルダには残しておくメッセージのマークを指定します。
マークには永続的マークのみ指定できます。
一時的マークは指定できません。

デフォルトのようにリストで指定するとそのマークのメッセージを残せる他、以
下の指定もできます。

@table @code
@item all
永続マークの付いたすべてのメッセージを残します。
つまり、デフォルトで設定されているマーク以外に
@code{wl-summary-read-uncached-mark} が含まれます。

@item none
どんなマークの付いたメッセージであっても、通常の既読メッセージと同じ扱い
をします。すなわち、@samp{$} マークの付いた重要メッセージであっても削除
されます。
@end table

@item wl-expire-archive-files
@vindex wl-expire-archive-files
初期設定は 100。
ひとつのアーカイブフォルダに保持するメッセージ数を指定します。

@item wl-expire-number-with-reserve-marks
@vindex wl-expire-number-with-reserve-marks
初期設定は @code{nil}。
Non-nil にすると、
削除メッセージの指定で @code{number} を指定したとき、
残しておくメッセージ数に @code{wl-summary-expire-reserve-marks} で設定さ
れたメッセージを含めます。

@item wl-expire-archive-get-folder-function
@vindex wl-expire-archive-get-folder-function
初期設定は @code{wl-expire-archive-get-folder}。

削除先の標準関数でアーカイブフォルダ名を取得する関数を指定します。
次の3つの変数により簡易なフォルダ名の変更できますが、もっと複雑な指定を
したい場合は新たに関数を作ってこの変数に設定します。

関数@code{wl-expire-archive-get-folder}のカスタマイズ変数には次の
ものがあります。
@itemize @bullet
@item @code{wl-expire-archive-folder-name-fmt}
@item @code{wl-expire-archive-folder-type}
@item @code{wl-expire-archive-folder-prefix}
@end itemize

@item wl-expire-archive-folder-name-fmt
@vindex wl-expire-archive-folder-name-fmt
初期設定は @samp{%s-%%05d;%s}。
@code{wl-expire-archive-number1}および@code{wl-expire-archive-number2}で
使用されるアーカイブのフォルダの @code{format} 形式の文字列を指定します。
なお、2度 @code{format} で指定するため、
番号の部分は必ず @samp{%%d} にしなくてはなりません。

もし、変更する場合は @code{wl-expire-archive-folder-num-regexp}
も合わせるようにしてください。

@item wl-expire-archive-date-folder-name-fmt
@vindex wl-expire-archive-date-folder-name-fmt
初期設定は @samp{%s-%%04d%%02d;%s}。@code{wl-expire-archive-date} で使用
されるアーカイブのフォルダの @code{format} 形式の文字列を指定します。な
お、2度 @code{format} で指定するため、番号の部分は必ず @samp{%%d} にしな
くてはなりません。また、メッセージの年と月を与えるため、@samp{%%d} は2つ
必要です。

もし、変更する場合は @code{wl-expire-archive-date-folder-num-regexp}
も合わせるようにしてください。

@item wl-expire-archive-folder-type
@vindex wl-expire-archive-folder-type
初期設定は @code{zip}。
アーカイブフォルダのアーカイバタイプを指定します。

@item wl-expire-archive-folder-prefix
@vindex wl-expire-archive-folder-prefix
初期設定は @code{nil}。
アーカイブフォルダに付ける prefix を指定します。
ただし、アーカイブフォルダに prefix (ディレクトリ構造)を付ける仕様は
おまけ機能ですので、取り扱いは慎重に行って下さい。
最悪の場合，アーカイブファイルを壊す恐れがあります。

@table @code
@item nil
prefix は付きません。

@item short
例えば、@samp{+ml/wl} では prefix @samp{wl} が付き、
@samp{$ml/wl-00000;zip;wl} となります。

@item t
例えば、@samp{+ml/wl} では prefix @samp{ml/wl} が付き、

@samp{$ml/wl-00000;zip;ml/wl} となります。
@end table

@item wl-expire-archive-folder-num-regexp
@vindex wl-expire-archive-folder-num-regexp
初期設定は @samp{-\\([-0-9]+\\);}。
@code{elmo-list-folders} による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
@code{wl-expire-archive-folder-name-fmt} に対応して設定してください。

@item wl-expire-archive-date-folder-num-regexp
@vindex wl-expire-archive-date-folder-num-regexp
初期設定は @samp{-\\([-0-9]+\\);}。
@code{elmo-list-folders} による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
@code{wl-expire-archive-date-folder-name-fmt} に対応して設定してください。

@item wl-expire-delete-oldmsg-confirm
@vindex wl-expire-delete-oldmsg-confirm
初期設定は @code{t}。
Non-nil の場合、既に存在しているアーカイブフォルダの最大メッセージ番号よりも
古いメッセージがあった場合に確認してから削除します。
@code{nil} の場合は確認せずに削除します。

なお、標準関数の引数に non-nil を指定して番号を保持するようにした場合の
み有効です。

@item wl-expire-use-log
@vindex wl-expire-use-log
初期設定は @code{nil}。
Non-nil にすると、@file{~/.elmo/expired-log}に expire の実行結果を記録します。
なお、ファイルに追加していく一方なので、適当に手で消す必要があります。

@item wl-expire-add-seen-list
@vindex wl-expire-add-seen-list
初期設定は @code{t}。
Non-nil の場合、expire によりメッセージをリファイルした場合、既読情報を
リファイル先のフォルダに伝えるようにします。

ただし、リファイル先のフォルダを Wanderlust 上から読まないと、
@file{~/.elmo/}以下にある @file{seen} ファイルが大きくなっていくので、
アーカイブフォルダなどに単に保存しておくだけなら
@code{nil} に設定しておくと良いでしょう。@code{nil} に設定しても、
リファイルしたアーカイブフォルダを読むときに新規メッセージ扱いされるだけで、
expire などの動作には影響はありません。

@item wl-expire-folder-update-msgdb
@vindex wl-expire-folder-update-msgdb
初期設定は @code{t}。
@code{t} の場合、フォルダモードで expire を実行するときに、
サマリ情報を update してから expire を実行する。
また、フォルダ名の正規表現のリストを指定した場合は、マッチしたフォルダの
みサマリ情報を update する。
@end table


@node Archive,  , Expire, Expire and Archive
@section メッセージのアーカイブ

@subsection メッセージのアーカイブ
@kbd{M-x wl-summary-archive} でフォルダ全体をアーカイブフォルダにコピーしま
す。既にアーカイブフォルダがある場合、新規メッセージのみ追加します。

@code{wl-expire-alist} と同じ様に、フォルダ名に応じてどのようにアーカイブ
するかを @code{wl-archive-alist} で指定します。例えば以下のようになりま
す。

@lisp
@group
(setq wl-archive-alist
      '(("^\\+tmp$"     wl-archive-date)
        ("^\\+outbox$"  wl-archive-number2)
        (".*"           wl-archive-number1)))
@end group
@end lisp

各リストの要素は次のようになります。

@example
(@var{フォルダの正規表現}  @var{削除関数})
@end example

このように@var{フォルダの正規表現}の後には関数しか指定できません。
標準では次の3つの関数

@itemize @bullet
@item @code{wl-archive-number1}
@item @code{wl-archive-number2}
@item @code{wl-archive-date}
@end itemize

が用意されてます。名前からお解りの通り、次の点を除いて Expire 用に用意されて
いる物と同じ動作をします。

@itemize
@item メッセージを削除しない
@item 引数なしであってもメッセージ番号を保持する
@end itemize

フォルダの全メッセージを番号ごとや日付ごとにまとめてアーカイブしたい場合
は、これらの関数を使用するとよいでしょう。
また、expire を行う前のバックアップや動作を確認するのにも有効です。
もっとも、アーカイブ後に expire でリファイルすると、リファイルせずに削除
するだけになります。

デフォルトではコピー先のアーカイブフォルダは
@code{wl-expire-archive-get-folder-function} に従って自動的に決定されますが、
prefix argument を付けて @kbd{C-u M-x wl-summary-archive} で実行すると、
指定したフォルダにコピーすることができます。

しかし、単純に1つのアーカイブフォルダにコピーするだけなら、
@code{wl-summary-copy-region} などで全メッセージをアーカイブフォルダにコ
ピーすることでも可能なため、おまけの機能でしかありません
(つまり、動作確認は不十分です)。

このアーカイブフォルダの決定方法は @code{wl-summary-expire} と同じものを
用いているため、カスタマイズ変数の中で次に示すものが関係してきます。

@itemize @bullet
@item @code{wl-expire-archive-files}
@item @code{wl-expire-archive-get-folder-function}
@item @code{wl-expire-archive-folder-name-fmt}
@item @code{wl-expire-archive-folder-type}
@item @code{wl-expire-archive-folder-prefix}
@item @code{wl-expire-archive-folder-num-regexp}
@end itemize

@subsection カスタマイズ変数

@table @code
@item wl-archive-alist
@vindex wl-archive-alist
初期設定は以下のリスト。

@lisp
((".*" wl-archive-number1))
@end lisp

@noindent
アーカイブフォルダにコピーする処理を行う関数を指定します。この関数には、
フォルダ名、フォルダ内にあるメッセージのリスト、サマリの msgdb 情報、の3つ
の引数が渡されます。もちろんユーザが独自に作って指定することができます。
@end table


@node Scoring, Address Book, Expire and Archive, Top
@chapter スコア
@cindex Scoring
@c @cindex Kill File

スコアとは、メッセージにスコア(値)をつけ、
その値により既読マークを付けたりサマリから消したりする機能です。

この機能によって重要なメッセージにまとめ処理用マーク @samp{*} や重要マー
ク@samp{$}をつけたり、spam 記事などの読みたくないメッセージに既読マーク
をつけたりすることができます。

このスコア機能は Gnus のスコアとほぼ同等の機能を持ち、またスコアファイルの
書式もほぼ同じです。ただし、幾つかは未対応であったり Wanderlust 特有の機能
があったりします。
@xref{Scoring, , ,gnus-ja, Gnus Manual}.

@menu
* Score Commands::             スコアに関するコマンド
* Score File Format::          スコアファイルの書式
@end menu


@node Score Commands, Score File Format, Scoring, Scoring
@section スコアに関するコマンド
@cindex Score Commands

@subsection スコアファイルの指定方法

変数 @code{wl-score-folder-alist}
にフォルダ名に対応したスコアファイル名かスコアを定義した変数を設定します。

@lisp
@group
(setq wl-score-folder-alist
      '(("^-.*"
         "news.SCORE"
         "my.SCORE")
        (".*"
         "all.SCORE")))
@end group
@end lisp

スコアファイル名のパスを省略した場合は、
変数 @code{wl-score-files-directory} で指定したディレクトリにあるものとします。

また、@code{wl-score-folder-alist} の設定に関わらず
デフォルトのスコアファイル @code{wl-score-default-file} (@file{all.SCORE})
 は必ず読み込まれます(ファイルが存在していなくても構いません)。
したがって、上記例の @samp{^-.*} にマッチしたフォルダでは 
@file{news.SCORE}, @file{my.SCORE}, @file{all.SCORE} の3つのスコアファイル
が読み込まれることになります。

@subsection スコアファイルの対象メッセージ

スコアはサマリの update 時に一時的に @code{wl-summary-score-marks}
で指定したメッセージのみにつけられます。
つまりサマリから抜けるとメッセージにつけられたスコアは消去され、
デフォルトのスコア値に戻ります。

@subsection スコアファイルの作成

まずサマリバッファで適当なメッセージに移動してから @kbd{L} をタイプしま
す。その後ミニバッファでの入力を求められますので、続けて @kbd{s},
@kbd{s}, @kbd{p} とタイプしてみてください。すると Subject の文字列が入力
されている状態になりますので、適当に編集した後 @kbd{@key{RET}} を押します。

これで、入力した文字列と同じ @samp{Subject:} を持つメッセージに対してスコア 
@minus{}1000 がつけられるようになります。
つまり、このようなスコアファイルが自動的に作成されたことになります。

次に、同じサマリバッファで @kbd{h} @kbd{e} とタイプしてください。
すると先ほど作成したスコアファイルが表示されていると思います。
このバッファを@dfn{スコア編集バッファ}と呼びます。
このスコア編集バッファで @kbd{C-c C-e} とタイプすると、
ミニバッファで先ほどと同じような入力を求められると思いますが、
ここで @kbd{a} とタイプしてください。今度はすぐに "From" のスコアエントリが挿
入されたはずです。
このようにしてサマリバッファでもスコア編集バッファでも
スコアファイルを簡単に作成することができます。

ところで、ミニバッファでの入力時に @kbd{s s p} または @kbd{a} とタイプしたように、
キータイプ数が違っていたと思います。
これは、@code{wl-score-header-default-entry} の設定によるものです。
この変数ではヘッダに応じたデフォルトのスコアエントリを設定します。
たとえば、"subject" ヘッダでは型と期限についての入力を求めますが、
"from" ヘッダでは型は substring, 期限は永続に自動的に決定されます。
ただし、スコアの値は prefix argument で強制的に変更することができます。
また、ミニバッファでの入力時に @kbd{?} とタイプすることでキーとそれに対応す
るヘッダや型を(help)を表示します。

では最後に、スコア編集バッファで @kbd{C-c C-c} と入力して下さい。これでスコア
ファイルを保存して編集モードを終了します。バッファの内容を消去してから 
@kbd{C-c C-c} すると編集中のスコアファイルを削除します。

@subsection TIPS

@subsubsection スコアファイルの選択

@code{wl-summary-increase-score} と @code{wl-summary-lower-score} とで追
加するスコアファイルは @code{wl-score-change-score-file} で変更すること
ができます。

@subsubsection スコアの加算

@code{wl-summary-increase-score} や @code{wl-summary-lower-score}、
@code{wl-score-edit-insert-entry} で同じエントリを追加した場合、
スコアが加算されます。

たとえば、@kbd{L a} でスコアが @minus{}1000 の @samp{from} エントリを作成した後、
再度 @kbd{C-u 200 L a} でスコアが @minus{}200 の @samp{from} エントリを作成すると、
スコアが @minus{}1200 のエントリが1つ作成されることになります。

@subsubsection Thread キーの作成

@code{wl-summary-increase-score} か @code{wl-summary-lower-score} で
@samp{Thread}キーを作成すると、子スレッドの @samp{Message-ID} も全て
追加されます。

@subsubsection Followup キーの作成

@code{wl-summary-increase-score} か @code{wl-summary-lower-score} で
@samp{Followup}キーを作成すると、カーソル上のメッセージの
@samp{Message-ID} も @samp{References} キーに追加されます。
もし、@code{wl-score-auto-make-followup-entry} が non-nil であれば
@code{wl-score-expiry-days} で指定した日にち以内の全 followup 対象のメッセー
ジの @samp{Message-ID} が追加されます。

@subsection キーバインド

@table @kbd
@item K
@kindex K (Summary)
@findex wl-summary-increase-score
現在のメッセージのスコアを高くします。
同時にスコアエントリがスコアファイルに追加されます。
また、prefix argument でスコアの値を設定することができます。

@item L
@kindex L (Summary)
@findex wl-summary-lower-score
現在のメッセージのスコアを低くします。
同時にスコアエントリがスコアファイルに追加されます。
また、prefix argument でスコアの値を設定することができます。

@item h R
@kindex h R (Summary)
@findex wl-summary-rescore
スコアを適用し直します。
ただし、既にスコアがつけられているメッセージには、新たにスコアはつきません。

@item h c
@kindex h c (Summary)
@findex wl-score-change-score-file
現在選択しているスコアファイルを変更します。

@item h e
@kindex h e (Summary)
@findex wl-score-edit-current-scores
現在選択しているスコアファイルを編集します。
スコアファイルが複数ある場合先に指定されたファイルが選択されます。

@item h f
@kindex h f (Summary)
@findex wl-score-edit-file
任意のスコアファイルを編集し、このスコアファイルを選択します。

@item h F
@kindex h F (Summary)
@findex wl-score-flush-cache
読み込んだスコアファイルは一旦キャッシュされますが、そのキャッシュを消去します。
Wanderlust 以外で直接スコアファイルを変更した場合は、
キャッシュを消去して再読み込みする必要があります。

@item h m
@kindex h m (Summary)
@findex wl-score-set-mark-below
既読マークを付ける(読んだことにする)スコア基準値を設定します。
この値よりも小さなスコアが既読になります。

@item h x
@kindex h x (Summary)
@findex wl-score-set-expunge-below
サマリから消去するスコア基準値を設定します。
この値よりも小さなスコアが消去されます。
消去といっても表示されないだけであり、サマリ情報やフォルダからは削除されま
せん。
消去されたメッセージは rescan-noscore により再び表示することができます。
@end table

@subsection スコア編集バッファのキーバインド

@table @kbd
@item C-c C-k
@kindex C-c C-k (Score Mode)
@findex wl-score-edit-kill
編集中のファイルを破棄します。

@item C-c C-c
@kindex C-c C-c (Score Mode)
@findex wl-score-edit-exit
編集中のファイルを保存して、編集モードを終了します。

@item C-c C-p
@kindex C-c C-p (Score Mode)
@findex wl-score-pretty-print
スコアを綺麗に表示し直します。

@item C-c C-d
@kindex C-c C-d (Score Mode)
@findex wl-score-edit-insert-date
紀元前1年12月31日からの日数を挿入します。
期限付きのスコアを作るときに期限の要素(3番目)に使用します。

@item C-c C-s
@kindex C-c C-s (Score Mode)
@findex wl-score-edit-insert-header
サマリバッファで選択しているメッセージのヘッダを挿入します。

@item C-c C-e
@kindex C-c C-e (Score Mode)
@findex wl-score-edit-insert-entry
サマリバッファで選択しているメッセージのスコアエントリを追加します。
@end table

@subsection カスタマイズ変数

@table @code
@item wl-summary-default-score
@vindex wl-summary-default-score
初期設定は 0。
スコアのデフォルト値を設定します。この値を元にスコアが加減されます。

@item wl-summary-important-above
@vindex wl-summary-important-above
初期設定は @code{nil}。
この値より大きいスコアに対して重要マーク(@samp{$}) をつけます。
@code{nil} の場合はマークを付けません。

@item wl-summary-target-above
@vindex wl-summary-target-above
初期設定は @code{nil}。
この値より大きいスコアに対してまとめ処理用マーク(@samp{*}) をつけます。
@code{nil} の場合はマークを付けません。

@item wl-summary-mark-below
@vindex wl-summary-mark-below
初期設定は 0。
この値より小さなスコアに対して既読マークをつけます(読んだことにします)。

@item wl-summary-expunge-below
@vindex wl-summary-expunge-below
初期設定は @code{nil}。
この値より小さなスコアはサマリから消去します。
@code{nil} の場合は消去しません。

@item wl-summary-score-marks
@vindex wl-summary-score-marks
初期設定は以下のリスト

@lisp
@group
(list wl-summary-new-uncached-mark
      wl-summary-new-cached-mark)
@end group
@end lisp

@noindent
スコアをつけるメッセージのマークを指定します。

@item wl-use-scoring
@vindex wl-use-scoring
初期設定は @code{t}。
Non-nil ならスコア機能を有効にします。

@item wl-score-files-directory
@vindex wl-score-files-directory
初期設定は @file{~/.elmo/}。
スコアファイルをデフォルトのディレクトリを指定します。

@item wl-score-interactive-default-score
@vindex wl-score-interactive-default-score
初期設定は 1000。
スコアファイルでスコア要素が @code{nil} の時に用いるスコアを指定します。
また、@code{wl-summary-increase-score} や @code{wl-summary-lower-score}
でつけるスコア値でも用いられます。ただし、
@code{wl-score-header-default-entry} のスコア値が @code{nil} の時。

@item wl-score-expiry-days
@vindex wl-score-expiry-days
初期設定は 7。
期限付きスコアを削除する日数を指定します。

@item wl-score-update-entry-dates
@vindex wl-score-update-entry-dates
初期設定は @code{t}。
Non-nil なら期限付きスコアを削除する機能を有効にします。

@item wl-score-header-default-entry
@vindex wl-score-header-default-entry
@code{wl-summary-increase-score} や @code{wl-summary-lower-score}、
@code{wl-score-edit-insert-entry} でスコアエントリを作成する場合の
各ヘッダのデフォルト値を設定します。

@item wl-score-simplify-fuzzy-regexp
@vindex wl-score-simplify-fuzzy-regexp
スコアエントリの型で @code{fuzzy} を指定した場合、
文字列から削除する正規表現を指定します。
@code{Subject} で使用されることが多いので、デフォルトでは
メーリングリストプログラムでつけられる prefix を指定しています。

@item wl-summary-rescore-partial-threshold
@vindex wl-summary-rescore-partial-threshold
初期設定は 200。
sync-all や rescan が実行されたときに、この値を越えるメッセージが
サマリにある場合、サマリの最後から指定された数のメッセージだけ、
部分的にスコア付けが適用されます。

@item wl-summary-auto-sync-marks
@vindex wl-summary-auto-sync-marks
Non-nil ならば、サマリ同期時に未読/重要マークも同期します。
未読マークは、IMAP4 サーバ上の未読情報が反映されます。
重要マークは IMAP4 サーバ上の重要情報(Flagged フラグがついているか)、
および @samp{'flag} フォルダの内容が、反映されます。
初期設定は @code{t}。
@end table


@node Score File Format,  , Score Commands, Scoring
@section スコアファイル書式
@cindex Score File Format

スコアファイルの書式は Gnus と同じなので、Gnus で使用していた
スコアファイルがそのまま利用できます。
ただし、幾つかのキーは対応していなかったり Wanderlust 特有のキーがあったり
しますので、完全に互換性があるわけではありません。
@xref{Score File Format, , ,gnus-ja, Gnus Manual}.

@lisp
@group
(("subject"
  ("for sale" -1000 nil s)
  ("儲け" -1000 nil s))
 ("from"
  ("spam@@spamspamspam" -10000 nil s))
 ("followup"
  ("my@@address" 3001 nil s))
 ("chars"
  (1000000 -10 nil >))
 (important 5000)
 (target 3000)
 (mark 0)
 (expunge -3000))
@end group
@end lisp

@table @code
@item 文字列 (STRING)
キーが文字列である場合、マッチさせるヘッダの名前を指定します。
このキーには次のものが指定できます。
@code{Subject}, @code{From}, @code{Date}, @code{Message-Id},
@code{References}, @code{To}, @code{Cc}, @code{Chars}, @code{Lines},
@code{Xref}, @code{Extra}, @code{Followup}, @code{Thread}
この中で、@code{Chars} はメッセージのサイズを指し、@code{Extra},
@code{Followup}, @code{Thread} については後述します。
残りはキーと同じ名前のフィールドが対象となります。

このキーの後にスコアエントリを任意の数だけ指定し、
この各スコアエントリは次の5つの要素からなります。

@enumerate
@item
ヘッダにマッチする要素。@code{lines} と @code{chars} の場合は数字で、そ
れ以外は文字列を指定します。

@item
スコア要素。１番目の要素がマッチした場合、そのメッセージのスコアをこの値分
増減させます。

@item
期限の要素。@code{nil} なら永続(permanent)指定で、
数字(日数)なら一定期間(@code{wl-score-expiry-days})マッチしないと削除されます。
この日数は紀元前1年12月31日から経過した日にちです。

@item
型の要素。１番目の要素をマッチさせる方法を指定します。
キーによって指定できる型が異なります。

@table @dfn
@item From, Subject, References, Message-Id
これらの文字列のキーに対しては、@code{r} と @code{R} (正規表現) (regexp) 
や、@code{s} と @code{S} (文字列の一部) (substring)、@code{e} と 
@code{E} (正確な合致) (exact match)、それに @code{f} と @code{F}
(あいまい) (fuzzy) が指定できます。
@code{R}, @code{S}, @code{E}, @code{F} は大文字小文字を区別してマッチさせます。

@item Lines, Chars
これらは数字の大小を指定します。その記号は次の5つです。
@code{<}, @code{>}, @code{=}, @code{>=}, @code{<=}

@item Followup
このキーは、@code{From}ヘッダにマッチし、
そのメッセージへの全てのフォローアップに対してスコアをつけます。
たとえば、自分自身の記事へのフォローアップのスコアを増やしたりするのに便利です。

@code{f} を除いて @code{From} キーと同じ型が指定出来ます。
また、自動的にスコアファイルに @samp{Followup} エントリが追加されます。

@item Thread
このキーは、@code{Message-ID} @var{x} で始まっている(サブ)スレッドにスコアを付ける場合に指定します。
これは @code{References} ヘッダに @var{x} を持つそれぞれの記事に新しい
@samp{Thread} エントリを自動的に追加します。
これにより、全ての祖先の @code{Message-ID} を @code{References} に含んでいない場合でも、
確実にスレッド全体のスコアを増減させることができます。

@code{f} を除いて @code{References} キーと同じ型が指定出来ます。
また、自動的にスコアファイルに @samp{Thread} エントリが追加されます。
@end table

@item
拡張ヘッダの要素。キーが @code{Extra} である場合のみ意味を持ちます。
@code{Subject} や @code{From} などの標準以外のヘッダにマッチさせたい場合に
そのヘッダを指定します。
ただし、指定したヘッダは @code{elmo-msgdb-extra-fields} にも設定する必要があります。
したがって、拡張ヘッダが取得できないフォルダでは機能しません。

@end enumerate

そしてこれらの@emph{全ての要素を当てはめた後の}合計のスコアがそのメッセー
ジのスコアとなります。

@cindex Score File Atoms
@item mark
この値より小さいスコアのメッセージには既読マークをつけます。
デフォルト値は @code{wl-summary-mark-below} で指定されます。

@item expunge
この値より小さいスコアのメッセージはサマリから消去します。
デフォルト値は @code{wl-summary-expunge-below} で指定されます。

@item mark-and-expunge
@code{mark} と @code{expunge} を同時に指定します。
つまり、この値より小さいスコアのメッセージは既読マークをつけ、サマリから消去します。

@item target
この値より大きいスコアのメッセージにはまとめ処理用マーク @samp{*} をつけます。
デフォルト値は @code{wl-summary-target-above} で指定されます。

@item important
この値より大きいスコアのメッセージには重要マーク @samp{$} をつけます。
デフォルト値は @code{wl-summary-important-above} で指定されます。
@end table

@subsection 注意事項

@code{extra} キーはもちろん、@code{lines} と @code{xref} キーを使用する
場合でも、@code{elmo-msgdb-extra-fields} を設定する必要があります。

@lisp
(setq elmo-msgdb-extra-fields '("lines" "xref"))
@end lisp

その他、下記の制限事項があります。

@itemize @bullet
@item サマリ情報に含まれる@samp{References}フィールドには最後の
@samp{Message-ID}しか存在しないため、@code{references}キーもその
@samp{Message-ID}にしかマッチしない。
@end itemize

フォルダ種別により参照できるキーの一覧。

@example
@group
@multitable {localdir,localnews} {chars} {lines} {xref} {extra}
@headitem @tab chars @tab lines @tab xref  @tab extra
@item localdir,localnews @tab ○ @tab △ @tab △ @tab △
@item nntp (xover対応) @tab ○ @tab △ @tab △ @tab @U{00D7}
@item (xover非対応) @tab @U{00D7} @tab △ @tab △ @tab △
@item imap4 @tab ○ @tab △ @tab △ @tab △
@item pop3 @tab @U{00D7} @tab △ @tab △ @tab △
@end multitable

                ○: 参照できる
                @U{00D7}: 参照できない(無視される)
                △: @code{elmo-msgdb-extra-fields} を設定すれば参照できる
@end group
@end example


@node Address Book, Quick Search, Scoring, Top
@chapter アドレス帳
@cindex Address Book

アドレス帳を利用することで、メールアドレスを簡単に入力したり，
サマリの表示にペットネームを用いることが出来ます。

@menu
* Mail Addresses::   アドレス帳の定義
* Address Manager::  アドレスマネージャ
@end menu


@node Mail Addresses, Address Manager, Address Book, Address Book
@section アドレス帳の定義
@cindex Address book Definition
@cindex .addresses
@cindex Alias, Address

アドレスファイル @file{~/.addresses} を作成し、自分用に編集します。
@file{~/.addresses} に書かれたデータは、ドラフト作成時のアドレス補完デー
タとして利用されるほか、サマリ表示での名前表示等にも用いられます。なお、
起動した状態でサマリバッファから @file{~/.addresses} にアドレスを追加/
変更/削除することも可能です。

書き方はとても単純です。こんな感じです。

@example
@group
#
# @r{@samp{#} で始まる行はコメント。}
# @r{空行は無視。}
#
# @var{メールアドレス}  "@var{あだ名}"  "@var{本名}"
#
teranisi@@gohome.org            "てらにし"      "寺西裕一"
foo@@bar.gohome.org             "Foo さん"      "John Foo"
bar@@foo.gohome.org             "Bar さん"      "Michael Bar"
@end group
@end example

@noindent
一行が一人分の定義です。

実際には(デフォルト設定では)サマリ表示で@var{あだ名}、ドラフト作成時のア
ドレス情報として@var{本名}が使われます。試してみて、確認してからの方が
わかりやすいと思われます。ちょっと書いて試してみてから、またアドレス帳の
定義をやり直すのが良いでしょう。

また、変数 @code{wl-alias-file} に MH の alias file が指定されていれば、
ドラフト作成時のアドレス情報として使われます。

さらに、変数 @code{wl-use-ldap} (初期設定は @code{nil}) を non-nil に設
定すると、LDAP サーバの情報をドラフト作成時のアドレス情報として利用しま
す。

LDAP を利用する場合は、@code{wl-ldap-server}、@code{wl-ldap-port},
@code{wl-ldap-base} も適切に設定して下さい。
外部プログラムとして @command{ldapsearch} を利用しますので、
@command{ldapsearch} へあらかじめコマンド実行パスを設定しておく必要があ
ります。


@node Address Manager,  , Mail Addresses, Address Book
@section アドレスマネージャ
@cindex Address Manager

@kbd{C-c C-a} とするとアドレスマネージャを起動されます。アドレスマネージャ
ではアドレス帳の編集を行うことが出来るのに加えて、アドレスマネージャで指
定したアドレスをドラフトバッファへ挿入することができます。

@subsection キーバインド

@table @kbd
@item t
@kindex t (Address Manager)
@findex wl-addrmgr-set-to
@samp{To:} マークをつけます。

@item c
@kindex c (Address Manager)
@findex wl-addrmgr-set-cc
@samp{Cc:} マークをつけます。

@item b
@kindex b (Address Manager)
@findex wl-addrmgr-set-bcc
@samp{Bcc:} マークをつけます。

@item u
@kindex u (Address Manager)
@findex wl-addrmgr-unmark
マークを取り消します。

@item x
@kindex x (Address Manager)
@findex wl-addrmgr-apply
宛先マークがついている場合、それらのアドレスをドラフトバッファに
反映してアドレスマネージャを終了します。ドラフトバッファが無い場合、
それらを反映して新規にドラフトバッファを開きます。
宛先マークがついていない場合は単にアドレスマネージャを終了します。

@item q
@kindex q (Address Manager)
@findex wl-addrmgr-quit
アドレスマネージャを終了します。

@item a
@kindex a (Address Manager)
@findex wl-addrmgr-add
アドレス帳に新しい項目を追加します。

@item d
@kindex d (Address Manager)
@findex wl-addrmgr-delete
アドレス帳の項目を削除します。

@item e
@kindex e (Address Manager)
@findex wl-addrmgr-edit
アドレス帳の項目を編集します。
@end table


@node Quick Search, Spam Filter, Address Book, Top
@chapter Quick Search
@cindex Quick Search

@code{wl-qs} provides an interface to quickly search your mail archive.
It can use an external search engine (@ref{Search Folder}), Gmail
search, or a filter folder (@ref{Filter Folder}).

@code{wl-qs} provides the command
@code{wl-quicksearch-goto-search-folder}. Using it will first prompt for
a search, and then jump to the search results.

@menu
* Setup of Quick Search::       Setup
* Usage of Quick Search::       Searching
@end menu

@node Setup of Quick Search, Usage of Quick Search,, Quick Search
@section Setup of @code{wl-qs}

To setup, configure the value of @code{wl-quicksearch-folder}.
This should be the name of the folder you would like to search. For
example, @samp{%[Gmail]/All Mail:username@@imap.gmail.com},
@samp{.archive} or @samp{[]}. The latter is advised if you use a mail
index, such as mu, notmuch or namazu, as it is quite fast.

@node Usage of Quick Search,, Setup of Quick Search, Quick Search
@section Searching

To search your mail archive, use the command
@code{wl-quicksearch-goto-search-folder}, which can be called using
@kbd{'} in a Summary buffer or the Folder buffer. You will be prompted
for a search, and then will immediately jump to the search results.

@subsection Search folder

If you use specified @samp{[} as the value of
@code{wl-quicksearch-folder}, you will be accessing a search folder
(@ref{Search Folder}). You will be prompted for a search string. The
syntax of the search will depend on the value of
@code{elmo-search-default-engine}. Quotes will be escaped for you
automatically and passed on to the search program.

(If you are using the grep search engine, you must specify a target
folder. Your @code{wl-quicksearch-folder} should look like
@samp{[]~/Mail/semi!grep}.)

@subsection Gmail

If you use a gmail folder as your @code{wl-quicksearch-folder}, you will be prompted for a
Gmail search query
(@uref{https://support.google.com/mail/answer/7190}). You may use
any Gmail search operator; the search is handled by Gmail's server.

@subsection Filter folder

If you are using any other type of folder, you will be prompted for a
query using the interactive query builder. When you have finished your
query, you will be directed to a filter folder for your
@code{wl-quicksearch-folder}.

@node Spam Filter, Advanced Issues, Quick Search, Top
@chapter Spam フィルタ
@cindex Spam Filter

@code{wl-spam} は、外部 spam フィルタプログラムへのフロントエンドを提供
します。Wanderlust 上でのメッセージに対する操作と連携して、フィルタプロ
グラムへの登録や、spam の判定ができるようになります。

@menu
* Usage of Spam Filter::        使い方
* Spam Filter Processors::      対応している Spam Filter
@end menu

@node Usage of Spam Filter, Spam Filter Processors, Spam Filter, Spam Filter
@section 使い方

@subsection 初期設定

@code{wl-spam} を使うには、まず @file{~/.wl} に以下のように設定して下さ
い。

@lisp
@group
;; @r{@samp{bogofilter} を使う場合。}
;; @r{ここで、使いたい spam フィルタの @samp{scheme} を設定して下さい。}
;; @r{@xref{Spam Filter Processors}.}
(setq elmo-spam-scheme 'bogofilter)
(require 'wl-spam)
@end group
@end lisp

@subsection spam マーク

一時的マークに spam マーク (@samp{s}) が追加されます。このマークの付いた
メッセージは、アクションの実行時に @code{wl-spam-folder} にリファイルさ
れます。また、デフォルトの設定ではサマリでの通常の移動でスキップされるよ
うになります。

spam マークは、後述する spam の判定処理で自動的に付く他、@kbd{k m} と押
して任意に付けることも出来ます。

@subsection spam の判定

以下の方法で spam の判定を行うことが出来ます。

@enumerate
@item
自動リファイルの実行時に判定する。

以下の設定例のように @code{wl-auto-refile-guess-functions} の任意の位置
に @code{wl-refile-guess-by-spam} を挿入します。

@lisp
@group
(setq wl-auto-refile-guess-functions
      '(wl-refile-guess-by-rule
        wl-refile-guess-by-spam))
@end group
@end lisp

この例の場合、@code{wl-refile-rule-alist} で振り分け先が決まらなかった時
に spam かどうかを判定するようにしています。

@item
特定のフォルダのサマリに移動した時に判定する。

@code{wl-spam-auto-check-folder-regexp-list} に自動判定を行いたいフォル
ダ名の正規表現のリストを設定します。

@lisp
(setq wl-spam-auto-check-folder-regexp-list '("\\+inbox"))
@end lisp

この例の場合、フォルダ名に @samp{+inbox} を含むフォルダのサマリに移動し
た時に判定処理が実行されます。

@item
@code{elmo-split} によるメッセージの振り分け時に判定する。

@code{elmo-split-rule} の @samp{CONDITION} として指定出来る関数に 
@code{spam-p} が追加されます。この関数は、対象のメッセージが spam と判定
された時に真となります。
@xref{Split messages}.

また、判定結果を元に学習させることも出来ます。(ある程度学習が進んでから、
この設定を有効にするとよいでしょう)

以下に例を示します。

@lisp
@group
(setq elmo-split-rule
      '(((spam-p) "+spam")
        ;; @r{判定結果を元に学習させる場合は代わりに下の条件を使う}
        ;((spam-p :register t) "+spam")
        (t "+inbox"))
@end group
@end lisp
@end enumerate

@subsection spam の学習

@code{wl-spam} は、メッセージをリファイルすることで、自動的に spam を学
習します。

まず、@code{wl-spam} は Wanderlust の管理するフォルダをそこに含まれるメッ
セージの区分によって、以下の 4つの領域に分類します。

@table @samp
@item spam
spam と判定されたメッセージがあるフォルダ。
(@code{wl-spam-folder} に設定されたフォルダ)
@item good
non-spam と判定されたメッセージがあるフォルダ。
@item undecide
未判定のメッセージがあるフォルダ。@samp{+inbox} 等、自身で振り分けていな
いメッセージがあるフォルダが該当します。
(@code{wl-spam-undecided-folder-regexp-list} で設定)
@item ignored
@code{wl-trash-folder} や @code{wl-draft-folder} 等、spam の処理とは関係
のないフォルダ。(@code{wl-spam-ignored-folder-regexp-list} で設定)
@end table

メッセージをリファイルした時、そのメッセージの属する領域が変わった場合、
前後の領域に従って @samp{spam} または、@samp{non-spam} として学習します。

具体的には以下の通りです。

@table @samp
@item undecide -> spam
spam として学習。
@item good -> spam
spam としての学習に加えて、non-spam に行なった学習を削除します。
@item undecide -> good
non-spam として学習。
@item spam -> good
non-spam としての学習に加えて、spam に行なった学習を削除します。
@end table

上記以外のリファイルでは、学習は行われません。

@subsection キーバインド
@cindex Keybind, spam filter

@table @kbd
@item k m
@kindex k m (Summary)
@findex wl-summary-spam
カーソル行のメッセージに spam マーク(@samp{s})を付けます。

@item k c
@kindex k c (Summary)
@findex wl-summary-test-spam
カーソル行のメッセージをテストし、spam と判定された場合に spam マークを
付けます。spam でないと判定された場合は spam マークを取り除きます。

@item k C
@kindex k C (Summary)
@findex wl-summary-mark-spam
@code{wl-spam-auto-check-marks} に含まれるマークを持つメッセージについて 
spam かどうかのテストを行います。spam と判定されたメッセージには、spam 
マークが付けられます。prefix argument をつけた場合は、マークにかかわらず
全てのメッセージを対象とします。

@item k s
@kindex k s (Summary)
@findex wl-summary-register-as-spam
カーソル行のメッセージを spam として登録し spam マークを付けます。

@item k S
@kindex k S (Summary)
@findex wl-summary-register-as-spam-all
フォルダ内の全てのメッセージを spam として登録し spam マークを付けます。

@item k n
@kindex k n (Summary)
@findex wl-summary-register-as-good
カーソル行のメッセージを non-spam として登録し spam マークを取り除きます。

@item k N
@kindex k N (Summary)
@findex wl-summary-register-as-good-all
フォルダ内の全てのメッセージを non-spam として登録し spam マークを取り除きます。

@item r k m
@kindex r k m (Summary)
@findex wl-summary-spam-region
指定リージョンにあるメッセージに spam マークを付けます。

@item r k c
@kindex r k c (Summary)
@findex wl-summary-test-spam-region
指定リージョンにあるメッセージをテストし、spam と判定された場合に spam マークを
付けます。spam でないと判定された場合は spam マークを取り除きます。

@item r k s
@kindex r k s (Summary)
@findex wl-summary-register-as-spam-region
指定リージョンにあるメッセージを spam として登録し spam マークを付けます。

@item r k n
@kindex r k n (Summary)
@findex wl-summary-register-as-good-region
指定リージョンにあるメッセージを non-spam として登録し spam マークを取り除きます。

@item t k m
@kindex t k m (Summary)
@findex wl-thread-spam
カーソル行があるメッセージを先頭とするスレッドのメッセージに spam マークを付けます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てに
適用します。

@item t k c
@kindex t k c (Summary)
@findex wl-thread-test-spam
カーソル行があるメッセージを先頭とするスレッドのメッセージをテストし、
spam と判定された場合に spam マークを付けます。
spam でないと判定された場合は spam マークを取り除きます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てに
適用します。

@item t k s
@kindex t k s (Summary)
@findex wl-thread-register-as-spam
カーソル行があるメッセージを先頭とするスレッドのメッセージを spam として登録し
spam マークを付けます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てに
適用します。

@item t k n
@kindex t k n (Summary)
@findex wl-thread-register-as-good
カーソル行があるメッセージを先頭とするスレッドのメッセージを non-spam として登録し
spam マークを取り除きます。
prefix argument つきならばカーソル行があるメッセージを含むスレッド全てに
適用します。

@item m k
@kindex m k (Summary)
@findex wl-summary-target-mark-spam
まとめ処理用マーク @samp{*} のついたメッセージに spam マーク(@samp{s})を
付けます。

@item m s
@kindex m s (Summary)
@findex wl-summary-target-mark-register-as-spam
まとめ処理用マーク @samp{*} のついたメッセージを spam として登録し spam マークを付けます。

@item m n
@kindex m n (Summary)
@findex wl-summary-target-mark-register-as-good
まとめ処理用マーク @samp{*} のついたメッセージを non-spam として登録し spam マークを取り除きます。
す。
@end table

@subsection カスタマイズ変数

@table @code
@item wl-spam-folder
@vindex wl-spam-folder
spam と判定されたメッセージを移動するフォルダ名を設定します。
初期設定は、@samp{+spam}。

@item wl-spam-undecided-folder-regexp-list
@vindex wl-spam-undecided-folder-regexp-list
spam か non-spam か未判定のメッセージがあると看倣すフォルダを、フォルダ
名の正規表現のリストで指定します。
初期設定は、@code{'("inbox")}

@item wl-spam-ignored-folder-regexp-list
@vindex wl-spam-ignored-folder-regexp-list
初期設定は以下の通り。

@lisp
@group
(list (regexp-opt (list wl-draft-folder
                        wl-trash-folder
                        wl-queue-folder)))
@end group
@end lisp

spam 判定に対して無効なフォルダを、フォルダ名の正規表現のリストで指定し
ます。

@item wl-spam-auto-check-folder-regexp-list
@vindex wl-spam-auto-check-folder-regexp-list
サマリに移動した時に自動的に spam 判定を行うフォルダを正規表現のリストで
指定します。
初期設定は、@code{nil}。

@item wl-spam-auto-check-marks
@vindex wl-spam-auto-check-marks
初期設定は以下のリスト。

@lisp
@group
(list wl-summary-new-uncached-mark
      wl-summary-new-cached-mark)
@end group
@end lisp

@code{wl-spam-auto-check-folder-regexp-list} による自動判定を含む、フォ
ルダ全体に対する spam 判定の対象とするメッセージのマークを指定します。マー
クには永続マークのみ指定できます。一時的マークは指定できません。

デフォルトのようにリストで指定するとそのマークのついたメッセージだけを対
象とする他、以下の指定もできます。

@table @code
@item all
永続マークが何であっても spam 判定の対象とします。
@end table
@end table


@node Spam Filter Processors,  , Usage of Spam Filter, Spam Filter
@section 対応している Spam Filter
@cindex Spam Filter, Bogofilter
@cindex Spam Filter, Spamfilter

デフォルトでは、以下の spam フィルタリングライブラリに対応しています。

@menu
* bogofilter::                          bogofilter
* spamfilter::                          spamfilter.el
* bsfilter::                            bsfilter
* SpamAssassin::                        SpamAssassin
* SpamOracle::                          SpamOracle
* Regular Expressions Header Matching:: 正規表現によるヘッダ検査
@end menu


@node bogofilter, spamfilter, Spam Filter Processors, Spam Filter Processors
@subsection bogofilter
@cindex bogofilter

bogofilter (@uref{http://bogofilter.sourceforge.net/}) は、C言語で実装さ
れた spam フィルタです。

bogofilter による spam フィルタを使用するには、@file{~/.wl} などに以下の
設定を記述します。

@lisp
@group
(setq elmo-spam-scheme 'bogofilter)
@end group
@end lisp

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-bogofilter-program
@vindex elmo-spam-bogofilter-program
初期設定は、@file{bogofilter}。
bogofilter の実行ファイルの名前を設定します。実行ファイルが、環境変数 
@env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-bogofilter-args
@vindex elmo-spam-bogofilter-args
初期設定は、@code{nil}。
bogofilter の実行時に実行ファイルに渡される引数を指定します。

@item elmo-spam-bogofilter-database-directory
@vindex elmo-spam-bogofilter-database-directory
使用する統計データベースの存在するディレクトリを指定します。@code{nil} 
ならデフォルトの位置 (@file{~/.bogofilter}) が使用されます。
初期設定は、@code{nil}

@item elmo-spam-bogofilter-max-messages-per-process
@vindex elmo-spam-bogofilter-max-messages-per-process
初期設定は、30。
学習時にまとめ処理されるメッセージの数を指定します。

@item elmo-spam-bogofilter-debug
@vindex elmo-spam-bogofilter-debug
初期設定は、@code{nil}。
non-nil に指定すると、@command{bogofilter} からの出力が
@code{"*Debug ELMO SPAM Bogofilter*"}というバッファに出力されます。
@end table


@node spamfilter, bsfilter, bogofilter, Spam Filter Processors
@subsection spamfilter.el
@cindex spamfilter

@file{spamfilter.el}
(@uref{http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/}) は、
Emacs Lisp で実装された spam フィルタリングライブラリです。

インストール時に @code{load-path} 上に @file{spamfilter.el} があれば、自
動的に対応モジュールがコンパイル/インストールされます。@xref{Install}.

@file{spamfilter.el} を使用するには、@file{~/.wl} などに以下の設定を記述
します。(もちろん、@file{spamfilter.el} 自体の設定も必要です)

@lisp
@group
(setq elmo-spam-scheme 'spamfilter)
@end group
@end lisp

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-spamfilter-corpus-filename
@vindex elmo-spam-spamfilter-corpus-filename
初期設定は @file{~/.elmo/.spamfilter}。
コーパスファイルの名前を設定します。
@end table

@node bsfilter, SpamAssassin, spamfilter, Spam Filter Processors
@subsection bsfilter
@cindex bsfilter

bsfilter (@uref{http://bsfilter.org/}) は、Ruby で実装された spam フィルタです。

bsfilter による spam フィルタを使用するには、@file{~/.wl} などに以下の
設定を記述します。

@lisp
@group
(setq elmo-spam-scheme 'bsfilter)
@end group
@end lisp

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-bsfilter-program
@vindex elmo-spam-bsfilter-program
初期設定は @file{bsfilter}。
@command{bsfilter} の実行ファイルの名前を設定します。実行ファイルが、
環境変数 @env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-bsfilter-args
@vindex elmo-spam-bsfilter-args
初期設定は、@code{nil}。
bsfilter の実行時に実行ファイルに渡される引数を指定します。

@item elmo-spam-bsfilter-database-directory
@vindex elmo-spam-bsfilter-database-directory
使用する統計データベースの存在するディレクトリを指定します。@code{nil} 
ならデフォルトの位置 (@file{~/.bsfilter}) が使用されます。
初期設定は、@code{nil}。

@item elmo-spam-bsfilter-debug
@vindex elmo-spam-bsfilter-debug
初期設定は、@code{nil}。
non-nil を指定すると、@command{bsfilter} からの出力が
@code{"*Debug ELMO Bsfilter*"}というバッファに出力されます。

@item elmo-spam-bsfilter-shell-program
@vindex elmo-spam-bsfilter-shell-program
初期設定は、@file{ruby}。
bsfilter を起動するシェルの名前を設定します。シェルが環境変数 
@env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-bsfilter-shell-switch
@vindex elmo-spam-bsfilter-shell-switch
初期設定は、@code{nil}。
bsfilter を起動するシェルに与える引数を指定します。

@item elmo-spam-bsfilter-update-switch
@vindex elmo-spam-bsfilter-update-switch
初期設定は、@code{"--auto-update"}。
メッセージを学習する際に @command{bsfilter} に与える引数を指定します。

@end table

@node SpamAssassin, SpamOracle, bsfilter, Spam Filter Processors
@subsection SpamAssassin
@cindex SpamAssassin

SpamAssassin (@uref{http://spamassassin.org/}) は、Perl 言語
で実装された、テキスト解析技術やブラックリストに基づくメールフィルタで、
最もよく使われている spam フィルタの一つです。SpamAssassin は Bayesian フィ
ルタを使用しており、spam と正当なメールについて学習させることで判定の正確
性を向上することができます。

@file{SpamAssassin} を使用するには、@file{~/.wl} などに以下の設定を記述し
ます。(もちろん、あらかじめ SpamAssassin がインストールされ、正常に動作す
ることを確認してください)

@lisp
@group
(setq elmo-spam-scheme 'sa)
@end group
@end lisp

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-spamassassin-program
@vindex elmo-spam-spamassassin-program
初期設定は @file{spamassassin}。
@command{spamassassin} の実行ファイルの名前を設定します。実行ファイルが、
環境変数 @env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-spamassassin-learn-program
@vindex elmo-spam-spamassassin-learn-program
初期設定は @file{sa-learn}。
SpamAssassin において Bayesian フィルタの学習を行なうプログラム、
@command{sa-learn} の実行ファイルの名前を設定します。実行ファイルが、環境
変数 @env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-spamassassin-program-arguments
@vindex elmo-spam-spamassassin-program-arguments
初期設定は、@code{'("-e")}。
@command{spamassassin} 実行時に与える引数を指定します。
spam の判定結果を、プログラムのプロセス終了コードとして出力する引数を
与える必要があります。例えば、@command{spamassassin} の替わりに
@command{spamc} を用いる場合、@code{'("-c")} を設定しなければなりません。

@item elmo-spam-spamassassin-learn-program-arguments
@vindex elmo-spam-spamassassin-lern-program-arguments
初期設定は、@code{nil}。
SpamAssassin の学習用プログラム @command{sa-learn} 実行時に与える
引数を指定します。

@item elmo-spamassassin-debug
@vindex elmo-spamassassin-debug
初期設定は、@code{nil}。@code{t} を指定すると、@command{spamassassin}
からの出力が @code{"*Debug ELMO SpamAssassin*"}というバッファに出力されます。

@end table

@node SpamOracle, Regular Expressions Header Matching, SpamAssassin, Spam Filter Processors
@subsection SpamOracle
@cindex SpamOracle

SpamOracle (@uref{http://pauillac.inria.fr/~xleroy/software.html#spamoracle})
は、Objective Caml で実装された spam フィルタです.

@file{SpamOracle} を使用するには、@file{~/.wl}などに以下の設定を記述します。
(もちろん、あらかじめ SpamOracle がインストールされ、正常に動作することを
確認してください)

@lisp
@group
(setq elmo-spam-scheme 'spamoracle)
@end group
@end lisp

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-spamoracle-program
@vindex elmo-spam-spamoracle-program
初期設定は @file{spamoracle}。
@command{spamoracle} の実行ファイルの名前を設定します。実行ファイルが、
環境変数 @env{PATH} 上にない場合は、フルパスを設定する必要があります。

@item elmo-spam-spamoracle-config-filename
@vindex elmo-spam-spamoracle-config-filename
初期設定は @code{nil}。
@command{spamoracle} の設定ファイルを指定します. 
@code{nil} を指定すると、デフォルトの設定ファイル
(@file{~/.spamoracle.conf})が使用されます。

@item elmo-spam-spamoracle-database-filename
@vindex elmo-spam-spamoracle-database-filename
初期設定は @file{~/.elmo/.spamoracle.db}。
@command{spamoracle} で使用するデータベースファイルのパスを指定します。

@item elmo-spam-spamoracle-spam-header-regexp
@vindex elmo-spam-spamoracle-spam-header-regexp
初期設定は @code{"^X-Spam: yes;"}。
spam メールであることを示すヘッダの正規表現を指定します。
@command{spamoracle} の設定ファイル内で、 @code{spam_header} パラメータの
設定を変更した場合は、この変数の値を設定してください。

@end table

@node Regular Expressions Header Matching,  , SpamOracle, Spam Filter Processors
@subsection Regular Expressions Header Matching
@cindex Regular Expressions Header Matching

メッセージヘッダの各フィールドが正規表現と合致するかどうかを検査し、spam 
かどうかを判定します。このバックエンドを使用するには、@file{~/.wl} など
に以下の設定を記述します。

@lisp
@group
(setq elmo-spam-scheme 'header)
@end group
@end lisp

overview 情報に含まれないフィールドを検査の対象とする場合、
@code{elmo-msgdb-extra-fields} に追加しておくと、出来るだけメッセージ本
体を読み込まずに overview 情報を元に検査します。

@subsubsection カスタマイズ変数

@table @code
@item elmo-spam-header-good-alist
@vindex elmo-spam-header-good-alist
初期設定は以下の通り。

@lisp
'(("X-Spam-Flag" . "No"))
@end lisp

ヘッダフィールド名と合致した時に non-spam と判定する為の正規表現の組をリ
ストで指定します。@code{elmo-spam-header-spam-alist} より優先されます。

@item elmo-spam-header-spam-alist
@vindex elmo-spam-header-spam-alist
初期設定は以下の通り。

@lisp
'(("X-Spam-Flag" . "Yes"))
@end lisp

ヘッダフィールド名と合致した時に spam と判定する為の正規表現の組をリスト
で指定します。
@end table


@node Advanced Issues, Migration, Spam Filter, Top
@chapter より進んだ使い方
@cindex Advanced Issues

@menu
* Living with other packages::  パッケージのある生活
* Highlights::                  ハイライトの設定
* Biff::                        メールの着信を知らせる
* Password Management::         パスワードの管理
* Split messages::              メッセージの振り分け
* Batch Processing::            バッチ処理
* Advanced Settings::           カスタマイズ〜応用編〜
* Customizable Valiables::      その他のカスタマイズ変数一覧
* Hooks::                       フック
@end menu


@node Living with other packages, Highlights, Advanced Issues, Advanced Issues
@section パッケージのある生活

他のパッケージを使うための設定例です。

@menu
* imput::                       imput (im-wl.el)
* BBDB::                        The Insidious Big Brother Database
* LSDB::                        The Lovely Sister Database
* supercite::                   supercite.el
* mu-cite::                     mu-cite.el
* X-Face::                      x-face,bitmap-mule
* dired-dd::                    dired-dd.el
* MHC::                         MHC
* Addrbook::                    Addrbook
* mime-w3m::                    mime-w3m.el
@end menu


@node imput, BBDB, Living with other packages, Living with other packages
@subsection imput
@pindex imput
@cindex im-wl

@file{util/im-wl.el} を @code{load-path} において以下のように設定すれば 
OK です。

@lisp
@group
(autoload 'wl-draft-send-with-imput-async "im-wl")
(setq wl-draft-send-function 'wl-draft-send-with-imput-async)
@end group
@end lisp


@node BBDB, LSDB, imput, Living with other packages
@subsection bbdb.el
@pindex BBDB

The Insidious Big Brother Database
(@uref{http://savannah.nongnu.org/projects/bbdb/}) は 3.2 以降から
Wanderlust に対応しています。
設定の詳細は Wanderlust か BBDB のメーリングリストでおたずねください。
@xref{Mailing List}.

@node LSDB, supercite, BBDB, Living with other packages
@subsection lsdb.el
@pindex LSDB

The Lovely Sister Database (@uref{http://sourceforge.jp/projects/lsdb/})
を Wanderlust と共に使うための設定例を以下に示します。

@lisp
@group
(require 'lsdb)
(lsdb-wl-insinuate)
(add-hook 'wl-draft-mode-hook
          (lambda ()
             (define-key wl-draft-mode-map "\M-\t" 'lsdb-complete-name)))
@end group
@end lisp

この例では LSDB を用いたアドレスの補完を @kbd{M-@key{TAB}} に割り当てて
います。


@node supercite, mu-cite, LSDB, Living with other packages
@subsection sc.el(supercite), sc-register.el
@pindex sc
@pindex supercite

普通のメーラと同じ設定で OK です。以下は、設定の一例です。

@lisp
@group
(autoload 'sc-cite-original "supercite" nil t)
(add-hook 'mail-citation-hook 'sc-cite-original)
@end group
@end lisp


@node mu-cite, X-Face, supercite, Living with other packages
@subsection mu-cite.el
@pindex mu-cite

普通のメーラと同じ設定で OK です。以下は設定の一例です。

@lisp
@group
(autoload 'mu-cite-original "mu-cite" nil t)
(add-hook 'mail-citation-hook (function mu-cite-original))
@end group
@end lisp


@node X-Face, dired-dd, mu-cite, Living with other packages
@subsection x-face
@pindex x-face

以下のいずれかをインストールすることで、 メッセージバッファの
@samp{X-Face:} フィールドをデコードして、画像を表示することができます。

@menu
* x-face-mule::                       Emacs の場合
@end menu

また、エンコード済みの X-Face 文字列を @file{~/.xface}
(変数 @code{wl-x-face-file} の値です)の内容に用意しておくと、
ドラフトが準備されるときに自動的に @samp{X-Face:} フィールドとして挿入されます。
(変数 @code{wl-auto-insert-x-face} が non-nil の場合)


@node x-face-mule,  , X-Face, X-Face
@subsubsection x-face-mule
@pindex x-face-mule
@pindex bitmap-mule

bitmap-mule (@uref{ftp://ftp.jpl.org/pub/elisp/bitmap/}) 8.0以降に
付属の @file{x-face-mule.el} を使う場合は以下のように設定してください。

@lisp
@group
(autoload 'x-face-decode-message-header "x-face-mule")
(setq wl-highlight-x-face-function 'x-face-decode-message-header)
@end group
@end lisp

@subsubsection x-face-e21
@pindex x-face-e21

@file{x-face-mule.el} の代わりに @file{x-face-e21.el}
(@uref{ftp://jpl.org/pub/elisp/}) を使って X-Face を表示することもできます。
その場合、bitmap-mule は不要です。以下のように設定してください。

@lisp
@group
(autoload 'x-face-decode-message-header "x-face-e21")
(setq wl-highlight-x-face-function 'x-face-decode-message-header)
@end group
@end lisp


@node dired-dd, MHC, X-Face, Living with other packages
@subsection dired-dd(Dired-DragDrop)
@pindex Dired-DragDrop
@pindex Dired-DD
@cindex Drag and Drop

dired-dd パッケージに含まれる @file{dired-dd-mime.el} を組み込めば、GNU
Emacs で編集中の草稿バッファへ dired からドラッグ&ドロップするだけで簡単
にマルチパートを作成できます(もっとも、Wanderlust 専用ではなく SEMI 汎用
ですが)。

@lisp
@group
;; @r{dired-dd:} http://www.asahi-net.or.jp/~pi9s-nnb/dired-dd-home.html
(add-hook 'dired-load-hook
          (function
           (lambda ()
             (load "dired-x")
             ;; @r{Set dired-x variables here.}
             ;; @r{To and flo@dots{}}
             (if window-system
                 (progn (require 'dired-dd)
                        (require 'dired-dd-mime))))))
@end group
@end lisp


@node MHC, Addrbook, dired-dd, Living with other packages
@subsection mhc.el
@pindex MHC

Message Harmonized Calendaring system
(@uref{http://www.quickhack.net/mhc/})

MHC を用いると、メッセージを元に予定表を作れます。

mhc-0.25 の場合：

@lisp
@group
(setq mhc-mailer-package 'wl)
(autoload 'mhc-mode "mhc" nil t)
(add-hook 'wl-summary-mode-hook 'mhc-mode)
(add-hook 'wl-folder-mode-hook 'mhc-mode)
@end group
@end lisp

mhc-current の場合：

@lisp
@group
(autoload 'mhc-wl-setup "mhc-wl")
(add-hook 'wl-init-hook 'mhc-wl-setup)
@end group
@end lisp


@node Addrbook, mime-w3m, MHC, Living with other packages
@subsection wl-addrbook.el
@pindex Addrbook

Addrbook of Mew
(@uref{http://www.mew.org/})

Mew の Addrbook を Wanderlust で使用できるようにするには、
@file{util/wl-addrbook.el} と @file{util/wl-complete.el} を 
@code{load-path} において、以下のように設定します。

@lisp
@group
(require 'wl-addrbook)
(wl-addrbook-setup)
@end group
@end lisp


@node mime-w3m,  , Addrbook, Living with other packages
@subsection mime-w3m.el
@pindex mime-w3m

emacs-w3m (@uref{http://emacs-w3m.namazu.org/}) に付属の
@file{mime-w3m.el} を使って、メッセージの html パートを
表示させることが出来ます。設定方法は @file{mime-w3m.el} の
先頭のコメントを参照してください。
SEMI が SEMI-EPG である場合は、特別な設定は不要です。


@node Highlights, Biff, Living with other packages, Advanced Issues
@section ハイライトの設定

@subsection カスタマイズ変数

@table @code
@item  wl-summary-highlight
@vindex wl-summary-highlight
初期設定は @code{t}。サマリのハイライトを行うかどうか。
Non-nil ならサマリのハイライトを行います。

@item  wl-highlight-max-summary-lines
@vindex wl-highlight-max-summary-lines
初期設定は 10000。
サマリの行数がこの値より大きい場合、サマリのハイライトを行いません。

@item  wl-summary-highlight-partial-threshold
@vindex wl-summary-highlight-partial-threshold
初期設定は 1000。
サマリ全体をハイライトするかどうかの閾値。
この値を越える行数のメッセージがサマリに存在する場合、
部分的なハイライトを行います。

@item  wl-summary-partial-highlight-above-lines
@vindex wl-summary-partial-highlight-above-lines
初期設定は 30。@code{wl-summary-highlight-partial-threshold} を越える行
数のメッセージがサマリに存在する場合、バッファ末から、カーソル行よりこの
値の行数分だけ上のメッセージまで部分的なハイライトが行なわれます。(この
値を @code{nil} にするとバッファ末から
@code{wl-summary-highlight-partial-threshold}行分だけハイライトされるよ
うになります。)

@item wl-highlight-body-too
@vindex  wl-highlight-body-too
初期設定は @code{t}。
Non-nil ならドラフトおよびメッセージの本文もハイライトの対象とします。

@item  wl-highlight-message-header-alist
@vindex wl-highlight-message-header-alist
ドラフトおよびメッセージのヘッダのハイライトを行う際に、
重要 (@code{wl-highlight-message-important-header-contents})な、
二番目に重要 (@code{wl-highlight-message-important-header-contents2})な、
そして重要ではない (@code{wl-highlight-message-unimportant-header-contents})
ことを表す face をそれぞれどのメッセージヘッダに割り当てるかを設定します。
同様に、任意の正規表現に対して任意の face を割り当てることもできます。

@item wl-highlight-citation-prefix-regexp
@vindex  wl-highlight-citation-prefix-regexp
ドラフトおよびメッセージの本文内の引用行を示す正規表現を指定します。
この正規表現にマッチした本文は、
(@code{wl-highlight-message-cited-text-*})で指定される face でハイライトされます。

@item wl-highlight-highlight-citation-too
@vindex wl-highlight-highlight-citation-too
初期設定は @code{nil}。
Non-nil なら@code{wl-highlight-citation-prefix-regexp}で与えられる
引用行の引用を示す正規表現自体もハイライトの対象とします。

@item wl-highlight-citation-header-regexp
@vindex wl-highlight-citation-header-regexp
引用を始めることを示すヘッダの正規表現を指定します。
この正規表現にマッチした本文は、
@code{wl-highlight-message-headers}で指定される face でハイライトされます。

@item wl-highlight-max-header-size
@vindex wl-highlight-max-header-size
初期設定は @code{nil}。
メッセージのヘッダサイズがこの値より大きい場合、ヘッダをハイライトしませ
ん。@code{nil} の場合、サイズに関係なくハイライトします。

@item wl-highlight-max-message-size
@vindex wl-highlight-max-message-size
初期設定は 10000。
メッセージがこの値より大きい場合、メッセージのハイライトを行いません。
これにより uuencode や非常に大きなダイジェストなどの
ハイライトの抑止を行います。

@item  wl-highlight-signature-separator
@vindex wl-highlight-signature-separator
シグニチャの境界を表す正規表現を指定します。
正規表現でも、正規表現のリストでも構いません。
この正規表現にマッチした場所以降のメッセージは、
@code{wl-highlight-message-signature}で指定される face でハイライトされます。

@item  wl-max-signature-size
@vindex wl-max-signature-size
初期設定は 400。
シグニチャをハイライトする場合、
ハイライトする最大のシグニチャの大きさを指定します。

@item wl-use-highlight-mouse-line
@vindex  wl-use-highlight-mouse-line
初期設定は @code{t}。
Non-nil ならフォルダモード、サマリモードなどで
マウスポインタの行をハイライトの対象とします。
@end table

@subsection 文字の色、フォントの設定

文字の色や、フォントを変えるには、Wanderlust で定義されている face を変
更する必要があります。フォントを変えたいときは @code{set-face-font}、
色を変えたいときは @code{set-face-foreground} などを使えばよいでしょう。
face の設定は @file{.emacs} に書くことはできないので @file{~/.wl} に書い
てください。

たとえば、シグニチャの色を黄色に変えたいときは、

@lisp
(set-face-foreground 'wl-highlight-message-signature "yellow")
@end lisp

@noindent
を @file{~/.wl} に書きます。

以下に Wanderlust で定義されている face について説明します。

@table @code
@item wl-highlight-message-headers
メッセージヘッダの名前部分の face です。

@item wl-highlight-message-header-contents
メッセージヘッダの内容部分の face です。

@item wl-highlight-message-important-header-contents
メッセージヘッダの内容のうち重要な部分の face です。
デフォルトでは、@samp{Subject:} の内容部分が設定されています。
この値は @code{wl-highlight-message-header-alist}
 を変更すれば変えることができます。

@item wl-highlight-message-important-header-contents2
メッセージヘッダの内容のうち重要な部分の face その２です。
デフォルトでは、@samp{From:} と @samp{To:} の内容部分が設定されています。
この値は @code{wl-highlight-message-header-alist}
を変更すれば変えることができます。

@item wl-highlight-message-unimportant-header-contents
メッセージヘッダの内容のうち重要ではない部分の face です。
デフォルトでは、@samp{X-} で始まるヘッダと @samp{User-Agent:} の内容部分
が設定されています。この値は @code{wl-highlight-message-header-alist} を
変更すれば変えることができます。

@item wl-highlight-message-citation-header
メッセージの引用ヘッダ部分の face です。

@item wl-highlight-message-cited-text-*
メッセージの引用テキスト部分の face です。
最後には@var{数字}がつき、10 段階まで引用ごとに色分けできるようにしています。

@item wl-highlight-message-signature
メッセージのシグニチャ部分の face です。初期設定は、明色バックでは 
@samp{khaki}、暗色バックでは @samp{DarkSlateBule} です。

@item wl-highlight-header-separator-face
ドラフトのメッセージのヘッダセパレータの face です。

@item wl-highlight-summary-important-face
サマリで重要マークのついたメッセージ行の face です。

@item wl-highlight-summary-new-face
サマリで新規マークのついたメッセージ行の face です。

@item wl-highlight-summary-displaying-face
サマリで現在表示中のメッセージ行の face です。
この face は overlay されます。

@item wl-highlight-thread-indent-face
サマリで現在表示中のメッセージ行の face です。

@item wl-highlight-summary-unread-face
サマリで未読マークのついたメッセージ行の face です。

@item wl-highlight-summary-deleted-face
サマリで削除マークのついたメッセージ行の face です。

@item wl-highlight-summary-refiled-face
サマリでリファイルマークのついたメッセージ行の face です。

@item wl-highlight-refile-destination-face
サマリでリファイルマークの付いたメッセージ行の、
リファイル先情報の部分につく face です。

@item wl-highlight-summary-copied-face
サマリでコピーマークのついたメッセージ行の face です。

@item wl-highlight-summary-target-face
サマリでまとめ処理用マーク @samp{*} のついたメッセージ行の face です。

@item wl-highlight-summary-thread-top-face
サマリでスレッドトップのメッセージ行の face です。

@item wl-highlight-summary-normal-face
サマリでスレッドトップではないメッセージ行の face です。

@item wl-highlight-folder-unknown-face
フォルダモードで、いくつ未同期メッセージがあるか分らないフォルダの
 face です。

@item wl-highlight-folder-zero-face
フォルダモードで、未同期メッセージがないフォルダの face です。

@item wl-highlight-folder-few-face
フォルダモードで、未同期メッセージが少しあるフォルダの face です。

@item wl-highlight-folder-many-face
フォルダモードで、未同期メッセージがたくさんあるフォルダの face です。
「少し」と「たくさん」の切れ目は、
変数 @code{wl-folder-many-unsync-threshold} で設定されます。

@item wl-highlight-folder-unread-face
フォルダモードで、未同期メッセージがなくて未読メッセージがある
フォルダの face です。

@item wl-highlight-folder-killed-face
フォルダモードで、アクセスグループ中の削除されたフォルダの face です。

@item wl-highlight-folder-opened-face
フォルダモードで、開いたグループにつく face です。
変数 @code{wl-highlight-folder-by-numbers} が @code{nil} か @var{数} の
とき有効です。

@item wl-highlight-folder-closed-face
フォルダモードで、閉じたグループにつく face です。
変数 @code{wl-highlight-folder-by-numbers} が @code{nil} か @var{数} の
とき有効です。

@item wl-highlight-folder-path-face
フォルダモードで、現在選択中のフォルダまでのパスにつく face です。

@item wl-highlight-logo-face
デモでロゴにつく face です。

@item wl-highlight-demo-face
デモの文字列(バージョン番号など)につく face です。
@end table


@node Biff, Password Management, Highlights, Advanced Issues
@section メールの着信を知らせる
@cindex Biff

以下のように設定しておくと @samp{%inbox} にメールが届いたときに、
モードラインの表示によりメールの着信を知らせてくれます。

@lisp
(setq wl-biff-check-folder-list '("%inbox"))
@end lisp

@subsection カスタマイズ変数

@table @code
@item wl-biff-check-folder-list
@vindex wl-biff-check-folder-list
初期設定は @code{nil}。
メールの着信をチェックするフォルダのリスト。
@code{nil} の場合は着信のチェックを行ないません。

@item wl-biff-check-interval
@vindex wl-biff-check-interval
初期設定は 40 (単位:秒)。
この値ごとにメール着信のチェックを行なおうとします。

@item wl-biff-check-delay
@vindex wl-biff-check-delay
初期設定は 0 (単位:秒)。
@code{wl-biff-check-interval} で指定した時間が経過し、かつ、
この変数で指定された時間だけアイドル状態が続いた場合にチェックを行います。

@item wl-biff-use-idle-timer
@vindex wl-biff-use-idle-timer
初期設定は @code{nil}。
@code{nil} なら @code{wl-biff-check-interval} で指定した時間が経過すると
メール着信のチェックを行います。Non-nil なら @code{wl-biff-check-interval}
で指定した時間だけアイドル状態が続くとメール着信のチェックを行います。

@item wl-biff-notify-hook
@vindex wl-biff-notify-hook
新しいメールが届いた際に実行されるフック。
着信時にビープ音を鳴らす（初期設定）なら以下のように設定します。
@lisp
(setq wl-biff-notify-hook '(ding))
@end lisp
音を鳴らしたりしない場合は @code{nil} に設定してください。

@item wl-biff-unnotify-hook
@vindex wl-biff-unnotify-hook
前回のチェックで新しいメールが届いており、
今回のチェックで新しいメールが無くなった際に実行されるフック。
@end table

@node Password Management, Split messages, Biff, Advanced Issues
@section パスワードの管理

サーバに接続する為に入力したパスワードは変数 @code{elmo-passwd-storage}  に
接続毎に保持されます。この変数にはエンコードされた生のパスワードが保持さ
れており、Emacs を他人に触られるとパスワードを見られる危険性があるので十
分に注意して下さい。

@findex elmo-passwd-alist-clear
@findex elmo-passwd-alist-save
パスワードが保持されている状態で @kbd{M-x elmo-passwd-alist-save} を実行
するとパスワードがファイルに保存され、パスワードの入力が不要になります。
この場合、キー入力を盗み見られる危険性は減るかもしれませんが、生のパスワ
ードがファイルに保存されるので、その扱いには十分注意して下さい。ファイル
に保存されたパスワードを消去するには @kbd{M-x elmo-passwd-alist-clear}
の後、@kbd{M-x elmo-passwd-alist-save} を実行して下さい。

@table @code
@item elmo-passwd-alist-file-name
@vindex  elmo-passwd-alist-file-name
初期設定は @file{passwd}。
パスワードをセーブしておくファイルの名前です。
コマンド @code{elmo-passwd-alist-save} を実行するとこのファイルに現在設定
されているパスワードがセーブされます。

@item elmo-passwd-life-time
@vindex  elmo-passwd-life-time
初期設定は @code{nil}。
Non-nil な値が設定された場合は、新規にパスワードが入力されてから
@code{elmo-passwd-life-time} 秒後にパスワードを消去するタイマが、
セットされます。@code{nil} の場合は入力されたパスワードを消去しません。
@end table

@menu
* Auth-source:: auth-source を利用したパスワードの管理
@end menu


@node Auth-source, , Password Management, Password Management
@subsection auth-source を利用したパスワードの管理
@cindex auth-source

@vindex elmo-passwd-storage-type
@file{~/.wl} に @code{(setq elmo-passwd-storage-type 'auth-source)}
のように記述するとパスワードの管理に auth-source
(@pxref{Top, , ,auth, Emacs auth-source}) を利用するようになります。


@subsubsection auth-source 利用時の制限

auth-source 使用時は以下の制限があります。

@itemize @bullet
@item プロトコル名や認証メカニズムによるパスワードの区別を行いません。
@item netrc auth-sourceのバグにより、
同一ホスト名に複数アカウントが存在する場合、インタラクティブにパスワードを
入力することができず、あらかじめエントリを作成しておく必要があります。
Emacs 28 以降では解消されます。
@end itemize


@node Split messages, Batch Processing, Password Management, Advanced Issues
@section メッセージの振り分け
@cindex Split messages

@code{elmo-split} を使うと、変数 @code{elmo-split-folder} で指定したフ
ォルダ内のメッセージを特定の規則に従って @command{procmail} 風に振り分
けることができます。
この機能を使うには、まず @file{~/.emacs} に以下のように設定して下さい。

@lisp
(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
@end lisp

振り分け元のフォルダを以下のように設定します。

@lisp
(setq elmo-split-folder "%inbox")
@end lisp

振り分けのルールは変数 @code{elmo-split-rule} に記述します(書き方は後で
説明します)。
以上の設定をした上で @kbd{M-x elmo-split} すると @code{elmo-split-rule}
に従って振り分けを実行します。 @kbd{C-u M-x elmo-split} とすると実際には
振り分けはせずにリハーサルを行ない、その結果を表示します。


以下ではルールの記述の仕方を説明します。まずは次の例を見て下さい。

@lisp
@group
(setq elmo-split-rule
      ;; @r{SPAM は @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{mule メーリングリストからのメールを @samp{%mule} へ}
	((equal x-ml-name "mule") "%mule")
	;; @r{wanderlust メーリングリストからのメールを @samp{%wanderlust} へ}
	;; @r{そして続けてそれ以下の規則も評価する。}
	((equal x-ml-name "wanderlust") "%wanderlust" continue)
	;; @r{Yahoo 利用者からのメッセージを @samp{+yahoo-@{username@}} へ}
	((match from "\\(.*\\)@@yahoo\\.com")
	 "+yahoo-\\1")
	;; @r{マッチしなかった残りを @samp{+inbox} へ}
	(t "+inbox")))
@end group
@end lisp

規則の基本単位は

@lisp
(@samp{CONDITION} @samp{ACTION} [@code{continue}])
@end lisp

の組で、@samp{CONDITION} が真の場合に @samp{ACTION} を実行します。
第一の要素 @samp{CONDITION} には条件を S 式で記述します。書式については
すぐ後で説明します。第二の要素 @samp{ACTION} にはメッセージの振り分け先
のフォルダ名、もしくはシンボルを指定します。
第三の要素 @code{continue} をシンボルとして与えると、@samp{CONDITION} が
満たされた場合にも振り分け規則の評価を継続します。

@samp{CONDITION} の記法は以下のようになります。実際の書き方は上で挙げた
例を参考にして下さい。

@enumerate
@item
@samp{フィールド名} および @samp{値} を引数として取る関数。
(@samp{フィールド名} はフィールド名を表すシンボルです)

@table @code
@item @code{equal}
フィールドの値が @samp{値} に等しければ真。
大文字小文字の差は無視されます。
@item @code{match}
フィールドの値が @samp{値} にマッチすれば真。
@samp{値} は @code{\&} や @code{\N} を含むことができます。
それらはその前の @samp{値} で @code{\(\)} にマッチしたパターンに
置き換えられます。
@item @code{address-equal}
そのフィールドにあるアドレスのいずれかが @samp{値} に等しければ真。
大文字小文字の差は無視されます。
@item @code{address-match}
そのフィールドにあるアドレスのいずれかが @samp{値} にマッチすれば真。
@samp{値} は @code{\&} や @code{\N} を含むことができます。
それらはその前の @samp{値} で @code{\(\)} にマッチしたパターンに
置き換えられます。
@end table

@item
1 つの整数 (@samp{SIZE}) を引数としてとる関数。

@table @code
@item @code{<}
メッセージのサイズが @samp{SIZE} より小さければ真。
@item @code{>}
メッセージのサイズが @samp{SIZE} より大きければ真。
@end table

@item
任意数の引数を取る関数。

@table @code
@item @code{or}
引数のいずれかが真を返すならば真。
@item @code{and}
引数のすべてが真を返すならば真。
@end table

@item
シンボル。

シンボルが指定されると、それを評価します。
@end enumerate

@samp{ACTION} の値として指定できるのは以下のいずれかです。

@enumerate
@item
フォルダ名

文字列が指定されるとそれを振り分け先のフォルダ名とみなして、そのフォルダ
へメッセージを追加します。

@item
@samp{delete}

シンボル @samp{delete} が指定されると @code{elmo-split-folder} 内にある
メッセージの実体を削除します。

@item
@samp{noop}

シンボル @samp{noop} が指定された場合、そのメッセージに対しては何もせず、
そのままの状態に保ちます。

@item
関数

関数が指定された場合、それを実行します。
関数にはフォルダとメッセージ番号が引数として渡されます。
関数の戻り値が non-nil の場合は、追加で @samp{delete} と同様の処理を
行います。
@end enumerate

全ての振り分け規則を通過したメッセージは、変数
@code{elmo-split-default-action} で指定した @samp{ACTION} に沿って処理さ
れます。


@node Batch Processing, Advanced Settings, Split messages, Advanced Issues
@section バッチ処理
@cindex Batch Processing

コマンドラインから wanderlust に仕事をさせることができます。
現在できる処理は指定したフォルダの新着メッセージのプリフェッチです。

@code{wl-batch-prefetch-folder-list} にプリフェッチを行うフォルダを
指定してコマンドラインから以下のようにするとプリフェッチを行います。

@example
@group
% emacs -batch -l wl-batch -f wl-batch-prefetch
@end group
@end example

@subsection カスタマイズ変数

@table @code
@item wl-batch-prefetch-folder-list
@vindex wl-batch-prefetch-folder-list
@code{wl-batch-prefetch} でプリフェッチを行うフォルダを、フォルダ名のリスト
で指定します。
@end table


@node Advanced Settings, Customizable Valiables, Batch Processing, Advanced Issues
@section カスタマイズ〜応用編〜

@menu
* Draft for Reply::             返事用ドラフト
* Thread Format::               スレッドの見た目
* User-Agent Field::            @samp{User-Agent:} ヘッダフィールド
@end menu


@node Draft for Reply, Thread Format, Advanced Settings, Advanced Settings
@subsection 返事用ドラフト
@vindex wl-draft-reply-with-argument-list
@vindex wl-draft-reply-without-argument-list

サマリモードで @kbd{a} を押すと返事用のドラフトが用意されます。
用意される草稿の宛先は、以下のようにして設定することができます。

例えば、

@lisp
@group
(setq wl-draft-reply-without-argument-list
      '(("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
        ("Followup-To" . (nil nil ("Followup-To")))
        (("X-ML-Name" "Reply-To") . (("Reply-To") nil nil))
        ("From" . (("From") ("To" "Cc") ("Newsgroups")))))
@end group
@end lisp

のように設定します。ここでリスト @code{wl-draft-reply-without-argument-list}
の各要素は

@example
(key . (to-list cc-list newsgroup-list))
@end example

となっており、@samp{key} で指定したフィールドが存在するときに、親メッセージ
の @samp{to-list} で指定されるヘッダを、草稿の @samp{To:} にコピーします。
また同様に、親の @samp{cc-list}, @samp{newsgroup-list} は草稿の @samp{Cc:},
@samp{Newsgroups:} にコピーされます。

例を挙げて説明します。

@lisp
("Mail-Followup-To" . (("Mail-Followup-To") nil ("Newsgroups")))
@end lisp

親メッセージに @samp{Mail-Followup-To} フィールドが存在したときにマッチします。
親メッセージの @samp{Mail-Followup-To} および @samp{Newsgroups}
フィールドの内容を、草稿の @samp{To} および @samp{Newsgroups} にコピーします。

@lisp
(("X-ML-Name" "Reply-To") . (("Reply-To") nil nil))
@end lisp

親メッセージに @samp{X-ML-Name} および @samp{Reply-To} の両方が存在した
ときにマッチします。
親メッセージの @samp{Reply-To} を草稿の @samp{To} にコピーします。

@lisp
("From" . (("From") ("To" "Cc") ("Newsgroups")))
@end lisp

親メッセージの @samp{From} を草稿の @samp{To} に、親の @samp{To} および
@samp{Cc} を草稿の @samp{Cc} に、@samp{Newsgroups} を @samp{Newsgroups}
にそれぞれコピーします。

これらは順番に評価され、最初にマッチしたものが使われます。

同様にして、prefix argument 付きで  @kbd{a} を押したときの動作が、
@code{wl-draft-reply-with-argument-list} で設定できます。


また、関数(親メッセージのバッファで評価される)を @samp{key} や
@samp{to-list} 等の変わりに用いることもできます。

自分の書いたメッセージへの返信の場合にマッチさせたい場合には
@samp{key} として関数 @code{wl-draft-self-reply-p} を指定します。

@kbd{C-u a} したときに、@code{wl-subscribed-mailing-list} の
アドレスが含まれるメールに対してはメーリングリストにのみ返信したい場合、
次のような設定ができます。

@lisp
@group
(defun wl-mailing-list-addresses ()
  (let (list-addrs)
    (dolist (to (mapcar
		 (lambda (addr)
		   (nth 1 (std11-extract-address-components addr)))
		 (wl-parse-addresses
		  (wl-concat-list
		   (elmo-multiple-fields-body-list (list "To" "Cc"))
		   ","))))
      (when (elmo-string-matched-member to wl-subscribed-mailing-list t)
	(setq list-addrs (cons to list-addrs))))
    (nreverse list-addrs)))

(setq wl-draft-reply-with-argument-list
      '((wl-mailing-list-addresses . (wl-mailing-list-addresses nil nil))
	("Reply-To" . (("Reply-To") nil nil))
	("Mail-Reply-To" . (("Mail-Reply-To") nil nil))
	("From" . (("From") nil nil))))
@end group
@end lisp


@node Thread Format, User-Agent Field, Draft for Reply, Advanced Settings
@subsection スレッドの見ため

@example
@group
  389  09/18(金)01:07 [ てらにし          ] wl-0.6.3
  390  09/18(金)07:25 +-[ 津邑さん          ]
  391  09/18(金)19:24 +-[ 村田さん          ]
  392  09/20(日)21:49 +-[ 奥西さん          ]
  396  09/20(日)22:11 | +-[ 津邑さん          ]
  398  09/21(月)00:17 |   +-[ 津邑さん          ]
  408  09/21(月)22:37 |     +-[ 奥西さん          ]
  411  09/22(火)01:34 |       +-[ 津邑さん          ]
  412  09/22(火)09:28 |       +-[ てらにし          ]
  415  09/22(火)11:52 |         +-[ 津邑さん          ]
  416  09/22(火)12:38 |           +-[ てらにし          ]
  395  09/20(日)21:49 +-[ 奥西さん          ]
  397  09/21(月)00:15 +-[ 奥西さん          ]
@end group
@end example

スレッドの見ためを上記のようにしたい場合の設定は以下の通りです。

@lisp
@group
(setq wl-thread-indent-level 2)
(setq wl-thread-have-younger-brother-str "+")
(setq wl-thread-youngest-child-str       "+")
(setq wl-thread-vertical-str             "|")
(setq wl-thread-horizontal-str           "-")
(setq wl-thread-space-str                " ")
@end group
@end lisp

枝を表示しないようにしたい場合の設定は以下のようにします。

@lisp
@group
(setq wl-thread-indent-level 2)
(setq wl-thread-have-younger-brother-str " ")
(setq wl-thread-youngest-child-str       " ")
(setq wl-thread-vertical-str             " ")
(setq wl-thread-horizontal-str           " ")
(setq wl-thread-space-str                " ")
@end group
@end lisp


@node User-Agent Field,  , Thread Format, Advanced Settings
@subsection User-Agent フィールド
@cindex X-Mailer
@cindex User-Agent

@samp{X-Mailer:} フィールドや @samp{User-Agent:} フィールドに凝りたいと
いう変わった人は、文字列を生成する関数を自分の好きなように定義して、変数 
@code{wl-generate-mailer-string-function} に設定してください。

@samp{User-Agent:} フィールドを短くしたいのであれば、以下の設定をしてく
ださい。

@lisp
@group
(setq wl-generate-mailer-string-function
      'wl-generate-user-agent-string-1)
@end group
@end lisp

以下は設定の例です。

@lisp
@group
(setq wl-generate-mailer-string-function nil)
(setq wl-draft-additional-header-alist
      (list
       (cons 'X-Mailer (lambda () (product-string-1 'wl-version)))))
@end group
@end lisp



@node Customizable Valiables, Hooks, Advanced Settings, Advanced Issues
@section その他のカスタマイズ変数一覧

その他のカスタマイズ変数一覧。

@table @code
@item wl-default-folder
@vindex wl-default-folder
初期設定は @samp{%inbox}。フォルダ移動時などのデフォルト値となります。

@item wl-draft-folder
@vindex wl-draft-folder
初期設定は @samp{+draft}。ドラフトをセーブするフォルダです。
書き込みのできるフォルダを指定する必要があります。
IMAP のリモートフォルダや、Maildir なども指定可能です。
なお、@code{wl-draft-config-exec} で設定された変数は @code{elmo-msgdb-directory}
以下に保存されます。したがって、@code{wl-draft-folder} でリモートのフォルダ
を指定した場合、ドラフトのセーブ前に @code{wl-draft-config-exec} で設定された変数
は別のマシンで @code{wl-summary-reedit} で再編集した時には効果を持ちません。

@item wl-trash-folder
@vindex wl-trash-folder
初期設定は @samp{+trash}。ゴミ箱フォルダです。
この値を変更したときは Wanderlust を再起動することをお勧めします。

@item wl-interactive-exit
@vindex wl-interactive-exit
初期設定は @code{t}。
Non-nil ならば、Wanderlust 終了時に確認を行います。

@item wl-interactive-send
@vindex wl-interactive-send
初期設定は @code{t}。
Non-nil ならば、メール送信時に本当に送信して良いかを確認します。

@item wl-default-sync-range
@vindex wl-default-sync-range
初期設定は @samp{update}。
デフォルトのサマリ更新レンジで、@samp{all}, @samp{update},
@samp{rescan}, @samp{no-sync} のいずれかを指定します。
レンジの意味については @code{wl-summary-sync} の説明を参照して下さい。

@item wl-folder-sync-range-alist
@vindex wl-folder-sync-range-alist
初期設定は、以下の連想リスト。

@lisp
@group
(("^&.*$" . "all")
 ("^\\+draft$\\|^\\+queue$" . "all"))
@end group
@end lisp

@noindent
フォルダ名の正規表現とサマリ更新レンジとの連想リストです。
更新レンジには @samp{all}, @samp{update}, @samp{rescan}, @samp{no-sync}
のいずれかを指定します。マッチしなかった場合は、@code{wl-default-sync-range}
の値(初期値は @samp{update})を使います。
レンジの意味については @code{wl-summary-sync} の説明を参照して下さい。

@item wl-ask-range
@vindex wl-ask-range
初期設定は @code{t}。
@code{nil} なら、フォルダ移動時のサマリ更新で @code{wl-folder-sync-range-alist} 
の値を使用します。

@item wl-mime-charset
@vindex wl-mime-charset
初期設定は @code{x-ctext}。
MIME ではないメッセージの場合 (@samp{Content-Type:} がないメールなど) や、
サマリの表示で用いられる MIME charset です。
(Nemacs とその他の Emacsen でサマリを共有したい場合は、
この値を @code{iso-2022-jp} としてください。)

@item wl-highlight-folder-with-icon
@vindex wl-highlight-folder-with-icon
初期設定は @code{t} です。

@item wl-strict-diff-folders
@vindex wl-strict-diff-folders
フォルダ名の正規表現のリストです。
フォルダモードで @kbd{s} を押すなどして未読のメッセージ数を
チェックした場合、通常は簡易的な方法でチェックしています(処理は速いが、正確ではない)。
この変数にマッチするフォルダは厳密にチェックします。
IMAP4 フォルダに対する条件フィルタフォルダのような場合には、
この変数にマッチするよう設定すると良いでしょう。
初期設定は @code{nil}。

@item wl-folder-use-server-diff
@vindex wl-folder-use-server-diff
フォルダモードで @kbd{s} を押すなどして未読のメッセージ数をチェックした
場合、通常は(サーバ上のメッセージ数) @minus{} (ローカルにあるメッセージ
数)が未読とみなされます。しかし、この変数が non-nil ならば、サーバ上の未
読のメッセージ数をチェックします。IMAP4 フォルダにのみ影響があります。た
だし、変数 @code{elmo-imap4-disuse-server-flag-mailbox-regexp} にマッチ
するメールボックスの IMAP4 フォルダは、この変数にマッチしてもサーバ上の
未読のメッセージ数をチェックしません。初期設定は @code{t}。

@item wl-auto-check-folder-name
@vindex wl-auto-check-folder-name
初期設定は @code{nil}。
起動時に未読数をチェックするフォルダやグループを指定します。
チェックを行ないたいフォルダ(グループ)のリストを指定することもできます。
@code{nil} ならば起動時に Desktop 全体をチェックします。
@code{none} ならば、起動時に何もチェックしません。

@item wl-auto-uncheck-folder-list
@vindex wl-auto-uncheck-folder-list
初期設定は以下のリスト。

@lisp
@group
("\\$.*")
@end group
@end lisp

@noindent
@code{wl-auto-check-folder-name} で指定されたグループに含まれていても
起動時に未読チェックしないフォルダ名の正規表現のリストです。
また、Desktop に対して未読チェックをする際にも、これらのフォルダはスキップされます。

@item wl-auto-check-folder-list
@vindex wl-auto-check-folder-list
初期設定は @code{nil}。
@code{wl-auto-uncheck-folder-list} に指定されていたとしても
例外的に未読チェックしたいフォルダ名の正規表現のリストを指定します。

@item wl-no-save-folder-list
@vindex wl-no-save-folder-list
初期設定は以下のリスト。

@lisp
@group
("^/.*$")
@end group
@end lisp

@noindent
セーブしないフォルダ名の正規表現のリストです。

@item wl-save-folder-list
@vindex wl-save-folder-list
初期設定は @code{nil}。
セーブするフォルダ名の正規表現のリストです。
@code{wl-no-save-folder-list} よりも優先します。

@item wl-folder-mime-charset-alist
@vindex wl-folder-mime-charset-alist
初期設定は以下の連想リスト。

@lisp
@group
(("^-alt\\.chinese" . big5)
 ("^-relcom\\." . koi8-r)
 ("^-tw\\." . big5)
 ("^-han\\." . euc-kr))
@end group
@end lisp

@noindent
フォルダ名の正規表現と MIME charset の連想リストです。
マッチしなかった場合は @code{wl-mime-charset} が使われます。

@item wl-folder-init-load-access-folders
@vindex wl-folder-init-load-access-folders
初期設定は @code{nil}。
初期化時に特定のアクセスグループのみロードする場合に、そのグループのリ
ストを指定します。
@code{nil} の場合は @code{wl-folder-init-no-load-access-folders} が参照されます。

@item wl-folder-init-no-load-access-folders
@vindex wl-folder-init-no-load-access-folders
初期設定は @code{nil}。
初期化時に特定のアクセスグループを除いてロードする場合に、ロードしない
アクセスグループのリストを指定します。
@code{wl-folder-init-load-access-folders} が non-nil の場合は無視されます。

@item wl-dispose-folder-alist
@vindex wl-dispose-folder-alist
初期設定は以下の連想リスト。

@lisp
@group
(("^-" . remove)
 ("^@@" . remove))
@end group
@end lisp

@noindent
処分マーク @samp{d} をつけたメッセージを処分する方針を設定します。
リストの各要素はフォルダと処分先になっており、処分先には次のものが指定で
きます。

@example
@code{remove} or @code{null} : メッセージを即削除する。
string             : 指定したフォルダに移動する。
@code{trash} or その他  : @code{wl-trash-folder} に移動する。
@end example

@item wl-x-face-file
@vindex wl-x-face-file
初期設定は @file{~/.xface}。
エンコード済みの X-Face 文字列を内容とするファイル名です。
@xref{x-face-mule}.

@item wl-demo-display-logo
@vindex wl-demo-display-logo
Non-nil ならばオープニングデモでビットマップのイメージを表示します。
@code{xpm}, @code{xbm} を指定すると(可能ならば)、その画像タイプのイメー
ジを表示します。

@item elmo-nntp-list-folders-use-cache
@vindex elmo-nntp-list-folders-use-cache
初期設定は 600 (秒)。
NNTP において @samp{list} や @samp{list active} の結果を
キャッシュしておく時間を秒単位で指定します。
@code{nil} ならキャッシュしません。

@item elmo-nntp-max-number-precedes-list-active
@vindex elmo-nntp-max-number-precedes-list-active
初期設定は @code{nil}。
NNTP において @samp{list active} の結果得られる記事番号を
フォルダの最大記事番号として利用します。
NNTP サーバとして INN 2.3 などを使用していて、フォルダモードでの既読数
が一致しない場合は @code{t} にしてください。
@c non-nil means?

@item elmo-nntp-default-use-listgroup
@vindex elmo-nntp-default-use-listgroup
初期設定は @code{t}。
Non-nil なら、NNTP において 総記事数を調べるために @samp{listgroup} を使
います。@code{nil} ならば @samp{group} の結果を用います。@samp{group} を使うと、
正確さには欠けますが、若干高速化されます。

@item elmo-pop3-send-command-synchronously
@vindex elmo-pop3-send-command-synchronously
初期設定は @code{nil}。
Non-nil なら POP3 のコマンドを同期的に発行します。サーバによってはこの値を設定しないとサマリ情報を取り出せない場合があるようです。
POP3 参照時に処理がハングするような場合は、@code{t} にすると良いかもしれません。

@item elmo-dop-flush-confirm
@vindex elmo-dop-flush-confirm
初期設定は @code{t}。
Non-nil ならばオフライン処理で溜った処理を実行するかどうかを確認します。

@item elmo-network-session-idle-timeout
@vindex elmo-network-session-idle-timeout
初期設定は @code{nil}。
ネットワークセッションをキャッシュするアイドル時間を秒で指定します。
ここで指定された値よりも長い時間、なにも通信が行なわれなかった場合、
そのセッションは再利用されません。nil なら、無条件に再利用します。
@end table


@node Hooks,  , Customizable Valiables, Advanced Issues
@section フック

(Not yet written)


@node Migration, Terminology, Advanced Issues, Top
@chapter 旧バージョンからの移行
@cindex Migration

この章では、以前のバージョンから移行する場合に必要な設定の変更や、制限等
について説明します。

@menu
* Before 2.12.0::               2.12.0 より前のバージョンからの移行
@end menu


@node Before 2.12.0,  , Migration, Migration
@section 2.12.0 より前のバージョンからの移行

@subsection msgdb の変換について

2.12.0 より前のバージョンから、msgdb の構造が変更されています。以後、新
しく作成したフォルダの msgdb は、この新しい形式で作成/保存されます。以前
の msgdb の形式をそのまま使い続ける場合には、@file{~/.wl} 等に以下の設定
を記述します。

@lisp
@group
(setq elmo-msgdb-default-type 'legacy)
@end group
@end lisp

以前のバージョンで作成された msgdb は、デフォルトの設定ではロードされた時
に自動的に新しい形式の msgdb に変換されます。自動的に msgdb の形式を変換
しないようにするには、以下のいずれかの設定を @file{~/.wl} 等に記述します。

@lisp
@group
;; @r{msgdb をロードした時に @code{elmo-msgdb-default-type} と}
;; @r{異なった形式だった場合に自動的に変換する場合 (デフォルト)}
(setq elmo-msgdb-convert-type 'auto)

;; @r{サマリで @kbd{s all} した時に変換する場合}
(setq elmo-msgdb-convert-type 'sync)

;; @r{変換しない場合}
(setq elmo-msgdb-convert-type nil)
@end group
@end lisp

上述の様に以前の msgdb のまま使い続ける事も出来ますが、その場合には以下
の制限があります。

@enumerate
@item
転送済みマーク (@samp{F}, @samp{f}) が使用出来ません。

@item
@samp{important} 以外のグローバルフラグが使用出来ません。

@end enumerate

@subsection @samp{'mark} フォルダから @samp{'flag} フォルダへの変更

新しいバージョンの Wanderlust を起動した時に @samp{'mark} フォルダにあっ
たメッセージは、@samp{'flag} フォルダに自動的に引き継がれます。但し、こ
うやって引き継いだメッセージには、以下の制限があります。

@enumerate
@item
@samp{'flag} フォルダでメッセージを消しても元のメッセージの 
@samp{important} フラグは消えません。

@item
元のメッセージの @samp{important} フラグを消しても @samp{'flag} フォルダ
からは削除されません。

@item
help-echo で、元のメッセージが表示されません。

@end enumerate

もしも、自動での引き継ぎが上手くいかなかった場合は、@kbd{M-x
elmo-global-mark-upgrade} を実行する事で、再度 @samp{'mark} フォルダから 
@samp{'flag} フォルダにメッセージを取り込む事が出来ます。(重複したメッセー
ジは取り込まないので、何回実行しても問題ありません)


@node Terminology, Mailing List, Migration, Top
@chapter 用語の解説
@cindex Terminology

このマニュアルで使われている用語についての説明をします。

@table @samp
@item フォルダ (folder)
メッセージが格納されているいれものです。

@item グループ (group)
複数のフォルダをまとめた集合です。

@item アクセスグループ (access group)
指定したパス以下のフォルダを自動的に集めてできる、特別なグループを
指します。
@xref{Folder Definition}.

@item サマリ (summary buffer)
メッセージの一覧を表示するバッファです。

@item スティッキーサマリ (sticky summary)
サマリを抜けると、通常のサマリは破棄されますが、
@kbd{q} や @kbd{g} でサマリを抜けても破棄されずに残る、
特別なサマリを指します。
@xref{Sticky Summary}.

@item エクスパイア (expire)
期限切れメッセージを自動的に削除したりアーカイブしたりすること。
@xref{Expire}.

@item スコア (score)
@xref{Scoring}.

@item プリフェッチ (prefetch)
オフラインでメッセージを読むために、あらかじめメッセージをキャッシュ
しておくことをいいます。
@end table


@node Mailing List, Addition, Terminology, Top
@chapter メーリングリスト
@cindex Bug report
@cindex Backtrace

Wanderlust に関する議論は以下のメーリングリストで行われます。
最新バージョンのアナウンスもこちらに流れます。

@display
Wanderlust Mailing List @t{<wl@@ml.gentei.org>}
@end display

ここでは主に日本語での議論が行われています。また、英語専用のリストとして

@display
Wanderlust List in English @t{<wl-en@@ml.gentei.org>}
@end display

もあります(こちらに投稿されたメッセージは前者にも配送されます)。

これらのメーリングリストのガイドを得るには、@t{wl-ctl@@ml.gentei.org} 宛
(英語の方は @t{wl-en-ctl@@ml.gentei.org} 宛) で、本文に

@example
# guide
@end example

@noindent
と書いたメールを送って下さい。

バグ報告やパッチの送付もこれらのメーリングリストへ送ってください。メーリ
ングリストへの送信はメンバになる必要があります。

もしくは、GutHubも利用できます。
プルリクエストを送る場合は、Emacs の様に、コミットメッセージに従来の
@file{ChangeLog} エントリに相当する内容をインデントせずに入力して下さい。
Emacs の @file{CONTRIBUTE} ファイル
@footnote{@uref{https://git.savannah.gnu.org/cgit/emacs.git/plain/CONTRIBUTE}}
にある @cite{Commit messages} セクションを参照して下さい。

また、バグ報告の場合はバックトレースを取って添付すると原因究明しやすくな
ります。 @footnote{バックトレースの取り方は
@uref{http://www.jpl.org/elips/BUGS-ja.html}が参考になります。}

メーリングリストの皆様には貴重な御助言、コードをたくさん御提供いただいて
おります。この場を借りてお礼申し上げます。

@section アーカイブ

メーリングリストに投稿されたメッセージは、NetNews でも読むことができます。

@t{<wl@@ml.gentei.org>} に投稿されたメッセージ

@example
@uref{news://news.gmane.io/gmane.mail.wanderlust.general.japanese}
@end example

@t{<wl-en@@ml.gentei.org>} に投稿されたメッセージ

@example
@uref{news://news.gmane.io/gmane.mail.wanderlust.general}
@end example


@node Addition, Index, Mailing List, Top
@chapter おまけ

@section 略歴

@example
1998  3/05    MH メッセージをスレッド表示するプロトタイプを作ってみる。
      3/10    elisp による msgdb のしくみをつくる。
      3/26    IMAP と NNTP もスレッド表示できるようになる。
      4/13    スレッド表示用モジュールを elmo としてまとめはじめる。
      5/01    0.1.0 ボロボロの initial version が完成。
      6/12    tm-ja ML で、IMAP 対応の elisp メーラを作っている、
              とつい口を滑べらせてしまう。
      6/16    tm-ja, elips ML で 0.1.3 をアナウンス。
      6/22    北目さんのおかげで northeye.org でメーリングリストがスタート。
      7/01    mm-backend 対応(0.3.0)。
      8/25    multi フォルダ追加(0.5.0)。
      8/28    filter フォルダ追加(0.5.1)。
      9/10    スレッドが開閉できるようになる(0.6.0)。
      9/11    fldmgr by 村田さん によりフォルダの編集が簡単に。
      9/18    lha フォルダ追加 by 奥西さん(0.6.3)。
      9/24    スレッドの枝を表示(0.6.5)。
      9/28    圧縮フォルダがマルチアーカイバに対応 by 奥西さん。
     10/28    オフライン処理 (0.7.4)。
     12/09    ベータバージョンに。
     12/21    wl-expire by 村田さん。
1999  2/03    auto-refile by 津邑さん。
      4/28    wl-template by 村田さん。
      5/18    1.0.0 stable リリース。
      7/05    スコア機能 by 村田さん(2.1.0)。
      9/26    プラグ管理システム by 村田さん(2.2.2)。
     12/20    Modified UTF7 対応。
2000  3/24    1.1.0 stable リリース。
      4/03    CVS サーバでの開発を開始。
      5/07    スレッドつなぎ直し機能＆高速化 with 村田さん。
      6/12    LDAP 対応 with 千葉さん＆後藤さん。
      7/11    killed message 機能追加。
      7/18    POP3 を UIDL 対応。
      9/12    biff 機能 with 嵯峨田さん＆山岡さん。
     10/17    expire-hide by 岡田さん。
     11/08    2.4.0 stable リリース。
2001  7/04    2.6.0 stable リリース。
      8/21    wl-addrmgr by 北本さん。
     12/27    2.8.1 stable リリース。
2002 12/11    2.10.0 stable リリース。
2003  7/05    2.10.1 stable リリース。
      9/18    flag フォルダ。
      9/20    新形式 msgdb (modb-standard) by 村田浩也さん。
     10/20    スパムフィルタ by 村田浩也さん。
2004  1/06    デモの背景色指定。
      2/09    'file' フォルダ。
      9/12    forwarded マーク。
              マーク文字列のデフォルト値変更。
     12/24    2.12.0 stable リリース。
@end example

詳しい変遷は @file{ChangeLog} を御覧ください。

@section 名前

Wanderlust には、研究社英和辞典によれば、

@display
wanderlust   wan・der・lust
  ‡ドイツ語 'desire to wander' の意から‡
  −名 放浪癖， 旅行熱， 旅心： have 〜 放浪癖がある．
@end display

@noindent
という意味があります。が、名前にたいして深い意図はありません。
(強いて言えば、IMAP @result{} どこでもメールが読める @result{} 放浪癖 ?)

elmo は、@samp{Elisp Library for Message Orchestration} の略です。
最初はあの赤いぬいぐるみのつもりでしたが、放浪 @result{} 漂流 @result{}
道標 @result{} St.@: Elmo's fire @result{} elmo という、
それっぽい連想も可能です。

@section コードネーム

各バージョンにはコードネームがついています(ほとんど冗談です)。
いまのところ 1980 年代の米ビルボード誌トップ 40 ヒット

(@uref{http://ntl.matrix.com.br/pfilho/html/top40/})

@noindent
からアルファベット順に適当に好きなものをピックアップして使っています。


@node Index,  , Addition, Top
@unnumbered 索引

@menu
* Concept Index::               概念索引
* Key Index::                   キーバインド索引
* Variable Index::              変数索引
* Function Index::              関数索引
@end menu


@node Concept Index, Key Index, Index, Index
@unnumberedsec 概念索引
@printindex cp


@node Key Index, Variable Index, Concept Index, Index
@unnumberedsec キーバインド索引
@printindex ky


@node Variable Index, Function Index, Key Index, Index
@unnumberedsec 変数索引
@printindex vr


@node Function Index,  , Variable Index, Index
@unnumberedsec 関数索引
@printindex fn

@summarycontents
@contents
@bye

@c Local Variables: 
@c fill-column: 72
@c End:
