[mew-dist 18858] Re: sort
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2001年 9月 11日 (火) 16:14:35 JST
From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 18854] Re: sort
Message-ID: <20010911.154035.68537604.kazu at example.com>
Date: Tue, 11 Sep 2001 15:40:35 +0900 (JST)
kazu> > の対策をしてみました。ちなみに以下の実験をして、速度の低下が無い
kazu> > ことを確かめています。
kazu>
kazu> とりあえず、白井さんのパッチを参考に、番号の桁に留意するようにしました。
kazu> mark の意味が分っていないので、白井さんの意図に反しているかもしれませ
kazu> ん。
えっと、なぜ marker をつかったかというと、たとえば、
mew-summary-sort-rename() の
((<= pos beg)
(setq line (buffer-substring beg end))
(delete-region beg end)
(goto-char pos)
(insert (mew-sort-adjust-number form dst line))
end)
で説明すると、beg-end を取り込んで、beg より前の pos の位置に挿
入します。
しかし、mew-sort-adjust-number() の結果、桁あふれしていた
beg-end の line が桁以内におさまったとすると、delete-region() し
たものより、insert() したものの方が小さくなるので、end がずれて
しまいます。
(-2 num) で、100 を 90 にいれるとすると、
89 09/11/2001 ....
91 09/11/2001 ....
100 09/11/2001 ....
~~~ <- 桁あふれ
end は 91 の行の先頭
↓
89 09/11/2001 ....
90 09/11/2001 .... <= 一文字分短くなるので、end はこの行の最後を示す
91 09/11/2001 ....
この不一致が原因で、次がおかしくなります。これを安易に解消するた
め marker を使ったのでした。かずさんが『桁あふれを考慮していない
コード』といったのはこれのことだと思っていた ^^;;;
--
白井秀行 (mailto:shirai at example.com)
## 当然ですが、桁あふれ対策が効いた summary の line は右端がずれ
## ますが、ぼくのコードは message number が破綻するより 1000倍ま
## し、という考え方をしています。
Mew-dist メーリングリストの案内