Azuki テキストエディタエンジン


Azuki テキストエディタエンジン
http://azuki.sourceforge.jp/


日本人の書いたテキストエディタエンジン。C#から使える。行番号表示、シンタックスハイライトなどが出来る。現在のバージョンは1.55。



ざっと使ってみた感想だが、まずディフォルトのデザインに私には違和感がある。背景色が薄いピンクになっていて気持ち悪い。白でいいんだよ、白で。色を変更しようとフォームデザイナでBackColorにWhiteを指定したが反映されなかった。コンポーネント初期化のあとに自分でBackColorにWhiteを代入すれば反映された。なんでだろ…。


まあ、配色に関してはテキストボックスの代わりにソフトに埋めて使いたいわけで、自己主張の激しい配色は迷惑なのである。あとTabの記号が存在感を主張しすぎ。こんな横長のTabの記号見たことがない。


しかしよーく見ると、Tabの記号、わざとTab幅にして、スペースと混在させたときにどこまでがTabであるか見てわかるようにしてあるのだと気づく。なるほど。これならTabとスペースを混在させてもTabの直後にスペースがあれば見てわかるわけだ。この作者は頭いいな…。


日本語入力に関しては何の問題もない。シンタックスハイライトは反映されるのがワンテンポ遅い。作者によると1.6で改善するとのことだ。私はソースをビルドしなおしてシンタックスハイライトの反映時間を1/4の時間に変更した。


あと、AppendやらInsertやらDeleteやら普通あるだろ、と思うようなメソッドがまったく用意されていない。あるのは、Replaceだけだ。


しかしこのReplaceがすごく強力で、開始位置と終了位置を指定して文字置換できるので、Insertの代わりにReplace(string)を使ったり、先頭行から100行目まで削除したければこう書くとか?

int end = azukiControl1.Document.GetLineHeadIndex( 100 );
azukiControl1.Document.Replace("",0,end);

上のように行番号からそのポジションを取得できるのでReplaceと組み合わせれば何だって出来るだろうからReplaceだけ用意して、そのReplaceを限りなく高速化しとけばいいじゃんという設計思想なのだと思う。最初戸惑ったが、これはこれでいいや。


あと、CanCopy,CanCut,CanPasteが実装されていない。(CanUndoとCanRedoはある) CanCopy,CanCutは選択範囲があればtrueとして扱えばいいとして、CanPasteは実装しとかなきゃいけないと思う。