[Mew-dist 15187] Re: thread
Shun-ichi TAHARA ( 田原 俊一 )
jado at example.com
2000年 11月 29日 (水) 00:25:53 JST
From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
Message-Id: <20001128.185103.68562143.shirai at example.com>
> 古いメールが入っている folder(*1) で実験したところ、300 通ぐらい
> のメールがあるのに
>
> (setq mew-use-complete-thread t)
> => 10通ぐらいしか表示されない。
>
> (setq mew-use-complete-thread nil)
> => 80通ぐらいしか表示されない。
>
> という folder を見つけました。(残業時間だし)追求してみると
うちでも、+trashに1600通ほど入っているくせに、threadにすると200通程度
しか出ないという状態でした。
+trashの全行で
(and (looking-at mew-regex-thread) (mew-match 1))
を実行して my-id 相当を抜き出してみると、
・Message-Id:に空白が混じっているもの
(mew-regex-thread に引っかからないのでnilになる→threadで表示されない)
・Message-Id:がないもの
(へッダが長すぎてmewlsが切り捨てたため、Message-Id:とSubject:が空白)
というものがそれぞれ1通ずつありました。
問題は後者で、my-id が "" になりますが、この場合、
(set (intern my-id db) me)
しても、db のどこにも me が格納されないようです。
このメッセージはどこのスレッドにも属していないものですが、これが thread
の生成にどう影響するのかはまだ追いきれていません。
> mew-summary-thread-region() 内で
>
> (if (not (looking-at mew-regex-thread))
> (forward-line)
> (setq my-id (mew-match 1))
> (if (string= my-id "")
> (setq my-id (make-temp-name "foo")))
> とか
> (setq my-id "foobar"))
>
> なことをすると、問題なく(問題があるメールも含め)すべて表示されま
> した。わざわざ make-temp-name しなくても大丈夫だったのだけど、こ
> の辺りのことは良くわかっていません。
おそらく、
(set (intern my-id db) me)
で、きちんと db に me が突っ込まれる必要がありそうですので、my-id が
"" でないことが肝心なのでしょう。ハッシュの性質から見て、unique でなく
ても問題はないと思います。
# いや、もちろん、my-id がユニークじゃないと正しく thread を生成できな
# いでしょうけど。
というわけで、上記の変更でこちらでも問題なく thread が生成できました。
Message-Id: に空白が入っていた 1通だけは表示されていませんが、これはそ
のようなコーディングがされているので問題ではないと思っています。
# 次のバージョンで解決されそうな感じですし。
ちなみに、(make-temp-name "foo") ではあんまりなので、せめて、
(make-temp-name "null") とか (make-temp-name "dummy") とかの方がいいか
な。単にキモチの問題ですが。
--
田原 / jado at example.com
Mew-dist メーリングリストの案内