# ##############################################################
# #
# #   .editorconfig – Hellion Forge / Anvil
# #
# #   Überarbeitet: Mai 2026
# #
# #   Strategie:
# #     - Standard-.NET-Conventions (private Fields = _camelCase)
# #     - CSharpier übernimmt die meiste Formatierung
# #     - Hier: Naming, IDE-Hints, Backup-Format-Regeln
# #
# # ##############################################################

root = true


# =====================================================
# Defaults (alle Files)
# =====================================================

[*]
indent_style = space
tab_width = 4
indent_size = 4
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true


# =====================================================
# Markdown: Trailing Spaces erlaubt (2 Spaces = <br>)
# =====================================================

[*.md]
trim_trailing_whitespace = false


# =====================================================
# JSON / YAML: 2-Space-Indent
# =====================================================

[*.{yaml,yml}]
indent_size = 2

[*.{json,jsonc}]
indent_size = 2


# =====================================================
# .NET / Resources: 4-Space-Indent
# =====================================================

[*.{cs,csx}]
indent_size = 4

[*.{xml,xsd,resx,resw,nuspec,config}]
indent_size = 4


# ##############################################################
# #
# #   C# Sektion: Style, Naming, Format
# #
# ##############################################################

[*.{cs,csx}]


# =====================================================
# C# Style – var-Präferenz
# =====================================================

csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion


# =====================================================
# C# Style – Sonstiges
# =====================================================

csharp_style_prefer_utf8_string_literals = true:suggestion

csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion

csharp_new_line_before_members_in_object_initializers = false


# =====================================================
# C# Format – Braces (Allman)
# =====================================================

csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true


# =====================================================
# C# Format – Switch-Einrückung
# =====================================================

csharp_indent_case_contents = true
csharp_indent_switch_labels = true


# =====================================================
# .NET Style – Qualification (kein "this." nötig)
# =====================================================

dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion


# =====================================================
# .NET Style – Predefined Types (int statt Int32 etc.)
# =====================================================

dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion


# =====================================================
# .NET Style – Accessibility-Modifier erzwingen
# =====================================================

dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion


# ##############################################################
# #
# #   Naming Conventions (.NET-Standard)
# #
# #   Private Instance Fields:      _camelCase
# #   Private Static Fields:        _camelCase
# #   Private Constants:            PascalCase
# #   Private Static Readonly:      PascalCase
# #
# ##############################################################

dotnet_naming_style.underscore_camel_case_style.capitalization = camel_case
dotnet_naming_style.underscore_camel_case_style.required_prefix = _

dotnet_naming_style.pascal_case_style.capitalization = pascal_case


dotnet_naming_rule.private_instance_fields.severity = warning
dotnet_naming_rule.private_instance_fields.symbols = private_instance_fields_symbols
dotnet_naming_rule.private_instance_fields.style = underscore_camel_case_style

dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private


dotnet_naming_rule.private_static_fields.severity = warning
dotnet_naming_rule.private_static_fields.symbols = private_static_fields_symbols
dotnet_naming_rule.private_static_fields.style = underscore_camel_case_style

dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static


dotnet_naming_rule.private_constants.severity = warning
dotnet_naming_rule.private_constants.symbols = private_constants_symbols
dotnet_naming_rule.private_constants.style = pascal_case_style

dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_constants_symbols.required_modifiers = const


dotnet_naming_rule.private_static_readonly.severity = warning
dotnet_naming_rule.private_static_readonly.symbols = private_static_readonly_symbols
dotnet_naming_rule.private_static_readonly.style = pascal_case_style

dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly
