Visual Studio 环境 SDK 编辑器(包括核心编辑器)使用语言服务来标识特定的语法项,并使用给定文档视图的指定颜色显示它们。
着色要求
实现语言服务着色器的所有编辑器都必须:
使用实现 IVsTextBuffer 对象来管理要着色的文本,并使用实现 IVsTextView 对象来提供文本的文档视图。
通过查询 VSPackage 的服务提供商并使用语言服务的标识 GUID 来获得特定语言服务的访问接口。
调用实现IVsTextBuffer的对象的SetLanguageServiceID方法。 此方法将语言服务与 IVsTextBuffer VSPackage 用来管理要着色的文本的实现相关联。
语言服务的着色器的核心编辑器用法
当具有着色器的语言服务由核心编辑器的实例获取时,语言服务的着色器自动分析和呈现文本,而无需进一步干预。
IDE 透明方式:
根据需要调用着色器来解析和分析文本,在实现 IVsTextBuffer 时进行添加或修改。
确保通过着色器返回的信息,对由 IVsTextView 实现提供的文档视图的显示进行更新和重新绘制。
语言服务的着色器的非核心编辑器用法
非核心编辑器实例还可以使用语言服务的语法着色服务,但它们必须显式检索和应用服务的着色器,并重新修补其文档视图。
为此,非核心编辑器必须:
获取语言服务的着色器对象(实现 IVsColorizer 和 IVsColorizer2)。 VSPackage 通过在语言服务的接口上调用 GetColorizer 方法来执行此作。
ColorizeLine调用该方法以请求对特定文本范围进行着色。
该方法 ColorizeLine 返回一个值数组,其中每个值对应于被着色文本范围中的一个字母。 它还将文本范围标识为可着色项的特定类型,例如注释、关键字或数据类型。
使用ColorizeLine 返回的颜色信息为文本重新上色并显示。
注释
除了使用语言服务的着色器之外,VSPackage 还可以选择使用常规用途的 Visual Studio 环境 SDK 文本着色机制。 有关此机制的详细信息,请参阅 使用字体和颜色。