Saving Messages *************** 一般に、メッセージは、メッセージだけが含まれるファイルに保存されます。こ ういうファイルのことをフォルダ("folder")といいます。 VM でメッセージをフォルダにセーブするコマンドは `s'(`vm-save-message') です。このコマンドで今選択しているメッセージをミニバッファで答えたフォル ダにセーブします。`vm-save-message' に数値の引数 N を与えると、今選択し ているメッセージと、そこから N-1 個のメッセージをフォルダに保存します。N が負の時には今のメッセージから、N-1 個のメッセージをセーブします。 `vm-save-message' でセーブされたメッセージには"filed"のフラグが立ちます。 `vm-confirm-new-folders' の値が non-`nil' である時、VM は新しいフォルダ にメッセージを保存しようとすると、新しいフォルダを作る前に確認を求めてき ます。 全てのメールフォルダを一つのディレクトリに集めておく時、 `vm-folder-directory' にそのディレクトリを入れておくと良いでしょう。この 変数がセットされていると、`vm-save-message' はミニバッファでフォルダ名を 尋ねる時にこのディレクトリをあらかじめミニバッファに表示してくれます。こ れでタイピングをいくらか減らせます。 メッセージを保存するフォルダを選択する助けになるものがもう一つあります。 `vm-auto-folder-alist' がそれです。この変数には次のようなフォーマットの リストを入れます。 ((HEADER-NAME (REGEXP . FOLDER-NAME) ...) ...) HEADER-NAME と REGEXP には文字列が、FOLDER-NAME には、文字列あるいは文字 列を生成する S 式を入れます。 HEADER-NAME で指示されたヘッダに REGEXP で示される正規表現と合うものが入っ ている時に、VM は該当する FOLDER-NAME を評価しその値をメッセージをセーブ する時のデフォルトとします。もし、FOLDER-NAME の評価の結果出てくるものが 相対的な path で表されるものであった時には `vm-folder-directory' かある いはこれの値が `nil' である時には今選択しているフォルダのある `default-directory' を足します。 FOLDER-NAME が評価される時、カレントバッファは HEADER-NAME で示されるヘッ ダの内容だけを含みます。これはこのバッファの変更に対する安全のためです。 buffer-substring 関数でヘッダの情報をもとにフォルダ名を作るのに正規表現 の `\( ...\)' のグルーピングの情報を使うことも出来ます。FOLDER-NAME の評 価結果がリストになったら、そのリストが新たな auto-folder-alist として使 われ、再帰的に評価されます。 大文字小文字を区別して判定するか否かは `vm-auto-folder-case-search' の値で決まります。non-`nil' が代入されている時には大文字小文字を区 別しません。デフォルトの値は `t' で大文字小文字を区別します。ただし、 ヘッダの名前は大文字小文字の区別なくマッチします。というのは RFC 822 で ヘッダの名前は大文字小文字を区別しないというのが決まっているからです。 VM がメッセージをフォルダにセーブする時、次の二つの方法のどちらかを使っ てセーブします。メッセージを直接ディスク上のファイルに書き出す方法と、一 旦フォルダを Emacs 上のバッファに取り込んで、そこに付け加える方法です。 後者の方法でセーブした場合、自分自身でディスク上のフォルダのコピーへの書 き出しをしなくてはなりません。`vm-visit-when-saving' という変数がこのど ちらを使うかを決めます。`t' が代入されている時、VM はセーブする前に常に 一旦該当するフォルダをバッファに取り込みます。(つまり後者の方法です。) `nil'が設定されている時には直接フォルダファイルに書き加えます。この場合 VM は既に Emacs のバッファ上に取り込まれているフォルダファイルに書き出す ことはありません。この制限は バッファとディスク上のコピーとの同一性を保 ために必要です。VM-VISIT-WHEN-SAVING が `t' でも `nil' でもない (例えば、 デフォルトの値、0) の時、VM はフォルダがバッファに読み込まれている時には バッファに、また、そうでない時にはファイルに直接に書き出します。 メッセージをフォルダに書き出した後、普通はそのメッセージを消去しますよね。 `vm-delete-after-saving' が non-`nil' に設定されている時には VM はメッセー ジをセーブした後、セーブしたメッセージの"delete"フラグを立てます。これは フォルダへの書き出しの時にだけ有効で、w (後述)では効きません。 他のコマンド: w (`vm-save-message-sans-headers') メッセージをヘッダ抜きでセーブします。このコマンドには `vm-save-message' と全く同じ動作をする引数を与えることが出来ます。 このようにしてセーブされたメッセージには "written" フラグが立ちます。 A (`vm-auto-archive-messages') まだファイルされていないメッセージを、`vm-auto-folder-alist'を用い て適当なフォルダにセーブします。削除フラグが設定されているメッセージはこ のコマンドではセーブされません。前置引数(C-u)付きで起動されると、セーブ する度に確認を求めてきます。 | (`vm-pipe-message-to-command') 今選択しているメッセージの一部分あるいは全体を入力として shell command を 起動します。デフォルトではメッセージ全体が与えられます。 C-u 一つの後で起動されると、メッセージの本文が渡されます。 C-u 二つの後で起動されると、ヘッダの部分が渡されます。 shell command が何か出力してくると、それは `*Shell Command Output*' バッファに表示されます。メッセージそのものは変更されません。