nvim/lsp/csharp_ls.lua
Simon Lasbrugnas a2e5555c64
fix(lsp)!: actually use the root lsp/ folder and remove
lua/custom/lsp/** configs

This commit removes the need for nvim-lspconfig which is replaced by the
vim.lsp API.

The lsp/ folder is a copy of nvim-lspconfig's lsp/ folder as it makes it
easy to modify LSP configurations on the fly.

Conform: biome has been replaced with oxfmt
2026-02-02 16:16:06 +01:00

38 lines
1.1 KiB
Lua

---@brief
---
--- https://github.com/razzmatazz/csharp-language-server
---
--- Language Server for C#.
---
--- csharp-ls requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.
---
--- The preferred way to install csharp-ls is with `dotnet tool install --global csharp-ls`.
local util = require 'lspconfig.util'
---@type vim.lsp.Config
return {
cmd = function(dispatchers, config)
return vim.lsp.rpc.start({ 'csharp-ls' }, dispatchers, {
-- csharp-ls attempt to locate sln, slnx or csproj files from cwd, so set cwd to root directory.
-- If cmd_cwd is provided, use it instead.
cwd = config.cmd_cwd or config.root_dir,
env = config.cmd_env,
detached = config.detached,
})
end,
root_dir = function(bufnr, on_dir)
local fname = vim.api.nvim_buf_get_name(bufnr)
on_dir(util.root_pattern '*.sln'(fname) or util.root_pattern '*.slnx'(fname) or util.root_pattern '*.csproj'(fname))
end,
filetypes = { 'cs' },
init_options = {
AutomaticWorkspaceInit = true,
},
get_language_id = function(_, ft)
if ft == 'cs' then
return 'csharp'
end
return ft
end,
}