# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# do it for all (default) unless overwriting by closer file description
[*]
charset = utf-8
end_of_line = lf
tab_width = 2
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

# C/C++
[*.{c,cpp,hpp,h}]
max_line_length = 120
# Insert doxygen documentation header when typing ///
vc_generate_documentation_comments = doxygen_triple_slash
# cpp_* formatting supported in vs2019 and vs code.
# See https://docs.microsoft.com/nl-nl/visualstudio/ide/cpp-editorconfig-properties?view=vs-2019
cpp_indent_braces = false
cpp_indent_multi_line_relative_to = innermost_parenthesis
cpp_indent_within_parentheses = align_to_parenthesis
cpp_indent_preserve_within_parentheses = false
cpp_indent_case_contents = true
cpp_indent_case_labels = true
cpp_indent_case_contents_when_block = false
cpp_indent_lambda_braces_when_parameter = true
cpp_indent_goto_labels = one_left
cpp_indent_preprocessor = leftmost_column
cpp_indent_access_specifiers = false
cpp_indent_namespace_contents = false
cpp_indent_preserve_comments = false
cpp_new_line_before_open_brace_namespace = new_line
cpp_new_line_before_open_brace_type = new_line
cpp_new_line_before_open_brace_function = new_line
cpp_new_line_before_open_brace_block = new_line
cpp_new_line_before_open_brace_lambda = new_line
cpp_new_line_scope_braces_on_separate_lines = true
cpp_new_line_close_brace_same_line_empty_type = true
cpp_new_line_close_brace_same_line_empty_function = true
cpp_new_line_before_catch = true
cpp_new_line_before_else = true
cpp_new_line_before_while_in_do_while = false
cpp_space_before_function_open_parenthesis = remove
cpp_space_within_parameter_list_parentheses = false
cpp_space_between_empty_parameter_list_parentheses = false
cpp_space_after_keywords_in_control_flow_statements = true
cpp_space_within_control_flow_statement_parentheses = false
cpp_space_before_lambda_open_parenthesis = false
cpp_space_within_cast_parentheses = false
cpp_space_after_cast_close_parenthesis = false
cpp_space_within_expression_parentheses = false
cpp_space_before_block_open_brace = true
cpp_space_between_empty_braces = false
cpp_space_before_initializer_list_open_brace = false
cpp_space_within_initializer_list_braces = false
cpp_space_preserve_in_initializer_list = true
cpp_space_before_open_square_bracket = false
cpp_space_within_square_brackets = false
cpp_space_before_empty_square_brackets = false
cpp_space_between_empty_square_brackets = false
cpp_space_group_square_brackets = true
cpp_space_within_lambda_brackets = false
cpp_space_between_empty_lambda_brackets = false
cpp_space_before_comma = false
cpp_space_after_comma = true
cpp_space_remove_around_member_operators = true
cpp_space_before_inheritance_colon = true
cpp_space_before_constructor_colon = true
cpp_space_remove_before_semicolon = true
cpp_space_after_semicolon = true
cpp_space_remove_around_unary_operator = true
cpp_space_around_binary_operator = insert
cpp_space_around_assignment_operator = insert
cpp_space_pointer_reference_alignment = left
cpp_space_around_ternary_operator = insert
cpp_wrap_preserve_blocks = one_liners

# Makefiles
[Makefile]
indent_style = tab

# Java
[*.{java}]
indent_size = 4

# C#
[*.{cs}]
indent_size = 4

# json
[*.{json}]
end_of_line = crlf

# Markdown
[*.{md}]
trim_trailing_whitespace = false

# Python
[*.{py,pyw}]
indent_size = 4
max_line_length = 132

# Batch
[*.{bat,cmd}]
# Prevent bugs with labels, see https://serverfault.com/a/795638
end_of_line = crlf