aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/csharp_ls.lua
blob: f74b5d067b029e06e85ad2ea4c9375faf86c25d4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
---@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 = { 'csharp-ls' },
  cmd_cwd = vim.fs.root(0, {
    function(name, _)
      return name:match '%.slnx?$' ~= nil
    end,
    function(name, _)
      return name:match '%.csproj$' ~= nil
    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,
  },
}