2012-02-27 52 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本身,那麼它更容易。

相關問題