Skip to content

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

Open
@Melandel

Description

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.

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