[スレッド全体]

2008/5/25 (日) 03:26:55 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5299] 水平スクロールバーを常にテキストの幅に合わせる
A) 水平スクロールバーを常にテキストの幅に合わせる
B) 常にウィンドウの幅で折り返す

上記の機能を実験的に作ってみました(ダウンロードページの10-5.)
しかし、速度の問題と分割ウィンドウでの表示の問題があります。

■速度の問題
A:入力毎に全ラインを走査してテキストの最大幅を求めています。そしてAdjustScrollBars()でそれを使っています。
B:OnSize()にて折り返し位置の変更を呼び出しています。こちらの方が負荷が高いです。

これをAthlonXP-M3000, mem DDR1GB, Win2k SP4のデスクトップ環境で試してみました。
A:10万行程度までなら使えそうな感じ。
B:1万行までなら大丈夫そう、2万行あると遅さが分かる。
  5万行では明らかに遅い。書き直しに1秒程掛かる。

■分割ウィンドウの問題(Bのみ)
左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。
折り返し幅は1つしかないので処理順の都合でこの様になります(と思う)
こちらは今のままだとちょっと致命的ですかね?左右に分割すると問題ありますよ、で押し通したい所ですが……


一応タイプ別オプション→スクリーン→レイアウトの所にオプションを追加して選択できるようにしてみました。
また、Ctrl+Alt+Uでの折り返しの変更については、AまたはBが選択されている時はA,Bのトグルとしました。

こんな感じですが、この機能使えると思います?
Patchesに載せる価値あるでしょうか?

http://www.geocities.jp/nasukoji_7/download/download_sakuraeditor.html


2008/5/27 (火) 18:46:44 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5303] 問題について
▼ なすこじさん
> A:入力毎に全ラインを走査してテキストの最大幅を求めています。そしてAdjustScrollBars()でそれを使っています。

他エディタではどれも、
・最大幅の拡大を監視してスクロール幅をそれにあわせて拡大する
・最大幅の縮小は監視せずスクロール幅を縮小することはしない

になっていると思います。
たいてい、長ーい行を貼り付けるとスクロール幅が広がりますが、削除しても狭くはなりません。
つまり、スクロール幅は常に全ラインを走査して現在の最大幅に合わせるのではなく、変更された行だけを走査して編集開始以後に記録した過去最大幅に合わせておくこと(ある意味手抜き)で性能を確保しているような気がしますが、違いますかね?

> B:OnSize()にて折り返し位置の変更を呼び出しています。こちらの方が負荷が高いです。

常に折り返すのは、どっちかというと付加的な機能ですし性能にさほど過敏になる必要はないと思いますけど...

> ■分割ウィンドウの問題(Bのみ)
> 左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。


どちらかのビュー幅の桁数に他方の桁数をあわせるので良いと思います。同時スクロールはそのほうが見やすい、とも。EmEditorだと左側のビューの桁数に右側の桁数を合わせているみたいですね。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.000][st:0.000]