JetBrains Rider 2023.3 Help

EditorConfig properties for C++: Indentation and Alignment

Indentation

Continuous line indent

Property names:

[resharper_]cpp_continuous_line_indent, [resharper_]continuous_line_indent

Possible values:

  • none: None

  • single: Single

  • double: Double

Examples:

none

int x = foo1() + foo2();

single

int x = foo1() + foo2();

double

int x = foo1() + foo2();

Use continuous line indent in function declaration and invocation parentheses

Property names:

[resharper_]cpp_use_continuous_line_indent_in_method_pars, [resharper_]use_continuous_line_indent_in_method_pars

Possible values:

true | false

Examples:

true

void Method( int parameter1, int parameter2 ) { Method( parameter1, parameter2 ); }

false

void Method( int parameter1, int parameter2 ) { Method( parameter1, parameter2 ); }

Use continuous line indent in initializer lists

Property names:

[resharper_]cpp_use_continuous_line_indent_in_expression_braces, [resharper_]use_continuous_line_indent_in_expression_braces

Possible values:

true | false

Examples:

true

int a[3] = { 1, 2, 3 };

false

int a[3] = { 1, 2, 3 };

Indent namespace members

Property names:

[resharper_]cpp_namespace_indentation, [resharper_]namespace_indentation

Possible values:

  • none: Do not indent

  • inner: Indent only in inner namespaces

  • all: Indent all

Examples:

none

namespace ns { void a(); namespace inner { void b(); }; };

inner

namespace ns { void a(); namespace inner { void b(); }; };

all

namespace ns { void a(); namespace inner { void b(); }; };

Indent linkage specification block members

Property names:

[resharper_]cpp_linkage_specification_indentation, [resharper_]linkage_specification_indentation

Possible values:

  • none: Do not indent

  • inner: Indent only in inner namespaces

  • all: Indent all

Examples:

none

extern "C++" { void a(); extern "C++" { void b(); }; };

inner

extern "C++" { void a(); extern "C++" { void b(); }; };

all

extern "C++" { void a(); extern "C++" { void b(); }; };

Indent export declaration block members

Property names:

[resharper_]cpp_indent_export_declaration_members, [resharper_]indent_export_declaration_members

Possible values:

true | false

Examples:

true

export { void a(); };

false

export { void a(); };

Indent access specifier from class

Property names:

[resharper_]cpp_indent_access_specifiers_from_class, [resharper_]indent_access_specifiers_from_class

Possible values:

true | false

Examples:

true

class C { public: void a(); };

false

class C { public: void a(); };

Indent class member from access specifier

Property names:

[resharper_]cpp_indent_class_members_from_access_specifiers, [resharper_]indent_class_members_from_access_specifiers

Possible values:

true | false

Examples:

true

class C { public: void a(); };

false

class C { public: void a(); };

Indent member initializer list

Property names:

[resharper_]cpp_indent_member_initializer_list, [resharper_]indent_member_initializer_list

Possible values:

true | false

Examples:

true

class C { C(int x) : y(x) { } int y; };

false

class C { C(int x) : y(x) { } int y; };

Indent if a function definition or declaration is wrapped after the type

Property names:

[resharper_]cpp_indent_wrapped_function_names, [resharper_]indent_wrapped_function_names

Possible values:

true | false

Examples:

true

void foo() { }

false

void foo() { }

Indent 'case' from 'switch'

Property names:

[resharper_]cpp_indent_switch_labels, [resharper_]indent_switch_labels

Possible values:

true | false

Examples:

true

switch (expression) { case 0: { foo(); break; } }

false

switch (expression) { case 0: { foo(); break; } }

Indent function declarations' parentheses

Property names:

[resharper_]cpp_indent_method_decl_pars, [resharper_]indent_method_decl_pars

Possible values:

  • inside: Inside parenthesis (BSD/K&R style)

  • outside: Parenthesis and inside equally (Whitesmiths style)

  • outside_and_inside: Parenthesis 1x, inside 2x (GNU style)

  • none: No indent

Examples:

inside

void Method( int parameter1, int parameter2 );

outside

void Method( int parameter1, int parameter2 );

outside_and_inside

void Method( int parameter1, int parameter2 );

none

void Method( int parameter1, int parameter2 );

Indent method calls' parentheses

Property names:

[resharper_]cpp_indent_invocation_pars, [resharper_]indent_invocation_pars

Possible values:

  • inside: Inside parenthesis (BSD/K&R style)

  • outside: Parenthesis and inside equally (Whitesmiths style)

  • outside_and_inside: Parenthesis 1x, inside 2x (GNU style)

  • none: No indent

