0
我想爲基於文本的自定義內容類型添加語法高亮顯示,例如:獲取IClassifier與自定義內容類型一起工作
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"
構造函數被調用。
所以問題是,如何將自定義內容類型映射到文件擴展名?
第二個音符,使用FileExtensionToContentTypeDefintion
是不是一種選擇,因爲它不會讓很多功能..
感謝您的幫助:)
是的,我正在看這個實施。看起來相當複雜。所以我想我也必須實現這個的一個實例,但可能沒有elision緩衝區。什麼意思默認實現btw?來自Visual Studio的模板?我沒有計劃擁有多種內容類型,所以這種默認實現可能會有所幫助。 – FailedDev
如果您沒有將您的文件擴展名與自定義編輯器工廠關聯,那麼Visual Studio將使用其自己的編輯器工廠的內部實現。該實現通過許多不同的方式分配內容類型,其中之一就是您提到的屬性。 –
但當然,使用默認實現不允許man創建導航欄等,或向編輯器添加新的文件擴展名。 – FailedDev