Visual Studio 扩展中的自定义 ColorableItems
Custom ColorableItems in Visual Studio Extension
我正在为 Visual Studio 开发语言服务,在 Visual Studio 2013 年遇到自定义颜色问题。我最近从 Visual Studio 2010 年搬到了 2013 年,现在每当我设置RequestStockColors
到 false
,我失去了所有语法突出显示。
我的语言服务实现了 GetColorableItem
和 GetItemCount
。我正在使用 9 种自定义颜色。当我调试我的语言服务时,我注意到 GetColorableItem
被调用了几次,但 GetItemCount
从未被调用。
当我通过 Visual Studio 进行调试时,我使用了以下命令行参数:
/ranu /rootsuffix Exp
更新: 我更改了前 5 种颜色的名称(与标准标记颜色重叠的颜色)以匹配标准名称(例如 "Keyword", "Identifier", 等等)并且这些颜色现在显示了,但是 none 我的额外颜色类型出现了。此外,我从未在 Visual Studio 的字体和颜色配置中看到它们中的任何一个。如何将它们安装在那里?
事实证明,我需要为我的每种自定义颜色创建一个 ClassificationFormatDefinition
实例,并将它们导出为 EditorFormatDefinition
类型。一旦我这样做了,它们就会出现在“字体和颜色”页面中,还会出现在语法突出显示中。
对于超出默认6种的每种颜色,我都添加了一个class定义如下:
[Export(typeof(EditorFormatDefinition))]
[ClassificationType(ClassificationTypeNames = "<name of color>")]
[Name("<name of color>")]
[UserVisible(true)]
[Order(Before = Priority.Default)]
internal sealed class ExampleColor: ClassificationFormatDefinition
{
public ExampleColor()
{
this.DisplayName = "<name of color>";
this.ForegroundColor = System.Windows.Media.Color.FromArgb(0, 0, 128, 128);
}
}
但是,我的 GetItemCount()
方法仍然没有命中。
我最近 运行 遇到了一个类似的问题,我的自定义 ColorableItems 没有显示在我的语法突出显示中。我可以通过清除字体和颜色缓存来解决这个问题。
我暂时在我的 vs 包的 Initialize 方法中包含以下内容:
IVsFontAndColorCacheManager mgr = this.GetService(typeof(SVsFontAndColorCacheManager)) as IVsFontAndColorCacheManager;
mgr.ClearAllCaches();
这为我解决了问题。此修复不应要求包括 6 个默认值或要求任何其他 ClassificationFormatDefinition 类.
注意:值得一提的是,我也从未见过调用 GetItemCount(),但清除缓存解决了主要问题。
致谢:还有一些功劳归功于 Ed Dore 在此线程 http://www.databaseforum.info/8/1217583.aspx 上的评论,它帮助我找到了解决方法。
我正在为 Visual Studio 开发语言服务,在 Visual Studio 2013 年遇到自定义颜色问题。我最近从 Visual Studio 2010 年搬到了 2013 年,现在每当我设置RequestStockColors
到 false
,我失去了所有语法突出显示。
我的语言服务实现了 GetColorableItem
和 GetItemCount
。我正在使用 9 种自定义颜色。当我调试我的语言服务时,我注意到 GetColorableItem
被调用了几次,但 GetItemCount
从未被调用。
当我通过 Visual Studio 进行调试时,我使用了以下命令行参数:
/ranu /rootsuffix Exp
更新: 我更改了前 5 种颜色的名称(与标准标记颜色重叠的颜色)以匹配标准名称(例如 "Keyword", "Identifier", 等等)并且这些颜色现在显示了,但是 none 我的额外颜色类型出现了。此外,我从未在 Visual Studio 的字体和颜色配置中看到它们中的任何一个。如何将它们安装在那里?
事实证明,我需要为我的每种自定义颜色创建一个 ClassificationFormatDefinition
实例,并将它们导出为 EditorFormatDefinition
类型。一旦我这样做了,它们就会出现在“字体和颜色”页面中,还会出现在语法突出显示中。
对于超出默认6种的每种颜色,我都添加了一个class定义如下:
[Export(typeof(EditorFormatDefinition))]
[ClassificationType(ClassificationTypeNames = "<name of color>")]
[Name("<name of color>")]
[UserVisible(true)]
[Order(Before = Priority.Default)]
internal sealed class ExampleColor: ClassificationFormatDefinition
{
public ExampleColor()
{
this.DisplayName = "<name of color>";
this.ForegroundColor = System.Windows.Media.Color.FromArgb(0, 0, 128, 128);
}
}
但是,我的 GetItemCount()
方法仍然没有命中。
我最近 运行 遇到了一个类似的问题,我的自定义 ColorableItems 没有显示在我的语法突出显示中。我可以通过清除字体和颜色缓存来解决这个问题。
我暂时在我的 vs 包的 Initialize 方法中包含以下内容:
IVsFontAndColorCacheManager mgr = this.GetService(typeof(SVsFontAndColorCacheManager)) as IVsFontAndColorCacheManager;
mgr.ClearAllCaches();
这为我解决了问题。此修复不应要求包括 6 个默认值或要求任何其他 ClassificationFormatDefinition 类.
注意:值得一提的是,我也从未见过调用 GetItemCount(),但清除缓存解决了主要问题。
致谢:还有一些功劳归功于 Ed Dore 在此线程 http://www.databaseforum.info/8/1217583.aspx 上的评论,它帮助我找到了解决方法。