语言服务:有没有办法强制解析?

时间:2012-02-27 23:29:42

标签: languageservice

我正在研究一种语言服务,并希望在用户输入代码之后解析更快。

现在我依赖于MSDN上记录的ParseReason.CheckOnIdle机制,但是在用户键入代码后经常需要很长时间。有时将光标移动到另一条线以更快地触发它会有所帮助。

我想要做的是在检测到用户输入文件后强制解析文件。我能够检测到用户何时输入,但我不知道如何使用ParseRequest触发解析器。

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我想扫描未在VS中打开的文件。我能做的最好的事情就是抽象出我的解析功能,这样它就会被VS调用,但是只要我想要的话,也可以通过另一个内部函数调用我的扩展,而不需要通过VS,这会将我的解析结果存储到与直接VS调用ParseRequest。

我很想知道你是否找到了更好的方法。

答案 1 :(得分:0)

您可以尝试在BeginParse()实施中致电Source。这会创建ParseRequest Check解析原因。我在我的语言服务中关闭了OnIdle计时器,并对其进行了测试,看起来无效。

如果检测到用户按键操作的代码可以访问LanguageService实施的实例,则可以使用service.GetSource(...).BeginParse()。如果它可以访问Source本身,那就更容易了。