2012-02-27 49 views
2

我正在使用一种语言服务,并希望在用户输入代码的速度更快后解析。语言服务:有没有办法强制解析?

现在我依赖于在MSDN上记录的ParseReason.CheckOnIdle机制,但在用户键入代码后通常会调用它很长时间。有时候将光标移动到另一行可以更快地触发它。

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

+0

我只注意到LanguageService类有一个CreateParseRequest方法。所以我尝试从OnCaretMoved与ParseReason.Check调用它,但它不会调用我的ParseSource方法......所以很困惑。 – 2012-03-15 20:09:02

回答

0

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

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

0

您可以尝试致电BeginParse()您的Source实施。这与Check解析原因创建了一个ParseRequest。我关闭了我的语言服务中的OnIdle计时器,并对其进行了测试,结果表明它可以正常工作。

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

相关问题