自訂編輯器中的語法著色
Visual Studio 環境 SDK 編輯器,包括核心編輯器,使用語言服務來識別特定語法項目,並以指定文件檢視的指定色彩顯示它們。
色彩設定需求
所有實作語言服務著色器的編輯器必須:
使用實作 IVsTextBuffer 的物件來管理要著色的文字,並使用實作 IVsTextView 的物件來提供文字的文件檢視。
使用語言服務的識別 GUID 查詢 VSPackage 的服務提供者,以取得特定語言服務的介面。
呼叫實作 IVsTextBuffer 之物件的 SetLanguageServiceID 方法。 此方法會將語言服務與 VSPackage 用來管理要著色之文字的 IVsTextBuffer 實作產生關聯。
語言服務著色器的核心編輯器使用方式
當具有著色器的語言服務是由核心編輯器的執行個體取得時,語言服務的著色器會自動剖析和轉譯文字,而不需要進一步介入您的部分。
IDE 會以透明方式:
視需要呼叫著色器,以剖析和分析文字,因為它會在 IVsTextBuffer 實作中新增或修改。
確保 IVsTextView 實作所提供之文件檢視所供應的顯示已更新,並使用著色器傳回的資訊重新繪製。
語言服務著色器的非核心編輯器使用方式
非核心編輯器執行個體也可以使用語言服務的語法著色服務,但是它們必須明確擷取並套用服務的著色器,並重新畫出其文件檢視本身。
若要這樣做,非核心編輯器必須:
取得語言服務的著色器物件 (實作 IVsColorizer 和 IVsColorizer2)。 VSPackage 會藉由在語言服務介面上呼叫 GetColorizer 方法來執行這項操作。
呼叫 ColorizeLine 方法,要求特定文字範圍標示色彩。
ColorizeLine 方法會傳回值陣列,其中一個值會針對要著色的文字範圍中的每個字母傳回一個。 它也會將文字範圍識別為特定類型的可著色項目,例如註解、關鍵字或資料類型。
使用 ColorizeLine 所傳回的著色資訊來重新貼圖並顯示其文字。
注意
除了使用語言服務的著色器之外,VSPackage 還可以選擇使用一般用途的 Visual Studio 環境 SDK 文字著色機制。 如需此機制的詳細資訊,請參閱使用字型和色彩。