Skip to content
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

When several solutions for a given cs file, solution selection prompts block the UI by being spammed #856

Open
Melandel opened this issue Jan 3, 2024 · 0 comments

Comments

@Melandel
Copy link
Contributor

Melandel commented Jan 3, 2024

In order to reproduce:

let g:OmniSharp_start_server = 0
let g:OmniSharp_selector_ui = ''

Have 2 solutions Foo.sln and Bar.sln for a given Foo.cs file in some csproj

Analysis:
At the time of writing, the ftplugin file has the functions OmniSharp#actions#highlight#Buffer and OmniSharp#actions#buffer#Update run whenever cursor goes into/leaves from a *.cs buffer, and also on some other events.

On each of the events, these functions all call OmniSharp#GetHost(...) (from OmniSharp#stdio#Request).

OmniSharp#GetHost(...) then calls OmniSharp#FindSolutionOrDir which ends up prompting the following message:

Solution:
1. some\path\to\Foo.sln
2. some\path\to\Bar.sln
Type number and <Enter> or click with the mouse (q or empty cancels):

hence the prompt being spammed and blocking the UI

Additional information:

  • I have successfully got rid of the issue by adding if OmniSharp#IsAnyServerRunning() before calling OmniSharp#actions#highlight#Buffer and OmniSharp#actions#buffer#Update in the ftplugin file, but wasn't too sure if this was the way to go for fixing this behaviour
  • the issue also happens from sharpenup when the function sharpenup#codeactions#Count() calls OmniSharp#actions#codeactions#Count(opts) ; adding if OmniSharp#IsAnyServerRunning() before the call does the trick.
  • adding if !OmniSharp#IsAnyServerRunning() | return | endif inside OmniSharp#stdio#Request(command, opts) is another solution that works, but probably has implications on the performance side of things.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant