When several solutions for a given cs file, solution selection prompts block the UI by being spammed · Issue #856 · OmniSharp/omnisharp-vim · GitHub
Skip to content

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

Open

Description

@Melandel

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions