[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5 楽々整理整頓

1 日に数百のメッセージを受け取るようになると整理整頓が大変になります(え、 そんなに受け取らないですって? 幸せですね :) 。Mew では、‘o’ でメッ セージを整頓する際に、整頓先を推測し初期値として表示してくれます。たと えば、次のようになります。

Folder name (+work/mew-dist): +

もし、() の中の初期値が自分の希望通りであれば、‘RET’ を押すだけで よいのです。整頓先が決定しているメッセージには、‘o’ マークが付きま す。

メッセージを移動できるのは、そのメッセージが属している「世界」の中でのみ です。前述のように世界はケースと修飾子によって定まります。整頓先のフォル ダを指定する場合には、ケースを付けず、同じ修飾子を持つフォルダ名を入力す る必要があります。ケースを付けない理由は、そのメッセージのケースはすでに 定まっているからです。ミニバッファからフォルダ名を入力する際、ケースが "default" でないにも関わらずケースを明示的に入力しないのは、整頓先を指定 する場合のみです。

o’ に似たコマンドに ‘c’ があります。両者の違いは、 See section 整頓 ‘o を参照して下さい。

この整頓先の推測が賢ければ賢い程ユーザは楽になります。Mew では以下のよう な規則が用意されています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 メーリングリスト用のフォルダから推測

あるメーリングリスト宛のメッセージを、そのメーリングリスト名のフォルダに 整理することは多いと思います。Mew ではメーリングリスト宛に届いたメッセー ジに対して、それ用のフォルダを推測する機能があります。

たとえば、+misc/pooh-lovers というフォルダがあったとしましょう。次のよう なメッセージは、このフォルダに整頓すればよい可能性が高いといえます。

To: pooh-lovers@example.org 

このように、To: や Cc: のアドレスが、フォルダ名の一番右側にマッチするも のがないか探すわけです。フォルダを階層化していない人が多いようですが、 Mew を使う限り、階層化しない手はありません。

さて、鋭い人は次のように個人のアドレスが To: や Cc: にある場合、困るので はないかと思うでしょう。

To: piglet@example.org
Cc: pooh-lovers@example.org

たとえば、pooh は pooh-lovers の一員ですから、このメッセージが届きます。 しかし、piglet と仲がいいので、+from/piglet にマッチしてしまいます。

そこで、Mew では無視するフォルダを設定できるようになっています。デフォル トでは、+from 以下を無視します。ですから、個人からのメッセージは +from 以下に収めて下さい

候補が決定できたら

Folder name (+misc/pooh-lovers): +

と訊いてきます。あっていれば ‘RET’ を、違っていればお望みのフォルダ を入力して下さい。

o’ で新しいフォルダを指定すると、そのフォルダが自動的に作成され、 次からは推測用の候補にも加わります。便利でしょ?

この機能を提供する関数は ‘mew-refile-guess-by-folder’ です。

もし、フォルダ名に大文字を使っていないなら、以下の設定により、この関数が 高速になります。

(setq mew-use-fast-refile t)

デフォルトでは、末端のフォルダと中間のフォルダが候補の対象となっていま す。もし、中間のフォルダではなく、末端のフォルダだけを選びたい場合は、 以下のように設定して下さい。

(setq mew-use-node-folder nil)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 指定した規則から推測

フォルダ名から推測する機能だけでは、思うようなフォルダを推測してくれな い場合があります。たとえば、To: が staff@example.jp であるメッセージと To: が staff@example.net であるメッセージに対し、フォルダ名からの推測 では同じフォルダ(たとえば、"+net/staff")が選ばれてしまいます。そこで、 Mew では、変数 ‘mew-refile-guess-alist’ に明示的に規則を設定できま す。(‘mew-refile-guess-alist’ は、必ず新しい書式で書いて下さい。詳 しくは See section 設定の書式 を参照のこと。)

1 つ例を挙げてみましょう。

(setq mew-refile-guess-alist
  '(("To:"
      ("staff@example.jp"  "+jp/staff")
      ("staff@example.net" "+net/staff"))))

これは、メッセージヘッダ中の To: の横の文字列に staff@example.jp があ れば +jp/staff へ、staff@example.net があれば +net/staff へ整頓すると いう意味です。

