我正在研究一种语言服务,并希望在用户输入代码之后解析更快。
现在我依赖于MSDN上记录的ParseReason.Check
和OnIdle
机制,但是在用户键入代码后经常需要很长时间。有时将光标移动到另一条线以更快地触发它会有所帮助。
我想要做的是在检测到用户输入文件后强制解析文件。我能够检测到用户何时输入,但我不知道如何使用ParseRequest
触发解析器。
答案 0 :(得分:0)
我遇到了类似的问题,我想扫描未在VS中打开的文件。我能做的最好的事情就是抽象出我的解析功能,这样它就会被VS调用,但是只要我想要的话,也可以通过另一个内部函数调用我的扩展,而不需要通过VS,这会将我的解析结果存储到与直接VS调用ParseRequest。
我很想知道你是否找到了更好的方法。
答案 1 :(得分:0)
您可以尝试在BeginParse()
实施中致电Source
。这会创建ParseRequest
Check
解析原因。我在我的语言服务中关闭了OnIdle
计时器,并对其进行了测试,看起来无效。
如果检测到用户按键操作的代码可以访问LanguageService
实施的实例,则可以使用service.GetSource(...).BeginParse()
。如果它可以访问Source
本身,那就更容易了。