[Mew-dist 16101] Re: Pick in thread, Virtual in virtual

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 1月 29日 (月) 12:33:28 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [Mew-dist 16098] Re: Pick in thread, Virtual in virtual
Message-ID: <20010129.115853.59727818.kazu at example.com>
Date: Mon, 29 Jan 2001 11:58:08 +0900

kazu> 白井さん、ざっと見ましたが、

## 素早い。とか言ってみる :-)

kazu> From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
kazu> Subject: [Mew-dist 16067] Pick in thread, Virtual in virtual
kazu> 
kazu> > thread folder で mew-summary-search-mark() を virtual mode で
kazu> > mew-summary-virtual() を出来るようにしてみました。
kazu> 
kazu> virtual モードに、同じフォルダからのメールしかないと仮定しているので、
kazu> ダメっぽいです。複数のフォルダから Virtual モードが作成されている場合
kazu> に破綻します。

thread folder はもとの folder と一対一に対応しているから、Pick
出来ますよね。"++inbox" となっていたら "+inbox" を対象(*3)に
grep を動かせば良いだけでしょう。
mark づけをするときは、単純に re-search-forward する、というわけ
にはいきませんので、速く動作するように考えてみました。(結構、お
気に入り)
 
thread ではない virtual folder は、当然もとの folder と 一対一に
は対応していないからは Pick は出来ません。しかし、virtual folder
は作れます。(本当ですよ)
そのときに、入力ミスを減らすため、実在の folder が
mew-input-folders() するときの default folder になるようにしてい
ます。

kazu> > 2. eob で mew-summary-goto-message() すると nil が帰ってくるので、
kazu> >  ガードした。(*1)
kazu> 
kazu> この意図は何でしょう?

mew-summary-search-mark() で (*3) の様にもとの folder 名を得るの
に二通りの方法が考えられます。

一つ目は

(let ((folder (mew-summary-folder-name 'ext))
  ...
  (if (mew-thread-p)
      (setq folder (substring folder 1)))
  ...

で、二つ目は

(let ((folder (mew-input-folders (mew-summary-folder-name))

です。ここで、二つ目の方法を採用すると、thread folder の
(end-of-buffer) にいるときに 

(mew-input-folders (mew-summary-folder-name))

を動かすと、summary で message が存在するしないから 'nil' が
default 値になります。そこで、(eobp) なら一行上に行って sumary
の最終行の message の "\r +inbox 100" から folder name を取って
来られるようにしました。

また、上記の一つ目の方法は thread 上での pick の時は問題ないので
すが、Virtual folder から Virtual するときは "+virtual" などとい
う名前になってしまうので、ともに二つ目の方法を採用してみました。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内