規則は、以下のように書きます。

rule ::= '<rule>
<rule> ::= ((<key> <alist>) (<key> <alist>) ... [<special>])

全体は (<key> <alist>) のリストです。<key> はフィールド名を書きます。 <alist> は以下のようになります。

<alist> ::= (<value> <folder>|<rule>) (<value> <folder>|<rule>) ...

<value> は <key> で示したフィールドにくる値です。<folder> は <key> にマッ チした際にどのフォルダに整頓するかを意味しています。<folder> の代りに <rule> を再帰的に記述することもできます。

特殊な <key> として ‘nil’ と ‘t’ があります。‘nil’ は、何 も推測できなかった場合に返す <folder> を指定するために用います。‘t’ は、推測した値に加えて返す <folder> を指示するために使います。

<special> ::= (t <folder>) | (nil <folder>)

正規表現を知っている人は、以下のような複雑な規則を設定できます。

(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’ です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 対話関係から推測

Mew には、整頓しようとしているメッセージの親のメッセージが以前整頓された フォルダを選択してくれる機能があります。

たとえば、pooh、piglet、roo との間で、蜂蜜を取りに行こうという話題が盛り 上がったとしましょう。pooh は、+project/honey というフォルダを作って、最 初のメッセージをそこに整頓したとしましょう。以降、3 人の間のメッセージが きちんとした返答であるかぎり、+project/honey を推測してくれます。

あるメッセージをどこに保存したかという情報は、 "~/Mail/.mew-refile-msgid-alist" に保存されています。この情報を過去 何通のメッセージに関して保存するかは、‘mew-lisp-max-length’ で決定 します。初期値は 2000 通です。3000 通にしたい場合は "~/.mew.el" 中で以 下のように設定して下さい。

(setq mew-lisp-max-length 3000)

この機能を提供する関数は ‘mew-refile-guess-by-thread’ です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.4 個人用のフォルダから推測

See section メーリングリスト用のフォルダから推測 で説明したメーリングリスト用のフォルダを推測するに加え て、個人用のフォルダを推測する機能があります。個人用のフォルダは +from 以下にありますから、+from 以下のフォルダを選択する機能だともいえます。以 下の例を考えてみましょう。

To: pooh@example.net
From: piglet@example.org

piglet から pooh にメッセージが来ました。pooh がこの機能を使うと、From: を手がかりに +from/piglet が選択されます。(+from 以下は階層化されていて も構いません。また、フォルダ名はユーザ名だけではなくアドレス全体でも OK です。)

この機能を提供する関数は、‘mew-refile-guess-by-from-folder’ といいます。

次に、pooh が piglet に返答した場合を考えましょう。pooh は自分自身に Cc: していたので、自分にメッセージが戻ってきました。

To: piglet@example.org
Cc: pooh@example.net
From: pooh@example.net

pooh の立場になって考えてみて下さい。このメッセージを +from/pooh に整頓 するか、あるいは +from/piglet に整頓するのかは、好みが分かれるところで しょう。そこで、どちらを選択するのかカスタマイズできるようになっていま す。

mew-refile-guess-from-me-is-special’ が ‘t’ なら、 ‘mew-refile-guess-by-from-folder’ は、From: が自分のアドレスの場合 に、To: と Cc: にあるアドレスをもとに、+from 以下のフォルダを選択します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.5 From: から推測

From: に同一のアドレスを持つメッセージが、かつてどこに整頓されたかによっ て推測する機能があります。

たとえば、piglet は piglet@example.org と p-p-p@example.org の 2 つのア ドレスを持っているとしましょう。どちらのアドレスからメッセージが届いても、 pooh はそれらを +from/piglet に整頓したいと思っています。もちろん、以下 のように明示的に規則を書けば実現できます。

(setq mew-refile-guess-alist
  '(("From:"
      ("piglet@example.org" "+from/piglet")
      ("p-p-p@example.org"  "+from/piglet"))))

