[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 メーリングリストの案内