linuxware/modules/neovim/lua/plugins/roslyn-nvim.lua
Alexandre Cavalheiro S. Tiago da Silva 5090767ba2
fix(neovim): update roslyn.nvim to new spec
Also finally call AstroLsp's `on_attach` function for `roslyn` and
`rzls` lsp servers.
2025-04-24 22:44:12 -03:00

90 lines
3.2 KiB
Lua

---@type LazySpec
return {
{
"seblyng/roslyn.nvim",
ft = { "cs", "razor" },
lazy = true,
dependencies = {
{
"tris203/rzls.nvim",
---@return rzls.Config
opts = function(_, opts)
local has_astrolsp, astrolsp = pcall(require, "astrolsp")
local has_blink, blink = pcall(require, "blink-cmp")
opts = {
capabilities = has_blink and blink.get_lsp_capabilities({}, true)
or vim.lsp.protocol.make_client_capabilities(),
on_attach = has_astrolsp and astrolsp.on_attach or nil,
path = vim.fn.get_nix_store "rzls" .. "/bin/rzls",
}
return opts
end,
},
},
opts = function(_, opts)
local has_astrolsp, astrolsp = pcall(require, "astrolsp")
local rzlspath = vim.fn.get_nix_store "rzls"
opts = {
---@type vim.lsp.ClientConfig
---@diagnostic disable-next-line: missing-fields
config = {
cmd = {
"Microsoft.CodeAnalysis.LanguageServer",
"--stdio",
"--logLevel=Information",
"--extensionLogDirectory=" .. vim.fs.dirname(vim.lsp.get_log_path()),
"--razorSourceGenerator=" .. rzlspath .. "/lib/rzls/Microsoft.CodeAnalysis.Razor.Compiler.dll",
"--razorDesignTimePath="
.. rzlspath
.. "/lib/rzls/Targets/Microsoft.NET.Sdk.Razor.DesignTime.targets",
},
handlers = require "rzls.roslyn_handlers",
on_attach = has_astrolsp and astrolsp.on_attach or nil,
settings = {
["csharp|inlay_hints"] = {
csharp_enable_inlay_hints_for_implicit_object_creation = true,
csharp_enable_inlay_hints_for_implicit_variable_types = true,
csharp_enable_inlay_hints_for_lambda_parameter_types = true,
csharp_enable_inlay_hints_for_types = true,
dotnet_enable_inlay_hints_for_indexer_parameters = true,
dotnet_enable_inlay_hints_for_literal_parameters = true,
dotnet_enable_inlay_hints_for_object_creation_parameters = true,
dotnet_enable_inlay_hints_for_other_parameters = true,
dotnet_enable_inlay_hints_for_parameters = true,
dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true,
dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true,
dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true,
},
["csharp|code_lens"] = {
dotnet_enable_references_code_lens = true,
},
},
},
}
return opts
end,
init = function()
vim.filetype.add {
extension = {
razor = "razor",
cshtml = "razor",
},
}
end,
},
{
"nvim-neotest/neotest",
dependencies = { "Issafalcon/neotest-dotnet", config = function() end },
opts = function(_, opts)
if not opts.adapters then
opts.adapters = {}
end
table.insert(opts.adapters, require "neotest-dotnet" (require("astrocore").plugin_opts "neotest-dotnet"))
end,
},
}