Examples:

inside

Method( parameter1, parameter2 );

outside

Method( parameter1, parameter2 );

outside_and_inside

Method( parameter1, parameter2 );

none

Method( parameter1, parameter2 );

Indent statement (if, while, for, etc) parentheses

Property names:

[resharper_]cpp_indent_statement_pars, [resharper_]indent_statement_pars

Possible values:

  • inside: Inside parenthesis (BSD/K&R style)

  • outside: Parenthesis and inside equally (Whitesmiths style)

  • outside_and_inside: Parenthesis 1x, inside 2x (GNU style)

  • none: No indent

Examples:

inside

if ( condition1 && condition2 ) return;

outside

if ( condition1 && condition2 ) return;

outside_and_inside

if ( condition1 && condition2 ) return;

none

if ( condition1 && condition2 ) return;

Preprocessor directives indenting

Property names:

[resharper_]cpp_indent_preprocessor_directives, [resharper_]indent_preprocessor_directives

Possible values:

  • none: No indent

  • normal: Indent

  • do_not_change: Do not change

Examples:

none

void sections() { #pragma omp sections { int x; } }

normal

void sections() { #pragma omp sections { int x; } }

do_not_change

void sections() { #pragma omp sections { int x; } }

Indent C++/CLI generic constraints

Property names:

[resharper_]cpp_indent_type_constraints, [resharper_]indent_type_constraints

Possible values:

true | false

Examples:

true

generic<class T1> class C1 where T1 : I1 {};

false

generic<class T1> class C1 where T1 : I1 {};

Indent comments started at the first column

Property names:

[resharper_]cpp_indent_comment, [resharper_]indent_comment

Possible values:

true | false

Examples:

true

namespace N { // Some comment class C1 { }; };

false

namespace N { // Some comment class C1 { }; };

Place comments at the first column when commenting out code

Property names:

[resharper_]cpp_place_comments_at_first_column, [resharper_]place_comments_at_first_column

Place comments at the first column when commenting out code. Otherwise, comments will use the indentation level of the commented code.

Possible values:

true | false

Align multiline construct

Declarators in declaration

Property names:

[resharper_]cpp_align_multiple_declaration, [resharper_]align_multiple_declaration

Possible values:

true | false

Examples:

true

int first, second

false

int first, second

Function parameters

Property names:

[resharper_]cpp_align_multiline_parameter, [resharper_]align_multiline_parameter

Possible values:

true | false

Examples:

true

double average(double first, double second);

false

double average(double first, double second);

Call arguments

Property names:

[resharper_]cpp_align_multiline_argument, [resharper_]align_multiline_argument

Possible values:

true | false

Examples:

true

object.method(first, second);

false

object.method(first, second);

First call argument by '('

Property names:

[resharper_]cpp_align_first_arg_by_paren, [resharper_]align_first_arg_by_paren

Possible values:

true | false

Examples:

true

object.method( first, second);

false

object.method( first, second);

Initializer list arguments

Property names:

[resharper_]cpp_align_multiline_expression_braces, [resharper_]align_multiline_expression_braces

Possible values:

true | false

Examples:

true

int a[6] = {1, 2, 3 4, 5, 6};

false

int a[6] = {1, 2, 3 4, 5, 6};

Template parameters in template declaration

Property names:

[resharper_]cpp_align_multiline_type_parameter, [resharper_]align_multiline_type_parameter

Possible values:

true | false

Examples:

true

template <typename K, typename V> struct map;

false

template <typename K, typename V> struct map;

Template arguments

Property names:

[resharper_]cpp_align_multiline_type_argument, [resharper_]align_multiline_type_argument

Possible values:

true | false

Examples:

true

std::map<char*, MyStruct> my_map;

false

std::map<char*, MyStruct> my_map;

Base classes in class base clause

Property names:

[resharper_]cpp_align_multiline_extends_list, [resharper_]align_multiline_extends_list

Possible values:

true | false

Examples:

true

struct MyStruct : Base1, Base2 { };

false

struct MyStruct : Base1, Base2 { };

Member initializers in member initializer lists

Property names:

[resharper_]cpp_align_multiline_ctor_init, [resharper_]align_multiline_ctor_init

Possible values:

true | false

Examples:

true

struct MyStruct { MyStruct() : first(f), second(s) { } };

false

struct MyStruct { MyStruct() : first(f), second(s) { } };

Outdent commas

Property names:

[resharper_]cpp_outdent_commas, [resharper_]outdent_commas

Possible values:

true | false

Examples:

true

class Class< T1 , T3> : Base , SomeInterface { void fooCall( int firstParameter , int secondParameter) { fooCall( firstParameter , secondParameter); } }

false

class Class< T1 , T3> : Base , SomeInterface { void fooCall( int firstParameter , int secondParameter) { fooCall( firstParameter , secondParameter); } }

?: operator

Property names:

[resharper_]cpp_align_ternary, [resharper_]align_ternary

Possible values:

  • align_all: Align

  • align_not_nested: Align except when nested

  • none: No align

Examples:

align_all

int var = 56 + (cond1 ? result1 : cond2 ? result2 : result3);

align_not_nested

int var = 56 + (cond1 ? result1 : cond2 ? result2 : result3);

none

int var = 56 + (cond1 ? result1 : cond2 ? result2 : result3);

Indent aligned ?: operator

Property names:

[resharper_]cpp_indent_aligned_ternary, [resharper_]indent_aligned_ternary

Possible values:

true | false

Examples:

true

int var = 56 + (cond1 ? result1 : cond2 ? result2 : result3);

false

int var = 56 + (cond1 ? result1 : cond2 ? result2 : result3);

Chained method calls

Property names:

[resharper_]cpp_align_multiline_calls_chain, [resharper_]align_multiline_calls_chain

Possible values:

true | false

Examples:

true

struct X { X foo(X x) { x.foo() .foo() .foo(); } };

false

struct X { X foo(X x) { x.foo() .foo() .foo(); } };

Outdent '.' and '->' in chained method calls

Property names:

[resharper_]cpp_outdent_dots, [resharper_]outdent_dots

Possible values:

true | false

Examples:

true

auto a = MyVar .SomeMethod() ->OtherMethod() .ThirdMethod(); auto b = MyVar .SomeMethod() ->OtherMethod() .ThirdMethod();

false

auto a = MyVar .SomeMethod() ->OtherMethod() .ThirdMethod(); auto b = MyVar .SomeMethod() ->OtherMethod() .ThirdMethod();

Chained binary expressions

Property names:

[resharper_]cpp_align_multiline_binary_expressions_chain, [resharper_]align_multiline_binary_expressions_chain

Possible values:

true | false

Examples:

true

int var = 1 + 2 + 3;

false

int var = 1 + 2 + 3;

Align similar code in columns

Fix column alignment in adjacent lines

Property names:

[resharper_]cpp_int_align_fix_in_adjacent, [resharper_]int_align_fix_in_adjacent

When formatting selected code, also fix column alignment in the adjacent lines if needed

Possible values:

true | false

Assignments

Property names:

[resharper_]cpp_int_align_eq, [resharper_]int_align_eq

Possible values:

true | false

Examples:

true

const char* x = "x"; SomeClass xxxxx = "xxxxx"; int xxx; int& y = xxx;

false

const char* x = "x"; SomeClass xxxxx = "xxxxx"; int xxx; int& y = xxx;

Declaration names

Property names:

[resharper_]cpp_int_align_declaration_names, [resharper_]int_align_declaration_names

Possible values:

true | false

Examples:

true

const char* x = "x"; SomeClass xxxxx = "xxxxx"; int xxx; int& y = xxx;

false

const char* x = "x"; SomeClass xxxxx = "xxxxx"; int xxx; int& y = xxx;

Enum initializers

Property names:

[resharper_]cpp_int_align_enum_initializers, [resharper_]int_align_enum_initializers

Possible values:

true | false

Examples:

true

enum class Direction { up = 0b00000001, down = 0b00000010, left = 0b00000100, right = 0b00001000 };

false

enum class Direction { up = 0b00000001, down = 0b00000010, left = 0b00000100, right = 0b00001000 };

Bit-field sizes

Property names:

[resharper_]cpp_int_align_bitfield_sizes, [resharper_]int_align_bitfield_sizes

Possible values:

true | false

Examples:

true

struct C { int first : 1; int second : 2; };

false

struct C { int first : 1; int second : 2; };

End comments

Property names:

[resharper_]cpp_int_align_comments, [resharper_]int_align_comments

Possible values:

true | false

Examples:

true

void foo() { DoSomething(); // I'm auto y = 6; // forced while (y > 0) y--; // to DoSomethingElse(); /* document */ auto z = 10; /* my code */ while (z < 100) z++; /* profusely */ }

false

void foo() { DoSomething(); // I'm auto y = 6; // forced while (y > 0) y--; // to DoSomethingElse(); /* document */ auto z = 10; /* my code */ while (z < 100) z++; /* profusely */ }
Last modified: 21 March 2024