-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Project management #598
Project management #598
Conversation
dac1579
to
91050b8
Compare
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 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:
gf
into actual log files from there.