1
+ # Remove the line below if you want to inherit .editorconfig settings from higher directories
2
+ root = true
3
+
4
+ # C# files
5
+ [* .cs ]
6
+
7
+ # ### Core EditorConfig Options ####
8
+
9
+ # Indentation and spacing
10
+ indent_size = 4
11
+ indent_style = tab
12
+ tab_width = 4
13
+
14
+ # New line preferences
15
+ end_of_line = crlf
16
+ insert_final_newline = true
17
+
18
+ # ### .NET Coding Conventions ####
19
+
20
+ # Organize usings
21
+ dotnet_separate_import_directive_groups = false
22
+ dotnet_sort_system_directives_first = false
23
+ file_header_template = MIT License\r\n\r\nCopyright (c) 2024 Robert Heffernan\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the "Software"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.
24
+
25
+ # this. and Me. preferences
26
+ dotnet_style_qualification_for_event = false
27
+ dotnet_style_qualification_for_field = false
28
+ dotnet_style_qualification_for_method = false
29
+ dotnet_style_qualification_for_property = false
30
+
31
+ # Language keywords vs BCL types preferences
32
+ dotnet_style_predefined_type_for_locals_parameters_members = false
33
+ dotnet_style_predefined_type_for_member_access = false
34
+
35
+ # Parentheses preferences
36
+ dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
37
+ dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
38
+ dotnet_style_parentheses_in_other_operators = never_if_unnecessary
39
+ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
40
+
41
+ # Modifier preferences
42
+ dotnet_style_require_accessibility_modifiers = for_non_interface_members
43
+
44
+ # Expression-level preferences
45
+ dotnet_style_coalesce_expression = true
46
+ dotnet_style_collection_initializer = true
47
+ dotnet_style_explicit_tuple_names = true
48
+ dotnet_style_namespace_match_folder = true
49
+ dotnet_style_null_propagation = true
50
+ dotnet_style_object_initializer = true
51
+ dotnet_style_operator_placement_when_wrapping = beginning_of_line
52
+ dotnet_style_prefer_auto_properties = true
53
+ dotnet_style_prefer_collection_expression = when_types_loosely_match
54
+ dotnet_style_prefer_compound_assignment = true
55
+ dotnet_style_prefer_conditional_expression_over_assignment = true
56
+ dotnet_style_prefer_conditional_expression_over_return = true
57
+ dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
58
+ dotnet_style_prefer_inferred_anonymous_type_member_names = true
59
+ dotnet_style_prefer_inferred_tuple_names = true
60
+ dotnet_style_prefer_is_null_check_over_reference_equality_method = true
61
+ dotnet_style_prefer_simplified_boolean_expressions = true
62
+ dotnet_style_prefer_simplified_interpolation = true
63
+
64
+ # Field preferences
65
+ dotnet_style_readonly_field = true
66
+
67
+ # Parameter preferences
68
+ dotnet_code_quality_unused_parameters = all
69
+
70
+ # Suppression preferences
71
+ dotnet_remove_unnecessary_suppression_exclusions = none
72
+
73
+ # New line preferences
74
+ dotnet_style_allow_multiple_blank_lines_experimental = true
75
+ dotnet_style_allow_statement_immediately_after_block_experimental = true
76
+
77
+ # ### C# Coding Conventions ####
78
+
79
+ # var preferences
80
+ csharp_style_var_elsewhere = false :silent
81
+ csharp_style_var_for_built_in_types = false :silent
82
+ csharp_style_var_when_type_is_apparent = false :silent
83
+
84
+ # Expression-bodied members
85
+ csharp_style_expression_bodied_accessors = true :silent
86
+ csharp_style_expression_bodied_constructors = false :silent
87
+ csharp_style_expression_bodied_indexers = true :silent
88
+ csharp_style_expression_bodied_lambdas = true :silent
89
+ csharp_style_expression_bodied_local_functions = false :silent
90
+ csharp_style_expression_bodied_methods = false :silent
91
+ csharp_style_expression_bodied_operators = false :silent
92
+ csharp_style_expression_bodied_properties = true :silent
93
+
94
+ # Pattern matching preferences
95
+ csharp_style_pattern_matching_over_as_with_null_check = true :suggestion
96
+ csharp_style_pattern_matching_over_is_with_cast_check = true :suggestion
97
+ csharp_style_prefer_extended_property_pattern = true :suggestion
98
+ csharp_style_prefer_not_pattern = true :suggestion
99
+ csharp_style_prefer_pattern_matching = true :silent
100
+ csharp_style_prefer_switch_expression = true :suggestion
101
+
102
+ # Null-checking preferences
103
+ csharp_style_conditional_delegate_call = true :suggestion
104
+
105
+ # Modifier preferences
106
+ csharp_prefer_static_local_function = true :suggestion
107
+ csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
108
+ csharp_style_prefer_readonly_struct = true :suggestion
109
+ csharp_style_prefer_readonly_struct_member = true :suggestion
110
+
111
+ # Code-block preferences
112
+ csharp_prefer_braces = true :silent
113
+ csharp_prefer_simple_using_statement = true :suggestion
114
+ csharp_style_namespace_declarations = block_scoped:silent
115
+ csharp_style_prefer_method_group_conversion = true :silent
116
+ csharp_style_prefer_primary_constructors = true :suggestion
117
+ csharp_style_prefer_top_level_statements = true :silent
118
+
119
+ # Expression-level preferences
120
+ csharp_prefer_simple_default_expression = true :suggestion
121
+ csharp_style_deconstructed_variable_declaration = true :suggestion
122
+ csharp_style_implicit_object_creation_when_type_is_apparent = true :suggestion
123
+ csharp_style_inlined_variable_declaration = true :suggestion
124
+ csharp_style_prefer_index_operator = true :suggestion
125
+ csharp_style_prefer_local_over_anonymous_function = true :suggestion
126
+ csharp_style_prefer_null_check_over_type_check = true :suggestion
127
+ csharp_style_prefer_range_operator = true :suggestion
128
+ csharp_style_prefer_tuple_swap = true :suggestion
129
+ csharp_style_prefer_utf8_string_literals = true :suggestion
130
+ csharp_style_throw_expression = true :suggestion
131
+ csharp_style_unused_value_assignment_preference = discard_variable:suggestion
132
+ csharp_style_unused_value_expression_statement_preference = discard_variable:silent
133
+
134
+ # 'using' directive preferences
135
+ csharp_using_directive_placement = outside_namespace:silent
136
+
137
+ # New line preferences
138
+ csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true :silent
139
+ csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true :silent
140
+ csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true :silent
141
+ csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true :silent
142
+ csharp_style_allow_embedded_statements_on_same_line_experimental = true :silent
143
+
144
+ # ### C# Formatting Rules ####
145
+
146
+ # New line preferences
147
+ csharp_new_line_before_catch = true
148
+ csharp_new_line_before_else = true
149
+ csharp_new_line_before_finally = true
150
+ csharp_new_line_before_members_in_anonymous_types = true
151
+ csharp_new_line_before_members_in_object_initializers = true
152
+ csharp_new_line_before_open_brace = all
153
+ csharp_new_line_between_query_expression_clauses = true
154
+
155
+ # Indentation preferences
156
+ csharp_indent_block_contents = true
157
+ csharp_indent_braces = false
158
+ csharp_indent_case_contents = true
159
+ csharp_indent_case_contents_when_block = true
160
+ csharp_indent_labels = one_less_than_current
161
+ csharp_indent_switch_labels = true
162
+
163
+ # Space preferences
164
+ csharp_space_after_cast = false
165
+ csharp_space_after_colon_in_inheritance_clause = true
166
+ csharp_space_after_comma = true
167
+ csharp_space_after_dot = false
168
+ csharp_space_after_keywords_in_control_flow_statements = true
169
+ csharp_space_after_semicolon_in_for_statement = true
170
+ csharp_space_around_binary_operators = before_and_after
171
+ csharp_space_around_declaration_statements = false
172
+ csharp_space_before_colon_in_inheritance_clause = true
173
+ csharp_space_before_comma = false
174
+ csharp_space_before_dot = false
175
+ csharp_space_before_open_square_brackets = false
176
+ csharp_space_before_semicolon_in_for_statement = false
177
+ csharp_space_between_empty_square_brackets = false
178
+ csharp_space_between_method_call_empty_parameter_list_parentheses = false
179
+ csharp_space_between_method_call_name_and_opening_parenthesis = false
180
+ csharp_space_between_method_call_parameter_list_parentheses = false
181
+ csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
182
+ csharp_space_between_method_declaration_name_and_open_parenthesis = false
183
+ csharp_space_between_method_declaration_parameter_list_parentheses = false
184
+ csharp_space_between_parentheses = false
185
+ csharp_space_between_square_brackets = false
186
+
187
+ # Wrapping preferences
188
+ csharp_preserve_single_line_blocks = true
189
+ csharp_preserve_single_line_statements = true
190
+
191
+ # ### Naming styles ####
192
+
193
+ # Naming rules
194
+
195
+ dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
196
+ dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
197
+ dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
198
+
199
+ dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
200
+ dotnet_naming_rule.types_should_be_pascal_case.symbols = types
201
+ dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
202
+
203
+ dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
204
+ dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
205
+ dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
206
+
207
+ # Symbol specifications
208
+
209
+ dotnet_naming_symbols.interface.applicable_kinds = interface
210
+ dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
211
+ dotnet_naming_symbols.interface.required_modifiers =
212
+
213
+ dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
214
+ dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
215
+ dotnet_naming_symbols.types.required_modifiers =
216
+
217
+ dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
218
+ dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
219
+ dotnet_naming_symbols.non_field_members.required_modifiers =
220
+
221
+ # Naming styles
222
+
223
+ dotnet_naming_style.pascal_case.required_prefix =
224
+ dotnet_naming_style.pascal_case.required_suffix =
225
+ dotnet_naming_style.pascal_case.word_separator =
226
+ dotnet_naming_style.pascal_case.capitalization = pascal_case
227
+
228
+ dotnet_naming_style.begins_with_i.required_prefix = I
229
+ dotnet_naming_style.begins_with_i.required_suffix =
230
+ dotnet_naming_style.begins_with_i.word_separator =
231
+ dotnet_naming_style.begins_with_i.capitalization = pascal_case
232
+
233
+ [* .{cs,vb} ]
234
+ dotnet_style_operator_placement_when_wrapping = beginning_of_line
235
+ tab_width = 4
236
+ indent_size = 4
237
+ end_of_line = crlf
238
+ dotnet_style_coalesce_expression = true :suggestion
239
+ dotnet_style_null_propagation = true :suggestion
240
+ dotnet_style_prefer_is_null_check_over_reference_equality_method = true :suggestion
241
+ dotnet_style_prefer_auto_properties = true :silent
242
+ dotnet_style_object_initializer = true :suggestion
243
+ dotnet_style_collection_initializer = true :suggestion
244
+ dotnet_style_prefer_simplified_boolean_expressions = true :suggestion
245
+ dotnet_style_prefer_conditional_expression_over_assignment = true :silent
246
+ dotnet_style_prefer_conditional_expression_over_return = true :silent
247
+ dotnet_style_explicit_tuple_names = true :suggestion
248
+ dotnet_style_prefer_inferred_tuple_names = true :suggestion
249
+ dotnet_style_prefer_inferred_anonymous_type_member_names = true :suggestion
250
+ dotnet_style_prefer_compound_assignment = true :suggestion
251
+ dotnet_style_prefer_simplified_interpolation = true :suggestion
252
+ dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
253
+ dotnet_style_namespace_match_folder = true :suggestion
254
+ dotnet_style_readonly_field = true :suggestion
255
+ dotnet_style_predefined_type_for_locals_parameters_members = false :silent
256
+ dotnet_style_predefined_type_for_member_access = false :silent
257
+ dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
258
+ dotnet_style_allow_multiple_blank_lines_experimental = false :silent
259
+ dotnet_style_allow_statement_immediately_after_block_experimental = false :silent
260
+ dotnet_code_quality_unused_parameters = all:suggestion
261
+ dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
262
+ dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
263
+ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
264
+ dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
265
+ dotnet_style_qualification_for_field = false :silent
266
+ dotnet_style_qualification_for_property = false :silent
267
+ dotnet_style_qualification_for_method = false :silent
268
+ dotnet_style_qualification_for_event = false :silent
0 commit comments