语法着色

Visual Studio 使用着色服务标识语言的元素并显示它们与编辑器中指定的颜色。

Colorizer 模型

语言服务实现 IVsColorizer 接口,编辑然后使用。 如下图所示,此实现是从语言服务的一个单独的对象,。

简单的 colorizer 模型

SVC 着色程序图

备注

语法着色服务与 colorizing 文本的 Visual Studio 常规结构。有关支持 colorizing 的 Visual Studio SDK 常规 framework 的更多信息,请参见 字体

除了 colorizer 外,语言服务可以提供要用于通过播发访问它提供自定义可着色项的自定义可着色项。 通过实现在同一对象的 IVsProvideColorableItems 接口执行此 IVsLanguageInfo 实现接口。 它返回自定义可着色项的数目,当编辑器 GetItemCount 调用方法时,因此,它返回单个自定义可着色项,当编辑器 GetColorableItem 调用方法时。

GetColorableItem 方法返回对象 IVsColorableItem 实现接口。 如果语言服务支持 24 位或深颜色值,则它必须实现在对象的 IVsHiColorItem 接口和 IVsColorableItem 接口相同。

VSPackage 如何使用语言服务 Colorizer

  1. VSPackage 必须获取相应的语言服务,需要语言服务 VSPackage 执行以下操作:

    1. 使用实现接口 IVsTextBuffer 捕获的对象 colorized 的文本。

      文本通常会显示使用对象实现 IVsTextView 接口。

    2. 获取语言服务通过查询 VSPackage 的服务提供程序语言服务的 GUID。 语言服务在注册表中确定的文件扩展名。

    3. 关联语言服务与 IVsTextBuffer 通过调用其 SetLanguageServiceID 方法。

  2. VSPackage 现在可以获取和使用 colorizer 对象如下所示:

    备注

    使用核心编辑器的 Vspackage 不需要显式获取语言服务的 colorizer 对象。当核心编辑器的实例获取相应的语言服务,它执行公开的所有着色任务示。

    1. 通过调用语言服务的 IVsLanguageInfo 对象的 GetColorizer 方法获取语言服务的 colorizer 对象,实现 T:Microsoft.VisualStudio.TextManager.Interop.IVsColorizerIVsColorizer2 接口,。

    2. 调用 ColorizeLine 方法获取文本特定范围的 colorizer 信息。

      ColorizeLine 返回值,则在 colorized 的文本范围的每个字符的。 值是索引为或默认值可着色项列表维护由核心编辑器或自定义可着色项列表维护的语言服务的可着色项列表。

    3. 使用 ColorizeLine 方法返回的着色信息显示选定的文本。

备注

除了使用语言服务 colorizer 外, VSPackage 还可以使用泛型 Visual Studio 文本着色机制。有关此结构的更多信息,请参见 字体

本节内容

请参见

其他资源

字体