檢查清單: 建立語言服務
下列檢查清單摘要說明建立語言服務所必須採取的基本步驟Visual Studio核心編輯器。 若要將您的語言服務區分到Visual Studio,您必須建立偵錯運算式評估工具。 如需詳細資訊,請參閱撰寫一般的語言執行階段運算式評估工具在Visual Studio 的偵錯工具擴充性。
建立語言服務的步驟
實作 IVsPackage 介面。
在您的 VSPackage 實作IServiceProvider文字輸入語言服務。
讓您的語言服務使用整合式的開發環境 (IDE) 中您SetSite實作。
實作IVsLanguageInfo在主要語言的服務類別的介面。
IVsLanguageInfo介面是核心編輯器和語言服務之間互動的起點。
選擇性功能
下列功能是選擇性的可以依任何順序執行。 這些功能會增加您的語言服務的功能。
語法標色
實作 IVsColorizer 介面。 這個介面的實作應該傳回適當的色彩資訊的剖析器資訊。
GetColorizer方法傳回IVsColorizer介面。 為每個文字緩衝區中,建立個別的 colorizer 執行個體,您應該實作IVsColorizer個別的介面。 如需詳細資訊,請參閱 語法標色。
程式碼] 視窗
實作IVsCodeWindowManager介面,可讓語言服務以接收通知中建立新的 [程式碼] 視窗時。
GetCodeWindowManager方法傳回IVsCodeWindowManager介面。 語言服務接著可以新增至 [程式碼] 視窗中的特殊 UI AddAdornments。 語言服務也可以執行任何特殊處理,例如新增文字檢視篩選條件,在OnNewView。
文字檢視篩選條件
若要提供 IntelliSense 陳述式完成語言服務中的,您必須攔截部分文字檢視會處理的指令。 若要攔截這些命令,完成下列步驟:
實作IOleCommandTarget參與命令鏈結,控制代碼編輯器命令。
呼叫AddCommandFilter方法,並傳入您IOleCommandTarget實作。
呼叫RemoveCommandFilter方法,當您中斷連結] 檢視中使這些命令不會再傳送給您。
必須處理的命令是根據所提供的服務而定。 如需詳細資訊,請參閱 語言服務篩選器的重要指令。
注意事項 IVsTextViewFilter必須為相同的物件上實作介面IOleCommandTarget介面。
陳述式完成
實作 IVsCompletionSet 介面。
支援的陳述式完成指令 (也就是COMPLETEWORD),並呼叫UpdateCompletionStatus中的方法IVsTextView介面,傳遞IVsCompletionSet介面。 如需詳細資訊,請參閱 陳述式完成。
方法秘訣
實作IVsMethodData介面,以提供資料給方法的 [提示] 視窗。
安裝文字檢視篩選條件,來適當處理命令,讓您知道何時要顯示的方法資料提示視窗。 如需詳細資訊,請參閱 參數諮詢工具提示。
錯誤標記
實作 IVsTextMarkerClient 介面。
建立實作的標記物件的錯誤碼IVsTextMarkerClient介面和呼叫CreateLineMarker方法,傳遞IVsTextMarkerClient錯誤標記物件的介面。
通常每個錯誤標記管理 [工作清單] 視窗中的項目。
工作清單項目
實作工作項目類別提供IVsTaskItem介面。
實作工作提供者類別提供IVsTaskProvider介面和IVsTaskProvider2介面。
實作工作列舉值類別提供IVsEnumTaskItems介面。
註冊工作清單] 的工作提供者RegisterTaskProvider方法。
取得IVsTaskList介面,藉由呼叫服務 GUID 的語言服務的服務提供者SVsTaskList。
建立工作項目物件和呼叫RefreshTasks中的方法IVsTaskList介面,當有新或更新的任務。
註解工作項目
使用IVsCommentTaskInfo介面和IVsEnumCommentTaskTokens介面,以取得註解工作語彙基元。
取得IVsCommentTaskInfo介面從SVsTaskList服務。
取得IVsEnumCommentTaskTokens介面從EnumTokens方法。
實作IVsTaskListEvents介面,以接聽語彙基元的清單中的變更。
大綱
有許多選項來支援大綱。 例如,您也可以支援摺疊至定義命令,提供編輯器控制的大綱區域,或支援用戶端控制的區域。 如需詳細資訊,請參閱 如何: 提供展開大綱的支援。
語言服務註冊
如需有關如何註冊語言服務的詳細資訊,請參閱正在註冊語言服務和正在載入 VSPackages。
即時線上說明
提供給編輯器] 中的內容,下列方法之一:
- 提供文字標記中的內容,藉由實作IVsTextMarkerContextProvider介面。
提供所有的使用者內容,藉由實作IVsLanguageContextProvider介面。