languages/csharp: add roslyn-ls support

It adds roslyn-ls configuration and roslyn-nvim plugin
This commit is contained in:
CaueDosAnjos 2025-12-10 15:51:44 -03:00 committed by CaueAnjos
commit f3c3b356f3
3 changed files with 53 additions and 3 deletions

View file

@ -72,11 +72,41 @@
}
'';
};
roslyn-ls = {
package = pkgs.roslyn-ls;
internalFormatter = true;
lspConfig = ''
vim.env.PATH = vim.env.PATH .. ":${cfg.lsp.package}/lib/roslyn-ls/"
local uv = vim.uv
local fs = vim.fs
vim.lsp.config("roslyn", {
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''
{
"dotnet",
"${cfg.lsp.package}/lib/roslyn-ls/Microsoft.CodeAnalysis.LanguageServer.dll",
"--logLevel",
"Information",
"--extensionLogDirectory",
fs.joinpath(uv.os_tmpdir(), "roslyn_ls/logs"),
"--stdio",
}
''
}
})
'';
};
};
extraServerPlugins = {
omnisharp = ["omnisharp-extended-lsp-nvim"];
csharp_ls = ["csharpls-extended-lsp-nvim"];
roslyn-ls = ["roslyn-nvim"];
};
cfg = config.vim.languages.csharp;
@ -86,8 +116,9 @@ in {
enable = mkEnableOption "C# language support";
treesitter = {
enable = mkEnableOption "C# treesitter" // {default = config.vim.languages.enableTreesitter;};
package = mkGrammarOption pkgs "c-sharp";
enable = mkEnableOption "C#/razor treesitter" // {default = config.vim.languages.enableTreesitter;};
csPackage = mkGrammarOption pkgs "c-sharp";
razorPackage = mkGrammarOption pkgs "razor";
};
lsp = {
@ -110,7 +141,7 @@ in {
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.treesitter.enable {
vim.treesitter.enable = true;
vim.treesitter.grammars = [cfg.treesitter.package];
vim.treesitter.grammars = [cfg.treesitter.csPackage cfg.treesitter.razorPackage];
})
(mkIf cfg.lsp.enable {