我正在使用一種語言服務,並希望在用戶輸入代碼的速度更快後解析。語言服務:有沒有辦法強制解析?
現在我依賴於在MSDN上記錄的ParseReason.Check
和OnIdle
機制,但在用戶鍵入代碼後通常會調用它很長時間。有時候將光標移動到另一行可以更快地觸發它。
我想要做的是在檢測到用戶輸入文件後強制解析文件。我能夠檢測用戶何時輸入,但我不知道如何觸發分析器ParseRequest
。
我正在使用一種語言服務,並希望在用戶輸入代碼的速度更快後解析。語言服務:有沒有辦法強制解析?
現在我依賴於在MSDN上記錄的ParseReason.Check
和OnIdle
機制,但在用戶鍵入代碼後通常會調用它很長時間。有時候將光標移動到另一行可以更快地觸發它。
我想要做的是在檢測到用戶輸入文件後強制解析文件。我能夠檢測用戶何時輸入,但我不知道如何觸發分析器ParseRequest
。
我遇到了類似的問題,我想掃描未在VS中打開的文件。我能做的最好的是抽象出我的解析功能,以便它被VS調用,但是也可以通過另一個內部函數調用到我的擴展中,而不需要經過VS,並且這會將我的解析結果存儲爲與直接VS調用ParseRequest。
我很想知道你是否找到了一個更好的方法。
您可以嘗試致電BeginParse()
您的Source
實施。這與Check
解析原因創建了一個ParseRequest
。我關閉了我的語言服務中的OnIdle
計時器,並對其進行了測試,結果表明它可以正常工作。
如果檢測到用戶按鍵的代碼可以訪問LanguageService
實現的實例,則可以使用service.GetSource(...).BeginParse()
。如果它可以訪問Source
本身,那麼它更容易。
我只注意到LanguageService類有一個CreateParseRequest方法。所以我嘗試從OnCaretMoved與ParseReason.Check調用它,但它不會調用我的ParseSource方法......所以很困惑。 – 2012-03-15 20:09:02