root = true [*] insert_final_newline = true trim_trailing_whitespace = true [*.{c,cpp,h,hpp}] indent_style = tab charset = utf-8 #indent_size = #tab_width = #end_of_line = ### C++ specific editor config rules ### ## Visual Studio ## https://learn.microsoft.com/en-us/visualstudio/ide/cpp-editorconfig-properties?view=vs-2019 ## # Indentation # # Do not indent braces cpp_indent_braces = false # When a new line is typed, it's indented relatively to the innermost open parenthesis cpp_indent_multi_line_relative_to = innermost_parenthesis # Indent new lines within parenthesis cpp_indent_within_parentheses = indent # In existing code, do not use the setting for alignment of new lines within parentheses cpp_indent_preserve_within_parentheses = true # Indent case contents cpp_indent_case_contents = true # Indent case labels cpp_indent_case_labels = true # Do not indent braces following a case statement cpp_indent_case_contents_when_block = false # Do not indent braces of lambdas used as parameters cpp_indent_lambda_braces_when_parameter = false # No override for "Position of goto labels" (Unspecified) #cpp_indent_goto_labels # Move preprocessor directives to the leftmost column cpp_indent_preprocessor = leftmost_column # Do not indent access specifiers cpp_indent_access_specifiers = false # Indent namespace contents cpp_indent_namespace_contents = true # Preserve indentation of comments cpp_indent_preserve_comments = true # Newline # # Keep open braces for namespaces on the same line, but add a space before the brace cpp_new_line_before_open_brace_namespace = same_line # Keep open braces for types/classes on the same line, but add a space before the brace cpp_new_line_before_open_brace_type = same_line # Move open braces for functions to a new line cpp_new_line_before_open_brace_function = new_line # Keep open braces for control blocks on the same line, but add a space before the brace cpp_new_line_before_open_brace_block = same_line # Keep open braces for lambdas on the same line, but add a space before the brace cpp_new_line_before_open_brace_lambda = same_line # Place scope braces on separate lines cpp_new_line_scope_braces_on_separate_lines = true # Do not move closing braces to the same line as opening braces for empty types cpp_new_line_close_brace_same_line_empty_type = false # Do not move closing braces to the same line as opening braces for empty function bodies cpp_new_line_close_brace_same_line_empty_function = false # Do not place 'catch' and similar keywords on a new line cpp_new_line_before_catch = false # Do not place 'else' on a new line cpp_new_line_before_else = false # Do not place 'while' in a do-while loop on a new line cpp_new_line_before_while_in_do_while = false # Spacing # # Remove spaces between function names and opening parentheses of argument lists cpp_space_before_function_open_parenthesis = remove # Do not insert a space within parentheses of an argument list cpp_space_within_parameter_list_parentheses = false # Do not insert a space between parentheses when argument list is empty cpp_space_between_empty_parameter_list_parentheses = false # Insert space between keyword and opening parenthesis in control flow statements cpp_space_after_keywords_in_control_flow_statements = true # Do not insert a space within parentheses of a control statement cpp_space_within_control_flow_statement_parentheses = false # Do not insert a space before opening parenthesis of lambda argument lists cpp_space_before_lambda_open_parenthesis = false # Do not insert a space within parentheses of a C-style cast cpp_space_within_cast_parentheses = false # Do not insert a space after closing parenthesis of C-style cast cpp_space_after_cast_close_parenthesis = false # Do not insert a space within parentheses of a parenthesized expression cpp_space_within_expression_parentheses = false # Insert space before opening brace of blocks cpp_space_before_block_open_brace = true # Do not insert a space between empty braces cpp_space_between_empty_braces = false # Do not insert a space before opening brace of uniform initialization and initializer lists cpp_space_before_initializer_list_open_brace = false # No override for "Insert space within braces of uniform initialization and initializer lists" (Spacing for this varies) #cpp_space_within_initializer_list_braces # Preserve spaces inside uniform initialization and initializer lists cpp_space_preserve_in_initializer_list = true # Do not insert space before opening square brackets cpp_space_before_open_square_bracket = false # Do not insert space within square bracket cpp_space_within_square_brackets = false # Do not insert space before empty square brackets cpp_space_before_empty_square_brackets = false # Do not insert space between empty square brackets cpp_space_between_empty_square_brackets = false # Group square brackets for multi-dimensional arrays together cpp_space_group_square_brackets = true # Do not insert space within square brackets for lambdas cpp_space_within_lambda_brackets = false # Do not insert space between empty lambda brackets cpp_space_between_empty_lambda_brackets = false # Do not insert space before commas cpp_space_before_comma = false # Insert space after commas cpp_space_after_comma = true # Remove spaces before and after member operators cpp_space_remove_around_member_operators = true # Insert space before colon for base in type declarations cpp_space_before_inheritance_colon = true # Insert space before colon for constructors cpp_space_before_constructor_colon = true # Remove space before semicolons cpp_space_remove_before_semicolon = true # No override for "Insert space after semicolons" (Depends on if loop is unconditional) #cpp_space_after_semicolon # Remove spaces between unary operators and their operands cpp_space_remove_around_unary_operator = true # Insert spaces before and after binary operators cpp_space_around_binary_operator = insert # Insert spaces around assignment operators cpp_space_around_assignment_operator = insert # Align pointer/reference symbol to the right cpp_space_pointer_reference_alignment = right # Insert spaces around conditional operators cpp_space_around_ternary_operator = insert # Wrapping # # Always apply New Lines settings for blocks cpp_wrap_preserve_blocks = never ## Rider & ReSharper ## https://www.jetbrains.com/help/resharper/EditorConfig_CPP_CppBlankLinesPageScheme.html ## # Blank Lines # # No override for "Max blank lines in declarations" (Unspecified; Not consistent across source code) #cpp_keep_blank_lines_in_declarations # No override for "Max blank lines in rest of source code" (Unspecified; Not consistent across source code) #cpp_keep_blank_lines_in_code # No override for "Number of blank lines around class/struct/enum definition" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_class_definition # No override for "Number of blank lines around function declarations" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_function_declaration # No override for "Number of blank lines around function definitions" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_function_definition # No override for "Number of blank lines around single line function definitions" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_single_line_function_definition # No override for "Number of blank lines around namespaces" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_namespace # No override for "Number of blank lines around other definitions and declarations" (Unspecified; Not consistent across source code) #cpp_blank_lines_around_other_declaration # Braces Layout # # Keep open braces for namespace declarations on the same line, but add a space before the brace cpp_namespace_declaration_braces = end_of_line # Keep open braces for linkage declarations on the same line, but add a space before the brace cpp_linkage_specification_braces = end_of_line # Keep open braces for types/classes on the same line, but add a space before the brace cpp_type_declaration_braces = end_of_line # Keep open braces for namespace definitions on the same line (does not modify spacing before the brace) cpp_place_namespace_definitions_on_same_line = true # Move open braces for functions to a new line cpp_invocable_declaration_braces = next_line # Keep open braces for lambdas on the same line, but add a space before the brace cpp_anonymous_method_declaration_braces = end_of_line # Keep open braces for case blocks on the same line, but add a space before the brace cpp_case_block_braces = end_of_line # No override for "Requires expression braces" style (requires expressions are a C++20 feature) #cpp_requires_expression_braces # Keep open braces for all other blocks on the same line, but add a space before the brace cpp_other_braces = end_of_line # Only indent the insides of multi-line expression braces cpp_expression_braces = inside # Place the braces of empty blocks together and on the same line cpp_empty_block_style = together_same_line # Force line breaks within simple compound statements cpp_simple_block_style = line_break # No override for "Regular expression for macros starting a block" (Marco blocks aren't used) #cpp_macro_block_begin # No override for "Regular expression for macros ending a block" (Marco blocks aren't used) #cpp_macro_block_end # Tabs and indents # # Redundant override (Already overriden globally by 'indent_style') #cpp_indent_style # Redundant override (Already overriden globally by 'indent_size') #cpp_indent_size # Redundant override (Already overriden globally by 'tab_width') #cpp_tab_width # Use spaces instead of tabs as indentation for precise alignment cpp_alignment_tab_fill_style = use_spaces # Allow alignment even if construct is located too far to the right, more than 2/3 of 'Hard wrap at' limit cpp_allow_far_alignment = true # Indentation and Alignment # # No override for "Continuous line indent" (Varies throughout source code) #cpp_continuous_line_indent # Do not use continuous line indent in function declaration and invocation parentheses cpp_use_continuous_line_indent_in_method_pars = false # Do not use continuous line indent in initializer lists cpp_use_continuous_line_indent_in_expression_braces = false # Indent namespace members (including nested ones) cpp_namespace_indentation = all # No override for "Indent linkage specification block members" (Unspecified) #cpp_linkage_specification_indentation # Do not indent access specifier from class cpp_indent_access_specifiers_from_class = false # Indent class member from access specifier cpp_indent_class_members_from_access_specifiers = true # Do not indent if a function definition or declaration is wrapped after the type cpp_indent_wrapped_function_names = false # Indent 'case' labels from 'switch' cpp_indent_switch_labels = true # No override for "Indent function declarations' parentheses" (Varies throughout source code) #cpp_indent_method_decl_pars # No override for "Indent method calls' parentheses" (Varies throughout source code) #cpp_indent_invocation_pars # No override for "Indent statement (if, while, for, etc) parentheses" (Varies throughout source code) #cpp_indent_statement_pars # Do not change preprocessor directives indenting cpp_indent_preprocessor_directives = do_not_change # No override for "Indent C++/CLI generic constraints" (C++/CLI is not used) #cpp_indent_type_constraints # Align/indent comments started at the first column cpp_indent_comment = true # Comments that comment out code will use the indentation level of the commented code. cpp_place_comments_at_first_column = false # Align multiline declarators in declaration cpp_align_multiple_declaration = true # Align multiline function parameters cpp_align_multiline_parameter = true # Align multiline call arguments cpp_align_multiline_argument = true # Do not align first of multiline call arguments with the opening parentheses cpp_align_first_arg_by_paren = false # Align multiline initializer list arguments cpp_align_multiline_expression_brace = true # No override for "Align multiline template parameters in template declaration" (Unspecified) #cpp_align_multiline_type_parameter # No override for "Align multiline template arguments" (Unspecified) #cpp_align_multiline_type_argument # Align multiline base classes in class base clause cpp_align_multiline_extends_list = true # Align multiline member initializers in member initializer lists cpp_align_multiline_ctor_init = true # Outdent commas placed on new line cpp_outdent_commas = true # Do not align multiline ?: operator with first line (since alignment is incorrect) cpp_align_ternary = none # Do not indent aligned ?: operator (since indentation varies) cpp_indent_aligned_ternary = false # No override for "Align multiline chained method calls" (Unspecified) #cpp_align_multiline_calls_chain # No override for "Outdent '.' and '->' in chained method calls on new lines" (Unspecified) #cpp_outdent_dots # Do not align multiline chained binary expressions cpp_align_multiline_binary_expressions_chain = false # Fix column alignment in adjacent lines cpp_int_align_fix_in_adjacent = true # Align assignments with adjacent assignments cpp_int_align_eq = true # Do not align declaration names with adjacent declaration names cpp_int_align_declaration_names = false # Align end-of-line comments with adjacent end-of-line comments cpp_int_align_comments = true # Spaces # # Do not put space before ANY commas cpp_space_before_comma = false # Put space after ALL commas cpp_space_after_comma = true # Put space before ptr in declaration of variable cpp_space_before_ptr_in_data_member = true # Do not put space after ptr in declaration of variable cpp_space_after_ptr_in_data_member = false # Put space before ptr in declaration of multiple variables cpp_space_before_ptr_in_data_members = true # Do not put space after ptr in declaration of multiple variables cpp_space_after_ptr_in_data_members = false # Put space before ptr in return type of function cpp_space_before_ptr_in_method = true # Do not put space after ptr in return type of function cpp_space_after_ptr_in_method = false # Do not put space before ptr in abstract declaration cpp_space_before_ptr_in_abstract_decl = false # Put space before ref in declaration of variable cpp_space_before_ref_in_data_member = true # Do not put space after ref in declaration of variable cpp_space_after_ref_in_data_member = false # Put space before ref in declaration of multiple variables cpp_space_before_ref_in_data_members = true # Do not put space after ref in declaration of multiple variables cpp_space_after_ref_in_data_members = false # Do not put space before ref in return type of function cpp_space_before_ref_in_method = false # Put space after ref in return type of function cpp_space_after_ref_in_method = true # Do not put space before ref in abstract declaration cpp_space_before_ref_in_abstract_decl = false # Do not put space before parentheses in function parameters cpp_space_between_method_declaration_name_and_open_parenthesis = false # Do not put space before parentheses in lambda parameters cpp_space_before_lambda_parentheses = false # Do not put space within parentheses in function parameters cpp_space_between_method_declaration_parameter_list_parentheses = false # Do not put space within empty parentheses in function parameters cpp_space_between_method_declaration_empty_parameter_list_parentheses = false # Do not put space before angle brackets in template parameters cpp_space_before_template_params = false # Do not put space within angle brackets in template parameters cpp_space_within_template_params = false # Do not put space within empty angle brackets in template parameters cpp_space_within_empty_template_params = false # Do not put space before angle brackets in template arguments cpp_space_before_template_args = false # Do not put space within angle brackets in template arguments cpp_space_within_template_args = false # Do not put space between closing angle brackets in template arguments cpp_space_between_closing_angle_brackets_in_template_args = false # Put space around '=' in alias declaration and namespace alias cpp_space_around_alias_eq = true # Do not put space around '->' in trailing return types cpp_space_around_deref_in_trailing_return_type = false # Put space before base types list colon cpp_space_before_colon_in_inheritance_clause = true # Put space after base types list colon cpp_space_after_colon_in_inheritance_clause = true # No override for "Before C++/CLI generic constraint colon" (Unspecified) #cpp_space_before_type_parameter_constraint_colon # No override for "After C++/CLI generic constraint colon" (Unspecified) #cpp_space_after_type_parameter_constraint_colon # Put space before parentheses of control statements cpp_space_after_keywords_in_control_flow_statements = true # Do not put space within parentheses of control statements cpp_space_between_parentheses_of_control_flow_statements = false # Do not put space before semicolon in 'for' statements cpp_space_before_semicolon_in_for_statement = false # Put space after semicolon in 'for' statements cpp_space_after_semicolon_in_for_statement = true # Put space before ':' in range-based for loop cpp_space_before_for_colon = true # Put space after ':' in range-based for loop cpp_space_after_for_colon = true # Do not put space before colon in switch case or label statement cpp_space_before_colon_in_case = false # Put space after colon in switch case or label statement cpp_space_after_colon_in_case = true # Put space around binary operator cpp_space_around_binary_operator = true # Put space around assignment operator cpp_space_around_assignment_operator = true # Do not put space around dot, '->', '.*' and '->.' cpp_space_around_member_access_operator = false # Do not put space within any parentheses cpp_space_within_parentheses = false # Do not put space before array subscript brackets cpp_space_before_open_square_brackets = false # Do not put space within array subscript brackets cpp_space_between_square_brackets = false # Do not put space before empty parentheses in function call and initialization cpp_space_between_method_call_name_and_opening_parenthesis = false # Do not put space within parentheses in cast expressions cpp_space_between_typecast_parentheses = false # Do not put space after parentheses in cast expressions cpp_space_after_cast = false # Do not put space within parentheses in function call and initialization cpp_space_between_method_call_parameter_list_parentheses = false # Do not put space within empty parentheses in function call and initialization cpp_space_between_method_call_empty_parameter_list_parentheses = false # Put space in ternary operator '? :' before '?' cpp_space_before_ternary_quest = true # Put space in ternary operator '? :' after '?' cpp_space_after_ternary_quest = true # Put space in ternary operator '? :' before ':' cpp_space_before_ternary_colon = true # Put space in ternary operator '? :' after ':' cpp_space_after_ternary_colon = true # Do not put space before uniform initialization braces cpp_space_before_initializer_braces = false # Do not put space within uniform initialization braces cpp_space_within_initializer_braces = false # Do not put space within empty uniform initialization braces cpp_space_within_empty_initializer_braces = false # Put space before end of line comment cpp_space_before_trailing_comment = true # Preserve spaces before end of line comment cpp_disable_space_changes_before_trailing_comment = true # Line breaks and Wrapping # # Redundant override (Already overriden globally by 'insert_final_newline') #cpp_insert_final_newline # Redundant override (Already overriden earlier in Visual Studio section) #cpp_new_line_before_else # Do not place 'while' in a do-while loop on a new line cpp_new_line_before_while = false # Redundant override (Already overriden earlier in Visual Studio section) #cpp_new_line_before_catch # Do not change the line breaks of single embedded statements cpp_simple_embedded_statement_style = do_not_change # Do not change the line breaks of simple 'case' statement cpp_simple_case_statement_style = do_not_change # Put member function definition return type on same line cpp_function_definition_return_type_style = on_single_line # Put top-level function definition return type on same line cpp_toplevel_function_definition_return_type_style = on_single_line # Put member function declaration return type on same line cpp_function_declaration_return_type_style = on_single_line # Put top-level function declaration return type on same line cpp_toplevel_function_declaration_return_type_style = on_single_line # Force template<...> of a template declaration on new line cpp_break_template_declaration = line_break # No override for "Break line before the requires-clause" (requires-clause is a C++20 feature) #cpp_line_break_before_requires_clause # Do not change the line break before the colon in member initializer lists cpp_member_initializer_list_style = do_not_change # Do not change the line break after the colon in member initializer lists cpp_line_break_after_colon_in_member_initializer_lists = do_not_change # No override for "Break line before comma in member initializer lists" (Varies throughout source code) #cpp_line_break_before_comma_in_member_initializer_lists # No override for "Break line after comma in member initializer lists" (Varies throughout source code) #cpp_line_break_after_comma_in_member_initializer_lists # No override for "Allow C++/CLI generic constraints on the same line" (C++/CLI is not used) #cpp_place_type_constraints_on_same_line # No override for "Keep existing line breaks" (Varies throughout source code; depends on developer preference) #cpp_keep_user_linebreaks # No override for "Hard wrap at _ characters" (Unspecified) #cpp_max_line_length # Do not prefer wrap before ',' cpp_wrap_before_comma = false # Do not prefer wrap before ',' in base clause cpp_wrap_before_comma_in_base_clause = false # No override for "Wrap ternary expression" (Varies throughout source code) #cpp_wrap_ternary_expr_style # No override for "Prefer wrap before '?' and ':' in ternary expressions" (Varies throughout source code) #cpp_wrap_before_ternary_opsigns # No override for "Prefer wrap before ':'" (Varies throughout source code) #cpp_wrap_before_colon # No override for "Prefer wrap before first C++/CLI generic constraint" (C++/CLI is not used) #cpp_wrap_before_first_type_parameter_constraint # No override for "Wrap multiple C++/CLI generic constraints" (C++/CLI is not used) #cpp_wrap_multiple_type_parameter_constraints_style # No override for "Wrap enum definition" (Varies throughout source code) #cpp_wrap_enumeration_style # No override for "Wrap braced initializer list" (Varies throughout source code) #cpp_wrap_braced_init_list_style # No override for "Wrap base classes list" (Varies throughout source code) #cpp_wrap_base_clause_style # No override for "Wrap constructor initializer" (Varies throughout source code) #cpp_wrap_ctor_initializer_style # No override for "Wrap formal parameters" (Varies throughout source code) #cpp_wrap_parameters_style # Do not prefer wrap before '(' in declaration cpp_wrap_before_declaration_lpar = false # Prefer wrap after '(' in declaration cpp_wrap_after_declaration_lpar = true # Do not prefer wrap before ')' in declaration cpp_wrap_before_declaration_rpar = false # No override for "Wrap invocation arguments" (Varies throughout source code) #cpp_wrap_arguments_style # Do not prefer wrap before '(' in invocation cpp_wrap_before_invocation_lpar = false # Prefer wrap after '(' in invocation cpp_wrap_after_invocation_lpar = true # Do not prefer wrap before ')' in invocation cpp_wrap_before_invocation_rpar = false # Prefer wrap after '{' in initializer lists cpp_wrap_after_expression_lbrace = true # Do not prefer wrap before '}' in initializer lists cpp_wrap_before_expression_rbrace = false