This repository has been archived by the owner on Mar 3, 2023. It is now read-only.
Update Tree-sitter syntax highlighting synchronously for parses that complete sync #17923
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 Background
In #17339, I moved Tree-sitter's parsing to a background thread, but allowed a limited amount of parsing work to be done on the main thread. But even if the parsing completed on the main thread, the syntax tree would be returned via an async method.
While working on #17879, I noticed that this asynchronous behavior was somewhat inconvenient. Some tests failed because the syntax tree wouldn't update until the next tick after a small text change.
The Fix
In this PR, I've updated the
TreeSitterLanguageMode
so that in the case where parsing completes synchronously, the language mode's state will be updated synchronously too.I've also fixed a number of other small bugs in
TreeSitterLanguageMode
that showed up in the test suite during #17339.Refs tree-sitter/node-tree-sitter#26