共用方式為


自訂編輯器中的語法著色

Visual Studio 環境 SDK 編輯器,包括核心編輯器,使用語言服務來識別特定語法項目,並以指定文件檢視的指定色彩顯示它們。

色彩設定需求

所有實作語言服務著色器的編輯器必須:

  1. 使用實作 IVsTextBuffer 的物件來管理要著色的文字,並使用實作 IVsTextView 的物件來提供文字的文件檢視。

  2. 使用語言服務的識別 GUID 查詢 VSPackage 的服務提供者,以取得特定語言服務的介面。

  3. 呼叫實作 IVsTextBuffer 之物件的 SetLanguageServiceID 方法。 此方法會將語言服務與 VSPackage 用來管理要著色之文字的 IVsTextBuffer 實作產生關聯。

語言服務著色器的核心編輯器使用方式

當具有著色器的語言服務是由核心編輯器的執行個體取得時,語言服務的著色器會自動剖析和轉譯文字,而不需要進一步介入您的部分。

IDE 會以透明方式:

  • 視需要呼叫著色器,以剖析和分析文字,因為它會在 IVsTextBuffer 實作中新增或修改。

  • 確保 IVsTextView 實作所提供之文件檢視所供應的顯示已更新,並使用著色器傳回的資訊重新繪製。

語言服務著色器的非核心編輯器使用方式

非核心編輯器執行個體也可以使用語言服務的語法著色服務,但是它們必須明確擷取並套用服務的著色器,並重新畫出其文件檢視本身。

若要這樣做,非核心編輯器必須:

  1. 取得語言服務的著色器物件 (實作 IVsColorizerIVsColorizer2)。 VSPackage 會藉由在語言服務介面上呼叫 GetColorizer 方法來執行這項操作。

  2. 呼叫 ColorizeLine 方法,要求特定文字範圍標示色彩。

    ColorizeLine 方法會傳回值陣列,其中一個值會針對要著色的文字範圍中的每個字母傳回一個。 它也會將文字範圍識別為特定類型的可著色項目,例如註解、關鍵字或資料類型。

  3. 使用 ColorizeLine 所傳回的著色資訊來重新貼圖並顯示其文字。

注意

除了使用語言服務的著色器之外,VSPackage 還可以選擇使用一般用途的 Visual Studio 環境 SDK 文字著色機制。 如需此機制的詳細資訊,請參閱使用字型和色彩