我正在尝试使用Noah Richards的差异着色示例来玩转VS2010的新语法着色功能。目标是为SpecFlow(http://www.specflow.org)创建语法着色。
在我的情况下,查找语法元素相当复杂且不是基于行级别的。因此,当我实现GetClassificationSpans时,我不想重新解析整个文件,而是从更改文本的开头状态开始解析内容。
我认为可以将先前的分类作为ClassificationTags获取。我使用IBufferTagAggregatorFactoryService类实现了这一点。
它可以工作,但我不确定这是否是最佳方法。我应该为整个分类器类创建标记聚合器,还是每次调用GetClassificationSpans时都可以创建它?我应该创建一个特殊的标记以记住解析状态吗?
也许这根本不是正确的方法,我也对其他建议感兴趣。
Br, Gaspar 编辑:我在这个主题上找到了一系列好的文章:http://www.hill30.com/MikeFeingoldBlog/index.php/2009/07/31/django-editor-in-vs-2010-part-1-colors/
在我的情况下,查找语法元素相当复杂且不是基于行级别的。因此,当我实现GetClassificationSpans时,我不想重新解析整个文件,而是从更改文本的开头状态开始解析内容。
我认为可以将先前的分类作为ClassificationTags获取。我使用IBufferTagAggregatorFactoryService类实现了这一点。
它可以工作,但我不确定这是否是最佳方法。我应该为整个分类器类创建标记聚合器,还是每次调用GetClassificationSpans时都可以创建它?我应该创建一个特殊的标记以记住解析状态吗?
也许这根本不是正确的方法,我也对其他建议感兴趣。
Br, Gaspar 编辑:我在这个主题上找到了一系列好的文章:http://www.hill30.com/MikeFeingoldBlog/index.php/2009/07/31/django-editor-in-vs-2010-part-1-colors/
IVsColorizer
)中有这个功能,但在新的接口中却没有了,所以您需要自己编写模型。如果您遇到任何问题,请告诉我,因为当我将这些旧的IVsColorizer
进行适配以使其与分类工作时,我也不得不编写这样的模型。 - Noah Richards