0

我正在處理經典Visual Basic源文件(模塊和類文件)的編輯器分類擴展。該項目是使用Visual Studio 2012 SDK中的編輯器分類器項目模板創建的。該向導創建了三個代碼文件:一個用於分類器,一個用於分類器格式和-provider,另一個包含分類定義。我爲了*.bas*.cls文件鏈接到我的自定義分類做了以下修改到最後一個......無法將已知文件擴展名鏈接到自定義編輯器分類器

using System.ComponentModel.Composition; 

using Microsoft.VisualStudio.Text.Classification; 
using Microsoft.VisualStudio.Utilities; 

internal static class MyEditorClassifierClassificationDefinition 
{ 
    [Export(typeof(ClassificationTypeDefinition))] 
    [Name("MyEditorClassifier")] 
    internal static ClassificationTypeDefinition MyEditorClassifierType = null; 

    [Export] 
    [Name("custom")] 
    [BaseDefinition("code")] 
    internal static ContentTypeDefinition MyContentDefinition = null; 

    [Export] 
    [FileExtension(".bas")] 
    [ContentType("custom")] 
    internal static FileExtensionToContentTypeDefinition MyModuleFileExtensionDefinition = null; 

    [Export] 
    [FileExtension(".cls")] 
    [ContentType("custom")] 
    internal static FileExtensionToContentTypeDefinition MyClassFileExtensionDefinition = null; 
} 

的問題是,Visual Studio中沒有援引我對具有*.bas,或*.cls文件分類擴展,而是使用Visual Basic的內置編輯器。我已經使用自定義文件擴展名測試了我的編輯器分類器;在這種情況下,分類器按預期工作。我想知道,如果可以更改已知文件擴展名的分類器。

+0

我們已經定義了.bas和.cls以映射到基本內容類型以及標準的.vb擴展名。你究竟想在這裏做什麼?你爲什麼不直接在「基本」內容類型上定義分類器? –

+0

我知道這些文件類型被映射到基本內容類型;我也嘗試使用「基本」作爲分類器的基本定義,但它也沒有工作。除此之外,基本編輯器不能正確處理.bas和.cls文件;這些文件有一個包含元數據的標題(我想用Projection來隱藏編輯器中的這些標題,但這是未來的夢想)。 – Matze

回答

1

我發現一個有用的分類keywors解決方案已經被語言服務分類。它的描述說它使用Tagger來增強代碼高亮。也許它可以幫助你:KeywordClassifier 舊版本的鏈接項目使用了描述中提到的分類器。

您可以獲取已加載文檔的名稱,也可以是ITextDocumentFactoryService的擴展名,或者也可以將tagger與擴展名綁定,不僅限於Basic的內容類型(而不是code)。 FileExtensionAttribute可能會有所幫助。

相關問題