コア エディターを含む Visual Studio Environment SDK エディターでは、言語サービスを使用して特定の構文項目を識別し、特定のドキュメント ビューに対して指定された色で表示します。
色付けの要件
言語サービスのカラーライザーを実装するすべてのエディターは、次の手順を実行する必要があります。
IVsTextBufferを実装するオブジェクトを使用して色付けするテキストを管理し、IVsTextViewを実装するオブジェクトを使用してテキストのドキュメント ビューを提供します。
言語サービスの識別 GUID を使用して VSPackage のサービス プロバイダーにクエリを実行して、特定の言語サービスへのインターフェイスを取得します。
SetLanguageServiceIDを実装するオブジェクトのIVsTextBuffer メソッドを呼び出します。 このメソッドは、言語サービスを、色分けするテキストを管理するために VSPackage が使用する IVsTextBuffer 実装に関連付けます。
言語サービスの Colorizer のコア エディターの使用
コア エディターのインスタンスによってカラーライザーを含む言語サービスが取得されると、言語サービスのカラーライザーによるテキストの解析とレンダリングが自動的に行われ、あなたの側で追加の手間は必要ありません。
IDE は透過的に以下の操作を実行します。
必要に応じてカラーライザーを呼び出して、 IVsTextBufferの実装でテキストが追加または変更されたときに、テキストを解析および分析します。
IVsTextView実装によって提供されるドキュメント ビューによって提供される表示が、カラーライザーによって返される情報を使用して更新および再描画されることを確認します。
言語サービスの Colorizer の非コア エディターの使用
非コア エディター インスタンスでは、言語サービスの構文の色付けサービスを使用することもできますが、サービスのカラーライザーを明示的に取得して適用し、ドキュメント ビュー自体を再描画する必要があります。
これを行うには、非コア エディターで次の操作を行う必要があります。
言語サービスの colorizer オブジェクト ( IVsColorizer と IVsColorizer2を実装する) を取得します。 VSPackage は、言語サービスのインターフェイスで GetColorizer メソッドを呼び出すことによってこれを行います。
ColorizeLine メソッドを呼び出して、テキストの特定のスパンを色分けするように要求します。
ColorizeLine メソッドは、色分けされているテキスト スパン内の文字ごとに 1 つずつ、値の配列を返します。 また、テキスト スパンは、コメント、キーワード、データ型など、特定の種類の配色可能な項目として識別されます。
ColorizeLineによって返される色分け情報を使用して、テキストを再描画して表示します。
注
VSPackage では、言語サービスのカラーライザーを使用するだけでなく、汎用 Visual Studio Environment SDK のテキスト色分けメカニズムを使用することもできます。 このメカニズムの詳細については、「 フォントと色の使用」を参照してください。