在舊版語言服務中的陳述式完成
發行︰ 2016年7月
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
陳述式完成是依據語言服務可協助使用者完成語言關鍵字或啟動它們在核心編輯器中輸入的項目。 本主題討論陳述式完成的運作方式,以及如何實作語言服務中。
舊版的語言服務會實作成,VSPackage 的一部分,但實作語言服務功能的較新的方法是使用 MEF 延伸模組。 若要了解有關實作陳述式完成的新方法的詳細資訊,請參閱逐步解說︰ 顯示陳述式完成。
注意
我們建議您開始使用新的編輯器 API 儘速。 這會改善語言服務的效能,並可讓您充分利用新編輯器功能。
實作陳述式完成
在核心編輯器中,陳述式完成啟動特殊的 UI 以互動方式可幫助您更輕鬆且快速地撰寫程式碼。 陳述式完成可幫助顯示相關的物件或類別時所需之以避免您需要記住的特定項目,也需要加以查閱說明參考主題。
若要實作陳述式完成,您的語言必須有陳述式完成觸發程序,它可以剖析。 例如,Visual Basic使用點 (.) 運算子,而Visual C++使用箭號 (->) 運算子。 語言服務可以使用多個觸發程序來起始陳述式完成。 這些觸發程序被編寫命令篩選器中。
命令篩選器和觸發程序
命令的篩選器攔截您的觸發程序或觸發程序的次數。 若要將命令篩選器加入至檢視中,實作IOleCommandTarget介面,並將它附加到檢視中,藉由呼叫AddCommandFilter方法。 您可以使用相同的命令篩選器 (IOleCommandTarget) 語言服務,例如陳述式完成、 錯誤的標記,以及方法秘訣的各個層面。 如需詳細資訊,請參閱攔截舊版語言服務命令。
在編輯器中輸入該觸發程序時,明確地說,文字緩衝區,語言服務接著會呼叫UpdateCompletionStatus方法。 這會導致編輯器 以顯示 UI,讓使用者可以選擇從陳述式完成的候選項目。 這個方法會要求您實作IVsCompletionSet和UpdateCompletionFlags做為參數的旗標。 捲動清單方塊中顯示的完成項目清單。 在使用者繼續輸入,在清單方塊選取項目會更新以反映最新的字元最符合的型別。 核心編輯器實作陳述式完成的使用者介面,但是語言服務必須實作IVsCompletionSet介面來定義一組候選陳述式的完成項目。