しかし、いちいち規則を書くのは面倒です。そこで、まず From: が piglet@example.org であるメッセージを +from/piglet に整頓します。これ でフォルダ +from/piglet が作成されます。次に、From: が p-p-p@example.org で あるメッセージを +from/piglet に整頓したとします。ここで Mew は、 p-p-p@example.org が +from/piglet に整頓されたことを学習します。以後 From: が p-p-p@example.org であるメッセージを整頓しようとすると、+from/piglet を 選択するようになります。

その他、機械からくるメッセージは、いつも +adm/misc に入れることにしたい 場合なども、明示的な規則を書かずに済ませられます。

From: とフォルダの情報は、"~/Mail/.mew-refile-from-alist" に保存されてい ます。この情報を過去何通のメッセージに関して保存するかは、 See section 対話関係から推測 と同様に ‘mew-lisp-max-length’ で決定します。

この機能を提供する関数は ‘mew-refile-guess-by-from’ です。

mew-refile-guess-from-me-is-special’ が ‘t’ の場合、 ‘mew-refile-guess-by-from’ は ‘mew-refile-guess-by-from-folder’(See section 個人用のフォルダから推測)と同様な動 きをします。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.6 Newsgroups: から推測

ニュースをメールとして受信して Mew で読んでいる人のために、Newsgroups: からフォルダを推測する機能を用意しました。関数名は ‘mew-refile-guess-by-newsgroups’ です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.7 デフォルトの規則

デフォルトの規則は、From: からユーザ名を切り出して、‘+from/user’ を選ぶようになっています。ただし、 ‘mew-refile-guess-strip-domainpart’ が ‘nil’ ならアドレスを切 り出すので、‘+from/user@domain’ が選択されます。 ‘mew-refile-guess-strip-domainpart’ の初期値は ‘t’ です。

関数名は、‘mew-refile-guess-by-default’ です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.8 規則の制御

Mew では、フォルダ推測の規則を 2 つの変数、‘mew-refile-guess-control’ と ‘mew-refile-ctrl-multi’ で制御します。 ‘mew-refile-guess-control’ は、呼び出す関数を順に定義します。候補を 複数にしたい場合は ‘mew-refile-ctrl-multi’ を ‘t’ に、単数にし たい場合は ‘nil’ に設定します。

標準では、‘mew-refile-guess-control’ は以下のように宣言されています (宣言なので ‘defvar’ が使われています)。

(defvar mew-refile-guess-control
  '(mew-refile-guess-by-alist
    mew-refile-ctrl-throw
    mew-refile-guess-by-newsgroups
    mew-refile-guess-by-folder
    mew-refile-ctrl-throw
    mew-refile-ctrl-auto-boundary
    mew-refile-guess-by-thread
    mew-refile-ctrl-throw
    mew-refile-guess-by-from-folder
    mew-refile-ctrl-throw
    mew-refile-guess-by-from
    mew-refile-ctrl-throw
    mew-refile-guess-by-default))

Mew は ‘mew-refile-guess-control’ に並べられた関数を順番にすべて実 行します。各々の関数が複数の候補を推測することがあります。

mew-refile-guess-control’ の動作例として以下を考えてみましょう。

mew-refile-guess-by-alist

が +aaa、+bbb を推測。

mew-refile-guess-by-folder

が +ccc、+ddd を推測。

mew-refile-guess-by-default

が +eee を推測。

+aaa 〜 +eee すべてをユーザに提示して欲しい場合は、 ‘mew-refile-ctrl-multi’ を ‘t’ に、+aaa だけを提示して欲しい場 合は、‘nil’ に設定します。

また、+aaa 〜 +ddd は提示して欲しいけれどもそれ以降はいらない、つまり、 +eee を提示するのは先に実行された関数群が何も推測できなかったときだけに したい場合は、‘mew-refile-ctrl-multi’ を ‘t’ にして、 ‘mew-refile-guess-by-folder’ と ‘mew-refile-guess-by-default’ の間に ‘mew-refile-ctrl-throw’ を入れて下さい。

C-uo’ は、この推測の流れを Message バッファに表示します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.9 自動で整理整頓

毎日メッセージをたくさんもらう人は、まだ整頓していないメッセージを +inbox (あるいは %inbox) フォルダに大量に溜めてしまうことがあります。そ んなときは、「メッセージ達よ、とにかくこのフォルダからどこかに行ってしま え」と叫びたくなることがあるでしょう。Mew は、そんなわがままな人を満足させ るための自動整理整頓関数を提供しています。:) ‘M-o’ がその呪文です。

