PredefinedAdornmentLayers の説明が不十分

だいぶ前にVisual Studioの拡張機能でエディタ部分をいじりましたが、その時にどのレイヤに拡張部分を差し込むのかちゃんと説明できてませんでした。

具体的にいうと AdornmentLayerDefinition の Order属性のAfterとBeforeで指定する値ですね。

ここで指定する値は PredefinedAdornmentLayers になるんですが、どのレイヤがどういう順番なのかさっぱりわかりませんね。

※以前は説明文すらなかったけど、今はドキュメント更新されてますね。よかったよかった。

というわけで、MSのサポートさんから情報をもらったのでここで公開しておきます。

名前 説明 順番(Z-Order)
Caret テキストのキャレットを描画してるレイヤ 最前面
Text エディタのコンテンツ(テキスト)を描画してるレイヤ 7
Squiggle 構文エラーとかで表示される波線とかを描画してるレイヤ 6
Selection IME入力時の選択領域を描画してるレイヤ 5
TextMarker ITextMarkerProviderFactoryで提供してるテキストマーカーを描画してるレイヤ 4
CurrentLineHighlighter 現在行のハイライトを表示しているレイヤ(キャレットがある行) 3
Outlining 折り畳みヒントを描画してるレイヤ 2
DifferenceSpace IDifferenceViewerで提供されるブロックの位置合わせ表記などを表示するレイヤ(差分ビューアなどで見るやつ) 1
DifferenceChanges IDifferenceViewerで提供されるコード差異や線などを表示するレイヤ(差分ビューアなどで見るやつ) 最背面

※Outliningだけ特殊みたいでCurrentLineHighlighterからDifferenceChangesの間の任意のレイヤに差し込まれるみたいです。

ちなみにAfterとBeforeに矛盾した設定(例:Before=Squiggle, After=Textなど)をした場合、無条件に最前面になるので注意。

最後に、Microsoftサポートのみなさんありがとうございました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中