ファイルの中身をメモリーにおいていいなら、そこまで難しくはないな。
スクロールやキャレットの画面外の移動の時だけ、レイアウト行を構築すればそれでおしまい。
http://s170199.ppp.asahi-net.or.jp/vivi/docs/buffer/edit_buffer.php
ViViエディターの人の記事が書いているような複雑怪奇なバッファー管理はいらない。
メモリーを32GBぐらい積んでいれば、ギャップバッファーでも1GB未満の大きさのファイルの読み書きは簡単にできる。
自作のエディタでも900MBを12秒ぐらいで読み込むことができた。
ただ、この機能を実装すると行ジャンプのダイアログを出したときに最大行数がわからなくなる。
まともに使いたいなら、ちょっと考え方を変えないと駄目だ。
1GBを超えると何かしらの制限に引っ掛かる。
EmEditorや鈴川エディタ、巨大ファイル対応ログビュアーなど巨大ファイルを扱えるエディターはマジすごい。
最低賃金のウェブプログラマー兼雑用で、大学受験に落ちた俺にはこれが限界…。
自作のエディターでつかってるgap_vectorもどこかから拾ってきたやつで、スクラッチで書いたわけではない。
こんなことなら、きちんと数学IIICを勉強して情報系の大学に行けるようにするべきだった。
大学に入るためには教科書の基礎問題だけでなく、応用問題みたいな知識の使い方を問う問題まで解けるように努力すべきだったorz
しばらく使ってみたが、だめだ .NETだとLOHにgap_vectorの内容が放り込まれる関係で、すぐに解放されない .NETだと別のデーター構造のほうが適してるようだ すく思いついたやつ、B+木やB*木...
裏で行数カウントさせて完了するまで行ジャンプ禁止にしようぜ
それっぽい感じにしてるが、巨大ファイルを読み込んでから閉じるとメモリーが解放されないんだよ…。 どうも、gap_vectorに巨大ファイルを放り込むとLOHに放り込まれる。 LOHに放り込ま...