您可以使用 Visual Studio SDK 中包含的項目範本來建立基本編輯器延伸模組,以將分類器、裝飾和邊界新增至編輯器。 編輯器專案範本適用於 Visual C# 或 Visual Basic VSIX 專案。
先決條件
- Visual Studio 已安裝 Visual Studio 延伸模組開發 工作負載。
建立分類器擴充功能
編輯器分類器項目範本會建立一個編輯器分類器,可以對任何文字檔中的所有內容進行著色。
使用 VSIX 專案 範本建立新專案。 將它命名為
TestClassifier。在 [方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取 [新增>專案]。 如果出現一個緊湊的窗口,請單擊顯示所有模板。 移至 Visual C# 擴充性 節點,然後選取 [ 編輯器分類器]。 保留預設檔案名稱 (EditorClassifier1.cs)。
有四個程式碼檔,如下所示:
EditorClassifier1.cs 包含類別
EditorClassifier1。EditorClassifier1ClassificationDefinition.cs 包含類別
EditorClassifier1ClassificationDefinition。EditorClassifier1Format.cs 包含類別
EditorClassifier1Format。EditorClassifier1Provider.cs 包含類別
EditorClassifier1Provider。
建置專案並開始偵錯。 Visual Studio 的實驗性實例隨即出現。
如果您開啟文字檔,所有文字都會在紫色背景上加上底線。
建立文字相對裝飾延伸模組
編輯器文字裝飾範本會建立文字相對裝飾,使用具有紅色外框和藍色背景的方塊來裝飾文字字元 'a' 的所有實例。 由於方塊總是相對於文字排列,因此即使「a」字元被移動或重新格式化,方塊仍會覆蓋它們。
使用 VSIX 專案 範本建立新專案。 將它命名為
TestAdornment。在 [方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取 [新增>專案]。 移至 [Visual C# 擴充性 ] 節點,然後選取 [ 編輯器] [文字裝飾]。 保留預設檔案名稱 (TextAdornment1.cs/vb)。
有兩個程式碼檔,如下所示:
TextAdornment1.cs 包含類別
TextAdornment1。TextAdornment1TextViewCreationListener.cs 包含類別
TextAdornment1TextViewCreationListener。
建置專案並開始偵錯。 實驗實例隨即出現。 如果您開啟文字檔案,文字中的所有「a」字元都會在藍色背景上以紅色勾勒出輪廓。
建立視埠相對插件擴充功能
編輯器檢視區裝飾範本會建立檢視區相對裝飾,在檢視區右上角新增具有紅色外框的紫色方塊。
備註
視埠是目前顯示的文字視圖區域。
若要使用「編輯器檢視區裝飾」範本來建立檢視區裝飾擴充功能,請依據以下步驟進行。
使用 VSIX 專案 範本建立新專案。 將它命名為
ViewportAdornment。在 [方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取 [新增>專案]。 移至 Visual C# 擴充性 節點,然後選取 [編輯器檢視區裝飾]。 保留預設檔案名稱 (ViewportAdornment1.cs/vb)。
有兩個程式碼檔,如下所示:
ViewportAdornment1.cs 包含類別
ViewportAdornment1。ViewportAdornment1TextViewCreationListener.cs包含類別
ViewportAdornment1TextViewCreationListener
建置專案並開始偵錯。 實驗實例隨即出現。 如果您建立新的文字檔,則視埠的右上角會顯示具有紅色外框的紫色方塊。
建立邊界延伸插件
「編輯器邊界」範本會建立綠色邊界,與水平捲軸下方的 *Hello world! 字樣一起顯示。
使用「編輯器邊界」範本來建立邊界擴展
使用 VSIX 專案 範本建立新專案。 將它命名為
MarginExtension。在 [方案總管] 中,以滑鼠右鍵按一下專案節點,然後選取 [新增>專案]。 移至 Visual C# 擴充性 節點,然後選取 [ 編輯器邊界]。 保留預設檔案名稱 (EditorMargin1.cs/vb)。
有兩個程式碼檔,如下所示:
EditorMargin1.cs 包含類別
EditorMargin1。EditorMargin1Factory.cs 包含類別
EditorMargin1Factory。
建置此專案並開始偵錯。 實驗實例隨即出現。 如果您開啟文字檔,則水平捲軸下方會顯示包含 Hello EditorMargin1 字樣的綠色邊界。