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:
Microsoft.CodeAnalysis.LanguageServer
in ~/.roslyn
Microsoft.CodeAnalysis.LanguageServer
as a processunix socket
or named pipe and forwards all communication to stdio
capabilities
notification from the server, and forces pull diagnostics
to be available. This forces the server respect clients who do not support dynamic registration of diagnostic capabilities.initialize
notification from the client, and finds relevant .sln
or .csproj
files and sends them to the server as a custom open
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,
})