# top-most EditorConfig file
root = true

# Default settings:
[*]
indent_style = tab
trim_trailing_whitespace = true
trim_trailing_white_space_on_save = true
end_of_line = crlf

# Code files
[*.{cs,vb}]
indent_style = tab

[*.cs]
# New line preferences
csharp_new_line_before_open_brace = none
csharp_new_line_before_else                                              = true
csharp_new_line_before_catch                                             = true
csharp_new_line_before_finally                                           = true
csharp_new_line_before_members_in_object_initializers                    = true
csharp_new_line_before_members_in_anonymous_types                        = true
csharp_new_line_within_query_expression_clauses                          = true

# Space preferences
csharp_space_after_cast                                                  = false
csharp_space_after_colon_in_inheritance_clause                           = true
csharp_space_after_comma                                                 = true
csharp_space_after_dot                                                   = false
csharp_space_after_keywords_in_control_flow_statements                   = true
csharp_space_after_semicolon_in_for_statement                            = true
csharp_space_around_binary_operators                                     = before_and_after
csharp_space_around_declaration_statements                               = do_not_ignore
csharp_space_before_colon_in_inheritance_clause                          = true
csharp_space_before_comma                                                = false
csharp_space_before_dot                                                  = false
csharp_space_before_open_square_brackets                                 = false
csharp_space_before_semicolon_in_for_statement                           = false
csharp_space_between_empty_square_brackets                               = false
csharp_space_between_method_call_empty_parameter_list_parentheses        = false
csharp_space_between_method_call_name_and_opening_parenthesis            = false
csharp_space_between_method_call_parameter_list_parentheses              = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis        = false
csharp_space_between_method_declaration_parameter_list_parentheses       = false
csharp_space_between_parentheses                                         = false
csharp_space_between_square_brackets                                     = false

# Instance fields are camelCase and start with m_
dotnet_naming_rule.camel_case_for_private_internal_fields.severity       = silent
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols        = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style          = camel_case_underscore_style

dotnet_naming_symbols.private_internal_fields.applicable_kinds           = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal

dotnet_naming_style.camel_case_underscore_style.required_prefix          = m_
dotnet_naming_style.camel_case_underscore_style.capitalization           = camel_case

# Locals and parameters are camelCase
dotnet_naming_rule.locals_should_be_camel_case.severity = error
dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style

dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local

dotnet_naming_style.camel_case_style.capitalization = camel_case