检查表:创建语言服务
以下检查表摘要必须花费创建 Visual Studio 核心编辑器的语言服务的基本步骤。 若要集成语言服务 Visual Studio,必须创建调试表达式计算器。 有关更多信息,请参见中 Visual Studio 调试器扩展性的 编写公共语言运行时表达式计算器 。
创建的语言服务步骤
实现 IVsPackage 接口。
在 VSPackage 中,请实现 IServiceProvider 接口提供语言服务。
将语言服务可供集成 (IDE)开发环境。 SetSite 实现。
实现在主语言服务类的 IVsLanguageInfo 接口。
IVsLanguageInfo 接口是的核心编辑器和语言服务之间的交互。
可选功能
以下功能是可选的,可以按任意顺序实现。 这些功能增加语言服务的功能。
语法着色
实现 IVsColorizer 接口。 此接口的实现如果返回分析器的信息适当的颜色信息。
GetColorizer 方法返回 IVsColorizer 接口。 单独 colorizer 实例为每个文本缓冲区中创建,因此,应单独实现 IVsColorizer 接口。 有关更多信息,请参见 语法着色。
代码窗口
,在新代码组窗口中创建,则实现 IVsCodeWindowManager 接口允许语言服务接收通知。
GetCodeWindowManager 方法返回 IVsCodeWindowManager 接口。 语言服务可以添加特殊 UI 到 AddAdornments的代码窗口。 语言服务还可以执行任何特殊处理,如添加到 OnNewView的一个文本视图筛选器。
text " 视图筛选器
若要提供 IntelliSense 语句完成语言服务,您必须截获某些命令文本视图原本处理。 若要截获这些命令,请完成以下步骤:
实现 IOleCommandTarget 参与命令字符串和处理编辑器顺序。
调用 AddCommandFilter 方法并传入 IOleCommandTarget 实现。
调用 RemoveCommandFilter 方法,当从视图时分离,以便这些命令不再传递给您。
必须处理的命令取决于提供的服务。 有关更多信息,请参见 语言服务筛选器的重要命令。
备注
在对象必须实现 IVsTextViewFilter 接口和 IOleCommandTarget 接口相同。
语句结束
实现 IVsCompletionSet 接口。
支持语句完成订单 (即 COMPLETEWORD) 并调用 IVsTextView 接口的 UpdateCompletionStatus 方法,通过 IVsCompletionSet 接口。 有关更多信息,请参见 语句完成。
方法提示
实现 IVsMethodData 接口的方法提示窗口提供数据。
正确安装文本视图筛选器将处理命令,因此,您知道何时显示方法数据提示窗口。 有关更多信息,请参见 参数信息工具提示。
错误标记
实现 IVsTextMarkerClient 接口。
创建实现 IVsTextMarkerClient 接口并调用 CreateLineMarker 方法是错误的标记对象,通过错误标记对象的 IVsTextMarkerClient 接口。
通常每个错误标记管理中的项任务列表 " 窗口。
任务列表项
实现提供 IVsTaskItem 接口的任务项类。
实现提供 IVsTaskProvider 接口和 IVsTaskProvider2 接口的任务提供程序类。
实现提供 IVsEnumTaskItems 接口的任务枚举器类。
注册任务列表的 RegisterTaskProvider 方法的任务提供程序。
通过调用语言服务的服务提供程序中获取 IVsTaskList 接口与服务 GUID SVsTaskList。
,当具有新功能或更新任务时,请创建任务项对象并调用 IVsTaskList 接口的 RefreshTasks 方法。
注释任务项
使用 IVsCommentTaskInfo 接口和 IVsEnumCommentTaskTokens 接口获取注释任务标记。
从 SVsTaskList 服务的一 IVsCommentTaskInfo 接口。
从 EnumTokens 方法的 IVsEnumCommentTaskTokens 接口。
实现接口 IVsTaskListEvents 侦听该标记中的更改列表。
大纲显示
具有支持大纲显示的若干选项。 例如,可以支持 折叠到定义 命令,提供编辑控件轮廓区域或支持客户端控件区域。 有关更多信息,请参见 如何:提供展开大纲支持。
语言服务注册
有关注册语言服务的更多信息,请参见 注册语言服务 和 加载 Vspackage。
区分上下文的帮助
提供上下文到编辑器以下列方式之一:
- 提供文本标记提供上下文通过实现 IVsTextMarkerContextProvider 接口。
通过实现 IVsLanguageContextProvider 接口提供所有用户上下文。