A wrapper around the language server behind the C# Visual Studio Code extension, Microsoft.CodeAnalysis.LanguageServer
, which makes it compatible with other editors, e.g., Helix.
This is more stable and faster than OmniSharp.
This tool works around the quirks of Microsoft.CodeAnalysis.LanguageServer
in the following way:
- Installs
Microsoft.CodeAnalysis.LanguageServer
in~/.roslyn
- Launches
Microsoft.CodeAnalysis.LanguageServer
as a process - Passes the provided
unix socket
or named pipe and forwards all communication tostdio
- Waits for
capabilities
notification from the server, and forcespull diagnostics
to be available. This forces the server respect clients who do not support dynamic registration of diagnostic capabilities. - Waits for an
initialize
notification from the client, and finds relevant.sln
or.csproj
files and sends them to the server as a customopen
notification.
Download the binaries that matches your platform under Releases
If you use nix
, you can use this repository's nix flake
.
Alternatively, install with cargo
: cargo install --git https://github.com/SofusA/roslyn-language-server
Since Microsoft.CodeAnalysis.LanguageServer
only supports pull diagnostics
and Helix does not (yet), you would need to use my branch at github:sofusa/helix-pull-diagnostics
.
[language-server.roslyn]
command = "roslyn-language-server"
[[language]]
name = "c-sharp"
language-servers = ["roslyn"]
vim.api.nvim_create_autocmd('FileType', {
pattern = 'cs',
callback = function(args)
local root_dir = vim.fs.dirname(
vim.fs.find({ '.sln', '.csproj', '.git' }, { upward = true })[1]
)
vim.lsp.start({
name = 'roslyn-language-server',
cmd = {'roslyn-language-server'},
root_dir = root_dir,
})
end,
})