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

@ -520,3 +520,9 @@
[JudahZF](https://github.com/JudahZF):
- Added gitFiles mapping option to telescope
[CaueAnjos](https://github.com/CaueAnjos):
[roslyn-nvim]: https://github.com/seblyng/roslyn.nvim
- Add roslyn-ls with [roslyn-nvim] as available `lsp.server` option for the C# language.

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 {

View file

@ -2299,6 +2299,19 @@
"url": "https://github.com/rose-pine/neovim/archive/72a04c4065345b51b56aed4859ea1d884f734097.tar.gz",
"hash": "144jffddwf727w4yqbikv2f46cny8r9z8mpkbc5ngzail5ldj0q8"
},
"roslyn-nvim": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "seblyng",
"repo": "roslyn.nvim"
},
"branch": "main",
"submodules": false,
"revision": "1ebc9393d3e577d9f68102f14d98b2e4e7f15644",
"url": "https://github.com/seblyng/roslyn.nvim/archive/1ebc9393d3e577d9f68102f14d98b2e4e7f15644.tar.gz",
"hash": "0jbgxyrv59pf2n4xy821vcbwiahi4nal642nrpiwymzwya355adh"
},
"rtp-nvim": {
"type": "Git",
"repository": {