Merged
Conversation
This was referenced Jun 18, 2020
Closed
dac1579 to
91050b8
Compare
Member
Author
|
Status update: 4f2e069 is a very different approach to project loading, and works really well - highlighting, for example, is available very quickly, and no errors are received from the server. Request-replaying also works much better, as pending requests are saved per-buffer, instead of per-command, meaning that 2 buffers can have pending highlighting requests replayed as soon as their buffers are initialised. However there are some diagnostic timeouts happening on the server which I believe are new, and diagnostics appear to take longer now than before. So I'll look into this before merging. |
8ae4be9 to
69cb351
Compare
The OmniSharp-roslyn loading issues appear to stem from situations where multiple buffer-requests are sent before the project is fully initialized. This results in duplicate "miscellaneous" files, which are not correctly promoted to "project" files. Instead, this commit introduces a buffer "initialization" concept, where an `/updatebuffer` request is always sent as the first request for a buffer, and no further requests are sent for that buffer until a response is received (indicating that the server has registered the file, and there will be no duplicates created).
69cb351 to
b284439
Compare
Highlighting can work well as soon as the buffer is initialised (well before the project is loaded). However, some aspects of highlighting are project-dependent (e.g. pre-processors depending on project configuration), so the _correct_ highlighting will only be applied after the project has loaded completely.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR is where I'm tracking modifications to project management. Done so far:
The list of projects can be used to display "server loading progress" in the statusline - here's an example using vim-sharpenup, PR#4:
Things I hope to achieve here:
then change mode. This will allow us to make stdio the default in a backwards-compatible way.Update: I looked into restarting the server in HTTP mode, but it requires too many changes for little gain. The entire session is set up either for HTTP or stdio including autocmds for linting engines and compatibility checks. Detecting the wrong server and stopping it cleanly with a warning message is fine.
Note:
the final point hopefully encompasses a fix for #599Update: it does not, #599 is a WSL bug and will be fixed on the OmniSharp-roslyn side.Closes #468
Update: Since looking into the project loading mechanisms involves heavy use of the logs, I have included some other updates here that make this a bit more manageable:
gfinto actual log files from there.