语言服务接口

到任何特定编程语言,一次只能具有语言服务的一个实例。 但是,单个语言服务可以对多个编辑器服务。

Visual Studio 不关联语言服务与任何特定的编辑器。 因此,那么,当您请求语言服务操作时,必须确定适当的编辑器中作为参数。

公共接口与语言服务

编辑器通过调用适当的 VSPackage 中 QueryService 获取语言服务。 中 (SID) 传递的服务调用标识符标识请求的语言服务。

可以实现任意数量的单独的类的核心语言服务接口。 但是,公共方法是实现在单个类的以下接口:

在所有语言服务必须实现 IVsLanguageInfo 接口。 它提供有关语言服务的信息,如该语言的本地化名称,文件扩展名与语言服务,以及如何检索 colorizer。

其他语言服务接口

其他接口可随语言服务。 Visual Studio 请求这些接口实例文本缓冲区的每个实例。 因此,应单独实现这些接口对象中的每一。 下表显示了每个文本缓冲区实例一个实例的接口。

接口

说明

IVsCodeWindowManager

托管代码窗口修饰,如将下拉栏。 使用 GetCodeWindowManager 方法,您可以获取此接口。 对于每个代码窗口。 IVsCodeWindowManager

IVsColorizer

Colorizes 语言关键字和分隔符。 使用 GetColorizer 方法,您可以获取此接口。 IVsColorizer 调用在绘制时。 避免在 IVsColorizer 内的计算密集型工作或性能可能会陷入。

IVsMethodData

提供 IntelliSense 参数工具提示。 当语言服务标识时指示的字符应显示方法的数据,例如一个左括号,它调用 SetMethodData 方法通知文本视图语言服务准备好显示参数信息工具提示。 文本视图然后调用回语言服务使用 IVsMethodData 接口的方法来获取显示工具提示的所需信息。

IVsCompletionSet

提供 IntelliSense 语句完成。 当语言服务准备显示完成列表时,它对文本视图的 UpdateCompletionStatus 方法。 通过在 IVsCompletionSet 对象的方法,文本视图然后调用回语言服务。

IVsTextViewFilter

使用命令处理程序,使文本视图的修改。 您 IVsTextViewFilter 实现接口的类还必须实现 IOleCommandTarget 接口。 文本视图通过查询传递给 AddCommandFilter 方法的 IOleCommandTarget 对象检索 IVsTextViewFilter 对象。 应为每个视图中 IVsTextViewFilter 对象。

IOleCommandTarget

截获命令该用户类型到代码窗口。 监视从 IOleCommandTarget 实现的输出提供自定义完成信息和视图修改

若要传递给文本视图的 IOleCommandTarget 对象,请调用 AddCommandFilter

请参见

概念

检查表:创建语言服务

其他资源

开发语言服务