AvalonEditのソースを読んでみた

Azukiの内部構造がグチャグチャ感があるので、整理したい。しかしAzukiの開発はクラスの数を増やさないというアプローチで進めていたため今になってモジュールがこんがらがっており、おいそれと試行錯誤できない状態になってしまった。そこで、細かくクラス分けしてあるAvalonEditのソースを読むことで、より良い構造を勉強することにした。特に興味があるのは選択状態の保持方法、および折り返し表示モードにおける折り返し位置の管理方法あたり。WPFは素人同然なので苦労したけれど、選択範囲の保持・管理の方法については理解できたのでメモがてらに記録しておく。

続きを読む “AvalonEditのソースを読んでみた”

テキストエディタの「範囲」オブジェクトへの代入を「該当範囲の置換」とみなす

(今日は面倒なので、である調で書く)。Azuki 2.0ではRangeオブジェクトを導入しようと考えている。これはその名の通りドキュメントの範囲をあらわすオブジェクトで、テキストエディタの処理で頻繁に使われる概念ゆえに単 … 続きを読む テキストエディタの「範囲」オブジェクトへの代入を「該当範囲の置換」とみなす

既存の単体テストフレームワークを使うメリット?

本日、Azukiプロジェクトで初めて既存の単体テストフレームワーク(NUnit)を導入しました。もちろん単体テストは導入していましたが、自作の小ぶりなテスティングフレームワークを使って書いていました。ちなみに仕事でメンテ … 続きを読む 既存の単体テストフレームワークを使うメリット?

(C#)internal interfaceとinterfaceを組み合わせて、DLL外に公開しないメンバを定義する

C#という言語を使い始めて7年ぐらいは経つわけですが、Azukiの実装中に長いこと不満に思っていたコトが一つ解決しましたので備忘録。 Azukiは一応最初からプラットフォームを抽象化して作ってあります。そのため、現在はW … 続きを読む (C#)internal interfaceとinterfaceを組み合わせて、DLL外に公開しないメンバを定義する

テキストエディタの「選択範囲」という概念について、2点

最近いろいろな意味でヤル気が無くなっていたけれど、久しぶりに更新。一年以上何もか書かなかったか。まあそれもまたよし。今日はテキストエディタの「選択範囲」という概念について、2点書いておこう。さすがにTwitterにはつぶ … 続きを読む テキストエディタの「選択範囲」という概念について、2点