fix(language-service): wait for tsserver to be ready when requesting auto insert .value
#3914
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The call to
provideAutoInsertionEdit
is too eager (called 100ms after the document is changed). At this time, the tsserver may not have obtained the latest script changes, and the requested position parameter may be calculated at the wrong position.Even if an additional version is used to check whether the tsserver script has been synchronized, it does not mean that the type checker is currently available, because the tsserver must wait for the diagnosis to be completed to synchronize the internal state. If the TS API is called in advance in the request handle, it will also cause the tsserver status to be abnormal.
It is currently difficult to find a way to reliably handle tsserver state synchronization, so this PR simply waits 250ms to bypass the problem.