blob: ec6a78ad67cd939e9058d8c97f36c7a89baa78ff [file] [log] [blame]
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001==========================
2Clang-Format Style Options
3==========================
4
5:doc:`ClangFormatStyleOptions` describes configurable formatting style options
6supported by :doc:`LibFormat` and :doc:`ClangFormat`.
7
8When using :program:`clang-format` command line utility or
9``clang::format::reformat(...)`` functions from code, one can either use one of
10the predefined styles (LLVM, Google, Chromium, Mozilla, WebKit) or create a
11custom style by configuring specific style options.
12
13
14Configuring Style with clang-format
15===================================
16
17:program:`clang-format` supports two ways to provide custom style options:
18directly specify style configuration in the ``-style=`` command line option or
Hans Wennborg9f6581b2013-09-10 15:41:12 +000019use ``-style=file`` and put style configuration in the ``.clang-format`` or
20``_clang-format`` file in the project directory.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +000021
22When using ``-style=file``, :program:`clang-format` for each input file will
23try to find the ``.clang-format`` file located in the closest parent directory
24of the input file. When the standard input is used, the search is started from
25the current directory.
26
27The ``.clang-format`` file uses YAML format:
28
29.. code-block:: yaml
30
31 key1: value1
32 key2: value2
33 # A comment.
34 ...
35
Alexander Kornienko092cb212014-08-12 13:34:22 +000036The configuration file can consist of several sections each having different
37``Language:`` parameter denoting the programming language this section of the
38configuration is targeted at. See the description of the **Language** option
39below for the list of supported languages. The first section may have no
40language set, it will set the default style options for all lanugages.
41Configuration sections for specific language will override options set in the
42default section.
43
44When :program:`clang-format` formats a file, it auto-detects the language using
45the file name. When formatting standard input or a file that doesn't have the
46extension corresponding to its language, ``-assume-filename=`` option can be
47used to override the file name :program:`clang-format` uses to detect the
48language.
49
50An example of a configuration file for multiple languages:
51
52.. code-block:: yaml
53
54 ---
55 # We'll use defaults from the LLVM style, but with 4 columns indentation.
56 BasedOnStyle: LLVM
57 IndentWidth: 4
58 ---
59 Language: Cpp
60 # Force pointers to the type for C++.
61 DerivePointerAlignment: false
62 PointerAlignment: Left
63 ---
64 Language: JavaScript
65 # Use 100 columns for JS.
66 ColumnLimit: 100
67 ---
68 Language: Proto
69 # Don't format .proto files.
70 DisableFormat: true
71 ...
72
Alexander Kornienkod278e0e2013-09-04 15:09:13 +000073An easy way to get a valid ``.clang-format`` file containing all configuration
74options of a certain predefined style is:
75
76.. code-block:: console
77
78 clang-format -style=llvm -dump-config > .clang-format
79
80When specifying configuration in the ``-style=`` option, the same configuration
81is applied for all input files. The format of the configuration is:
82
83.. code-block:: console
84
85 -style='{key1: value1, key2: value2, ...}'
86
87
Daniel Jasperd8b4ec02014-10-07 12:15:15 +000088Disabling Formatting on a Piece of Code
89=======================================
90
91Clang-format understands also special comments that switch formatting in a
92delimited range. The code between a comment ``// clang-format off`` or
93``/* clang-format off */`` up to a comment ``// clang-format on`` or
94``/* clang-format on */`` will not be formatted. The comments themselves
95will be formatted (aligned) normally.
96
97.. code-block:: c++
98
99 int formatted_code;
100 // clang-format off
101 void unformatted_code ;
102 // clang-format on
103 void formatted_code_again;
104
105
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000106Configuring Style in Code
107=========================
108
109When using ``clang::format::reformat(...)`` functions, the format is specified
110by supplying the `clang::format::FormatStyle
111<http://clang.llvm.org/doxygen/structclang_1_1format_1_1FormatStyle.html>`_
112structure.
113
114
115Configurable Format Style Options
116=================================
117
118This section lists the supported style options. Value type is specified for
119each option. For enumeration types possible values are specified both as a C++
Alexander Kornienko472d27a2013-09-04 15:14:18 +0000120enumeration member (with a prefix, e.g. ``LS_Auto``), and as a value usable in
121the configuration (without a prefix: ``Auto``).
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000122
123
124**BasedOnStyle** (``string``)
125 The style used for all options not specifically set in the configuration.
126
127 This option is supported only in the :program:`clang-format` configuration
128 (both within ``-style='{...}'`` and the ``.clang-format`` file).
129
130 Possible values:
131
132 * ``LLVM``
133 A style complying with the `LLVM coding standards
134 <http://llvm.org/docs/CodingStandards.html>`_
135 * ``Google``
136 A style complying with `Google's C++ style guide
137 <http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml>`_
138 * ``Chromium``
139 A style complying with `Chromium's style guide
140 <http://www.chromium.org/developers/coding-style>`_
141 * ``Mozilla``
142 A style complying with `Mozilla's style guide
143 <https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style>`_
144 * ``WebKit``
145 A style complying with `WebKit's style guide
146 <http://www.webkit.org/coding/coding-style.html>`_
147
148.. START_FORMAT_STYLE_OPTIONS
149
150**AccessModifierOffset** (``int``)
Alexander Kornienkoe99a3a32016-02-23 16:12:08 +0000151 The extra indent or outdent of access modifiers, e.g. ``public:``.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000152
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000153**AlignAfterOpenBracket** (``BracketAlignmentStyle``)
Daniel Jasper3219e432014-12-02 13:24:51 +0000154 If ``true``, horizontally aligns arguments after an open bracket.
155
156 This applies to round brackets (parentheses), angle brackets and square
Alexander Kornienko1e048232016-02-23 16:11:51 +0000157 brackets.
Daniel Jasperb5bda7c2015-10-06 12:11:51 +0000158
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000159 Possible values:
Daniel Jasper8e1ecca2015-10-07 13:02:45 +0000160
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000161 * ``BAS_Align`` (in configuration: ``Align``)
162 Align parameters on the open bracket, e.g.:
163
164 .. code-block:: c++
165
166 someLongFunction(argument1,
167 argument2);
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000168
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000169 * ``BAS_DontAlign`` (in configuration: ``DontAlign``)
170 Don't align, instead use ``ContinuationIndentWidth``, e.g.:
171
172 .. code-block:: c++
173
174 someLongFunction(argument1,
175 argument2);
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000176
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000177 * ``BAS_AlwaysBreak`` (in configuration: ``AlwaysBreak``)
178 Always break after an open bracket, if the parameters don't fit
179 on a single line, e.g.:
180
181 .. code-block:: c++
182
183 someLongFunction(
184 argument1, argument2);
185
Daniel Jasper3219e432014-12-02 13:24:51 +0000186
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000187
Daniel Jaspera44991332015-04-29 13:06:49 +0000188**AlignConsecutiveAssignments** (``bool``)
189 If ``true``, aligns consecutive assignments.
190
191 This will align the assignment operators of consecutive lines. This
192 will result in formattings like
Daniel Jasperb5bda7c2015-10-06 12:11:51 +0000193
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +0000194 .. code-block:: c++
Daniel Jasper8e1ecca2015-10-07 13:02:45 +0000195
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +0000196 int aaaa = 12;
197 int b = 23;
198 int ccc = 23;
199
200**AlignConsecutiveDeclarations** (``bool``)
201 If ``true``, aligns consecutive declarations.
202
203 This will align the declaration names of consecutive lines. This
204 will result in formattings like
Daniel Jasperb5bda7c2015-10-06 12:11:51 +0000205
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +0000206 .. code-block:: c++
Daniel Jasper8e1ecca2015-10-07 13:02:45 +0000207
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +0000208 int aaaa = 12;
209 float b = 23;
210 std::string ccc = 23;
Daniel Jaspera44991332015-04-29 13:06:49 +0000211
Daniel Jasper7fdbb3f2017-05-08 15:08:00 +0000212**AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``)
213 Options for aligning backslashes in escaped newlines.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000214
Daniel Jasper7fdbb3f2017-05-08 15:08:00 +0000215 Possible values:
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000216
Daniel Jasper7fdbb3f2017-05-08 15:08:00 +0000217 * ``ENAS_DontAlign`` (in configuration: ``DontAlign``)
218 Don't align escaped newlines.
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000219
Daniel Jasper7fdbb3f2017-05-08 15:08:00 +0000220 .. code-block:: c++
221
222 #define A \
223 int aaaa; \
224 int b; \
225 int dddddddddd;
226
227 * ``ENAS_Left`` (in configuration: ``Left``)
228 Align escaped newlines as far left as possible.
229
230 .. code-block:: c++
231
232 true:
233 #define A \
234 int aaaa; \
235 int b; \
236 int dddddddddd;
237
238 false:
239
240 * ``ENAS_Right`` (in configuration: ``Right``)
241 Align escaped newlines in the right-most column.
242
243 .. code-block:: c++
244
245 #define A \
246 int aaaa; \
247 int b; \
248 int dddddddddd;
249
250
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000251
Daniel Jasper3219e432014-12-02 13:24:51 +0000252**AlignOperands** (``bool``)
253 If ``true``, horizontally align operands of binary and ternary
254 expressions.
255
Alexander Kornienko1e048232016-02-23 16:11:51 +0000256 Specifically, this aligns operands of a single expression that needs to be
257 split over multiple lines, e.g.:
258
259 .. code-block:: c++
260
261 int aaa = bbbbbbbbbbbbbbb +
262 ccccccccccccccc;
263
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000264**AlignTrailingComments** (``bool``)
265 If ``true``, aligns trailing comments.
266
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000267 .. code-block:: c++
268
Krasimir Georgiev818da9b2017-11-09 15:41:23 +0000269 true: false:
270 int a; // My comment a vs. int a; // My comment a
271 int b = 2; // comment b int b = 2; // comment about b
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000272
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000273**AllowAllParametersOfDeclarationOnNextLine** (``bool``)
Daniel Jasper392c2ba2017-09-07 13:45:41 +0000274 If the function declaration doesn't fit on a line,
275 allow putting all parameters of a function declaration onto
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000276 the next line even if ``BinPackParameters`` is ``false``.
277
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000278 .. code-block:: c++
279
Daniel Jasper392c2ba2017-09-07 13:45:41 +0000280 true:
281 void myFunction(
282 int a, int b, int c, int d, int e);
283
284 false:
285 void myFunction(int a,
286 int b,
287 int c,
288 int d,
289 int e);
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000290
Daniel Jasper17605d32014-05-14 09:33:35 +0000291**AllowShortBlocksOnASingleLine** (``bool``)
292 Allows contracting simple braced statements to a single line.
293
294 E.g., this allows ``if (a) { return; }`` to be put on a single line.
295
Daniel Jasperb87899b2014-09-10 13:11:45 +0000296**AllowShortCaseLabelsOnASingleLine** (``bool``)
297 If ``true``, short case labels will be contracted to a single line.
298
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000299 .. code-block:: c++
300
301 true: false:
302 switch (a) { vs. switch (a) {
303 case 1: x = 1; break; case 1:
304 case 2: return; x = 1;
305 } break;
306 case 2:
307 return;
308 }
309
Daniel Jasperb5524822014-04-09 14:05:49 +0000310**AllowShortFunctionsOnASingleLine** (``ShortFunctionStyle``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000311 Dependent on the value, ``int f() { return 0; }`` can be put on a
312 single line.
Daniel Jasperb5524822014-04-09 14:05:49 +0000313
314 Possible values:
315
316 * ``SFS_None`` (in configuration: ``None``)
317 Never merge functions into a single line.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000318
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000319 * ``SFS_InlineOnly`` (in configuration: ``InlineOnly``)
320 Only merge functions defined inside a class. Same as "inline",
321 except it does not implies "empty": i.e. top level empty functions
322 are not merged either.
323
324 .. code-block:: c++
325
326 class Foo {
327 void f() { foo(); }
328 };
329 void f() {
330 foo();
331 }
332 void f() {
333 }
334
Daniel Jasper3219e432014-12-02 13:24:51 +0000335 * ``SFS_Empty`` (in configuration: ``Empty``)
336 Only merge empty functions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000337
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000338 .. code-block:: c++
339
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000340 void f() {}
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000341 void f2() {
342 bar2();
343 }
344
Daniel Jasper20580fd2015-06-11 13:31:45 +0000345 * ``SFS_Inline`` (in configuration: ``Inline``)
346 Only merge functions defined inside a class. Implies "empty".
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000347
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000348 .. code-block:: c++
349
Jonathan Roelofs335777b2017-03-20 17:07:49 +0000350 class Foo {
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000351 void f() { foo(); }
352 };
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000353 void f() {
354 foo();
355 }
356 void f() {}
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000357
Daniel Jasperb5524822014-04-09 14:05:49 +0000358 * ``SFS_All`` (in configuration: ``All``)
359 Merge all functions fitting on a single line.
360
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000361 .. code-block:: c++
362
Jonathan Roelofs335777b2017-03-20 17:07:49 +0000363 class Foo {
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000364 void f() { foo(); }
365 };
366 void f() { bar(); }
367
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000368
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000369
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000370**AllowShortIfStatementsOnASingleLine** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000371 If ``true``, ``if (a) return;`` can be put on a single line.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000372
373**AllowShortLoopsOnASingleLine** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000374 If ``true``, ``while (true) continue;`` can be put on a single
375 line.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000376
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000377**AlwaysBreakAfterDefinitionReturnType** (``DefinitionReturnTypeBreakingStyle``)
Zachary Turner448592e2015-12-18 22:20:15 +0000378 The function definition return type breaking style to use. This
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000379 option is **deprecated** and is retained for backwards compatibility.
Daniel Jasperca4ea1c2014-08-05 12:16:31 +0000380
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000381 Possible values:
382
383 * ``DRTBS_None`` (in configuration: ``None``)
384 Break after return type automatically.
385 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000386
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000387 * ``DRTBS_All`` (in configuration: ``All``)
388 Always break after the return type.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000389
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000390 * ``DRTBS_TopLevel`` (in configuration: ``TopLevel``)
Zachary Turner448592e2015-12-18 22:20:15 +0000391 Always break after the return types of top-level functions.
392
393
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000394
Zachary Turner448592e2015-12-18 22:20:15 +0000395**AlwaysBreakAfterReturnType** (``ReturnTypeBreakingStyle``)
396 The function declaration return type breaking style to use.
397
398 Possible values:
399
400 * ``RTBS_None`` (in configuration: ``None``)
401 Break after return type automatically.
402 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000403
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000404 .. code-block:: c++
405
406 class A {
407 int f() { return 0; };
408 };
409 int f();
410 int f() { return 1; }
411
Zachary Turner448592e2015-12-18 22:20:15 +0000412 * ``RTBS_All`` (in configuration: ``All``)
413 Always break after the return type.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000414
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000415 .. code-block:: c++
416
417 class A {
418 int
419 f() {
420 return 0;
421 };
422 };
423 int
424 f();
425 int
426 f() {
427 return 1;
428 }
429
Zachary Turner448592e2015-12-18 22:20:15 +0000430 * ``RTBS_TopLevel`` (in configuration: ``TopLevel``)
431 Always break after the return types of top-level functions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000432
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000433 .. code-block:: c++
434
435 class A {
436 int f() { return 0; };
437 };
438 int
439 f();
440 int
441 f() {
442 return 1;
443 }
444
Zachary Turner448592e2015-12-18 22:20:15 +0000445 * ``RTBS_AllDefinitions`` (in configuration: ``AllDefinitions``)
446 Always break after the return type of function definitions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000447
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000448 .. code-block:: c++
449
450 class A {
451 int
452 f() {
453 return 0;
454 };
455 };
456 int f();
457 int
458 f() {
459 return 1;
460 }
461
Zachary Turner448592e2015-12-18 22:20:15 +0000462 * ``RTBS_TopLevelDefinitions`` (in configuration: ``TopLevelDefinitions``)
463 Always break after the return type of top-level definitions.
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000464
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +0000465 .. code-block:: c++
466
467 class A {
468 int f() { return 0; };
469 };
470 int f();
471 int
472 f() {
473 return 1;
474 }
475
Daniel Jasperca4ea1c2014-08-05 12:16:31 +0000476
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000477
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000478**AlwaysBreakBeforeMultilineStrings** (``bool``)
479 If ``true``, always break before multiline string literals.
480
Daniel Jasper2aaedd32015-06-18 09:12:47 +0000481 This flag is mean to make cases where there are multiple multiline strings
482 in a file look more consistent. Thus, it will only take effect if wrapping
483 the string at that point leads to it being indented
484 ``ContinuationIndentWidth`` spaces from the start of the line.
485
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000486 .. code-block:: c++
487
488 true: false:
489 aaaa = vs. aaaa = "bbbb"
490 "bbbb" "cccc";
491 "cccc";
492
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000493**AlwaysBreakTemplateDeclarations** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000494 If ``true``, always break after the ``template<...>`` of a template
495 declaration.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000496
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000497 .. code-block:: c++
498
499 true: false:
500 template <typename T> vs. template <typename T> class C {};
501 class C {};
502
Daniel Jasper18210d72014-10-09 09:52:05 +0000503**BinPackArguments** (``bool``)
504 If ``false``, a function call's arguments will either be all on the
505 same line or will have one line each.
506
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000507 .. code-block:: c++
508
509 true:
510 void f() {
511 f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa,
512 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
513 }
514
515 false:
516 void f() {
517 f(aaaaaaaaaaaaaaaaaaaa,
518 aaaaaaaaaaaaaaaaaaaa,
519 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
520 }
521
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000522**BinPackParameters** (``bool``)
Daniel Jasper18210d72014-10-09 09:52:05 +0000523 If ``false``, a function declaration's or function definition's
524 parameters will either all be on the same line or will have one line each.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000525
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000526 .. code-block:: c++
527
528 true:
529 void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa,
530 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
531
532 false:
533 void f(int aaaaaaaaaaaaaaaaaaaa,
534 int aaaaaaaaaaaaaaaaaaaa,
535 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
536
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000537**BraceWrapping** (``BraceWrappingFlags``)
538 Control of individual brace wrapping cases.
539
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000540 If ``BreakBeforeBraces`` is set to ``BS_Custom``, use this to specify how
541 each individual brace case should be handled. Otherwise, this is ignored.
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000542
Sylvestre Ledru7372d482017-09-07 12:09:14 +0000543 .. code-block:: yaml
544
545 # Example of usage:
546 BreakBeforeBraces: Custom
547 BraceWrapping:
548 AfterEnum: true
549 AfterStruct: false
550 SplitEmptyFunction: false
551
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000552 Nested configuration flags:
553
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000554
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000555 * ``bool AfterClass`` Wrap class definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000556
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000557 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000558
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000559 true:
560 class foo {};
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000561
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000562 false:
563 class foo
564 {};
Eric Fiselier1571fae2017-06-15 03:38:08 +0000565
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000566 * ``bool AfterControlStatement`` Wrap control statements (``if``/``for``/``while``/``switch``/..).
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000567
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000568 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000569
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000570 true:
571 if (foo())
572 {
573 } else
574 {}
575 for (int i = 0; i < 10; ++i)
576 {}
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000577
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000578 false:
579 if (foo()) {
580 } else {
581 }
582 for (int i = 0; i < 10; ++i) {
583 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000584
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000585 * ``bool AfterEnum`` Wrap enum definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000586
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000587 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000588
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000589 true:
590 enum X : int
591 {
592 B
593 };
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000594
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000595 false:
596 enum X : int { B };
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000597
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000598 * ``bool AfterFunction`` Wrap function definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000599
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000600 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000601
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000602 true:
603 void foo()
604 {
605 bar();
606 bar2();
607 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000608
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000609 false:
610 void foo() {
611 bar();
612 bar2();
613 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000614
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000615 * ``bool AfterNamespace`` Wrap namespace definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000616
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000617 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000618
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000619 true:
620 namespace
621 {
622 int foo();
623 int bar();
624 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000625
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000626 false:
627 namespace {
628 int foo();
629 int bar();
630 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000631
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000632 * ``bool AfterObjCDeclaration`` Wrap ObjC definitions (``@autoreleasepool``, interfaces, ..).
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000633
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000634 * ``bool AfterStruct`` Wrap struct definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000635
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000636 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000637
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000638 true:
639 struct foo
640 {
641 int x;
642 };
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000643
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000644 false:
645 struct foo {
646 int x;
647 };
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000648
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000649 * ``bool AfterUnion`` Wrap union definitions.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000650
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000651 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000652
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000653 true:
654 union foo
655 {
656 int x;
657 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000658
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000659 false:
660 union foo {
661 int x;
662 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000663
Krasimir Georgievd6ce9372017-09-15 11:23:50 +0000664 * ``bool AfterExternBlock`` Wrap extern blocks.
665
666 .. code-block:: c++
667
668 true:
669 extern "C"
670 {
671 int foo();
672 }
673
674 false:
675 extern "C" {
676 int foo();
677 }
678
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000679 * ``bool BeforeCatch`` Wrap before ``catch``.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000680
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000681 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000682
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000683 true:
684 try {
685 foo();
686 }
687 catch () {
688 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000689
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000690 false:
691 try {
692 foo();
693 } catch () {
694 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000695
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000696 * ``bool BeforeElse`` Wrap before ``else``.
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000697
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000698 .. code-block:: c++
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000699
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000700 true:
701 if (foo()) {
702 }
703 else {
704 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000705
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000706 false:
707 if (foo()) {
708 } else {
709 }
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000710
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000711 * ``bool IndentBraces`` Indent the wrapped braces themselves.
712
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +0000713 * ``bool SplitEmptyFunction`` If ``false``, empty function body can be put on a single line.
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000714 This option is used only if the opening brace of the function has
715 already been wrapped, i.e. the `AfterFunction` brace wrapping mode is
716 set, and the function could/should not be put on a single line (as per
717 `AllowShortFunctionsOnASingleLine` and constructor formatting options).
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000718
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000719 .. code-block:: c++
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000720
Krasimir Georgiev90b4ce32017-06-23 11:29:40 +0000721 int f() vs. inf f()
722 {} {
723 }
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000724
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +0000725 * ``bool SplitEmptyRecord`` If ``false``, empty record (e.g. class, struct or union) body
726 can be put on a single line. This option is used only if the opening
727 brace of the record has already been wrapped, i.e. the `AfterClass`
728 (for classes) brace wrapping mode is set.
729
730 .. code-block:: c++
731
732 class Foo vs. class Foo
733 {} {
734 }
735
736 * ``bool SplitEmptyNamespace`` If ``false``, empty namespace body can be put on a single line.
737 This option is used only if the opening brace of the namespace has
738 already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is
739 set.
740
741 .. code-block:: c++
742
743 namespace Foo vs. namespace Foo
744 {} {
745 }
746
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000747
Daniel Jasper6501f7e2015-10-27 12:38:37 +0000748**BreakAfterJavaFieldAnnotations** (``bool``)
749 Break after each annotation on a field in Java files.
750
Sylvestre Ledrude098242017-04-11 07:07:05 +0000751 .. code-block:: java
752
753 true: false:
754 @Partial vs. @Partial @Mock DataLoad loader;
755 @Mock
756 DataLoad loader;
757
Daniel Jasperac043c92014-09-15 11:11:00 +0000758**BreakBeforeBinaryOperators** (``BinaryOperatorStyle``)
759 The way to wrap binary operators.
760
761 Possible values:
762
763 * ``BOS_None`` (in configuration: ``None``)
764 Break after operators.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000765
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000766 .. code-block:: c++
767
768 LooooooooooongType loooooooooooooooooooooongVariable =
769 someLooooooooooooooooongFunction();
770
771 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
772 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==
773 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
774 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >
775 ccccccccccccccccccccccccccccccccccccccccc;
776
Daniel Jasperac043c92014-09-15 11:11:00 +0000777 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``)
778 Break before operators that aren't assignments.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000779
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000780 .. code-block:: c++
781
782 LooooooooooongType loooooooooooooooooooooongVariable =
783 someLooooooooooooooooongFunction();
784
785 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
786 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
787 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
788 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
789 > ccccccccccccccccccccccccccccccccccccccccc;
790
Daniel Jasperac043c92014-09-15 11:11:00 +0000791 * ``BOS_All`` (in configuration: ``All``)
792 Break before operators.
793
Sylvestre Ledru35b392d2017-03-20 12:56:40 +0000794 .. code-block:: c++
795
796 LooooooooooongType loooooooooooooooooooooongVariable
797 = someLooooooooooooooooongFunction();
798
799 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
800 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
801 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
802 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
803 > ccccccccccccccccccccccccccccccccccccccccc;
804
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000805
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000806
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000807**BreakBeforeBraces** (``BraceBreakingStyle``)
808 The brace breaking style to use.
809
810 Possible values:
811
812 * ``BS_Attach`` (in configuration: ``Attach``)
813 Always attach braces to surrounding context.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000814
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000815 .. code-block:: c++
816
817 try {
818 foo();
819 } catch () {
820 }
821 void foo() { bar(); }
822 class foo {};
823 if (foo()) {
824 } else {
825 }
826 enum X : int { A, B };
827
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000828 * ``BS_Linux`` (in configuration: ``Linux``)
829 Like ``Attach``, but break before braces on function, namespace and
830 class definitions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000831
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000832 .. code-block:: c++
833
834 try {
835 foo();
836 } catch () {
837 }
838 void foo() { bar(); }
839 class foo
840 {
841 };
842 if (foo()) {
843 } else {
844 }
845 enum X : int { A, B };
846
Birunthan Mohanathas305fa9c2015-07-12 03:13:54 +0000847 * ``BS_Mozilla`` (in configuration: ``Mozilla``)
848 Like ``Attach``, but break before braces on enum, function, and record
849 definitions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000850
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000851 .. code-block:: c++
852
853 try {
854 foo();
855 } catch () {
856 }
857 void foo() { bar(); }
858 class foo
859 {
860 };
861 if (foo()) {
862 } else {
863 }
864 enum X : int { A, B };
865
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000866 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000867 Like ``Attach``, but break before function definitions, ``catch``, and
868 ``else``.
869
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000870 .. code-block:: c++
871
872 try {
873 foo();
874 } catch () {
875 }
876 void foo() { bar(); }
877 class foo
878 {
879 };
880 if (foo()) {
881 } else {
882 }
883 enum X : int
884 {
885 A,
886 B
887 };
888
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000889 * ``BS_Allman`` (in configuration: ``Allman``)
890 Always break before braces.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000891
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000892 .. code-block:: c++
893
894 try {
895 foo();
896 }
897 catch () {
898 }
899 void foo() { bar(); }
900 class foo {
901 };
902 if (foo()) {
903 }
904 else {
905 }
906 enum X : int { A, B };
907
Daniel Jasperee107ad2014-02-13 12:51:50 +0000908 * ``BS_GNU`` (in configuration: ``GNU``)
909 Always break before braces and add an extra level of indentation to
910 braces of control statements, not to those of class, function
911 or other definitions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000912
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000913 .. code-block:: c++
914
915 try
916 {
917 foo();
918 }
919 catch ()
920 {
921 }
922 void foo() { bar(); }
923 class foo
924 {
925 };
926 if (foo())
927 {
928 }
929 else
930 {
931 }
932 enum X : int
933 {
934 A,
935 B
936 };
937
Roman Kashitsyn291f64f2015-08-10 13:43:19 +0000938 * ``BS_WebKit`` (in configuration: ``WebKit``)
939 Like ``Attach``, but break before functions.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000940
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000941 .. code-block:: c++
942
943 try {
944 foo();
945 } catch () {
946 }
947 void foo() { bar(); }
948 class foo {
949 };
950 if (foo()) {
951 } else {
952 }
953 enum X : int { A, B };
954
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000955 * ``BS_Custom`` (in configuration: ``Custom``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +0000956 Configure each individual brace in `BraceWrapping`.
957
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000958
959
Andi-Bogdan Postelnicu0ef8ee12017-03-10 15:10:37 +0000960**BreakBeforeInheritanceComma** (``bool``)
961 If ``true``, in the class inheritance expression clang-format will
962 break before ``:`` and ``,`` if there is multiple inheritance.
963
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000964 .. code-block:: c++
965
966 true: false:
967 class MyClass vs. class MyClass : public X, public Y {
968 : public X };
969 , public Y {
970 };
971
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000972**BreakBeforeTernaryOperators** (``bool``)
973 If ``true``, ternary operators will be placed after line breaks.
974
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000975 .. code-block:: c++
976
977 true:
978 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription
979 ? firstValue
980 : SecondValueVeryVeryVeryVeryLong;
981
Sylvestre Ledru121224d2017-06-06 07:26:19 +0000982 false:
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +0000983 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription ?
984 firstValue :
985 SecondValueVeryVeryVeryVeryLong;
986
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000987**BreakConstructorInitializers** (``BreakConstructorInitializersStyle``)
988 The constructor initializers style to use.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000989
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000990 Possible values:
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +0000991
Krasimir Georgiev575b25f2017-06-23 08:48:00 +0000992 * ``BCIS_BeforeColon`` (in configuration: ``BeforeColon``)
993 Break constructor initializers before the colon and after the commas.
994
995 .. code-block:: c++
996
Krasimir Georgiev2537e222018-01-17 16:17:26 +0000997 Constructor()
998 : initializer1(),
999 initializer2()
Krasimir Georgiev575b25f2017-06-23 08:48:00 +00001000
1001 * ``BCIS_BeforeComma`` (in configuration: ``BeforeComma``)
1002 Break constructor initializers before the colon and commas, and align
1003 the commas with the colon.
1004
1005 .. code-block:: c++
1006
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001007 Constructor()
1008 : initializer1()
1009 , initializer2()
Krasimir Georgiev575b25f2017-06-23 08:48:00 +00001010
1011 * ``BCIS_AfterColon`` (in configuration: ``AfterColon``)
1012 Break constructor initializers after the colon and commas.
1013
1014 .. code-block:: c++
1015
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001016 Constructor() :
1017 initializer1(),
1018 initializer2()
Krasimir Georgiev575b25f2017-06-23 08:48:00 +00001019
1020
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001021
Alexander Kornienko1e048232016-02-23 16:11:51 +00001022**BreakStringLiterals** (``bool``)
1023 Allow breaking string literals when formatting.
1024
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001025**ColumnLimit** (``unsigned``)
1026 The column limit.
1027
1028 A column limit of ``0`` means that there is no column limit. In this case,
1029 clang-format will respect the input's line breaking decisions within
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001030 statements unless they contradict other rules.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001031
Daniel Jasperee107ad2014-02-13 12:51:50 +00001032**CommentPragmas** (``std::string``)
1033 A regular expression that describes comments with special meaning,
1034 which should not be split into lines or otherwise changed.
1035
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001036 .. code-block:: c++
1037
Jonathan Roelofs335777b2017-03-20 17:07:49 +00001038 // CommentPragmas: '^ FOOBAR pragma:'
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001039 // Will leave the following line unaffected
1040 #include <vector> // FOOBAR pragma: keep
1041
Krasimir Georgiev575b25f2017-06-23 08:48:00 +00001042**CompactNamespaces** (``bool``)
1043 If ``true``, consecutive namespace declarations will be on the same
1044 line. If ``false``, each namespace is declared on a new line.
1045
1046 .. code-block:: c++
1047
1048 true:
1049 namespace Foo { namespace Bar {
1050 }}
1051
1052 false:
1053 namespace Foo {
1054 namespace Bar {
1055 }
1056 }
1057
1058 If it does not fit on a single line, the overflowing namespaces get
1059 wrapped:
1060
1061 .. code-block:: c++
1062
1063 namespace Foo { namespace Bar {
1064 namespace Extra {
1065 }}}
1066
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001067**ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``)
1068 If the constructor initializers don't fit on a line, put each
1069 initializer on its own line.
1070
Sylvestre Ledru7d21a3d2017-03-13 14:42:47 +00001071 .. code-block:: c++
1072
1073 true:
1074 SomeClass::Constructor()
1075 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) {
1076 return 0;
1077 }
1078
1079 false:
1080 SomeClass::Constructor()
1081 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa),
1082 aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) {
1083 return 0;
1084 }
1085
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001086**ConstructorInitializerIndentWidth** (``unsigned``)
1087 The number of characters to use for indentation of constructor
1088 initializer lists.
1089
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001090**ContinuationIndentWidth** (``unsigned``)
1091 Indent width for line continuations.
1092
Sylvestre Ledrude098242017-04-11 07:07:05 +00001093 .. code-block:: c++
1094
1095 ContinuationIndentWidth: 2
1096
1097 int i = // VeryVeryVeryVeryVeryLongComment
1098 longFunction( // Again a long comment
1099 arg);
1100
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001101**Cpp11BracedListStyle** (``bool``)
1102 If ``true``, format braced lists as best suited for C++11 braced
1103 lists.
1104
1105 Important differences:
1106 - No spaces inside the braced list.
1107 - No line break before the closing brace.
1108 - Indentation with the continuation indent, not with the block indent.
1109
1110 Fundamentally, C++11 braced lists are formatted exactly like function
1111 calls would be formatted in their place. If the braced list follows a name
1112 (e.g. a type or variable name), clang-format formats as if the ``{}`` were
1113 the parentheses of a function call with that name. If there is no name,
1114 a zero-length name is assumed.
1115
Sylvestre Ledrude098242017-04-11 07:07:05 +00001116 .. code-block:: c++
1117
1118 true: false:
1119 vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 };
1120 vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} };
1121 f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]);
1122 new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 };
1123
Daniel Jasper553d4872014-06-17 12:40:34 +00001124**DerivePointerAlignment** (``bool``)
1125 If ``true``, analyze the formatted file for the most common
Sylvestre Ledrude098242017-04-11 07:07:05 +00001126 alignment of ``&`` and ``*``.
1127 Pointer and reference alignment styles are going to be updated according
1128 to the preferences found in the file.
1129 ``PointerAlignment`` is then used only as fallback.
Daniel Jasper553d4872014-06-17 12:40:34 +00001130
1131**DisableFormat** (``bool``)
Birunthan Mohanathasb744e722015-06-27 09:25:28 +00001132 Disables formatting completely.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001133
1134**ExperimentalAutoDetectBinPacking** (``bool``)
1135 If ``true``, clang-format detects whether function calls and
1136 definitions are formatted with one parameter per line.
1137
1138 Each call can be bin-packed, one-per-line or inconclusive. If it is
1139 inconclusive, e.g. completely on one line, but a decision needs to be
1140 made, clang-format analyzes whether there are other bin-packed cases in
1141 the input file and act accordingly.
1142
1143 NOTE: This is an experimental flag, that might go away or be renamed. Do
1144 not use this in config files, etc. Use at your own risk.
1145
Krasimir Georgiev32eaa862017-03-01 15:35:39 +00001146**FixNamespaceComments** (``bool``)
1147 If ``true``, clang-format adds missing namespace end comments and
1148 fixes invalid existing ones.
1149
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001150 .. code-block:: c++
1151
1152 true: false:
1153 namespace a { vs. namespace a {
1154 foo(); foo();
1155 } // namespace a; }
1156
Daniel Jaspere1e43192014-04-01 12:55:11 +00001157**ForEachMacros** (``std::vector<std::string>``)
Daniel Jasperb5524822014-04-09 14:05:49 +00001158 A vector of macros that should be interpreted as foreach loops
1159 instead of as function calls.
Daniel Jaspere1e43192014-04-01 12:55:11 +00001160
Daniel Jasperb5524822014-04-09 14:05:49 +00001161 These are expected to be macros of the form:
Daniel Jasperb5bda7c2015-10-06 12:11:51 +00001162
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001163 .. code-block:: c++
Daniel Jasper8e1ecca2015-10-07 13:02:45 +00001164
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001165 FOREACH(<variable-declaration>, ...)
1166 <loop-body>
1167
1168 In the .clang-format configuration file, this can be configured like:
Daniel Jasperb5bda7c2015-10-06 12:11:51 +00001169
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001170 .. code-block:: yaml
Daniel Jasper8e1ecca2015-10-07 13:02:45 +00001171
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001172 ForEachMacros: ['RANGES_FOR', 'FOREACH']
Daniel Jasperb5524822014-04-09 14:05:49 +00001173
1174 For example: BOOST_FOREACH.
Daniel Jaspere1e43192014-04-01 12:55:11 +00001175
Krasimir Georgiev4c2c9c32017-11-27 13:23:45 +00001176**IncludeBlocks** (``IncludeBlocksStyle``)
1177 Dependent on the value, multiple ``#include`` blocks can be sorted
1178 as one and divided based on category.
1179
1180 Possible values:
1181
1182 * ``IBS_Preserve`` (in configuration: ``Preserve``)
1183 Sort each ``#include`` block separately.
1184
1185 .. code-block:: c++
1186
1187 #include "b.h" into #include "b.h"
1188
1189 #include <lib/main.h> #include "a.h"
1190 #include "a.h" #include <lib/main.h>
1191
1192 * ``IBS_Merge`` (in configuration: ``Merge``)
1193 Merge multiple ``#include`` blocks together and sort as one.
1194
1195 .. code-block:: c++
1196
1197 #include "b.h" into #include "a.h"
1198 #include "b.h"
1199 #include <lib/main.h> #include <lib/main.h>
1200 #include "a.h"
1201
1202 * ``IBS_Regroup`` (in configuration: ``Regroup``)
1203 Merge multiple ``#include`` blocks together and sort as one.
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001204 Then split into groups based on category priority. See
1205 ``IncludeCategories``.
Krasimir Georgiev4c2c9c32017-11-27 13:23:45 +00001206
1207 .. code-block:: c++
1208
1209 #include "b.h" into #include "a.h"
1210 #include "b.h"
1211 #include <lib/main.h>
1212 #include "a.h" #include <lib/main.h>
1213
1214
1215
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001216**IncludeCategories** (``std::vector<IncludeCategory>``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001217 Regular expressions denoting the different ``#include`` categories
1218 used for ordering ``#includes``.
Daniel Jasperc1bc38e2015-09-29 14:57:55 +00001219
1220 These regular expressions are matched against the filename of an include
1221 (including the <> or "") in order. The value belonging to the first
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001222 matching regular expression is assigned and ``#includes`` are sorted first
Daniel Jasperc1bc38e2015-09-29 14:57:55 +00001223 according to increasing category number and then alphabetically within
1224 each category.
1225
Alexander Kornienko1e048232016-02-23 16:11:51 +00001226 If none of the regular expressions match, INT_MAX is assigned as
1227 category. The main header for a source file automatically gets category 0.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001228 so that it is generally kept at the beginning of the ``#includes``
Alexander Kornienko1e048232016-02-23 16:11:51 +00001229 (http://llvm.org/docs/CodingStandards.html#include-style). However, you
1230 can also assign negative priorities if you have certain headers that
1231 always need to be first.
Daniel Jasperc1bc38e2015-09-29 14:57:55 +00001232
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001233 To configure this in the .clang-format file, use:
Daniel Jasperb5bda7c2015-10-06 12:11:51 +00001234
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001235 .. code-block:: yaml
Daniel Jasper8e1ecca2015-10-07 13:02:45 +00001236
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001237 IncludeCategories:
1238 - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
1239 Priority: 2
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +00001240 - Regex: '^(<|"(gtest|gmock|isl|json)/)'
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001241 Priority: 3
Sylvestre Ledruf3e295a2017-03-09 06:41:08 +00001242 - Regex: '.*'
Daniel Jasper8ce1b8d2015-10-06 11:54:18 +00001243 Priority: 1
1244
Daniel Jasper9c8ff352016-03-21 14:11:27 +00001245**IncludeIsMainRegex** (``std::string``)
1246 Specify a regular expression of suffixes that are allowed in the
1247 file-to-main-include mapping.
1248
1249 When guessing whether a #include is the "main" include (to assign
1250 category 0, see above), use this regex of allowed suffixes to the header
1251 stem. A partial match is done, so that:
1252 - "" means "arbitrary suffix"
1253 - "$" means "no suffix"
1254
1255 For example, if configured to "(_test)?$", then a header a.h would be seen
1256 as the "main" include in both a.cc and a_test.cc.
1257
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001258**IndentCaseLabels** (``bool``)
1259 Indent case labels one level from the switch statement.
1260
1261 When ``false``, use the same indentation level as for the switch statement.
1262 Switch statement body is always indented one level more than case labels.
1263
Sylvestre Ledrude098242017-04-11 07:07:05 +00001264 .. code-block:: c++
1265
1266 false: true:
1267 switch (fool) { vs. switch (fool) {
1268 case 1: case 1:
1269 bar(); bar();
1270 break; break;
1271 default: default:
1272 plop(); plop();
1273 } }
1274
Krasimir Georgievad47c902017-08-30 14:34:57 +00001275**IndentPPDirectives** (``PPDirectiveIndentStyle``)
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +00001276 The preprocessor directive indenting style to use.
Krasimir Georgievad47c902017-08-30 14:34:57 +00001277
1278 Possible values:
1279
1280 * ``PPDIS_None`` (in configuration: ``None``)
1281 Does not indent any directives.
1282
1283 .. code-block:: c++
1284
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +00001285 #if FOO
1286 #if BAR
1287 #include <foo>
1288 #endif
1289 #endif
Krasimir Georgievad47c902017-08-30 14:34:57 +00001290
1291 * ``PPDIS_AfterHash`` (in configuration: ``AfterHash``)
1292 Indents directives after the hash.
1293
1294 .. code-block:: c++
1295
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +00001296 #if FOO
1297 # if BAR
1298 # include <foo>
1299 # endif
1300 #endif
1301
1302
Krasimir Georgievad47c902017-08-30 14:34:57 +00001303
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001304**IndentWidth** (``unsigned``)
Alexander Kornienko45ca09b2013-09-27 16:16:55 +00001305 The number of columns to use for indentation.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001306
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001307 .. code-block:: c++
1308
1309 IndentWidth: 3
Sylvestre Ledrude098242017-04-11 07:07:05 +00001310
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001311 void f() {
1312 someFunction();
1313 if (true, false) {
1314 f();
1315 }
1316 }
1317
Daniel Jasperc75e1ef2014-07-09 08:42:42 +00001318**IndentWrappedFunctionNames** (``bool``)
1319 Indent if a function definition or declaration is wrapped after the
1320 type.
1321
Sylvestre Ledrude098242017-04-11 07:07:05 +00001322 .. code-block:: c++
1323
1324 true:
1325 LoooooooooooooooooooooooooooooooooooooooongReturnType
1326 LoooooooooooooooooooooooooooooooongFunctionDeclaration();
1327
1328 false:
1329 LoooooooooooooooooooooooooooooooooooooooongReturnType
1330 LoooooooooooooooooooooooooooooooongFunctionDeclaration();
1331
Daniel Jasper9c8ff352016-03-21 14:11:27 +00001332**JavaScriptQuotes** (``JavaScriptQuoteStyle``)
1333 The JavaScriptQuoteStyle to use for JavaScript strings.
1334
1335 Possible values:
1336
1337 * ``JSQS_Leave`` (in configuration: ``Leave``)
1338 Leave string quotes as they are.
1339
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001340 .. code-block:: js
1341
1342 string1 = "foo";
1343 string2 = 'bar';
1344
Daniel Jasper9c8ff352016-03-21 14:11:27 +00001345 * ``JSQS_Single`` (in configuration: ``Single``)
1346 Always use single quotes.
1347
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001348 .. code-block:: js
1349
1350 string1 = 'foo';
1351 string2 = 'bar';
1352
Daniel Jasper9c8ff352016-03-21 14:11:27 +00001353 * ``JSQS_Double`` (in configuration: ``Double``)
1354 Always use double quotes.
1355
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001356 .. code-block:: js
1357
1358 string1 = "foo";
1359 string2 = "bar";
1360
Daniel Jasper9c8ff352016-03-21 14:11:27 +00001361
1362
Krasimir Georgiev32eaa862017-03-01 15:35:39 +00001363**JavaScriptWrapImports** (``bool``)
1364 Whether to wrap JavaScript import/export statements.
1365
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001366 .. code-block:: js
1367
1368 true:
1369 import {
1370 VeryLongImportsAreAnnoying,
1371 VeryLongImportsAreAnnoying,
1372 VeryLongImportsAreAnnoying,
1373 } from 'some/module.js'
1374
1375 false:
1376 import {VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying,} from "some/module.js"
1377
Daniel Jasperb5524822014-04-09 14:05:49 +00001378**KeepEmptyLinesAtTheStartOfBlocks** (``bool``)
Sylvestre Ledrude098242017-04-11 07:07:05 +00001379 If true, the empty line at the start of blocks is kept.
1380
1381 .. code-block:: c++
1382
1383 true: false:
1384 if (foo) { vs. if (foo) {
1385 bar();
1386 bar(); }
1387 }
Daniel Jasperb5524822014-04-09 14:05:49 +00001388
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001389**Language** (``LanguageKind``)
1390 Language, this format style is targeted at.
1391
1392 Possible values:
1393
1394 * ``LK_None`` (in configuration: ``None``)
1395 Do not use.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001396
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001397 * ``LK_Cpp`` (in configuration: ``Cpp``)
Krasimir Georgiev32eaa862017-03-01 15:35:39 +00001398 Should be used for C, C++.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001399
Daniel Jasper18210d72014-10-09 09:52:05 +00001400 * ``LK_Java`` (in configuration: ``Java``)
1401 Should be used for Java.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001402
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001403 * ``LK_JavaScript`` (in configuration: ``JavaScript``)
1404 Should be used for JavaScript.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001405
Krasimir Georgiev32eaa862017-03-01 15:35:39 +00001406 * ``LK_ObjC`` (in configuration: ``ObjC``)
1407 Should be used for Objective-C, Objective-C++.
1408
Daniel Jasperee107ad2014-02-13 12:51:50 +00001409 * ``LK_Proto`` (in configuration: ``Proto``)
1410 Should be used for Protocol Buffers
1411 (https://developers.google.com/protocol-buffers/).
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001412
Alexander Kornienko1e048232016-02-23 16:11:51 +00001413 * ``LK_TableGen`` (in configuration: ``TableGen``)
1414 Should be used for TableGen code.
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001415
Sylvestre Ledru44d1ef12017-09-07 12:08:49 +00001416 * ``LK_TextProto`` (in configuration: ``TextProto``)
1417 Should be used for Protocol Buffer messages in text format
1418 (https://developers.google.com/protocol-buffers/).
1419
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001420
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001421
Birunthan Mohanathasb001a0b2015-07-03 17:25:16 +00001422**MacroBlockBegin** (``std::string``)
1423 A regular expression matching macros that start a block.
1424
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001425 .. code-block:: c++
1426
1427 # With:
1428 MacroBlockBegin: "^NS_MAP_BEGIN|\
1429 NS_TABLE_HEAD$"
1430 MacroBlockEnd: "^\
1431 NS_MAP_END|\
1432 NS_TABLE_.*_END$"
1433
1434 NS_MAP_BEGIN
1435 foo();
1436 NS_MAP_END
1437
1438 NS_TABLE_HEAD
1439 bar();
1440 NS_TABLE_FOO_END
1441
1442 # Without:
1443 NS_MAP_BEGIN
1444 foo();
1445 NS_MAP_END
1446
1447 NS_TABLE_HEAD
1448 bar();
1449 NS_TABLE_FOO_END
1450
Birunthan Mohanathasb001a0b2015-07-03 17:25:16 +00001451**MacroBlockEnd** (``std::string``)
1452 A regular expression matching macros that end a block.
1453
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001454**MaxEmptyLinesToKeep** (``unsigned``)
1455 The maximum number of consecutive empty lines to keep.
1456
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001457 .. code-block:: c++
1458
1459 MaxEmptyLinesToKeep: 1 vs. MaxEmptyLinesToKeep: 0
1460 int f() { int f() {
1461 int = 1; int i = 1;
1462 i = foo();
1463 i = foo(); return i;
1464 }
1465 return i;
1466 }
1467
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001468**NamespaceIndentation** (``NamespaceIndentationKind``)
1469 The indentation used for namespaces.
1470
1471 Possible values:
1472
1473 * ``NI_None`` (in configuration: ``None``)
1474 Don't indent in namespaces.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001475
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001476 .. code-block:: c++
1477
1478 namespace out {
1479 int i;
1480 namespace in {
1481 int i;
1482 }
1483 }
1484
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001485 * ``NI_Inner`` (in configuration: ``Inner``)
1486 Indent only in inner namespaces (nested in other namespaces).
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001487
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001488 .. code-block:: c++
1489
1490 namespace out {
1491 int i;
1492 namespace in {
1493 int i;
1494 }
1495 }
1496
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001497 * ``NI_All`` (in configuration: ``All``)
1498 Indent in all namespaces.
1499
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001500 .. code-block:: c++
1501
1502 namespace out {
1503 int i;
1504 namespace in {
1505 int i;
1506 }
1507 }
1508
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001509
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001510
Daniel Jaspereb2226e2014-10-28 16:56:37 +00001511**ObjCBlockIndentWidth** (``unsigned``)
1512 The number of characters to use for indentation of ObjC blocks.
1513
Sylvestre Ledrude098242017-04-11 07:07:05 +00001514 .. code-block:: objc
1515
1516 ObjCBlockIndentWidth: 4
1517
1518 [operation setCompletionBlock:^{
1519 [self onOperationDone];
1520 }];
1521
Daniel Jasperee107ad2014-02-13 12:51:50 +00001522**ObjCSpaceAfterProperty** (``bool``)
1523 Add a space after ``@property`` in Objective-C, i.e. use
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001524 ``@property (readonly)`` instead of ``@property(readonly)``.
Daniel Jasperee107ad2014-02-13 12:51:50 +00001525
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001526**ObjCSpaceBeforeProtocolList** (``bool``)
1527 Add a space in front of an Objective-C protocol list, i.e. use
1528 ``Foo <Protocol>`` instead of ``Foo<Protocol>``.
1529
Krasimir Georgiev575b25f2017-06-23 08:48:00 +00001530**PenaltyBreakAssignment** (``unsigned``)
1531 The penalty for breaking around an assignment operator.
1532
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001533**PenaltyBreakBeforeFirstCallParameter** (``unsigned``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001534 The penalty for breaking a function call after ``call(``.
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001535
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001536**PenaltyBreakComment** (``unsigned``)
1537 The penalty for each line break introduced inside a comment.
1538
1539**PenaltyBreakFirstLessLess** (``unsigned``)
1540 The penalty for breaking before the first ``<<``.
1541
1542**PenaltyBreakString** (``unsigned``)
1543 The penalty for each line break introduced inside a string literal.
1544
1545**PenaltyExcessCharacter** (``unsigned``)
1546 The penalty for each character outside of the column limit.
1547
1548**PenaltyReturnTypeOnItsOwnLine** (``unsigned``)
1549 Penalty for putting the return type of a function onto its own
1550 line.
1551
Daniel Jasper553d4872014-06-17 12:40:34 +00001552**PointerAlignment** (``PointerAlignmentStyle``)
1553 Pointer and reference alignment style.
1554
1555 Possible values:
1556
1557 * ``PAS_Left`` (in configuration: ``Left``)
1558 Align pointer to the left.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001559
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001560 .. code-block:: c++
1561
Sylvestre Ledruf3e295a2017-03-09 06:41:08 +00001562 int* a;
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001563
Daniel Jasper553d4872014-06-17 12:40:34 +00001564 * ``PAS_Right`` (in configuration: ``Right``)
1565 Align pointer to the right.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001566
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001567 .. code-block:: c++
1568
Sylvestre Ledruf3e295a2017-03-09 06:41:08 +00001569 int *a;
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001570
Daniel Jasper553d4872014-06-17 12:40:34 +00001571 * ``PAS_Middle`` (in configuration: ``Middle``)
1572 Align pointer in the middle.
1573
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001574 .. code-block:: c++
1575
Sylvestre Ledruf3e295a2017-03-09 06:41:08 +00001576 int * a;
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001577
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001578
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001579
Krasimir Georgiev818da9b2017-11-09 15:41:23 +00001580**RawStringFormats** (``std::vector<RawStringFormat>``)
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001581 Defines hints for detecting supported languages code blocks in raw
1582 strings.
Krasimir Georgiev818da9b2017-11-09 15:41:23 +00001583
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001584 A raw string with a matching delimiter or a matching enclosing function
1585 name will be reformatted assuming the specified language based on the
1586 style for that language defined in the .clang-format file. If no style has
1587 been defined in the .clang-format file for the specific language, a
1588 predefined style given by 'BasedOnStyle' is used. If 'BasedOnStyle' is not
1589 found, the formatting is based on llvm style. A matching delimiter takes
1590 precedence over a matching enclosing function name for determining the
1591 language of the raw string contents.
1592
Krasimir Georgiev412ed092018-01-19 16:18:47 +00001593 If a canonical delimiter is specified, occurences of other delimiters for
1594 the same language will be updated to the canonical if possible.
1595
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001596 There should be at most one specification per language and each delimiter
1597 and enclosing function should not occur in multiple specifications.
Krasimir Georgiev818da9b2017-11-09 15:41:23 +00001598
1599 To configure this in the .clang-format file, use:
1600
1601 .. code-block:: yaml
1602
1603 RawStringFormats:
Krasimir Georgiev2537e222018-01-17 16:17:26 +00001604 - Language: TextProto
1605 Delimiters:
1606 - 'pb'
1607 - 'proto'
1608 EnclosingFunctions:
1609 - 'PARSE_TEXT_PROTO'
1610 BasedOnStyle: google
1611 - Language: Cpp
1612 Delimiters:
1613 - 'cc'
1614 - 'cpp'
1615 BasedOnStyle: llvm
Krasimir Georgiev412ed092018-01-19 16:18:47 +00001616 CanonicalDelimiter: 'cc'
Krasimir Georgiev818da9b2017-11-09 15:41:23 +00001617
Alexander Kornienko1e048232016-02-23 16:11:51 +00001618**ReflowComments** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001619 If ``true``, clang-format will attempt to re-flow comments.
Alexander Kornienko1e048232016-02-23 16:11:51 +00001620
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001621 .. code-block:: c++
1622
1623 false:
1624 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information
1625 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information */
1626
1627 true:
1628 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of
1629 // information
1630 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of
1631 * information */
1632
Alexander Kornienko1e048232016-02-23 16:11:51 +00001633**SortIncludes** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001634 If ``true``, clang-format will sort ``#includes``.
Alexander Kornienko1e048232016-02-23 16:11:51 +00001635
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001636 .. code-block:: c++
1637
1638 false: true:
1639 #include "b.h" vs. #include "a.h"
1640 #include "a.h" #include "b.h"
1641
Krasimir Georgievac16a202017-06-23 11:46:03 +00001642**SortUsingDeclarations** (``bool``)
1643 If ``true``, clang-format will sort using declarations.
1644
Krasimir Georgiev818da9b2017-11-09 15:41:23 +00001645 The order of using declarations is defined as follows:
1646 Split the strings by "::" and discard any initial empty strings. The last
1647 element of each list is a non-namespace name; all others are namespace
1648 names. Sort the lists of names lexicographically, where the sort order of
1649 individual names is that all non-namespace names come before all namespace
1650 names, and within those groups, names are in case-insensitive
1651 lexicographic order.
Krasimir Georgievac16a202017-06-23 11:46:03 +00001652
Krasimir Georgievd4102df2017-11-09 15:54:59 +00001653 .. code-block:: c++
1654
1655 false: true:
1656 using std::cout; vs. using std::cin;
1657 using std::cin; using std::cout;
1658
Daniel Jasperb87899b2014-09-10 13:11:45 +00001659**SpaceAfterCStyleCast** (``bool``)
Sylvestre Ledru0385ccb2017-03-08 13:24:46 +00001660 If ``true``, a space is inserted after C style casts.
1661
1662 .. code-block:: c++
1663
1664 true: false:
1665 (int)i; vs. (int) i;
Daniel Jasperb87899b2014-09-10 13:11:45 +00001666
Sylvestre Ledru83bbd572016-08-09 14:24:40 +00001667**SpaceAfterTemplateKeyword** (``bool``)
1668 If ``true``, a space will be inserted after the 'template' keyword.
1669
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001670 .. code-block:: c++
1671
1672 true: false:
1673 template <int> void foo(); vs. template<int> void foo();
1674
Daniel Jasperd94bff32013-09-25 15:15:02 +00001675**SpaceBeforeAssignmentOperators** (``bool``)
Alexander Kornienko45ca09b2013-09-27 16:16:55 +00001676 If ``false``, spaces will be removed before assignment operators.
Daniel Jasperd94bff32013-09-25 15:15:02 +00001677
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001678 .. code-block:: c++
1679
1680 true: false:
1681 int a = 5; vs. int a=5;
1682 a += 42 a+=42;
1683
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001684**SpaceBeforeParens** (``SpaceBeforeParensOptions``)
1685 Defines in which cases to put a space before opening parentheses.
1686
1687 Possible values:
1688
1689 * ``SBPO_Never`` (in configuration: ``Never``)
1690 Never put a space before opening parentheses.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001691
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001692 .. code-block:: c++
1693
1694 void f() {
1695 if(true) {
1696 f();
1697 }
1698 }
1699
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001700 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``)
1701 Put a space before opening parentheses only after control statement
1702 keywords (``for/if/while...``).
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001703
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001704 .. code-block:: c++
1705
1706 void f() {
1707 if (true) {
1708 f();
1709 }
1710 }
1711
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001712 * ``SBPO_Always`` (in configuration: ``Always``)
1713 Always put a space before opening parentheses, except when it's
1714 prohibited by the syntax rules (in function-like macro definitions) or
1715 when determined by other style rules (after unary operators, opening
1716 parentheses, etc.)
1717
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001718 .. code-block:: c++
1719
1720 void f () {
1721 if (true) {
1722 f ();
1723 }
1724 }
1725
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001726
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001727
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001728**SpaceInEmptyParentheses** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001729 If ``true``, spaces may be inserted into ``()``.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001730
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001731 .. code-block:: c++
1732
1733 true: false:
1734 void f( ) { vs. void f() {
1735 int x[] = {foo( ), bar( )}; int x[] = {foo(), bar()};
1736 if (true) { if (true) {
1737 f( ); f();
1738 } }
1739 } }
1740
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001741**SpacesBeforeTrailingComments** (``unsigned``)
Daniel Jasperc0be7602014-05-15 13:55:19 +00001742 The number of spaces before trailing line comments
1743 (``//`` - comments).
Daniel Jasperb5524822014-04-09 14:05:49 +00001744
Alexander Kornienko70f97c92016-02-27 14:02:08 +00001745 This does not affect trailing block comments (``/*`` - comments) as
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001746 those commonly have different usage patterns and a number of special
1747 cases.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001748
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001749 .. code-block:: c++
1750
1751 SpacesBeforeTrailingComments: 3
1752 void f() {
1753 if (true) { // foo1
1754 f(); // bar
1755 } // foo
1756 }
1757
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001758**SpacesInAngles** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001759 If ``true``, spaces will be inserted after ``<`` and before ``>``
1760 in template argument lists.
Alexander Kornienkofdca83d2013-12-10 10:18:34 +00001761
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001762 .. code-block:: c++
1763
1764 true: false:
1765 static_cast< int >(arg); vs. static_cast<int>(arg);
1766 std::function< void(int) > fct; std::function<void(int)> fct;
1767
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001768**SpacesInCStyleCastParentheses** (``bool``)
Daniel Jasperee107ad2014-02-13 12:51:50 +00001769 If ``true``, spaces may be inserted into C style casts.
1770
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001771 .. code-block:: c++
1772
1773 true: false:
1774 x = ( int32 )y vs. x = (int32)y
1775
Daniel Jasperee107ad2014-02-13 12:51:50 +00001776**SpacesInContainerLiterals** (``bool``)
1777 If ``true``, spaces are inserted inside container literals (e.g.
1778 ObjC and Javascript array and dict literals).
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001779
Sylvestre Ledru35b392d2017-03-20 12:56:40 +00001780 .. code-block:: js
1781
1782 true: false:
1783 var arr = [ 1, 2, 3 ]; vs. var arr = [1, 2, 3];
1784 f({a : 1, b : 2, c : 3}); f({a: 1, b: 2, c: 3});
1785
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001786**SpacesInParentheses** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001787 If ``true``, spaces will be inserted after ``(`` and before ``)``.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001788
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001789 .. code-block:: c++
1790
1791 true: false:
1792 t f( Deleted & ) & = delete; vs. t f(Deleted &) & = delete;
1793
Daniel Jasperad981f82014-08-26 11:41:14 +00001794**SpacesInSquareBrackets** (``bool``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001795 If ``true``, spaces will be inserted after ``[`` and before ``]``.
Sylvestre Ledrud1eff2f2017-03-06 16:35:28 +00001796 Lambdas or unspecified size array declarations will not be affected.
1797
1798 .. code-block:: c++
1799
1800 true: false:
1801 int a[ 5 ]; vs. int a[5];
1802 std::unique_ptr<int[]> foo() {} // Won't be affected
Daniel Jasperad981f82014-08-26 11:41:14 +00001803
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001804**Standard** (``LanguageStandard``)
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001805 Format compatible with this standard, e.g. use ``A<A<int> >``
1806 instead of ``A<A<int>>`` for ``LS_Cpp03``.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001807
1808 Possible values:
1809
1810 * ``LS_Cpp03`` (in configuration: ``Cpp03``)
1811 Use C++03-compatible syntax.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001812
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001813 * ``LS_Cpp11`` (in configuration: ``Cpp11``)
Daniel Jasper7fdbb3f2017-05-08 15:08:00 +00001814 Use features of C++11, C++14 and C++1z (e.g. ``A<A<int>>`` instead of
Nico Weberdc065182017-04-05 18:10:42 +00001815 ``A<A<int> >``).
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001816
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001817 * ``LS_Auto`` (in configuration: ``Auto``)
1818 Automatic detection based on the input.
1819
1820
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001821
Alexander Kornienko45ca09b2013-09-27 16:16:55 +00001822**TabWidth** (``unsigned``)
1823 The number of columns used for tab stops.
1824
1825**UseTab** (``UseTabStyle``)
1826 The way to use tab characters in the resulting file.
1827
1828 Possible values:
1829
1830 * ``UT_Never`` (in configuration: ``Never``)
1831 Never use tab.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001832
Alexander Kornienko45ca09b2013-09-27 16:16:55 +00001833 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``)
1834 Use tabs only for indentation.
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001835
Krasimir Georgiev32eaa862017-03-01 15:35:39 +00001836 * ``UT_ForContinuationAndIndentation`` (in configuration: ``ForContinuationAndIndentation``)
1837 Use tabs only for line continuation and indentation.
1838
Alexander Kornienko45ca09b2013-09-27 16:16:55 +00001839 * ``UT_Always`` (in configuration: ``Always``)
1840 Use tabs whenever we need to fill whitespace that spans at least from
1841 one tab stop to the next one.
1842
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001843
Alexander Kornienkob00a7d22016-02-23 16:12:00 +00001844
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001845.. END_FORMAT_STYLE_OPTIONS
1846
Daniel Jasper49d3d582015-10-05 07:24:55 +00001847Adding additional style options
1848===============================
1849
1850Each additional style option adds costs to the clang-format project. Some of
Sylvestre Ledrube8f3962016-02-14 20:20:58 +00001851these costs affect the clang-format development itself, as we need to make
Daniel Jasper49d3d582015-10-05 07:24:55 +00001852sure that any given combination of options work and that new features don't
1853break any of the existing options in any way. There are also costs for end users
1854as options become less discoverable and people have to think about and make a
1855decision on options they don't really care about.
1856
1857The goal of the clang-format project is more on the side of supporting a
1858limited set of styles really well as opposed to supporting every single style
1859used by a codebase somewhere in the wild. Of course, we do want to support all
1860major projects and thus have established the following bar for adding style
1861options. Each new style option must ..
1862
Daniel Jasperfcbea712015-10-05 13:30:42 +00001863 * be used in a project of significant size (have dozens of contributors)
1864 * have a publicly accessible style guide
1865 * have a person willing to contribute and maintain patches
Daniel Jasper49d3d582015-10-05 07:24:55 +00001866
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001867Examples
1868========
1869
1870A style similar to the `Linux Kernel style
1871<https://www.kernel.org/doc/Documentation/CodingStyle>`_:
1872
1873.. code-block:: yaml
1874
1875 BasedOnStyle: LLVM
1876 IndentWidth: 8
Alexander Kornienko8ba68f62013-09-27 16:19:25 +00001877 UseTab: Always
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001878 BreakBeforeBraces: Linux
1879 AllowShortIfStatementsOnASingleLine: false
1880 IndentCaseLabels: false
1881
1882The result is (imagine that tabs are used for indentation here):
1883
1884.. code-block:: c++
1885
1886 void test()
1887 {
1888 switch (x) {
1889 case 0:
1890 case 1:
1891 do_something();
1892 break;
1893 case 2:
1894 do_something_else();
1895 break;
1896 default:
1897 break;
1898 }
1899 if (condition)
1900 do_something_completely_different();
1901
1902 if (x == y) {
1903 q();
1904 } else if (x > y) {
1905 w();
1906 } else {
1907 r();
1908 }
1909 }
1910
1911A style similar to the default Visual Studio formatting style:
1912
1913.. code-block:: yaml
1914
Alexander Kornienko8ba68f62013-09-27 16:19:25 +00001915 UseTab: Never
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001916 IndentWidth: 4
1917 BreakBeforeBraces: Allman
1918 AllowShortIfStatementsOnASingleLine: false
1919 IndentCaseLabels: false
1920 ColumnLimit: 0
1921
1922The result is:
1923
1924.. code-block:: c++
1925
1926 void test()
1927 {
1928 switch (suffix)
1929 {
1930 case 0:
1931 case 1:
1932 do_something();
1933 break;
1934 case 2:
1935 do_something_else();
1936 break;
1937 default:
1938 break;
1939 }
1940 if (condition)
1941 do_somthing_completely_different();
1942
1943 if (x == y)
1944 {
1945 q();
1946 }
1947 else if (x > y)
1948 {
1949 w();
1950 }
1951 else
1952 {
1953 r();
1954 }
1955 }