@@ -2,40 +2,44 @@ local util = require 'lspconfig.util'
2
2
3
3
return {
4
4
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
+ },
39
43
40
44
filetypes = { ' cs' , ' vb' },
41
45
root_dir = util .root_pattern (' *.sln' , ' *.csproj' , ' omnisharp.json' , ' function.json' ),
@@ -51,32 +55,21 @@ return {
51
55
table.insert (new_config .cmd , ' --languageserver' )
52
56
53
57
-- 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
56
70
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 ))
80
73
end
81
74
82
75
-- 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
103
96
require'lspconfig'.omnisharp.setup {
104
97
cmd = { "dotnet", "/path/to/omnisharp/OmniSharp.dll" },
105
98
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
+ },
140
137
}
141
138
```
142
139
]] ,
0 commit comments