﻿# You can modify the rules from these initially generated values to suit your own policies
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

[*]
charset = utf-8-bom
trim_trailing_whitespace = true

[*.md]
indent_style = space
indent_size = 4

# C# files
[*.cs]
indent_style = space
indent_size = 4

#### Core EditorConfig Options ####

#Formatting - indentation

#use soft tabs (spaces) for indentation
indent_style = space

#Formatting - indentation options

#indent switch case contents.
csharp_indent_case_contents = true
#indent switch labels
csharp_indent_switch_labels = true

#Formatting - new line options

#place catch statements on a new line
csharp_new_line_before_catch = true
#place else statements on a new line
csharp_new_line_before_else = true
#require finally statements to be on a new line after the closing brace
csharp_new_line_before_finally = true
#require members of object initializers to be on the same line
csharp_new_line_before_members_in_object_initializers = false
#require braces to be on a new line for control_blocks, types, properties, and methods (also known as "Allman" style)
csharp_new_line_before_open_brace = accessors, anonymous_methods, control_blocks, lambdas, methods, object_collection_array_initializers, properties, types

#Formatting - organize using options

#do not place System.* using directives before other using directives
dotnet_sort_system_directives_first = false

#Formatting - spacing options

#require NO space between a cast and the value
csharp_space_after_cast = false
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_after_colon_in_inheritance_clause = true
#require a space after a keyword in a control flow statement such as a for loop
csharp_space_after_keywords_in_control_flow_statements = true
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_before_colon_in_inheritance_clause = true
#remove space within empty argument list parentheses
csharp_space_between_method_call_empty_parameter_list_parentheses = false
#remove space between method call name and opening parenthesis
csharp_space_between_method_call_name_and_opening_parenthesis = false
#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call
csharp_space_between_method_call_parameter_list_parentheses = false
#remove space within empty parameter list parentheses for a method declaration
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
csharp_space_between_method_declaration_parameter_list_parentheses = false

#Formatting - wrapping options

#leave code block on separate lines
csharp_preserve_single_line_blocks = false
#leave statements and member declarations on the same line
csharp_preserve_single_line_statements = true

#Style - Code block preferences

#prefer curly braces even for one line of code
csharp_prefer_braces = when_multiline:silent

#Style - expression bodied member options

#prefer expression-bodied members for accessors
csharp_style_expression_bodied_accessors = when_on_single_line:suggestion
#prefer block bodies for constructors
csharp_style_expression_bodied_constructors = false:suggestion
#prefer expression-bodied members for indexers
csharp_style_expression_bodied_indexers = true:suggestion
#prefer block bodies for methods
csharp_style_expression_bodied_methods = when_on_single_line:silent
#prefer expression-bodied members for properties
csharp_style_expression_bodied_properties = when_on_single_line:suggestion

#Style - expression level options

#prefer out variables to be declared inline in the argument list of a method call when possible
csharp_style_inlined_variable_declaration = true:suggestion
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_member_access = true:suggestion

#Style - Expression-level  preferences

#prefer objects to not be initialized using object initializers, but do not warn
dotnet_style_object_initializer = true:silent
#prefer objects to use auto properties, but turn off the warnings (we want to keep backing fields from Java for the most part)
dotnet_style_prefer_auto_properties = true:silent

#Style - implicit and explicit types

#prefer explicit type over var in all cases, unless overridden by another code style rule
csharp_style_var_elsewhere = false:silent
#prefer explicit type over var to declare variables with built-in system types such as int
csharp_style_var_for_built_in_types = false:silent
#prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration
csharp_style_var_when_type_is_apparent = false:silent

#Style - language keyword and framework type options

#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

#Style - modifier options

#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion

#Style - Modifier preferences

#when this rule is set to a list of modifiers, prefer the specified ordering.
csharp_preferred_modifier_order = public,private,protected,internal,virtual,readonly,override,static,abstract,new,sealed,volatile:silent

#Style - Pattern matching

#prefer pattern matching instead of is expression with type casts
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

#Style -Pattern matcing preferences

#prefer expression-style for switch case
csharp_style_prefer_switch_expression = false:suggestion

#Style - qualification options

#prefer fields not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_field = false:none
#prefer methods not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_method = false:none
#prefer properties not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_property = false:none

#Style - assignment options
#prefer compound asignment x += 1 rather than x = x + 1.
dotnet_style_prefer_compound_assignment = true:silent

#### General Code Quality Preferences ####

# Warn about any performance category issues across the entire API
dotnet_code_quality.Performance.api_surface = all:warning

# CA1031: Do not catch general exception types
dotnet_diagnostic.CA1031.severity = none

# CA1034: Do not nest types
dotnet_diagnostic.CA1034.severity = none


# Features that require .NET Standard 2.1+

# IDE0056: Use index operator
dotnet_diagnostic.IDE0056.severity = none

# IDE0057: Use range operator
dotnet_diagnostic.IDE0057.severity = none

# IDE0070: Use 'System.HashCode.Combine'
dotnet_diagnostic.IDE0070.severity = none