语句完成语言服务帮助用户完成语言关键字或元素开始输入核心编辑器的过程。 本主题讨论语句完成工作方式以及如何实现其在语言服务中。
implements 语句完成
在核心编辑器,语句完成激活更方便快捷地交互方式帮助您编写代码的特定 UI。 语句完成通过显示相关对象或类帮助,可在需要时,避免必须确保特定元素或必须找到它们在帮助参考主题。
若要实现语句完成,语言必须具有语句完成触发器,可以分析。 例如, Visual Basic 使用一点 () 运算符,,而 Visual C++ 使用一个箭头 (- AMP_GT) 运算符。 语言服务可以使用多个触发器启动语句完成。 这些触发器在命令筛选器的编程。
命令筛选器和触发器
命令筛选器截获触发器或触发器的匹配项。 若要将命令添加筛选器到视图,请 IOleCommandTarget 实现接口并将它附加到视图通过调用 AddCommandFilter 方法。 可以为语言服务的所有方面使用同一个命令的筛选器 (IOleCommandTarget),如语句完成、错误标记和方法提示。 有关更多信息,请参见 截获的语言服务顺序。
当触发器在编辑器中输入 (具体而言,文本缓冲区 (即语言服务调用 UpdateCompletionStatus 方法。 这使编辑器引发 UI,以便用户可以从语句完成候选选择。 此方法需要实现 IVsCompletionSet 和 UpdateCompletionFlags 标志作为参数。 完成项列表将显示在滚动列表框。 当用户继续键入,更新在列表框中选择反映最佳匹配到类型化最近字符。 核心编辑器实现语句完成的 UI,但是,语言服务必须实现 IVsCompletionSet 接口定义一组候选语句的完成项。