Visual Studio 2010 からは WPF を使ってプラグインを云々。と聞いて理解できない人は読むのを諦めた方が幸せかもしれません。
さて、私が作った痛 IDE プラグインはテキストエディタ部分だけを拡張してますので、そこに関してだけ説明をします。注意点としては Visual Studio 2010 はまだベータであり、RTM でどうなるか分からないことです。
Visual Studio 2010 のエディタは WPF で実装されていて、Microsoft.VisualStudio.Text.Editor 名前空間に IWpfTextView というインターフェースが存在します。全ての操作はこのインターフェースを通じて行います。このインターフェースを使えばテキストバッファを取得してなんちゃらとかが出来てしまうわけです。
で、どうやって IWpfTextView のインスタンスを取得するかですが、まずはプラグインは MEF で実装されていると頭においておく必要があります、多分。今回、私は TextViewService デリゲートを使いました。
[Export(typeof(TextViewService))] [ContentType("Text")] private void CreateTextView(IWpfTextView textView, IEnvironment environment) { // 何かする! }
Export 属性を付け、IWpfTextView が作成された時に CreateTextView メソッドが呼ばれるようにします。ContentType ってのはよくわかってません、ベータですから(謎
さあ、これで新しくエディタタブなどが作成されたときに IWpfTextView を取得することが出来ました。じゃあ、背景画像とかどう実現するの?と考えたら Background プロパティがあるので、そこに ImageBrush を突っ込めばと考えると思いますが、より適した方法が用意されてます。
次回、Adornment との出会いに続く。