0

テキストに基づくカスタム コンテンツ タイプの構文強調表示を追加しようとしています。

static class RTextContentType
{
    public const string ContentTypeName = Constants.CONTENT_TYPE;
    [Export, Name(ContentTypeName), BaseDefinition("text")]
    internal static ContentTypeDefinition ContentTypeDefinition = null; // set via MEF
}

次に、分類子プロバイダーは次のように宣言されます。

[Export(typeof(IClassifierProvider)), ContentType(Constants.CONTENT_TYPE)]
class RTextClassifierProvider : IClassifierProvider
{
   ...
}

問題は、プロバイダーのコンストラクターが、指定した拡張機能に対して呼び出されないことです。ここで、エディタ ファクトリを提供し、ファイル拡張子がファクトリに関連付けられていることに注意してください。関連するすべてのファイルのデバッグを通じて、ファクトリが初期化されていることがわかります。

コンテンツ タイプを"text"コンストラクタに変更すると、呼び出されます。

問題は、カスタム コンテンツ タイプをファイル拡張子にどのようにマッピングできるかということです。

2 番目の注意、FileExtensionToContentTypeDefintionの使用

これは多くの機能を許可しないため、オプションではありません..

助けてくれてありがとう :)

4

1 に答える 1

2

の実装はIVsEditorFactory、エディタに表示されるテキストのコンテンツ タイプを設定する責任があります。このインターフェイスのデフォルトの実装にFileExtensionToContentTypeDefinitionAttributeは、より高度な機能 (複数のコンテンツ タイプのプロジェクション バッファなど) を必要としないユーザー向けの単純な拡張メカニズムとして、 の特別なサポートが含まれています。

このDjangoEditorFactoryクラスには、 という名前のネストされたクラスが含まれてTextBufferEventListenerいます。これは、エディタ ファクトリがコンテンツ タイプをエディタ ウィンドウに表示されるバッファに割り当てる方法の一例を示しています。

于 2013-08-23T12:16:21.860 に答える