フォルダ名から推測する機能だけでは、思うようなフォルダを推測してくれない 場合があります。たとえば、To: が staff@mew.org であるメッセージと To: が staff@iijlab.net であるメッセージに対し、フォルダ名からの推測では同 じフォルダ(たとえば、"+net/staff")が選ばれてしまいます。そこで、Mew では、 変数 `mew-refile-guess-alist' に明示的にルールを設定できます。
1つ例を挙げてみましょう。
(setq mew-refile-guess-alist
'(("To:"
("staff@mew.org" . "+net/mew/staff")
("staff@iijlab.net" . "+net/iijlab/staff")
)))
これは、メッセージヘッダ中の To: の横の文字列に staff@mew.org があれば +net/mew/staff へ、staff@iijlab.net があれば +net/iijlab/staff へ整頓す るという意味です。
ルールは、以下のように書きます。
rule ::= '((<key> <alist>) (<key> <alist>) (<key> <alist>) ...)
全体は (<key> <alist>) のリストです。<key> はフィールド名を書きます。 <alist> は以下のようになります。
<alist> ::= (<value> . <folder>|<rule>) (<value> . <folder>|<rule>) ...
<value> は <key> で示したフィールドにくる値です。<folder> は <key> にマッ チした際にどのフォルダに整頓するかを意味しています。<value> と <folder> を `.' で区切るのを忘れないで下さい。<folder> の代りに <rule> を再 帰的に記述することもできます。
特殊な <key> として `nil' と `t' があります。`nil' は、何 も推測できなかった場合に返す <value> を指定するために用います。`t' は、推測した値に加えて返す <value> を指示するために使います。
正規表現を知っている人は、以下のような複雑なルールを設定できます。
(setq mew-refile-guess-alist
'(("Newsgroups:"
("^nifty\\.\\([^ ]+\\)" . "+Nifty/\\1")
(".*" . "+rec/news"))
("To:"
("\\(inet\\|wide\\)@wnoc-fuk" . "+wide/\\1-wnoc-fuk"))
("From:"
("uucp@" . "+adm/uucp")
("ftpsync@" . "+adm/ftpsync"))
(nil . "+unknown")))
この機能を提供する関数は `mew-refile-guess-by-alist' です。