Raw
1 # This file is an example configuration for clang-format 5.0.
2 #
3 # Note that this style definition should only be understood as a hint
4 # for writing new code. The rules are still work-in-progress and does
5 # not yet exactly match the style we have in the existing code.
6
7 # Use tabs whenever we need to fill whitespace that spans at least from one tab
8 # stop to the next one.
9 #
10 # These settings are mirrored in .editorconfig. Keep them in sync.
11 UseTab: Always
12 TabWidth: 8
13 IndentWidth: 8
14 ContinuationIndentWidth: 8
15
16 # While we do want to enforce a character limit of 80 characters, we often
17 # allow lines to overflow that limit to prioritize readability. Setting a
18 # character limit here with penalties has been finicky and creates too many
19 # false positives.
20 #
21 # NEEDSWORK: It would be nice if we can find optimal settings to ensure we
22 # can re-enable the limit here.
23 ColumnLimit: 0
24
25 # C Language specifics
26 Language: Cpp
27
28 # Align parameters on the open bracket
29 # someLongFunction(argument1,
30 # argument2);
31 AlignAfterOpenBracket: Align
32
33 # Don't align consecutive assignments
34 # int aaaa = 12;
35 # int b = 14;
36 AlignConsecutiveAssignments: false
37
38 # Don't align consecutive declarations
39 # int aaaa = 12;
40 # double b = 3.14;
41 AlignConsecutiveDeclarations: false
42
43 # Align consecutive macro definitions.
44 AlignConsecutiveMacros: true
45
46 # Align escaped newlines as far left as possible
47 # #define A \
48 # int aaaa; \
49 # int b; \
50 # int cccccccc;
51 AlignEscapedNewlines: Left
52
53 # Align operands of binary and ternary expressions
54 # int aaa = bbbbbbbbbbb +
55 # cccccc;
56 AlignOperands: true
57
58 # Don't align trailing comments
59 # int a; // Comment a
60 # int b = 2; // Comment b
61 AlignTrailingComments: false
62
63 # By default don't allow putting parameters onto the next line
64 # myFunction(foo, bar, baz);
65 AllowAllParametersOfDeclarationOnNextLine: false
66
67 # Don't allow short braced statements to be on a single line
68 # if (a) not if (a) return;
69 # return;
70 AllowShortBlocksOnASingleLine: false
71 AllowShortCaseLabelsOnASingleLine: false
72 AllowShortFunctionsOnASingleLine: false
73 AllowShortIfStatementsOnASingleLine: false
74 AllowShortLoopsOnASingleLine: false
75
76 # By default don't add a line break after the return type of top-level functions
77 # int foo();
78 AlwaysBreakAfterReturnType: None
79
80 # Pack as many parameters or arguments onto the same line as possible
81 # int myFunction(int aaaaaaaaaaaa, int bbbbbbbb,
82 # int cccc);
83 BinPackArguments: true
84 BinPackParameters: true
85
86 # Add no space around the bit field
87 # unsigned bf:2;
88 BitFieldColonSpacing: None
89
90 # Attach braces to surrounding context except break before braces on function
91 # definitions.
92 # void foo()
93 # {
94 # if (true) {
95 # } else {
96 # }
97 # };
98 BreakBeforeBraces: Linux
99
100 # Break after operators
101 # int value = aaaaaaaaaaaaa +
102 # bbbbbb -
103 # ccccccccccc;
104 BreakBeforeBinaryOperators: None
105 BreakBeforeTernaryOperators: false
106
107 # Don't break string literals
108 BreakStringLiterals: false
109
110 # Use the same indentation level as for the switch statement.
111 # Switch statement body is always indented one level more than case labels.
112 IndentCaseLabels: false
113
114 # Indents directives before the hash. Each level uses a single space for
115 # indentation.
116 # #if FOO
117 # # include <foo>
118 # #endif
119 IndentPPDirectives: AfterHash
120 PPIndentWidth: 1
121
122 # Don't indent a function definition or declaration if it is wrapped after the
123 # type
124 IndentWrappedFunctionNames: false
125
126 # Align pointer to the right
127 # int *a;
128 PointerAlignment: Right
129
130 # Don't insert a space after a cast
131 # x = (int32)y; not x = (int32) y;
132 SpaceAfterCStyleCast: false
133
134 # No space is inserted after the logical not operator
135 SpaceAfterLogicalNot: false
136
137 # Insert spaces before and after assignment operators
138 # int a = 5; not int a=5;
139 # a += 42; a+=42;
140 SpaceBeforeAssignmentOperators: true
141
142 # Spaces will be removed before case colon.
143 # case 1: break; not case 1 : break;
144 SpaceBeforeCaseColon: false
145
146 # Put a space before opening parentheses only after control statement keywords.
147 # void f() {
148 # if (true) {
149 # f();
150 # }
151 # }
152 SpaceBeforeParens: ControlStatementsExceptControlMacros
153
154 # Don't insert spaces inside empty '()'
155 SpaceInEmptyParentheses: false
156
157 # No space before first '[' in arrays
158 # int a[5][5]; not int a [5][5];
159 SpaceBeforeSquareBrackets: false
160
161 # No space will be inserted into {}
162 # while (true) {} not while (true) { }
163 SpaceInEmptyBlock: false
164
165 # The number of spaces before trailing line comments (// - comments).
166 # This does not affect trailing block comments (/* - comments).
167 SpacesBeforeTrailingComments: 1
168
169 # Don't insert spaces in casts
170 # x = (int32) y; not x = ( int32 ) y;
171 SpacesInCStyleCastParentheses: false
172
173 # Don't insert spaces inside container literals
174 # var arr = [1, 2, 3]; not var arr = [ 1, 2, 3 ];
175 SpacesInContainerLiterals: false
176
177 # Don't insert spaces after '(' or before ')'
178 # f(arg); not f( arg );
179 SpacesInParentheses: false
180
181 # Don't insert spaces after '[' or before ']'
182 # int a[5]; not int a[ 5 ];
183 SpacesInSquareBrackets: false
184
185 # Insert a space after '{' and before '}' in struct initializers
186 Cpp11BracedListStyle: false
187
188 # A list of macros that should be interpreted as foreach loops instead of as
189 # function calls. Taken from:
190 # git grep -h '^#define [^[:space:]]*for_\?each[^[:space:]]*(' |
191 # sed "s/^#define / - '/; s/(.*$/'/" | sort | uniq
192 ForEachMacros:
193 - 'for_each_builtin'
194 - 'for_each_string_list_item'
195 - 'for_each_ut'
196 - 'for_each_wanted_builtin'
197 - 'hashmap_for_each_entry'
198 - 'hashmap_for_each_entry_from'
199 - 'kh_foreach'
200 - 'kh_foreach_value'
201 - 'list_for_each'
202 - 'list_for_each_dir'
203 - 'list_for_each_prev'
204 - 'list_for_each_prev_safe'
205 - 'list_for_each_safe'
206 - 'strintmap_for_each_entry'
207 - 'strmap_for_each_entry'
208 - 'strset_for_each_entry'
209
210 # A list of macros that should be interpreted as conditionals instead of as
211 # function calls.
212 IfMacros:
213 - 'if_test'
214
215 # The maximum number of consecutive empty lines to keep.
216 MaxEmptyLinesToKeep: 1
217
218 # No empty line at the start of a block.
219 KeepEmptyLinesAtTheStartOfBlocks: false
220
221 # Don't sort #include's
222 SortIncludes: false
223
224 # Remove optional braces of control statements (if, else, for, and while)
225 # according to the LLVM coding style. This avoids braces on simple
226 # single-statement bodies of statements but keeps braces if one side of
227 # if/else if/.../else cascade has multi-statement body.
228 RemoveBracesLLVM: true