この関数を実行すると、現在のフォルダ内の特定のメッセージに対して、自動的 に ‘o’ マークを付けてくれます。特定のメッセージとは、 ‘mew-refile-auto-refile-skip-any-mark’ が ‘nil’ なら、‘o’ や ‘D’ マークが付いていないメッセージです。 ‘mew-refile-auto-refile-skip-any-mark’ が ‘t’ なら、なにもマー クが付いてない(既読)メッセージです。 ‘mew-refile-auto-refile-skip-any-mark’ の初期値は ‘nil’ です。

C-uM-o’ は、‘mew-refile-auto-refile-skip-any-mark’ の値とは関 係なく ‘*’ マークの付いたメッセージを対象にします。

整頓先の決定には、先に説明した推測関数群が働くようになっています。この関 数は、‘o’ を付けるだけですので、‘x’ を押さない限り実際にメッセー ジがどこかに行ってしまうことはありません。

Mew の整頓先推測はあまりにも賢すぎるので、この機能には仇となってしまい ます。というのは、Mew が推測機能をフルに使って勝手に整頓してしまうと、 大抵のユーザはどこにメッセージが整頓されたか分からなくなってしまうか らです。:) そのために、Mew が使う推測関数を制限する機能が提供されてい ます。前に出てきた宣言をもう一度思い出して下さい。

(defvar mew-refile-guess-control
  '(mew-refile-guess-by-alist
    mew-refile-ctrl-throw
    mew-refile-guess-by-newsgroups
    mew-refile-guess-by-folder
    mew-refile-ctrl-throw
    mew-refile-ctrl-auto-boundary
    mew-refile-guess-by-thread
    mew-refile-ctrl-throw
    mew-refile-guess-by-from-folder
    mew-refile-ctrl-throw
    mew-refile-guess-by-from
    mew-refile-ctrl-throw
    mew-refile-guess-by-default))

mew-refile-guess-control’ の中に ‘mew-refile-ctrl-auto-boundary’ という関数があります。これがその仕 掛です。自動整理整頓のときに限り、Mew はこの関数より下に記述してある推測 を無視します。‘mew-refile-ctrl-auto-boundary’ より上に記述している 関数が何も推測できなかった場合は、そのメッセージには ‘o’ が付きませ ん。破滅が訪れる前に ‘mew-refile-ctrl-auto-boundary’ の御札を貼って 下さい。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.10 世界を越えたメッセージのコピー

これまで説明した整頓とは、同じ世界の中でメッセージを移動させることでし た。これに対し、ある世界から他の世界へメッセージを移動させたいこともあ るでしょう。これは、ある世界から他の世界へメッセージへコピーし、その後 元のメッセージを削除することで実現できます。ここでは、ある世界から他の 世界へメッセージへコピーする方法について説明します。

あるフォルダのメッセージをローカルフォルダへコピーしたくなることがあり ます。この場合 ‘lc’ を利用して下さい。‘lc’ は、リモート・フォ ルダで実行された場合、キャッシュされたメッセージから、そのリモート・フォ ルダに特有の情報をヘッダから取り除き、ローカル・フォルダへコピーします。 (‘lc’ は、ローカルフォルダでも実行できます。この場合、同じ世界内で のコピーになります。)

あるフォルダのメッセージを IMAP のフォルダ(サーバ側)へコピーするには、 ‘li’ を利用します。

*’ の付いた複数のメッセージをローカル・フォルダへコピーするには ‘mlc’ を使います。また、‘*’ の付いた複数のメッセージを IMAP フォルダへコピーするには ‘mli’ を利用して下さい。

ある世界から他の世界へメッセージへコピーするコマンドを以下にまとめます。

lc

あるフォルダのメッセージをローカルフォルダへコピーする。

mlc

*’ の付いた複数のメッセージをローカル・フォルダへコピーする。

li

あるフォルダのメッセージを IMAP のフォルダへコピーする。

mli

*’ の付いた複数のメッセージを IMAP フォルダへコピーする。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on March 8, 2012 using texi2html 5.0.