テキストエディタを作るメモ

初出:2001/12/12 最終更新:2005/07/25

私がGreenPadを作ろうとしたときに 調べてまわって作ったリンク集です。OSやToolkit提供のコンポーネントを 使うのではなく、「独自のテキスト編集コンポーネントを一から作る」場合に 参考となるものを集めました。Windows系に偏っている感が無きにしもあらず。

ソースコードの公開されているエディタやコンポーネント

C

C++

Delphi

Java

Objective-C

ワープロですが

エディタの作り方・データ構造等のチュートリアル的なもの

The Swing Connection - The Swing Text Package
JavaのSwingライブラリについての話ですが、 内部実装の方法についてなども詳しく触れられています。
テキストエディタ実装技術
有名エディタViViの作者である津田さんによる記事です。 バッファ管理から折り返し、色分け表示のための解析法など。
Gauche-gtk でエディタを作ってみる
中村さんによる。その名の通りのページです。 エディタ関係のリンク集などもまとまっています。
Data Structures for Text Sequences
エディタ向けのデータ構造を探る、というテーマの論文。
Compiler Tools
キーワード色分け機能の実装について詳しい資料です。
The Craft of Text Editing
ちと古典的すぎる感じもありますが、内部データ構造の取り方など、参考になります。
w.l.o.g.
私がWeb日記にて、長い文字列の保持に適したデータ構造 GapBuffer, Rope, PieceTable, GapBuffer(再) についてまとめました。

関連ライブラリや資料など

Active Input Method Manager @ MSDN
中国語とか韓国語とか日本語とかを切り替えて入力できる「Global IME」 対応のための解説。要は既存のIME対応アプリの、TranslateMessage / DefWindowProc / ImmXXXXX API を全て ActiveIMM の対応するメソッドに置き換えればおっけー、ってことみたい。 Win2000以上ではこんな面倒な技術無しでも普通に多言語入力可能らしいですが…。
Uniscribe @ MSDN
サロゲートペアとか文字の合成とか方向とかその辺ややこしいのを、 全部うまいこと処理してくれる素敵な奴。Caret の移動位置計算なんかまでサポートしてるので、もうエディタに使わない手はない! …んですけど、Win2000 or IE5.0 以上が必須だったり。こんなページも。
presented by k.inaba (kiki .a.t. kmonos.net) under CC0