多言語コンテンツ タイプを処理する Visual Studio 拡張機能を作成しようとしています。コードの特定の部分が別の言語であるいくつかの mvc-templates と Django または ASP.NET によく似ています。
Projection を使用する必要があることはわかっており、Visual Studio 拡張機能用に Djangoを既に確認しましたが、そこでの解決策には、言語サービスの作成と、コード エディターに関連するすべてのビットとピースの作成の手間が含まれます。ここでは、MEF を使用するだけで同じ目標を達成しようとしています。
IProjectionBuffer CreateProjectionBuffer()
を使用してプロジェクションを作成できることは知っていますが、問題は、現在のTextBufferを作成したものに置き換える方法と、それを行うのに最適な時期です。
また、タイプ「投影」の基本定義を次のように指定すると、次のようになると予想される場合があります。
[Export]
[Name("Whatever")]
[BaseDefinition("code")]
[BaseDefinition("projection")]
internal static ContentTypeDefinition WhateverContentType = null;
プロバイダーで受信した TextBuffer の型を指定しますIProjectionBuffer
(すべての IProjectionBuffer は ITextBuffer から継承されます)。そうではなく、投影ベースの定義はこれまで何の効果もないようです。
したがって、tldr バージョンで質問を言い換える場合:
現在のビューに IProjectionBuffer をいつどのように適用しますか (MEF を使用し、エディター インスタンスを作成せずに)?