フォルダ名から推測する機能だけでは、思うようなフォルダを推測してくれない 場合があります。たとえば、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' です。