Skip to content

Commit 2054452

Browse files
authored
feat(omnisharp)!: use standard settings table for configuration (#3099)
1 parent b94a4c2 commit 2054452

File tree

1 file changed

+90
-93
lines changed

1 file changed

+90
-93
lines changed

lua/lspconfig/server_configurations/omnisharp.lua

Lines changed: 90 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,44 @@ local util = require 'lspconfig.util'
22

33
return {
44
default_config = {
5-
-- Enables support for reading code style, naming convention and analyzer
6-
-- settings from .editorconfig.
7-
enable_editorconfig_support = true,
8-
9-
-- If true, MSBuild project system will only load projects for files that
10-
-- were opened in the editor. This setting is useful for big C# codebases
11-
-- and allows for faster initialization of code navigation features only
12-
-- for projects that are relevant to code that is being edited. With this
13-
-- setting enabled OmniSharp may load fewer projects and may thus display
14-
-- incomplete reference lists for symbols.
15-
enable_ms_build_load_projects_on_demand = false,
16-
17-
-- Enables support for roslyn analyzers, code fixes and rulesets.
18-
enable_roslyn_analyzers = false,
19-
20-
-- Specifies whether 'using' directives should be grouped and sorted during
21-
-- document formatting.
22-
organize_imports_on_format = false,
23-
24-
-- Enables support for showing unimported types and unimported extension
25-
-- methods in completion lists. When committed, the appropriate using
26-
-- directive will be added at the top of the current file. This option can
27-
-- have a negative impact on initial completion responsiveness,
28-
-- particularly for the first few completion sessions after opening a
29-
-- solution.
30-
enable_import_completion = false,
31-
32-
-- Specifies whether to include preview versions of the .NET SDK when
33-
-- determining which version to use for project loading.
34-
sdk_include_prereleases = true,
35-
36-
-- Only run analyzers against open files when 'enableRoslynAnalyzers' is
37-
-- true
38-
analyze_open_documents_only = false,
5+
settings = {
6+
FormattingOptions = {
7+
-- Enables support for reading code style, naming convention and analyzer
8+
-- settings from .editorconfig.
9+
EnableEditorConfigSupport = true,
10+
-- Specifies whether 'using' directives should be grouped and sorted during
11+
-- document formatting.
12+
OrganizeImports = nil,
13+
},
14+
MsBuild = {
15+
-- If true, MSBuild project system will only load projects for files that
16+
-- were opened in the editor. This setting is useful for big C# codebases
17+
-- and allows for faster initialization of code navigation features only
18+
-- for projects that are relevant to code that is being edited. With this
19+
-- setting enabled OmniSharp may load fewer projects and may thus display
20+
-- incomplete reference lists for symbols.
21+
LoadProjectsOnDemand = nil,
22+
},
23+
RoslynExtensionsOptions = {
24+
-- Enables support for roslyn analyzers, code fixes and rulesets.
25+
EnableAnalyzersSupport = nil,
26+
-- Enables support for showing unimported types and unimported extension
27+
-- methods in completion lists. When committed, the appropriate using
28+
-- directive will be added at the top of the current file. This option can
29+
-- have a negative impact on initial completion responsiveness,
30+
-- particularly for the first few completion sessions after opening a
31+
-- solution.
32+
EnableImportCompletion = nil,
33+
-- Only run analyzers against open files when 'enableRoslynAnalyzers' is
34+
-- true
35+
AnalyzeOpenDocumentsOnly = nil,
36+
},
37+
Sdk = {
38+
-- Specifies whether to include preview versions of the .NET SDK when
39+
-- determining which version to use for project loading.
40+
IncludePrereleases = true,
41+
},
42+
},
3943

4044
filetypes = { 'cs', 'vb' },
4145
root_dir = util.root_pattern('*.sln', '*.csproj', 'omnisharp.json', 'function.json'),
@@ -51,32 +55,21 @@ return {
5155
table.insert(new_config.cmd, '--languageserver')
5256

5357
-- Append configuration-dependent command arguments
54-
if new_config.enable_editorconfig_support then
55-
table.insert(new_config.cmd, 'FormattingOptions:EnableEditorConfigSupport=true')
58+
local function flatten(tbl)
59+
local ret = {}
60+
for k, v in pairs(tbl) do
61+
if type(v) == 'table' then
62+
for _, pair in ipairs(flatten(v)) do
63+
ret[#ret + 1] = k .. ':' .. pair
64+
end
65+
else
66+
ret[#ret + 1] = k .. '=' .. vim.inspect(v)
67+
end
68+
end
69+
return ret
5670
end
57-
58-
if new_config.organize_imports_on_format then
59-
table.insert(new_config.cmd, 'FormattingOptions:OrganizeImports=true')
60-
end
61-
62-
if new_config.enable_ms_build_load_projects_on_demand then
63-
table.insert(new_config.cmd, 'MsBuild:LoadProjectsOnDemand=true')
64-
end
65-
66-
if new_config.enable_roslyn_analyzers then
67-
table.insert(new_config.cmd, 'RoslynExtensionsOptions:EnableAnalyzersSupport=true')
68-
end
69-
70-
if new_config.enable_import_completion then
71-
table.insert(new_config.cmd, 'RoslynExtensionsOptions:EnableImportCompletion=true')
72-
end
73-
74-
if new_config.sdk_include_prereleases then
75-
table.insert(new_config.cmd, 'Sdk:IncludePrereleases=true')
76-
end
77-
78-
if new_config.analyze_open_documents_only then
79-
table.insert(new_config.cmd, 'RoslynExtensionsOptions:AnalyzeOpenDocumentsOnly=true')
71+
if new_config.settings then
72+
vim.list_extend(new_config.cmd, flatten(new_config.settings))
8073
end
8174

8275
-- Disable the handling of multiple workspaces in a single instance
@@ -103,40 +96,44 @@ For `go_to_definition` to work fully, extended `textDocument/definition` handler
10396
require'lspconfig'.omnisharp.setup {
10497
cmd = { "dotnet", "/path/to/omnisharp/OmniSharp.dll" },
10598
106-
-- Enables support for reading code style, naming convention and analyzer
107-
-- settings from .editorconfig.
108-
enable_editorconfig_support = true,
109-
110-
-- If true, MSBuild project system will only load projects for files that
111-
-- were opened in the editor. This setting is useful for big C# codebases
112-
-- and allows for faster initialization of code navigation features only
113-
-- for projects that are relevant to code that is being edited. With this
114-
-- setting enabled OmniSharp may load fewer projects and may thus display
115-
-- incomplete reference lists for symbols.
116-
enable_ms_build_load_projects_on_demand = false,
117-
118-
-- Enables support for roslyn analyzers, code fixes and rulesets.
119-
enable_roslyn_analyzers = false,
120-
121-
-- Specifies whether 'using' directives should be grouped and sorted during
122-
-- document formatting.
123-
organize_imports_on_format = false,
124-
125-
-- Enables support for showing unimported types and unimported extension
126-
-- methods in completion lists. When committed, the appropriate using
127-
-- directive will be added at the top of the current file. This option can
128-
-- have a negative impact on initial completion responsiveness,
129-
-- particularly for the first few completion sessions after opening a
130-
-- solution.
131-
enable_import_completion = false,
132-
133-
-- Specifies whether to include preview versions of the .NET SDK when
134-
-- determining which version to use for project loading.
135-
sdk_include_prereleases = true,
136-
137-
-- Only run analyzers against open files when 'enableRoslynAnalyzers' is
138-
-- true
139-
analyze_open_documents_only = false,
99+
settings = {
100+
FormattingOptions = {
101+
-- Enables support for reading code style, naming convention and analyzer
102+
-- settings from .editorconfig.
103+
EnableEditorConfigSupport = true,
104+
-- Specifies whether 'using' directives should be grouped and sorted during
105+
-- document formatting.
106+
OrganizeImports = nil,
107+
},
108+
MsBuild = {
109+
-- If true, MSBuild project system will only load projects for files that
110+
-- were opened in the editor. This setting is useful for big C# codebases
111+
-- and allows for faster initialization of code navigation features only
112+
-- for projects that are relevant to code that is being edited. With this
113+
-- setting enabled OmniSharp may load fewer projects and may thus display
114+
-- incomplete reference lists for symbols.
115+
LoadProjectsOnDemand = nil,
116+
},
117+
RoslynExtensionsOptions = {
118+
-- Enables support for roslyn analyzers, code fixes and rulesets.
119+
EnableAnalyzersSupport = nil,
120+
-- Enables support for showing unimported types and unimported extension
121+
-- methods in completion lists. When committed, the appropriate using
122+
-- directive will be added at the top of the current file. This option can
123+
-- have a negative impact on initial completion responsiveness,
124+
-- particularly for the first few completion sessions after opening a
125+
-- solution.
126+
EnableImportCompletion = nil,
127+
-- Only run analyzers against open files when 'enableRoslynAnalyzers' is
128+
-- true
129+
AnalyzeOpenDocumentsOnly = nil,
130+
},
131+
Sdk = {
132+
-- Specifies whether to include preview versions of the .NET SDK when
133+
-- determining which version to use for project loading.
134+
IncludePrereleases = true,
135+
},
136+
},
140137
}
141138
```
142139
]],

0 commit comments

Comments
 (0)