Expire とは、指定した期間を過ぎた古いメッセージを削除する機能です。
しかし、wl-expire
ではメッセージを単純に消すだけではなく、指定したアーカ
イブフォルダに移動することも出来ます。
wl-expire-alist
を設定して、フォルダモードで e、もしくはサマ
リモードで M-e を押します。
wl-expire-alist
の設定
次にwl-expire-alist
の設定例を示します。このwl-expire-alist
の書き方一つで expire の実施方法が大きく変わりますので、慎重に設定してく
ださい。最初のうちはwl-expire-use-log
を t
にセットしておく
と良いでしょう。
(setq wl-expire-alist
'(("^\\+trash$" (date 14) remove)
;; 削除する。
("^\\+tmp$" (date 7) trash)
;; wl-trash-folder
にリファイルする。
("^\\+outbox$" (number 300) "$outbox;lha")
;; 特定のフォルダにリファイルする。
("^\\+ml/tmp$" nil)
;; expireしない
("^\\+ml/wl$" (number 500 510) wl-expire-archive-number1 t)
;; 番号ごとにアーカイブする(番号は保持する)。
("^\\+ml/.*" (number 300 310) wl-expire-archive-number2 t)
;; 一定数ごとにアーカイブする(番号は保持する)。
("^\\+nikki$" (date 30) wl-expire-archive-date)
;; 年月ごとにアーカイブする(番号は保持しない)。
))
各リストの要素は
(フォルダの正規表現 削除メッセージの指定 削除先)
となっています。リストの先頭からフォルダの正規表現にマッチするかど
うかを調べます。もし、フォルダの正規表現にマッチしないフォルダで、
expire を実行しても何もしません。また、2,3 番目の要素のいずれかが
nil
であれば expire しません。
削除メッセージの指定には次のものを指定します。
(number n1 [n2])
wl-summary-expire-reserve-marks
で指定したメッセージ(重要マー
クや新規・未読マークの付いたメッセージ)は削除しないようになっていますが、
もし、wl-expire-number-with-reserve-marks
が non-nil の場合、この
ようなメッセージも含めて 500 個になるように expire されます。nil
の場合は上記メッセージ以外で 500 になるように expire します。
(date d1)
削除先には次のものを指定します。
remove
hide
trash
wl-trash-folder
に移動します。
wl-summary-expire-reserve-marks
で
指定したメッセージも含んだリストが渡されますので、独自に関数を作る場合は
注意してください。
ここで指定できる関数には、標準で次の4つが用意されています。そのうち
3つは指定した方法でアーカイブフォルダにメッセージを移動するもので、
古いメッセージをフォルダから削除しながら別ファイルに圧縮して保存
しておくことができます。
残り1つはメッセージを MH フォルダに振り分けるものです。
wl-expire-archive-number1
wl-expire-archive-files
を 200 にすると、`wl-00000.zip',
`wl-00200.zip', `wl-00400.zip', ... にリファイルしていきま
す。
リファイル先のアーカイブフォルダは削除元のフォルダ名により次のように決定
されます。(このとき、アーカイブフォルダは elmo-archive-treat-file
が non-nil の場合として扱われます)
wl-expire-archive-folder-prefix
により、
アーカイブフォルダに付ける prefix を制御できます。
wl-expire-archive-folder-prefix
の説明を良く見ておいてください。
wl-expire-archive-number2
wl-expire-archive-number1
と同じように決定されます。
wl-expire-archive-date
$folder-199812;zip
にリファイル
されます。なお、日付の部分以外のアーカイブフォルダ名は
wl-expire-archive-number1
と同じように決定されます。
また、上記の3つの標準関数では wl-expire-alist
での第1引数に
non-nil を指定すると、フォルダのメッセージ番号をそのまま保存することがで
きます。例えば、次のように関数名の後に続けて指定します。
("^\\+ml/wl$" (number 300 310) wl-expire-archive-number1 t)引数を指定しない場合は、各アーカイブフォルダごとに 1 から順に番号が与え られて保存されます。
wl-expire-localdir-date
削除先に remove
や trash
、フォルダ名、標準関数のいずれを指
定した場合でも、wl-summary-expire-reserve-marks
で指定したマークの
メッセージ(以下、reserveメッセージと呼びます)は残すようになってい
ます。
この変数にはデフォルトで、重要マーク、新規マーク、未読マークが設定されて いますので、これらのマークのついたメッセージは削除されないことになります。 ただし、この変数には一時的マークは指定できないため(すなわち削除されるた め)、expire を実行する前に一時的マークは処理しておいてください。
サマリに移動すると自動的に expire を実行するには次のような設定を行います。 ただし、この場合は確認せずに自動実行するため、フォルダの正規表現などに誤 りがないかどうかを十分確認してから設定して下さい。
(add-hook 'wl-summary-prepared-pre-hook 'wl-summary-expire)
また、フォルダモードで各フォルダごとに expire を実行できるのはもちろん、
グループ単位の実行も可能です。従って、`Desktop' グループを指定すれ
ばwl-expire-alist
にマッチする全てのフォルダで expire が実行されま
す。
上記の標準関数 wl-expire-archive-number1
などで作成したアーカイブ
フォルダを扱う場合は、変数 elmo-archive-treat-file
を non-nil に設
定しておく必要があります。
remove
を指定する場合は、まず trash
にして期待通りにメール
が wl-trash-folder
に移動されることを確認してから remove
に変えるとよいでしょう。いきなり remove
を指定するのは危険です。
また、wl-expire-archive-number1
などの関数を利用する場合、まずは使
用するアーカイバタイプ(zip
や lha
)などのフォルダを試しに作
って、正しく追加できるかどうかを確認してください。たとえ、
wl-expire-alist
や elmo-archive
の設定が正しくても、アーカ
イブプログラムが正しく動かなければどこにも保存されずにメッセージが消えて
しまうかも知れません。
アーカイブフォルダの動作が確認でき、実際に expire を実行するようになれば、
ログを活用してください。wl-expire-use-log
を t
にすると、
`~/.elmo/expired-log'には以下のように記録されます。
delete +ml/wl (593 594 595 596 597 598 599) move +ml/wl -> $ml/wl-00600;tgz;wl (600 601 602)
最初の項目は動作を示すもので、`delete', `copy', `move' が あります。次が expire を実行したフォルダ名で、`copy' と `move' の場合は`->'に続けてコピーもしくは移動先のフォルダ名が記録されます。 最後の項目は、実際に削除や移動されたメッセージ番号のリストです (`copy' や `move' の場合、移動後ではなく移動前のメッセージ番号 です)。
標準で用意されている3つの関数では、reserve メッセージはアーカイブフォルダ
にコピーしますが、元のフォルダからは削除しないようになっています。なお、
重要マークなどは常に残るため、何度もコピーされることがないように
`~/.elmo/expired-alist' に記録するようにしています。
ただし、reserve メッセージが refile 対象になったときのみです。
また、wl-summary-archive
などでコピーされる場合は記録されません。
ログ機能を有効にしていた場合は、リファイル時には通常 `move' が記 録されますが、reserve メッセージが含まれていると、`copy' と `delete' に分けて記録されます。これは reserve メッセージを含めたメッ セージをコピーした後、reserve メッセージを除いたメッセージを削除する、 という処理を行っているためです。
wl-expire-alist
nil
。
expire を行うフォルダと expire 方法の指定を行います。詳しくは上記の
wl-expire-alist
の設定をご覧下さい。
wl-summary-expire-reserve-marks
(list wl-summary-important-mark wl-summary-new-mark wl-summary-unread-mark wl-summary-unread-uncached-mark wl-summary-unread-cached-mark)expire を行っても、フォルダには残しておくメッセージのマークを指定します。 マークには永続的マークのみ指定できます。 一時的マークは指定できません。 デフォルトのようにリストで指定するとそのマークのメッセージを残すことがで きる他、以下の指定もできます。
all
wl-summary-read-uncached-mark
が含まれます。
none
wl-expire-archive-files
wl-expire-number-with-reserve-marks
nil
。
Non-nil にすると、
削除メッセージの指定で number
を指定したとき、
残しておくメッセージ数に wl-summary-expire-reserve-marks
で設定さ
れたメッセージを含めます。
wl-expire-archive-get-folder-function
wl-expire-archive-get-folder
。
削除先の標準関数でアーカイブフォルダ名を取得する関数を指定します。
次の3つの変数により簡易なフォルダ名の変更できますが、もっと複雑な指定を
したい場合は新たに関数を作ってこの変数に設定します。
関数wl-expire-archive-get-folder
のカスタマイズ変数には次の
ものがあります。
wl-expire-archive-folder-name-fmt
wl-expire-archive-folder-type
wl-expire-archive-folder-prefix
wl-expire-archive-folder-name-fmt
wl-expire-archive-number1
およびwl-expire-archive-number2
で
使用されるアーカイブのフォルダの format
形式の文字列を指定します。
なお、2度 format
で指定するため、
かならず番号の部分は `%%d' にしなくてはなりません。
もし、変更する場合は wl-expire-archive-folder-num-regexp
も合わせるようにしてください。
wl-expire-archive-date-folder-name-fmt
wl-expire-archive-date
で使用されるアーカイブのフォルダの format
形式の文字列を指定します。
なお、2度 format
で指定するため、
必ず番号の部分は `%%d' にしなくてはなりません。
また、メッセージの年と月が与えられるため、`%%d' は2つ必要です。
もし、変更する場合は wl-expire-archive-date-folder-num-regexp
も合わせるようにしてください。
wl-expire-archive-folder-type
zip
。
アーカイブフォルダのアーカイバタイプを指定します。
wl-expire-archive-folder-prefix
nil
。
アーカイブフォルダに付ける prefix を指定します。
ただし、アーカイブフォルダに prefix (ディレクトリ構造)を付ける仕様は
おまけ機能ですので、取り扱いは慎重に行って下さい。
最悪の場合,アーカイブファイルを壊す恐れがあります。
nil
short
t
wl-expire-archive-folder-num-regexp
elmo-list-folders
による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
wl-expire-archive-folder-name-fmt
に対応して設定してください。
wl-expire-archive-date-folder-num-regexp
elmo-list-folders
による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
wl-expire-archive-date-folder-name-fmt
に対応して設定してください。
wl-expire-delete-oldmsg-confirm
t
。
Non-nil の場合、既に存在しているアーカイブフォルダの最大メッセージ番号よりも
古いメッセージがあった場合に確認してから削除します。
nil
の場合は確認せずに削除します。
なお、標準関数の引数に non-nil を指定して番号を保持するようにした場合の
み有効です。
wl-expire-use-log
nil
。
Non-nil にすると、`~/.elmo/expired-log'に expire の実行結果を記録します。
なお、ファイルに追加していく一方なので、適当に手で消す必要があります。
wl-expire-add-seen-list
t
。
Non-nil の場合、expire によりメッセージをリファイルした場合、既読情報を
リファイル先のフォルダに伝えるようにします。
ただし、リファイル先のフォルダを Wanderlust 上から読まないと、
`~/.elmo/'以下にある `seen' ファイルが大きくなっていくので、
アーカイブフォルダなどに単に保存しておくだけなら
nil
に設定しておくと良いでしょう。nil
に設定しても、
リファイルしたアーカイブフォルダを読むときに新規メッセージ扱いされるだけで、
expire などの動作には影響はありません。
wl-expire-folder-update-msgdb
t
。
t
の場合、フォルダモードで expire を実行するときに、
サマリ情報を update してから expire を実行する。
また、フォルダ名の正規表現のリストを指定した場合は、マッチしたフォルダの
みサマリ情報を update する。
Go to the first, previous, next, last section, table of contents.