07/11/10 23:28:06 2a7tz7Mw0
>>677
ファイルを開いた時点で全行スキャンするオプションを付ければ良くない?
短くする時は「現在の最長行に合わせる(仮)」コマンドを実行してもらうとして。
10240文字固定で文句を言わない人間がこの仕様で文句を言うとは思えない。
リアルタイムで最長行に合わせても重くならないアルゴリズムは作る人が大変だろうし。
ちなみに、リアルタイムで合わせても重くならないアルゴリズムとしては
・スクロールバーは10文字単位で伸縮する(1文字単位で伸縮させたい時は、以下の文に含まれる"/10"を全て無視する)
・スクロールバーの最大幅は事前に指定する。これを超えた文字数の行は、最大幅と同じ文字数の行として扱う。
・まず、int型で要素数が(最大幅/10+1)の配列gyosuを用意。
・行をスキャンして、gyosu[その行の文字数/10]の値を+1。これを全ての行に対して行う。最長行の長さもこのときに求める。
・行が編集される度に、gyosu[編集前の文字数/10]の値を-1し、gyosu[編集後の文字数/10]の値を+1する。
・gyosu[最長行の長さ/10]が0になったら、gyosuを調べて最長行の長さを更新する。
・gyosu[(最長行の長さ/10)より大きい値]が1になったら、最長行の長さを更新する。
・最長行の長さが更新されたら、スクロールバーをそれに合わせる。
このやり方なら、何百万行のファイルだろうと重くならない。(最初のスキャンを除く)