Adjust LSP Content Object Lifecycle #2102
Merged
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.
Description
Adjusts how LSP content objects are created and updated. CESE works best when coordinators and highlighters are static for the lifetime of the editor. This adjusts both the content coordinator and semantic highlighter objects to have optional document URIs and server references. That makes it so these objects will be passed into the editor immediately, and will just ignore requests or notifications until the language server tells the object about itself.
The change fixes a bug where an editor opened that triggers a language server startup would not have a working semantic highlighter or update its contents with the server when the document was updated. This fixes that race condition.
This also makes a small change to language server initialization, this creates the log container before the server and injects it into the data channel so if the channel terminates the log container can receive a message.
Related Issues
Checklist
Screenshots
N/A