ClangFormatStyleOptions.rst revision 1.1.1.1.4.1 1 ==========================
2 Clang-Format Style Options
3 ==========================
4
5 :doc:`ClangFormatStyleOptions` describes configurable formatting style options
6 supported by :doc:`LibFormat` and :doc:`ClangFormat`.
7
8 When using :program:`clang-format` command line utility or
9 ``clang::format::reformat(...)`` functions from code, one can either use one of
10 the predefined styles (LLVM, Google, Chromium, Mozilla, WebKit, Microsoft) or
11 create a custom style by configuring specific style options.
12
13
14 Configuring Style with clang-format
15 ===================================
16
17 :program:`clang-format` supports two ways to provide custom style options:
18 directly specify style configuration in the ``-style=`` command line option or
19 use ``-style=file`` and put style configuration in the ``.clang-format`` or
20 ``_clang-format`` file in the project directory.
21
22 When using ``-style=file``, :program:`clang-format` for each input file will
23 try to find the ``.clang-format`` file located in the closest parent directory
24 of the input file. When the standard input is used, the search is started from
25 the current directory.
26
27 The ``.clang-format`` file uses YAML format:
28
29 .. code-block:: yaml
30
31 key1: value1
32 key2: value2
33 # A comment.
34 ...
35
36 The configuration file can consist of several sections each having different
37 ``Language:`` parameter denoting the programming language this section of the
38 configuration is targeted at. See the description of the **Language** option
39 below for the list of supported languages. The first section may have no
40 language set, it will set the default style options for all languages.
41 Configuration sections for specific language will override options set in the
42 default section.
43
44 When :program:`clang-format` formats a file, it auto-detects the language using
45 the file name. When formatting standard input or a file that doesn't have the
46 extension corresponding to its language, ``-assume-filename=`` option can be
47 used to override the file name :program:`clang-format` uses to detect the
48 language.
49
50 An 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 Language: CSharp
73 # Use 100 columns for C#.
74 ColumnLimit: 100
75 ...
76
77 An easy way to get a valid ``.clang-format`` file containing all configuration
78 options of a certain predefined style is:
79
80 .. code-block:: console
81
82 clang-format -style=llvm -dump-config > .clang-format
83
84 When specifying configuration in the ``-style=`` option, the same configuration
85 is applied for all input files. The format of the configuration is:
86
87 .. code-block:: console
88
89 -style='{key1: value1, key2: value2, ...}'
90
91
92 Disabling Formatting on a Piece of Code
93 =======================================
94
95 Clang-format understands also special comments that switch formatting in a
96 delimited range. The code between a comment ``// clang-format off`` or
97 ``/* clang-format off */`` up to a comment ``// clang-format on`` or
98 ``/* clang-format on */`` will not be formatted. The comments themselves
99 will be formatted (aligned) normally.
100
101 .. code-block:: c++
102
103 int formatted_code;
104 // clang-format off
105 void unformatted_code ;
106 // clang-format on
107 void formatted_code_again;
108
109
110 Configuring Style in Code
111 =========================
112
113 When using ``clang::format::reformat(...)`` functions, the format is specified
114 by supplying the `clang::format::FormatStyle
115 <https://clang.llvm.org/doxygen/structclang_1_1format_1_1FormatStyle.html>`_
116 structure.
117
118
119 Configurable Format Style Options
120 =================================
121
122 This section lists the supported style options. Value type is specified for
123 each option. For enumeration types possible values are specified both as a C++
124 enumeration member (with a prefix, e.g. ``LS_Auto``), and as a value usable in
125 the configuration (without a prefix: ``Auto``).
126
127
128 **BasedOnStyle** (``string``)
129 The style used for all options not specifically set in the configuration.
130
131 This option is supported only in the :program:`clang-format` configuration
132 (both within ``-style='{...}'`` and the ``.clang-format`` file).
133
134 Possible values:
135
136 * ``LLVM``
137 A style complying with the `LLVM coding standards
138 <https://llvm.org/docs/CodingStandards.html>`_
139 * ``Google``
140 A style complying with `Google's C++ style guide
141 <https://google.github.io/styleguide/cppguide.html>`_
142 * ``Chromium``
143 A style complying with `Chromium's style guide
144 <https://chromium.googlesource.com/chromium/src/+/master/styleguide/styleguide.md>`_
145 * ``Mozilla``
146 A style complying with `Mozilla's style guide
147 <https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style>`_
148 * ``WebKit``
149 A style complying with `WebKit's style guide
150 <https://www.webkit.org/coding/coding-style.html>`_
151 * ``Microsoft``
152 A style complying with `Microsoft's style guide
153 <https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference?view=vs-2017>`_
154 * ``GNU``
155 A style complying with the `GNU coding standards
156 <https://www.gnu.org/prep/standards/standards.html>`_
157 * ``InheritParentConfig``
158 Not a real style, but allows to use the ``.clang-format`` file from the
159 parent directory (or its parent if there is none). If there is no parent
160 file found it falls back to the ``fallback`` style, and applies the changes
161 to that.
162
163 With this option you can overwrite some parts of your main style for your
164 subdirectories. This is also possible through the command line, e.g.:
165 ``--style={BasedOnStyle: InheritParentConfig, ColumnLimit: 20}``
166
167 .. START_FORMAT_STYLE_OPTIONS
168
169 **AccessModifierOffset** (``int``)
170 The extra indent or outdent of access modifiers, e.g. ``public:``.
171
172 **AlignAfterOpenBracket** (``BracketAlignmentStyle``)
173 If ``true``, horizontally aligns arguments after an open bracket.
174
175 This applies to round brackets (parentheses), angle brackets and square
176 brackets.
177
178 Possible values:
179
180 * ``BAS_Align`` (in configuration: ``Align``)
181 Align parameters on the open bracket, e.g.:
182
183 .. code-block:: c++
184
185 someLongFunction(argument1,
186 argument2);
187
188 * ``BAS_DontAlign`` (in configuration: ``DontAlign``)
189 Don't align, instead use ``ContinuationIndentWidth``, e.g.:
190
191 .. code-block:: c++
192
193 someLongFunction(argument1,
194 argument2);
195
196 * ``BAS_AlwaysBreak`` (in configuration: ``AlwaysBreak``)
197 Always break after an open bracket, if the parameters don't fit
198 on a single line, e.g.:
199
200 .. code-block:: c++
201
202 someLongFunction(
203 argument1, argument2);
204
205
206
207 **AlignConsecutiveAssignments** (``AlignConsecutiveStyle``)
208 Style of aligning consecutive assignments.
209
210 ``Consecutive`` will result in formattings like:
211
212 .. code-block:: c++
213
214 int a = 1;
215 int somelongname = 2;
216 double c = 3;
217
218 Possible values:
219
220 * ``ACS_None`` (in configuration: ``None``)
221 Do not align assignments on consecutive lines.
222
223 * ``ACS_Consecutive`` (in configuration: ``Consecutive``)
224 Align assignments on consecutive lines. This will result in
225 formattings like:
226
227 .. code-block:: c++
228
229 int a = 1;
230 int somelongname = 2;
231 double c = 3;
232
233 int d = 3;
234 /* A comment. */
235 double e = 4;
236
237 * ``ACS_AcrossEmptyLines`` (in configuration: ``AcrossEmptyLines``)
238 Same as ACS_Consecutive, but also spans over empty lines, e.g.
239
240 .. code-block:: c++
241
242 int a = 1;
243 int somelongname = 2;
244 double c = 3;
245
246 int d = 3;
247 /* A comment. */
248 double e = 4;
249
250 * ``ACS_AcrossComments`` (in configuration: ``AcrossComments``)
251 Same as ACS_Consecutive, but also spans over lines only containing
252 comments, e.g.
253
254 .. code-block:: c++
255
256 int a = 1;
257 int somelongname = 2;
258 double c = 3;
259
260 int d = 3;
261 /* A comment. */
262 double e = 4;
263
264 * ``ACS_AcrossEmptyLinesAndComments``
265 (in configuration: ``AcrossEmptyLinesAndComments``)
266
267 Same as ACS_Consecutive, but also spans over lines only containing
268 comments and empty lines, e.g.
269
270 .. code-block:: c++
271
272 int a = 1;
273 int somelongname = 2;
274 double c = 3;
275
276 int d = 3;
277 /* A comment. */
278 double e = 4;
279
280 **AlignConsecutiveBitFields** (``AlignConsecutiveStyle``)
281 Style of aligning consecutive bit field.
282
283 ``Consecutive`` will align the bitfield separators of consecutive lines.
284 This will result in formattings like:
285
286 .. code-block:: c++
287
288 int aaaa : 1;
289 int b : 12;
290 int ccc : 8;
291
292 Possible values:
293
294 * ``ACS_None`` (in configuration: ``None``)
295 Do not align bit fields on consecutive lines.
296
297 * ``ACS_Consecutive`` (in configuration: ``Consecutive``)
298 Align bit fields on consecutive lines. This will result in
299 formattings like:
300
301 .. code-block:: c++
302
303 int aaaa : 1;
304 int b : 12;
305 int ccc : 8;
306
307 int d : 2;
308 /* A comment. */
309 int ee : 3;
310
311 * ``ACS_AcrossEmptyLines`` (in configuration: ``AcrossEmptyLines``)
312 Same as ACS_Consecutive, but also spans over empty lines, e.g.
313
314 .. code-block:: c++
315
316 int aaaa : 1;
317 int b : 12;
318 int ccc : 8;
319
320 int d : 2;
321 /* A comment. */
322 int ee : 3;
323
324 * ``ACS_AcrossComments`` (in configuration: ``AcrossComments``)
325 Same as ACS_Consecutive, but also spans over lines only containing
326 comments, e.g.
327
328 .. code-block:: c++
329
330 int aaaa : 1;
331 int b : 12;
332 int ccc : 8;
333
334 int d : 2;
335 /* A comment. */
336 int ee : 3;
337
338 * ``ACS_AcrossEmptyLinesAndComments``
339 (in configuration: ``AcrossEmptyLinesAndComments``)
340
341 Same as ACS_Consecutive, but also spans over lines only containing
342 comments and empty lines, e.g.
343
344 .. code-block:: c++
345
346 int aaaa : 1;
347 int b : 12;
348 int ccc : 8;
349
350 int d : 2;
351 /* A comment. */
352 int ee : 3;
353
354 **AlignConsecutiveDeclarations** (``AlignConsecutiveStyle``)
355 Style of aligning consecutive declarations.
356
357 ``Consecutive`` will align the declaration names of consecutive lines.
358 This will result in formattings like:
359
360 .. code-block:: c++
361
362 int aaaa = 12;
363 float b = 23;
364 std::string ccc;
365
366 Possible values:
367
368 * ``ACS_None`` (in configuration: ``None``)
369 Do not align bit declarations on consecutive lines.
370
371 * ``ACS_Consecutive`` (in configuration: ``Consecutive``)
372 Align declarations on consecutive lines. This will result in
373 formattings like:
374
375 .. code-block:: c++
376
377 int aaaa = 12;
378 float b = 23;
379 std::string ccc;
380
381 int a = 42;
382 /* A comment. */
383 bool c = false;
384
385 * ``ACS_AcrossEmptyLines`` (in configuration: ``AcrossEmptyLines``)
386 Same as ACS_Consecutive, but also spans over empty lines, e.g.
387
388 .. code-block:: c++
389
390 int aaaa = 12;
391 float b = 23;
392 std::string ccc;
393
394 int a = 42;
395 /* A comment. */
396 bool c = false;
397
398 * ``ACS_AcrossComments`` (in configuration: ``AcrossComments``)
399 Same as ACS_Consecutive, but also spans over lines only containing
400 comments, e.g.
401
402 .. code-block:: c++
403
404 int aaaa = 12;
405 float b = 23;
406 std::string ccc;
407
408 int a = 42;
409 /* A comment. */
410 bool c = false;
411
412 * ``ACS_AcrossEmptyLinesAndComments``
413 (in configuration: ``AcrossEmptyLinesAndComments``)
414
415 Same as ACS_Consecutive, but also spans over lines only containing
416 comments and empty lines, e.g.
417
418 .. code-block:: c++
419
420 int aaaa = 12;
421 float b = 23;
422 std::string ccc;
423
424 int a = 42;
425 /* A comment. */
426 bool c = false;
427
428 **AlignConsecutiveMacros** (``AlignConsecutiveStyle``)
429 Style of aligning consecutive macro definitions.
430
431 ``Consecutive`` will result in formattings like:
432
433 .. code-block:: c++
434
435 #define SHORT_NAME 42
436 #define LONGER_NAME 0x007f
437 #define EVEN_LONGER_NAME (2)
438 #define foo(x) (x * x)
439 #define bar(y, z) (y + z)
440
441 Possible values:
442
443 * ``ACS_None`` (in configuration: ``None``)
444 Do not align macro definitions on consecutive lines.
445
446 * ``ACS_Consecutive`` (in configuration: ``Consecutive``)
447 Align macro definitions on consecutive lines. This will result in
448 formattings like:
449
450 .. code-block:: c++
451
452 #define SHORT_NAME 42
453 #define LONGER_NAME 0x007f
454 #define EVEN_LONGER_NAME (2)
455
456 #define foo(x) (x * x)
457 /* some comment */
458 #define bar(y, z) (y + z)
459
460 * ``ACS_AcrossEmptyLines`` (in configuration: ``AcrossEmptyLines``)
461 Same as ACS_Consecutive, but also spans over empty lines, e.g.
462
463 .. code-block:: c++
464
465 #define SHORT_NAME 42
466 #define LONGER_NAME 0x007f
467 #define EVEN_LONGER_NAME (2)
468
469 #define foo(x) (x * x)
470 /* some comment */
471 #define bar(y, z) (y + z)
472
473 * ``ACS_AcrossComments`` (in configuration: ``AcrossComments``)
474 Same as ACS_Consecutive, but also spans over lines only containing
475 comments, e.g.
476
477 .. code-block:: c++
478
479 #define SHORT_NAME 42
480 #define LONGER_NAME 0x007f
481 #define EVEN_LONGER_NAME (2)
482
483 #define foo(x) (x * x)
484 /* some comment */
485 #define bar(y, z) (y + z)
486
487 * ``ACS_AcrossEmptyLinesAndComments``
488 (in configuration: ``AcrossEmptyLinesAndComments``)
489
490 Same as ACS_Consecutive, but also spans over lines only containing
491 comments and empty lines, e.g.
492
493 .. code-block:: c++
494
495 #define SHORT_NAME 42
496 #define LONGER_NAME 0x007f
497 #define EVEN_LONGER_NAME (2)
498
499 #define foo(x) (x * x)
500 /* some comment */
501 #define bar(y, z) (y + z)
502
503 **AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``)
504 Options for aligning backslashes in escaped newlines.
505
506 Possible values:
507
508 * ``ENAS_DontAlign`` (in configuration: ``DontAlign``)
509 Don't align escaped newlines.
510
511 .. code-block:: c++
512
513 #define A \
514 int aaaa; \
515 int b; \
516 int dddddddddd;
517
518 * ``ENAS_Left`` (in configuration: ``Left``)
519 Align escaped newlines as far left as possible.
520
521 .. code-block:: c++
522
523 true:
524 #define A \
525 int aaaa; \
526 int b; \
527 int dddddddddd;
528
529 false:
530
531 * ``ENAS_Right`` (in configuration: ``Right``)
532 Align escaped newlines in the right-most column.
533
534 .. code-block:: c++
535
536 #define A \
537 int aaaa; \
538 int b; \
539 int dddddddddd;
540
541
542
543 **AlignOperands** (``OperandAlignmentStyle``)
544 If ``true``, horizontally align operands of binary and ternary
545 expressions.
546
547 Possible values:
548
549 * ``OAS_DontAlign`` (in configuration: ``DontAlign``)
550 Do not align operands of binary and ternary expressions.
551 The wrapped lines are indented ``ContinuationIndentWidth`` spaces from
552 the start of the line.
553
554 * ``OAS_Align`` (in configuration: ``Align``)
555 Horizontally align operands of binary and ternary expressions.
556
557 Specifically, this aligns operands of a single expression that needs
558 to be split over multiple lines, e.g.:
559
560 .. code-block:: c++
561
562 int aaa = bbbbbbbbbbbbbbb +
563 ccccccccccccccc;
564
565 When ``BreakBeforeBinaryOperators`` is set, the wrapped operator is
566 aligned with the operand on the first line.
567
568 .. code-block:: c++
569
570 int aaa = bbbbbbbbbbbbbbb
571 + ccccccccccccccc;
572
573 * ``OAS_AlignAfterOperator`` (in configuration: ``AlignAfterOperator``)
574 Horizontally align operands of binary and ternary expressions.
575
576 This is similar to ``AO_Align``, except when
577 ``BreakBeforeBinaryOperators`` is set, the operator is un-indented so
578 that the wrapped operand is aligned with the operand on the first line.
579
580 .. code-block:: c++
581
582 int aaa = bbbbbbbbbbbbbbb
583 + ccccccccccccccc;
584
585
586
587 **AlignTrailingComments** (``bool``)
588 If ``true``, aligns trailing comments.
589
590 .. code-block:: c++
591
592 true: false:
593 int a; // My comment a vs. int a; // My comment a
594 int b = 2; // comment b int b = 2; // comment about b
595
596 **AllowAllArgumentsOnNextLine** (``bool``)
597 If a function call or braced initializer list doesn't fit on a
598 line, allow putting all arguments onto the next line, even if
599 ``BinPackArguments`` is ``false``.
600
601 .. code-block:: c++
602
603 true:
604 callFunction(
605 a, b, c, d);
606
607 false:
608 callFunction(a,
609 b,
610 c,
611 d);
612
613 **AllowAllConstructorInitializersOnNextLine** (``bool``)
614 If a constructor definition with a member initializer list doesn't
615 fit on a single line, allow putting all member initializers onto the next
616 line, if ```ConstructorInitializerAllOnOneLineOrOnePerLine``` is true.
617 Note that this parameter has no effect if
618 ```ConstructorInitializerAllOnOneLineOrOnePerLine``` is false.
619
620 .. code-block:: c++
621
622 true:
623 MyClass::MyClass() :
624 member0(0), member1(2) {}
625
626 false:
627 MyClass::MyClass() :
628 member0(0),
629 member1(2) {}
630
631 **AllowAllParametersOfDeclarationOnNextLine** (``bool``)
632 If the function declaration doesn't fit on a line,
633 allow putting all parameters of a function declaration onto
634 the next line even if ``BinPackParameters`` is ``false``.
635
636 .. code-block:: c++
637
638 true:
639 void myFunction(
640 int a, int b, int c, int d, int e);
641
642 false:
643 void myFunction(int a,
644 int b,
645 int c,
646 int d,
647 int e);
648
649 **AllowShortBlocksOnASingleLine** (``ShortBlockStyle``)
650 Dependent on the value, ``while (true) { continue; }`` can be put on a
651 single line.
652
653 Possible values:
654
655 * ``SBS_Never`` (in configuration: ``Never``)
656 Never merge blocks into a single line.
657
658 .. code-block:: c++
659
660 while (true) {
661 }
662 while (true) {
663 continue;
664 }
665
666 * ``SBS_Empty`` (in configuration: ``Empty``)
667 Only merge empty blocks.
668
669 .. code-block:: c++
670
671 while (true) {}
672 while (true) {
673 continue;
674 }
675
676 * ``SBS_Always`` (in configuration: ``Always``)
677 Always merge short blocks into a single line.
678
679 .. code-block:: c++
680
681 while (true) {}
682 while (true) { continue; }
683
684
685
686 **AllowShortCaseLabelsOnASingleLine** (``bool``)
687 If ``true``, short case labels will be contracted to a single line.
688
689 .. code-block:: c++
690
691 true: false:
692 switch (a) { vs. switch (a) {
693 case 1: x = 1; break; case 1:
694 case 2: return; x = 1;
695 } break;
696 case 2:
697 return;
698 }
699
700 **AllowShortEnumsOnASingleLine** (``bool``)
701 Allow short enums on a single line.
702
703 .. code-block:: c++
704
705 true:
706 enum { A, B } myEnum;
707
708 false:
709 enum
710 {
711 A,
712 B
713 } myEnum;
714
715 **AllowShortFunctionsOnASingleLine** (``ShortFunctionStyle``)
716 Dependent on the value, ``int f() { return 0; }`` can be put on a
717 single line.
718
719 Possible values:
720
721 * ``SFS_None`` (in configuration: ``None``)
722 Never merge functions into a single line.
723
724 * ``SFS_InlineOnly`` (in configuration: ``InlineOnly``)
725 Only merge functions defined inside a class. Same as "inline",
726 except it does not implies "empty": i.e. top level empty functions
727 are not merged either.
728
729 .. code-block:: c++
730
731 class Foo {
732 void f() { foo(); }
733 };
734 void f() {
735 foo();
736 }
737 void f() {
738 }
739
740 * ``SFS_Empty`` (in configuration: ``Empty``)
741 Only merge empty functions.
742
743 .. code-block:: c++
744
745 void f() {}
746 void f2() {
747 bar2();
748 }
749
750 * ``SFS_Inline`` (in configuration: ``Inline``)
751 Only merge functions defined inside a class. Implies "empty".
752
753 .. code-block:: c++
754
755 class Foo {
756 void f() { foo(); }
757 };
758 void f() {
759 foo();
760 }
761 void f() {}
762
763 * ``SFS_All`` (in configuration: ``All``)
764 Merge all functions fitting on a single line.
765
766 .. code-block:: c++
767
768 class Foo {
769 void f() { foo(); }
770 };
771 void f() { bar(); }
772
773
774
775 **AllowShortIfStatementsOnASingleLine** (``ShortIfStyle``)
776 If ``true``, ``if (a) return;`` can be put on a single line.
777
778 Possible values:
779
780 * ``SIS_Never`` (in configuration: ``Never``)
781 Never put short ifs on the same line.
782
783 .. code-block:: c++
784
785 if (a)
786 return ;
787 else {
788 return;
789 }
790
791 * ``SIS_WithoutElse`` (in configuration: ``WithoutElse``)
792 Without else put short ifs on the same line only if
793 the else is not a compound statement.
794
795 .. code-block:: c++
796
797 if (a) return;
798 else
799 return;
800
801 * ``SIS_Always`` (in configuration: ``Always``)
802 Always put short ifs on the same line if
803 the else is not a compound statement or not.
804
805 .. code-block:: c++
806
807 if (a) return;
808 else {
809 return;
810 }
811
812
813
814 **AllowShortLambdasOnASingleLine** (``ShortLambdaStyle``)
815 Dependent on the value, ``auto lambda []() { return 0; }`` can be put on a
816 single line.
817
818 Possible values:
819
820 * ``SLS_None`` (in configuration: ``None``)
821 Never merge lambdas into a single line.
822
823 * ``SLS_Empty`` (in configuration: ``Empty``)
824 Only merge empty lambdas.
825
826 .. code-block:: c++
827
828 auto lambda = [](int a) {}
829 auto lambda2 = [](int a) {
830 return a;
831 };
832
833 * ``SLS_Inline`` (in configuration: ``Inline``)
834 Merge lambda into a single line if argument of a function.
835
836 .. code-block:: c++
837
838 auto lambda = [](int a) {
839 return a;
840 };
841 sort(a.begin(), a.end(), ()[] { return x < y; })
842
843 * ``SLS_All`` (in configuration: ``All``)
844 Merge all lambdas fitting on a single line.
845
846 .. code-block:: c++
847
848 auto lambda = [](int a) {}
849 auto lambda2 = [](int a) { return a; };
850
851
852
853 **AllowShortLoopsOnASingleLine** (``bool``)
854 If ``true``, ``while (true) continue;`` can be put on a single
855 line.
856
857 **AlwaysBreakAfterDefinitionReturnType** (``DefinitionReturnTypeBreakingStyle``)
858 The function definition return type breaking style to use. This
859 option is **deprecated** and is retained for backwards compatibility.
860
861 Possible values:
862
863 * ``DRTBS_None`` (in configuration: ``None``)
864 Break after return type automatically.
865 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account.
866
867 * ``DRTBS_All`` (in configuration: ``All``)
868 Always break after the return type.
869
870 * ``DRTBS_TopLevel`` (in configuration: ``TopLevel``)
871 Always break after the return types of top-level functions.
872
873
874
875 **AlwaysBreakAfterReturnType** (``ReturnTypeBreakingStyle``)
876 The function declaration return type breaking style to use.
877
878 Possible values:
879
880 * ``RTBS_None`` (in configuration: ``None``)
881 Break after return type automatically.
882 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account.
883
884 .. code-block:: c++
885
886 class A {
887 int f() { return 0; };
888 };
889 int f();
890 int f() { return 1; }
891
892 * ``RTBS_All`` (in configuration: ``All``)
893 Always break after the return type.
894
895 .. code-block:: c++
896
897 class A {
898 int
899 f() {
900 return 0;
901 };
902 };
903 int
904 f();
905 int
906 f() {
907 return 1;
908 }
909
910 * ``RTBS_TopLevel`` (in configuration: ``TopLevel``)
911 Always break after the return types of top-level functions.
912
913 .. code-block:: c++
914
915 class A {
916 int f() { return 0; };
917 };
918 int
919 f();
920 int
921 f() {
922 return 1;
923 }
924
925 * ``RTBS_AllDefinitions`` (in configuration: ``AllDefinitions``)
926 Always break after the return type of function definitions.
927
928 .. code-block:: c++
929
930 class A {
931 int
932 f() {
933 return 0;
934 };
935 };
936 int f();
937 int
938 f() {
939 return 1;
940 }
941
942 * ``RTBS_TopLevelDefinitions`` (in configuration: ``TopLevelDefinitions``)
943 Always break after the return type of top-level definitions.
944
945 .. code-block:: c++
946
947 class A {
948 int f() { return 0; };
949 };
950 int f();
951 int
952 f() {
953 return 1;
954 }
955
956
957
958 **AlwaysBreakBeforeMultilineStrings** (``bool``)
959 If ``true``, always break before multiline string literals.
960
961 This flag is mean to make cases where there are multiple multiline strings
962 in a file look more consistent. Thus, it will only take effect if wrapping
963 the string at that point leads to it being indented
964 ``ContinuationIndentWidth`` spaces from the start of the line.
965
966 .. code-block:: c++
967
968 true: false:
969 aaaa = vs. aaaa = "bbbb"
970 "bbbb" "cccc";
971 "cccc";
972
973 **AlwaysBreakTemplateDeclarations** (``BreakTemplateDeclarationsStyle``)
974 The template declaration breaking style to use.
975
976 Possible values:
977
978 * ``BTDS_No`` (in configuration: ``No``)
979 Do not force break before declaration.
980 ``PenaltyBreakTemplateDeclaration`` is taken into account.
981
982 .. code-block:: c++
983
984 template <typename T> T foo() {
985 }
986 template <typename T> T foo(int aaaaaaaaaaaaaaaaaaaaa,
987 int bbbbbbbbbbbbbbbbbbbbb) {
988 }
989
990 * ``BTDS_MultiLine`` (in configuration: ``MultiLine``)
991 Force break after template declaration only when the following
992 declaration spans multiple lines.
993
994 .. code-block:: c++
995
996 template <typename T> T foo() {
997 }
998 template <typename T>
999 T foo(int aaaaaaaaaaaaaaaaaaaaa,
1000 int bbbbbbbbbbbbbbbbbbbbb) {
1001 }
1002
1003 * ``BTDS_Yes`` (in configuration: ``Yes``)
1004 Always break after template declaration.
1005
1006 .. code-block:: c++
1007
1008 template <typename T>
1009 T foo() {
1010 }
1011 template <typename T>
1012 T foo(int aaaaaaaaaaaaaaaaaaaaa,
1013 int bbbbbbbbbbbbbbbbbbbbb) {
1014 }
1015
1016
1017
1018 **AttributeMacros** (``std::vector<std::string>``)
1019 A vector of strings that should be interpreted as attributes/qualifiers
1020 instead of identifiers. This can be useful for language extensions or
1021 static analyzer annotations.
1022
1023 For example:
1024
1025 .. code-block:: c++
1026
1027 x = (char *__capability)&y;
1028 int function(void) __ununsed;
1029 void only_writes_to_buffer(char *__output buffer);
1030
1031 In the .clang-format configuration file, this can be configured like:
1032
1033 .. code-block:: yaml
1034
1035 AttributeMacros: ['__capability', '__output', '__ununsed']
1036
1037 **BinPackArguments** (``bool``)
1038 If ``false``, a function call's arguments will either be all on the
1039 same line or will have one line each.
1040
1041 .. code-block:: c++
1042
1043 true:
1044 void f() {
1045 f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa,
1046 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
1047 }
1048
1049 false:
1050 void f() {
1051 f(aaaaaaaaaaaaaaaaaaaa,
1052 aaaaaaaaaaaaaaaaaaaa,
1053 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
1054 }
1055
1056 **BinPackParameters** (``bool``)
1057 If ``false``, a function declaration's or function definition's
1058 parameters will either all be on the same line or will have one line each.
1059
1060 .. code-block:: c++
1061
1062 true:
1063 void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa,
1064 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
1065
1066 false:
1067 void f(int aaaaaaaaaaaaaaaaaaaa,
1068 int aaaaaaaaaaaaaaaaaaaa,
1069 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
1070
1071 **BitFieldColonSpacing** (``BitFieldColonSpacingStyle``)
1072 The BitFieldColonSpacingStyle to use for bitfields.
1073
1074 Possible values:
1075
1076 * ``BFCS_Both`` (in configuration: ``Both``)
1077 Add one space on each side of the ``:``
1078
1079 .. code-block:: c++
1080
1081 unsigned bf : 2;
1082
1083 * ``BFCS_None`` (in configuration: ``None``)
1084 Add no space around the ``:`` (except when needed for
1085 ``AlignConsecutiveBitFields``).
1086
1087 .. code-block:: c++
1088
1089 unsigned bf:2;
1090
1091 * ``BFCS_Before`` (in configuration: ``Before``)
1092 Add space before the ``:`` only
1093
1094 .. code-block:: c++
1095
1096 unsigned bf :2;
1097
1098 * ``BFCS_After`` (in configuration: ``After``)
1099 Add space after the ``:`` only (space may be added before if
1100 needed for ``AlignConsecutiveBitFields``).
1101
1102 .. code-block:: c++
1103
1104 unsigned bf: 2;
1105
1106
1107
1108 **BraceWrapping** (``BraceWrappingFlags``)
1109 Control of individual brace wrapping cases.
1110
1111 If ``BreakBeforeBraces`` is set to ``BS_Custom``, use this to specify how
1112 each individual brace case should be handled. Otherwise, this is ignored.
1113
1114 .. code-block:: yaml
1115
1116 # Example of usage:
1117 BreakBeforeBraces: Custom
1118 BraceWrapping:
1119 AfterEnum: true
1120 AfterStruct: false
1121 SplitEmptyFunction: false
1122
1123 Nested configuration flags:
1124
1125
1126 * ``bool AfterCaseLabel`` Wrap case labels.
1127
1128 .. code-block:: c++
1129
1130 false: true:
1131 switch (foo) { vs. switch (foo) {
1132 case 1: { case 1:
1133 bar(); {
1134 break; bar();
1135 } break;
1136 default: { }
1137 plop(); default:
1138 } {
1139 } plop();
1140 }
1141 }
1142
1143 * ``bool AfterClass`` Wrap class definitions.
1144
1145 .. code-block:: c++
1146
1147 true:
1148 class foo {};
1149
1150 false:
1151 class foo
1152 {};
1153
1154 * ``BraceWrappingAfterControlStatementStyle AfterControlStatement``
1155 Wrap control statements (``if``/``for``/``while``/``switch``/..).
1156
1157 Possible values:
1158
1159 * ``BWACS_Never`` (in configuration: ``Never``)
1160 Never wrap braces after a control statement.
1161
1162 .. code-block:: c++
1163
1164 if (foo()) {
1165 } else {
1166 }
1167 for (int i = 0; i < 10; ++i) {
1168 }
1169
1170 * ``BWACS_MultiLine`` (in configuration: ``MultiLine``)
1171 Only wrap braces after a multi-line control statement.
1172
1173 .. code-block:: c++
1174
1175 if (foo && bar &&
1176 baz)
1177 {
1178 quux();
1179 }
1180 while (foo || bar) {
1181 }
1182
1183 * ``BWACS_Always`` (in configuration: ``Always``)
1184 Always wrap braces after a control statement.
1185
1186 .. code-block:: c++
1187
1188 if (foo())
1189 {
1190 } else
1191 {}
1192 for (int i = 0; i < 10; ++i)
1193 {}
1194
1195
1196 * ``bool AfterEnum`` Wrap enum definitions.
1197
1198 .. code-block:: c++
1199
1200 true:
1201 enum X : int
1202 {
1203 B
1204 };
1205
1206 false:
1207 enum X : int { B };
1208
1209 * ``bool AfterFunction`` Wrap function definitions.
1210
1211 .. code-block:: c++
1212
1213 true:
1214 void foo()
1215 {
1216 bar();
1217 bar2();
1218 }
1219
1220 false:
1221 void foo() {
1222 bar();
1223 bar2();
1224 }
1225
1226 * ``bool AfterNamespace`` Wrap namespace definitions.
1227
1228 .. code-block:: c++
1229
1230 true:
1231 namespace
1232 {
1233 int foo();
1234 int bar();
1235 }
1236
1237 false:
1238 namespace {
1239 int foo();
1240 int bar();
1241 }
1242
1243 * ``bool AfterObjCDeclaration`` Wrap ObjC definitions (interfaces, implementations...).
1244 @autoreleasepool and @synchronized blocks are wrapped
1245 according to `AfterControlStatement` flag.
1246
1247 * ``bool AfterStruct`` Wrap struct definitions.
1248
1249 .. code-block:: c++
1250
1251 true:
1252 struct foo
1253 {
1254 int x;
1255 };
1256
1257 false:
1258 struct foo {
1259 int x;
1260 };
1261
1262 * ``bool AfterUnion`` Wrap union definitions.
1263
1264 .. code-block:: c++
1265
1266 true:
1267 union foo
1268 {
1269 int x;
1270 }
1271
1272 false:
1273 union foo {
1274 int x;
1275 }
1276
1277 * ``bool AfterExternBlock`` Wrap extern blocks.
1278
1279 .. code-block:: c++
1280
1281 true:
1282 extern "C"
1283 {
1284 int foo();
1285 }
1286
1287 false:
1288 extern "C" {
1289 int foo();
1290 }
1291
1292 * ``bool BeforeCatch`` Wrap before ``catch``.
1293
1294 .. code-block:: c++
1295
1296 true:
1297 try {
1298 foo();
1299 }
1300 catch () {
1301 }
1302
1303 false:
1304 try {
1305 foo();
1306 } catch () {
1307 }
1308
1309 * ``bool BeforeElse`` Wrap before ``else``.
1310
1311 .. code-block:: c++
1312
1313 true:
1314 if (foo()) {
1315 }
1316 else {
1317 }
1318
1319 false:
1320 if (foo()) {
1321 } else {
1322 }
1323
1324 * ``bool BeforeLambdaBody`` Wrap lambda block.
1325
1326 .. code-block:: c++
1327
1328 true:
1329 connect(
1330 []()
1331 {
1332 foo();
1333 bar();
1334 });
1335
1336 false:
1337 connect([]() {
1338 foo();
1339 bar();
1340 });
1341
1342 * ``bool BeforeWhile`` Wrap before ``while``.
1343
1344 .. code-block:: c++
1345
1346 true:
1347 do {
1348 foo();
1349 }
1350 while (1);
1351
1352 false:
1353 do {
1354 foo();
1355 } while (1);
1356
1357 * ``bool IndentBraces`` Indent the wrapped braces themselves.
1358
1359 * ``bool SplitEmptyFunction`` If ``false``, empty function body can be put on a single line.
1360 This option is used only if the opening brace of the function has
1361 already been wrapped, i.e. the `AfterFunction` brace wrapping mode is
1362 set, and the function could/should not be put on a single line (as per
1363 `AllowShortFunctionsOnASingleLine` and constructor formatting options).
1364
1365 .. code-block:: c++
1366
1367 int f() vs. int f()
1368 {} {
1369 }
1370
1371 * ``bool SplitEmptyRecord`` If ``false``, empty record (e.g. class, struct or union) body
1372 can be put on a single line. This option is used only if the opening
1373 brace of the record has already been wrapped, i.e. the `AfterClass`
1374 (for classes) brace wrapping mode is set.
1375
1376 .. code-block:: c++
1377
1378 class Foo vs. class Foo
1379 {} {
1380 }
1381
1382 * ``bool SplitEmptyNamespace`` If ``false``, empty namespace body can be put on a single line.
1383 This option is used only if the opening brace of the namespace has
1384 already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is
1385 set.
1386
1387 .. code-block:: c++
1388
1389 namespace Foo vs. namespace Foo
1390 {} {
1391 }
1392
1393
1394 **BreakAfterJavaFieldAnnotations** (``bool``)
1395 Break after each annotation on a field in Java files.
1396
1397 .. code-block:: java
1398
1399 true: false:
1400 @Partial vs. @Partial @Mock DataLoad loader;
1401 @Mock
1402 DataLoad loader;
1403
1404 **BreakBeforeBinaryOperators** (``BinaryOperatorStyle``)
1405 The way to wrap binary operators.
1406
1407 Possible values:
1408
1409 * ``BOS_None`` (in configuration: ``None``)
1410 Break after operators.
1411
1412 .. code-block:: c++
1413
1414 LooooooooooongType loooooooooooooooooooooongVariable =
1415 someLooooooooooooooooongFunction();
1416
1417 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
1418 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==
1419 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
1420 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >
1421 ccccccccccccccccccccccccccccccccccccccccc;
1422
1423 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``)
1424 Break before operators that aren't assignments.
1425
1426 .. code-block:: c++
1427
1428 LooooooooooongType loooooooooooooooooooooongVariable =
1429 someLooooooooooooooooongFunction();
1430
1431 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1432 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1433 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1434 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1435 > ccccccccccccccccccccccccccccccccccccccccc;
1436
1437 * ``BOS_All`` (in configuration: ``All``)
1438 Break before operators.
1439
1440 .. code-block:: c++
1441
1442 LooooooooooongType loooooooooooooooooooooongVariable
1443 = someLooooooooooooooooongFunction();
1444
1445 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1446 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1447 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1448 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1449 > ccccccccccccccccccccccccccccccccccccccccc;
1450
1451
1452
1453 **BreakBeforeBraces** (``BraceBreakingStyle``)
1454 The brace breaking style to use.
1455
1456 Possible values:
1457
1458 * ``BS_Attach`` (in configuration: ``Attach``)
1459 Always attach braces to surrounding context.
1460
1461 .. code-block:: c++
1462
1463 namespace N {
1464 enum E {
1465 E1,
1466 E2,
1467 };
1468
1469 class C {
1470 public:
1471 C();
1472 };
1473
1474 bool baz(int i) {
1475 try {
1476 do {
1477 switch (i) {
1478 case 1: {
1479 foobar();
1480 break;
1481 }
1482 default: {
1483 break;
1484 }
1485 }
1486 } while (--i);
1487 return true;
1488 } catch (...) {
1489 handleError();
1490 return false;
1491 }
1492 }
1493
1494 void foo(bool b) {
1495 if (b) {
1496 baz(2);
1497 } else {
1498 baz(5);
1499 }
1500 }
1501
1502 void bar() { foo(true); }
1503 } // namespace N
1504
1505 * ``BS_Linux`` (in configuration: ``Linux``)
1506 Like ``Attach``, but break before braces on function, namespace and
1507 class definitions.
1508
1509 .. code-block:: c++
1510
1511 namespace N
1512 {
1513 enum E {
1514 E1,
1515 E2,
1516 };
1517
1518 class C
1519 {
1520 public:
1521 C();
1522 };
1523
1524 bool baz(int i)
1525 {
1526 try {
1527 do {
1528 switch (i) {
1529 case 1: {
1530 foobar();
1531 break;
1532 }
1533 default: {
1534 break;
1535 }
1536 }
1537 } while (--i);
1538 return true;
1539 } catch (...) {
1540 handleError();
1541 return false;
1542 }
1543 }
1544
1545 void foo(bool b)
1546 {
1547 if (b) {
1548 baz(2);
1549 } else {
1550 baz(5);
1551 }
1552 }
1553
1554 void bar() { foo(true); }
1555 } // namespace N
1556
1557 * ``BS_Mozilla`` (in configuration: ``Mozilla``)
1558 Like ``Attach``, but break before braces on enum, function, and record
1559 definitions.
1560
1561 .. code-block:: c++
1562
1563 namespace N {
1564 enum E
1565 {
1566 E1,
1567 E2,
1568 };
1569
1570 class C
1571 {
1572 public:
1573 C();
1574 };
1575
1576 bool baz(int i)
1577 {
1578 try {
1579 do {
1580 switch (i) {
1581 case 1: {
1582 foobar();
1583 break;
1584 }
1585 default: {
1586 break;
1587 }
1588 }
1589 } while (--i);
1590 return true;
1591 } catch (...) {
1592 handleError();
1593 return false;
1594 }
1595 }
1596
1597 void foo(bool b)
1598 {
1599 if (b) {
1600 baz(2);
1601 } else {
1602 baz(5);
1603 }
1604 }
1605
1606 void bar() { foo(true); }
1607 } // namespace N
1608
1609 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``)
1610 Like ``Attach``, but break before function definitions, ``catch``, and
1611 ``else``.
1612
1613 .. code-block:: c++
1614
1615 namespace N {
1616 enum E {
1617 E1,
1618 E2,
1619 };
1620
1621 class C {
1622 public:
1623 C();
1624 };
1625
1626 bool baz(int i)
1627 {
1628 try {
1629 do {
1630 switch (i) {
1631 case 1: {
1632 foobar();
1633 break;
1634 }
1635 default: {
1636 break;
1637 }
1638 }
1639 } while (--i);
1640 return true;
1641 }
1642 catch (...) {
1643 handleError();
1644 return false;
1645 }
1646 }
1647
1648 void foo(bool b)
1649 {
1650 if (b) {
1651 baz(2);
1652 }
1653 else {
1654 baz(5);
1655 }
1656 }
1657
1658 void bar() { foo(true); }
1659 } // namespace N
1660
1661 * ``BS_Allman`` (in configuration: ``Allman``)
1662 Always break before braces.
1663
1664 .. code-block:: c++
1665
1666 namespace N
1667 {
1668 enum E
1669 {
1670 E1,
1671 E2,
1672 };
1673
1674 class C
1675 {
1676 public:
1677 C();
1678 };
1679
1680 bool baz(int i)
1681 {
1682 try
1683 {
1684 do
1685 {
1686 switch (i)
1687 {
1688 case 1:
1689 {
1690 foobar();
1691 break;
1692 }
1693 default:
1694 {
1695 break;
1696 }
1697 }
1698 } while (--i);
1699 return true;
1700 }
1701 catch (...)
1702 {
1703 handleError();
1704 return false;
1705 }
1706 }
1707
1708 void foo(bool b)
1709 {
1710 if (b)
1711 {
1712 baz(2);
1713 }
1714 else
1715 {
1716 baz(5);
1717 }
1718 }
1719
1720 void bar() { foo(true); }
1721 } // namespace N
1722
1723 * ``BS_Whitesmiths`` (in configuration: ``Whitesmiths``)
1724 Like ``Allman`` but always indent braces and line up code with braces.
1725
1726 .. code-block:: c++
1727
1728 namespace N
1729 {
1730 enum E
1731 {
1732 E1,
1733 E2,
1734 };
1735
1736 class C
1737 {
1738 public:
1739 C();
1740 };
1741
1742 bool baz(int i)
1743 {
1744 try
1745 {
1746 do
1747 {
1748 switch (i)
1749 {
1750 case 1:
1751 {
1752 foobar();
1753 break;
1754 }
1755 default:
1756 {
1757 break;
1758 }
1759 }
1760 } while (--i);
1761 return true;
1762 }
1763 catch (...)
1764 {
1765 handleError();
1766 return false;
1767 }
1768 }
1769
1770 void foo(bool b)
1771 {
1772 if (b)
1773 {
1774 baz(2);
1775 }
1776 else
1777 {
1778 baz(5);
1779 }
1780 }
1781
1782 void bar() { foo(true); }
1783 } // namespace N
1784
1785 * ``BS_GNU`` (in configuration: ``GNU``)
1786 Always break before braces and add an extra level of indentation to
1787 braces of control statements, not to those of class, function
1788 or other definitions.
1789
1790 .. code-block:: c++
1791
1792 namespace N
1793 {
1794 enum E
1795 {
1796 E1,
1797 E2,
1798 };
1799
1800 class C
1801 {
1802 public:
1803 C();
1804 };
1805
1806 bool baz(int i)
1807 {
1808 try
1809 {
1810 do
1811 {
1812 switch (i)
1813 {
1814 case 1:
1815 {
1816 foobar();
1817 break;
1818 }
1819 default:
1820 {
1821 break;
1822 }
1823 }
1824 }
1825 while (--i);
1826 return true;
1827 }
1828 catch (...)
1829 {
1830 handleError();
1831 return false;
1832 }
1833 }
1834
1835 void foo(bool b)
1836 {
1837 if (b)
1838 {
1839 baz(2);
1840 }
1841 else
1842 {
1843 baz(5);
1844 }
1845 }
1846
1847 void bar() { foo(true); }
1848 } // namespace N
1849
1850 * ``BS_WebKit`` (in configuration: ``WebKit``)
1851 Like ``Attach``, but break before functions.
1852
1853 .. code-block:: c++
1854
1855 namespace N {
1856 enum E {
1857 E1,
1858 E2,
1859 };
1860
1861 class C {
1862 public:
1863 C();
1864 };
1865
1866 bool baz(int i)
1867 {
1868 try {
1869 do {
1870 switch (i) {
1871 case 1: {
1872 foobar();
1873 break;
1874 }
1875 default: {
1876 break;
1877 }
1878 }
1879 } while (--i);
1880 return true;
1881 } catch (...) {
1882 handleError();
1883 return false;
1884 }
1885 }
1886
1887 void foo(bool b)
1888 {
1889 if (b) {
1890 baz(2);
1891 } else {
1892 baz(5);
1893 }
1894 }
1895
1896 void bar() { foo(true); }
1897 } // namespace N
1898
1899 * ``BS_Custom`` (in configuration: ``Custom``)
1900 Configure each individual brace in `BraceWrapping`.
1901
1902
1903
1904 **BreakBeforeConceptDeclarations** (``bool``)
1905 If ``true``, concept will be placed on a new line.
1906
1907 .. code-block:: c++
1908
1909 true:
1910 template<typename T>
1911 concept ...
1912
1913 false:
1914 template<typename T> concept ...
1915
1916 **BreakBeforeTernaryOperators** (``bool``)
1917 If ``true``, ternary operators will be placed after line breaks.
1918
1919 .. code-block:: c++
1920
1921 true:
1922 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription
1923 ? firstValue
1924 : SecondValueVeryVeryVeryVeryLong;
1925
1926 false:
1927 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription ?
1928 firstValue :
1929 SecondValueVeryVeryVeryVeryLong;
1930
1931 **BreakConstructorInitializers** (``BreakConstructorInitializersStyle``)
1932 The constructor initializers style to use.
1933
1934 Possible values:
1935
1936 * ``BCIS_BeforeColon`` (in configuration: ``BeforeColon``)
1937 Break constructor initializers before the colon and after the commas.
1938
1939 .. code-block:: c++
1940
1941 Constructor()
1942 : initializer1(),
1943 initializer2()
1944
1945 * ``BCIS_BeforeComma`` (in configuration: ``BeforeComma``)
1946 Break constructor initializers before the colon and commas, and align
1947 the commas with the colon.
1948
1949 .. code-block:: c++
1950
1951 Constructor()
1952 : initializer1()
1953 , initializer2()
1954
1955 * ``BCIS_AfterColon`` (in configuration: ``AfterColon``)
1956 Break constructor initializers after the colon and commas.
1957
1958 .. code-block:: c++
1959
1960 Constructor() :
1961 initializer1(),
1962 initializer2()
1963
1964
1965
1966 **BreakInheritanceList** (``BreakInheritanceListStyle``)
1967 The inheritance list style to use.
1968
1969 Possible values:
1970
1971 * ``BILS_BeforeColon`` (in configuration: ``BeforeColon``)
1972 Break inheritance list before the colon and after the commas.
1973
1974 .. code-block:: c++
1975
1976 class Foo
1977 : Base1,
1978 Base2
1979 {};
1980
1981 * ``BILS_BeforeComma`` (in configuration: ``BeforeComma``)
1982 Break inheritance list before the colon and commas, and align
1983 the commas with the colon.
1984
1985 .. code-block:: c++
1986
1987 class Foo
1988 : Base1
1989 , Base2
1990 {};
1991
1992 * ``BILS_AfterColon`` (in configuration: ``AfterColon``)
1993 Break inheritance list after the colon and commas.
1994
1995 .. code-block:: c++
1996
1997 class Foo :
1998 Base1,
1999 Base2
2000 {};
2001
2002
2003
2004 **BreakStringLiterals** (``bool``)
2005 Allow breaking string literals when formatting.
2006
2007 .. code-block:: c++
2008
2009 true:
2010 const char* x = "veryVeryVeryVeryVeryVe"
2011 "ryVeryVeryVeryVeryVery"
2012 "VeryLongString";
2013
2014 false:
2015 const char* x =
2016 "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString";
2017
2018 **ColumnLimit** (``unsigned``)
2019 The column limit.
2020
2021 A column limit of ``0`` means that there is no column limit. In this case,
2022 clang-format will respect the input's line breaking decisions within
2023 statements unless they contradict other rules.
2024
2025 **CommentPragmas** (``std::string``)
2026 A regular expression that describes comments with special meaning,
2027 which should not be split into lines or otherwise changed.
2028
2029 .. code-block:: c++
2030
2031 // CommentPragmas: '^ FOOBAR pragma:'
2032 // Will leave the following line unaffected
2033 #include <vector> // FOOBAR pragma: keep
2034
2035 **CompactNamespaces** (``bool``)
2036 If ``true``, consecutive namespace declarations will be on the same
2037 line. If ``false``, each namespace is declared on a new line.
2038
2039 .. code-block:: c++
2040
2041 true:
2042 namespace Foo { namespace Bar {
2043 }}
2044
2045 false:
2046 namespace Foo {
2047 namespace Bar {
2048 }
2049 }
2050
2051 If it does not fit on a single line, the overflowing namespaces get
2052 wrapped:
2053
2054 .. code-block:: c++
2055
2056 namespace Foo { namespace Bar {
2057 namespace Extra {
2058 }}}
2059
2060 **ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``)
2061 If the constructor initializers don't fit on a line, put each
2062 initializer on its own line.
2063
2064 .. code-block:: c++
2065
2066 true:
2067 SomeClass::Constructor()
2068 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) {
2069 return 0;
2070 }
2071
2072 false:
2073 SomeClass::Constructor()
2074 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa),
2075 aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) {
2076 return 0;
2077 }
2078
2079 **ConstructorInitializerIndentWidth** (``unsigned``)
2080 The number of characters to use for indentation of constructor
2081 initializer lists as well as inheritance lists.
2082
2083 **ContinuationIndentWidth** (``unsigned``)
2084 Indent width for line continuations.
2085
2086 .. code-block:: c++
2087
2088 ContinuationIndentWidth: 2
2089
2090 int i = // VeryVeryVeryVeryVeryLongComment
2091 longFunction( // Again a long comment
2092 arg);
2093
2094 **Cpp11BracedListStyle** (``bool``)
2095 If ``true``, format braced lists as best suited for C++11 braced
2096 lists.
2097
2098 Important differences:
2099 - No spaces inside the braced list.
2100 - No line break before the closing brace.
2101 - Indentation with the continuation indent, not with the block indent.
2102
2103 Fundamentally, C++11 braced lists are formatted exactly like function
2104 calls would be formatted in their place. If the braced list follows a name
2105 (e.g. a type or variable name), clang-format formats as if the ``{}`` were
2106 the parentheses of a function call with that name. If there is no name,
2107 a zero-length name is assumed.
2108
2109 .. code-block:: c++
2110
2111 true: false:
2112 vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 };
2113 vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} };
2114 f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]);
2115 new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 };
2116
2117 **DeriveLineEnding** (``bool``)
2118 Analyze the formatted file for the most used line ending (``\r\n``
2119 or ``\n``). ``UseCRLF`` is only used as a fallback if none can be derived.
2120
2121 **DerivePointerAlignment** (``bool``)
2122 If ``true``, analyze the formatted file for the most common
2123 alignment of ``&`` and ``*``.
2124 Pointer and reference alignment styles are going to be updated according
2125 to the preferences found in the file.
2126 ``PointerAlignment`` is then used only as fallback.
2127
2128 **DisableFormat** (``bool``)
2129 Disables formatting completely.
2130
2131 **EmptyLineAfterAccessModifier** (``EmptyLineAfterAccessModifierStyle``)
2132 Defines when to put an empty line after access modifiers.
2133 ``EmptyLineBeforeAccessModifier`` configuration handles the number of
2134 empty lines between two access modifiers.
2135
2136 Possible values:
2137
2138 * ``ELAAMS_Never`` (in configuration: ``Never``)
2139 Remove all empty lines after access modifiers.
2140
2141 .. code-block:: c++
2142
2143 struct foo {
2144 private:
2145 int i;
2146 protected:
2147 int j;
2148 /* comment */
2149 public:
2150 foo() {}
2151 private:
2152 protected:
2153 };
2154
2155 * ``ELAAMS_Leave`` (in configuration: ``Leave``)
2156 Keep existing empty lines after access modifiers.
2157 MaxEmptyLinesToKeep is applied instead.
2158
2159 * ``ELAAMS_Always`` (in configuration: ``Always``)
2160 Always add empty line after access modifiers if there are none.
2161 MaxEmptyLinesToKeep is applied also.
2162
2163 .. code-block:: c++
2164
2165 struct foo {
2166 private:
2167
2168 int i;
2169 protected:
2170
2171 int j;
2172 /* comment */
2173 public:
2174
2175 foo() {}
2176 private:
2177
2178 protected:
2179 };
2180
2181 **EmptyLineBeforeAccessModifier** (``EmptyLineBeforeAccessModifierStyle``)
2182 Defines in which cases to put empty line before access modifiers.
2183
2184 Possible values:
2185
2186 * ``ELBAMS_Never`` (in configuration: ``Never``)
2187 Remove all empty lines before access modifiers.
2188
2189 .. code-block:: c++
2190
2191 struct foo {
2192 private:
2193 int i;
2194 protected:
2195 int j;
2196 /* comment */
2197 public:
2198 foo() {}
2199 private:
2200 protected:
2201 };
2202
2203 * ``ELBAMS_Leave`` (in configuration: ``Leave``)
2204 Keep existing empty lines before access modifiers.
2205
2206 * ``ELBAMS_LogicalBlock`` (in configuration: ``LogicalBlock``)
2207 Add empty line only when access modifier starts a new logical block.
2208 Logical block is a group of one or more member fields or functions.
2209
2210 .. code-block:: c++
2211
2212 struct foo {
2213 private:
2214 int i;
2215
2216 protected:
2217 int j;
2218 /* comment */
2219 public:
2220 foo() {}
2221
2222 private:
2223 protected:
2224 };
2225
2226 * ``ELBAMS_Always`` (in configuration: ``Always``)
2227 Always add empty line before access modifiers unless access modifier
2228 is at the start of struct or class definition.
2229
2230 .. code-block:: c++
2231
2232 struct foo {
2233 private:
2234 int i;
2235
2236 protected:
2237 int j;
2238 /* comment */
2239
2240 public:
2241 foo() {}
2242
2243 private:
2244
2245 protected:
2246 };
2247
2248 **ExperimentalAutoDetectBinPacking** (``bool``)
2249 If ``true``, clang-format detects whether function calls and
2250 definitions are formatted with one parameter per line.
2251
2252 Each call can be bin-packed, one-per-line or inconclusive. If it is
2253 inconclusive, e.g. completely on one line, but a decision needs to be
2254 made, clang-format analyzes whether there are other bin-packed cases in
2255 the input file and act accordingly.
2256
2257 NOTE: This is an experimental flag, that might go away or be renamed. Do
2258 not use this in config files, etc. Use at your own risk.
2259
2260 **FixNamespaceComments** (``bool``)
2261 If ``true``, clang-format adds missing namespace end comments for
2262 short namespaces and fixes invalid existing ones. Short ones are
2263 controlled by "ShortNamespaceLines".
2264
2265 .. code-block:: c++
2266
2267 true: false:
2268 namespace a { vs. namespace a {
2269 foo(); foo();
2270 bar(); bar();
2271 } // namespace a }
2272
2273 **ForEachMacros** (``std::vector<std::string>``)
2274 A vector of macros that should be interpreted as foreach loops
2275 instead of as function calls.
2276
2277 These are expected to be macros of the form:
2278
2279 .. code-block:: c++
2280
2281 FOREACH(<variable-declaration>, ...)
2282 <loop-body>
2283
2284 In the .clang-format configuration file, this can be configured like:
2285
2286 .. code-block:: yaml
2287
2288 ForEachMacros: ['RANGES_FOR', 'FOREACH']
2289
2290 For example: BOOST_FOREACH.
2291
2292 **IncludeBlocks** (``IncludeBlocksStyle``)
2293 Dependent on the value, multiple ``#include`` blocks can be sorted
2294 as one and divided based on category.
2295
2296 Possible values:
2297
2298 * ``IBS_Preserve`` (in configuration: ``Preserve``)
2299 Sort each ``#include`` block separately.
2300
2301 .. code-block:: c++
2302
2303 #include "b.h" into #include "b.h"
2304
2305 #include <lib/main.h> #include "a.h"
2306 #include "a.h" #include <lib/main.h>
2307
2308 * ``IBS_Merge`` (in configuration: ``Merge``)
2309 Merge multiple ``#include`` blocks together and sort as one.
2310
2311 .. code-block:: c++
2312
2313 #include "b.h" into #include "a.h"
2314 #include "b.h"
2315 #include <lib/main.h> #include <lib/main.h>
2316 #include "a.h"
2317
2318 * ``IBS_Regroup`` (in configuration: ``Regroup``)
2319 Merge multiple ``#include`` blocks together and sort as one.
2320 Then split into groups based on category priority. See
2321 ``IncludeCategories``.
2322
2323 .. code-block:: c++
2324
2325 #include "b.h" into #include "a.h"
2326 #include "b.h"
2327 #include <lib/main.h>
2328 #include "a.h" #include <lib/main.h>
2329
2330
2331
2332 **IncludeCategories** (``std::vector<IncludeCategory>``)
2333 Regular expressions denoting the different ``#include`` categories
2334 used for ordering ``#includes``.
2335
2336 `POSIX extended
2337 <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html>`_
2338 regular expressions are supported.
2339
2340 These regular expressions are matched against the filename of an include
2341 (including the <> or "") in order. The value belonging to the first
2342 matching regular expression is assigned and ``#includes`` are sorted first
2343 according to increasing category number and then alphabetically within
2344 each category.
2345
2346 If none of the regular expressions match, INT_MAX is assigned as
2347 category. The main header for a source file automatically gets category 0.
2348 so that it is generally kept at the beginning of the ``#includes``
2349 (https://llvm.org/docs/CodingStandards.html#include-style). However, you
2350 can also assign negative priorities if you have certain headers that
2351 always need to be first.
2352
2353 There is a third and optional field ``SortPriority`` which can used while
2354 ``IncludeBlocks = IBS_Regroup`` to define the priority in which
2355 ``#includes`` should be ordered. The value of ``Priority`` defines the
2356 order of ``#include blocks`` and also allows the grouping of ``#includes``
2357 of different priority. ``SortPriority`` is set to the value of
2358 ``Priority`` as default if it is not assigned.
2359
2360 Each regular expression can be marked as case sensitive with the field
2361 ``CaseSensitive``, per default it is not.
2362
2363 To configure this in the .clang-format file, use:
2364
2365 .. code-block:: yaml
2366
2367 IncludeCategories:
2368 - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
2369 Priority: 2
2370 SortPriority: 2
2371 CaseSensitive: true
2372 - Regex: '^(<|"(gtest|gmock|isl|json)/)'
2373 Priority: 3
2374 - Regex: '<[[:alnum:].]+>'
2375 Priority: 4
2376 - Regex: '.*'
2377 Priority: 1
2378 SortPriority: 0
2379
2380 **IncludeIsMainRegex** (``std::string``)
2381 Specify a regular expression of suffixes that are allowed in the
2382 file-to-main-include mapping.
2383
2384 When guessing whether a #include is the "main" include (to assign
2385 category 0, see above), use this regex of allowed suffixes to the header
2386 stem. A partial match is done, so that:
2387 - "" means "arbitrary suffix"
2388 - "$" means "no suffix"
2389
2390 For example, if configured to "(_test)?$", then a header a.h would be seen
2391 as the "main" include in both a.cc and a_test.cc.
2392
2393 **IncludeIsMainSourceRegex** (``std::string``)
2394 Specify a regular expression for files being formatted
2395 that are allowed to be considered "main" in the
2396 file-to-main-include mapping.
2397
2398 By default, clang-format considers files as "main" only when they end
2399 with: ``.c``, ``.cc``, ``.cpp``, ``.c++``, ``.cxx``, ``.m`` or ``.mm``
2400 extensions.
2401 For these files a guessing of "main" include takes place
2402 (to assign category 0, see above). This config option allows for
2403 additional suffixes and extensions for files to be considered as "main".
2404
2405 For example, if this option is configured to ``(Impl\.hpp)$``,
2406 then a file ``ClassImpl.hpp`` is considered "main" (in addition to
2407 ``Class.c``, ``Class.cc``, ``Class.cpp`` and so on) and "main
2408 include file" logic will be executed (with *IncludeIsMainRegex* setting
2409 also being respected in later phase). Without this option set,
2410 ``ClassImpl.hpp`` would not have the main include file put on top
2411 before any other include.
2412
2413 **IndentAccessModifiers** (``bool``)
2414 Specify whether access modifiers should have their own indentation level.
2415
2416 When ``false``, access modifiers are indented (or outdented) relative to
2417 the record members, respecting the ``AccessModifierOffset``. Record
2418 members are indented one level below the record.
2419 When ``true``, access modifiers get their own indentation level. As a
2420 consequence, record members are always indented 2 levels below the record,
2421 regardless of the access modifier presence. Value of the
2422 ``AccessModifierOffset`` is ignored.
2423
2424 .. code-block:: c++
2425
2426 false: true:
2427 class C { vs. class C {
2428 class D { class D {
2429 void bar(); void bar();
2430 protected: protected:
2431 D(); D();
2432 }; };
2433 public: public:
2434 C(); C();
2435 }; };
2436 void foo() { void foo() {
2437 return 1; return 1;
2438 } }
2439
2440 **IndentCaseBlocks** (``bool``)
2441 Indent case label blocks one level from the case label.
2442
2443 When ``false``, the block following the case label uses the same
2444 indentation level as for the case label, treating the case label the same
2445 as an if-statement.
2446 When ``true``, the block gets indented as a scope block.
2447
2448 .. code-block:: c++
2449
2450 false: true:
2451 switch (fool) { vs. switch (fool) {
2452 case 1: { case 1:
2453 bar(); {
2454 } break; bar();
2455 default: { }
2456 plop(); break;
2457 } default:
2458 } {
2459 plop();
2460 }
2461 }
2462
2463 **IndentCaseLabels** (``bool``)
2464 Indent case labels one level from the switch statement.
2465
2466 When ``false``, use the same indentation level as for the switch
2467 statement. Switch statement body is always indented one level more than
2468 case labels (except the first block following the case label, which
2469 itself indents the code - unless IndentCaseBlocks is enabled).
2470
2471 .. code-block:: c++
2472
2473 false: true:
2474 switch (fool) { vs. switch (fool) {
2475 case 1: case 1:
2476 bar(); bar();
2477 break; break;
2478 default: default:
2479 plop(); plop();
2480 } }
2481
2482 **IndentExternBlock** (``IndentExternBlockStyle``)
2483 IndentExternBlockStyle is the type of indenting of extern blocks.
2484
2485 Possible values:
2486
2487 * ``IEBS_AfterExternBlock`` (in configuration: ``AfterExternBlock``)
2488 Backwards compatible with AfterExternBlock's indenting.
2489
2490 .. code-block:: c++
2491
2492 IndentExternBlock: AfterExternBlock
2493 BraceWrapping.AfterExternBlock: true
2494 extern "C"
2495 {
2496 void foo();
2497 }
2498
2499
2500 .. code-block:: c++
2501
2502 IndentExternBlock: AfterExternBlock
2503 BraceWrapping.AfterExternBlock: false
2504 extern "C" {
2505 void foo();
2506 }
2507
2508 * ``IEBS_NoIndent`` (in configuration: ``NoIndent``)
2509 Does not indent extern blocks.
2510
2511 .. code-block:: c++
2512
2513 extern "C" {
2514 void foo();
2515 }
2516
2517 * ``IEBS_Indent`` (in configuration: ``Indent``)
2518 Indents extern blocks.
2519
2520 .. code-block:: c++
2521
2522 extern "C" {
2523 void foo();
2524 }
2525
2526
2527
2528 **IndentGotoLabels** (``bool``)
2529 Indent goto labels.
2530
2531 When ``false``, goto labels are flushed left.
2532
2533 .. code-block:: c++
2534
2535 true: false:
2536 int f() { vs. int f() {
2537 if (foo()) { if (foo()) {
2538 label1: label1:
2539 bar(); bar();
2540 } }
2541 label2: label2:
2542 return 1; return 1;
2543 } }
2544
2545 **IndentPPDirectives** (``PPDirectiveIndentStyle``)
2546 The preprocessor directive indenting style to use.
2547
2548 Possible values:
2549
2550 * ``PPDIS_None`` (in configuration: ``None``)
2551 Does not indent any directives.
2552
2553 .. code-block:: c++
2554
2555 #if FOO
2556 #if BAR
2557 #include <foo>
2558 #endif
2559 #endif
2560
2561 * ``PPDIS_AfterHash`` (in configuration: ``AfterHash``)
2562 Indents directives after the hash.
2563
2564 .. code-block:: c++
2565
2566 #if FOO
2567 # if BAR
2568 # include <foo>
2569 # endif
2570 #endif
2571
2572 * ``PPDIS_BeforeHash`` (in configuration: ``BeforeHash``)
2573 Indents directives before the hash.
2574
2575 .. code-block:: c++
2576
2577 #if FOO
2578 #if BAR
2579 #include <foo>
2580 #endif
2581 #endif
2582
2583
2584
2585 **IndentRequires** (``bool``)
2586 Indent the requires clause in a template
2587
2588 .. code-block:: c++
2589
2590 true:
2591 template <typename It>
2592 requires Iterator<It>
2593 void sort(It begin, It end) {
2594 //....
2595 }
2596
2597 false:
2598 template <typename It>
2599 requires Iterator<It>
2600 void sort(It begin, It end) {
2601 //....
2602 }
2603
2604 **IndentWidth** (``unsigned``)
2605 The number of columns to use for indentation.
2606
2607 .. code-block:: c++
2608
2609 IndentWidth: 3
2610
2611 void f() {
2612 someFunction();
2613 if (true, false) {
2614 f();
2615 }
2616 }
2617
2618 **IndentWrappedFunctionNames** (``bool``)
2619 Indent if a function definition or declaration is wrapped after the
2620 type.
2621
2622 .. code-block:: c++
2623
2624 true:
2625 LoooooooooooooooooooooooooooooooooooooooongReturnType
2626 LoooooooooooooooooooooooooooooooongFunctionDeclaration();
2627
2628 false:
2629 LoooooooooooooooooooooooooooooooooooooooongReturnType
2630 LoooooooooooooooooooooooooooooooongFunctionDeclaration();
2631
2632 **InsertTrailingCommas** (``TrailingCommaStyle``)
2633 If set to ``TCS_Wrapped`` will insert trailing commas in container
2634 literals (arrays and objects) that wrap across multiple lines.
2635 It is currently only available for JavaScript
2636 and disabled by default ``TCS_None``.
2637 ``InsertTrailingCommas`` cannot be used together with ``BinPackArguments``
2638 as inserting the comma disables bin-packing.
2639
2640 .. code-block:: c++
2641
2642 TSC_Wrapped:
2643 const someArray = [
2644 aaaaaaaaaaaaaaaaaaaaaaaaaa,
2645 aaaaaaaaaaaaaaaaaaaaaaaaaa,
2646 aaaaaaaaaaaaaaaaaaaaaaaaaa,
2647 // ^ inserted
2648 ]
2649
2650 Possible values:
2651
2652 * ``TCS_None`` (in configuration: ``None``)
2653 Do not insert trailing commas.
2654
2655 * ``TCS_Wrapped`` (in configuration: ``Wrapped``)
2656 Insert trailing commas in container literals that were wrapped over
2657 multiple lines. Note that this is conceptually incompatible with
2658 bin-packing, because the trailing comma is used as an indicator
2659 that a container should be formatted one-per-line (i.e. not bin-packed).
2660 So inserting a trailing comma counteracts bin-packing.
2661
2662
2663
2664 **JavaImportGroups** (``std::vector<std::string>``)
2665 A vector of prefixes ordered by the desired groups for Java imports.
2666
2667 One group's prefix can be a subset of another - the longest prefix is
2668 always matched. Within a group, the imports are ordered lexicographically.
2669 Static imports are grouped separately and follow the same group rules.
2670 By default, static imports are placed before non-static imports,
2671 but this behavior is changed by another option,
2672 ``SortJavaStaticImport``.
2673
2674 In the .clang-format configuration file, this can be configured like
2675 in the following yaml example. This will result in imports being
2676 formatted as in the Java example below.
2677
2678 .. code-block:: yaml
2679
2680 JavaImportGroups: ['com.example', 'com', 'org']
2681
2682
2683 .. code-block:: java
2684
2685 import static com.example.function1;
2686
2687 import static com.test.function2;
2688
2689 import static org.example.function3;
2690
2691 import com.example.ClassA;
2692 import com.example.Test;
2693 import com.example.a.ClassB;
2694
2695 import com.test.ClassC;
2696
2697 import org.example.ClassD;
2698
2699 **JavaScriptQuotes** (``JavaScriptQuoteStyle``)
2700 The JavaScriptQuoteStyle to use for JavaScript strings.
2701
2702 Possible values:
2703
2704 * ``JSQS_Leave`` (in configuration: ``Leave``)
2705 Leave string quotes as they are.
2706
2707 .. code-block:: js
2708
2709 string1 = "foo";
2710 string2 = 'bar';
2711
2712 * ``JSQS_Single`` (in configuration: ``Single``)
2713 Always use single quotes.
2714
2715 .. code-block:: js
2716
2717 string1 = 'foo';
2718 string2 = 'bar';
2719
2720 * ``JSQS_Double`` (in configuration: ``Double``)
2721 Always use double quotes.
2722
2723 .. code-block:: js
2724
2725 string1 = "foo";
2726 string2 = "bar";
2727
2728
2729
2730 **JavaScriptWrapImports** (``bool``)
2731 Whether to wrap JavaScript import/export statements.
2732
2733 .. code-block:: js
2734
2735 true:
2736 import {
2737 VeryLongImportsAreAnnoying,
2738 VeryLongImportsAreAnnoying,
2739 VeryLongImportsAreAnnoying,
2740 } from 'some/module.js'
2741
2742 false:
2743 import {VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying,} from "some/module.js"
2744
2745 **KeepEmptyLinesAtTheStartOfBlocks** (``bool``)
2746 If true, the empty line at the start of blocks is kept.
2747
2748 .. code-block:: c++
2749
2750 true: false:
2751 if (foo) { vs. if (foo) {
2752 bar();
2753 bar(); }
2754 }
2755
2756 **Language** (``LanguageKind``)
2757 Language, this format style is targeted at.
2758
2759 Possible values:
2760
2761 * ``LK_None`` (in configuration: ``None``)
2762 Do not use.
2763
2764 * ``LK_Cpp`` (in configuration: ``Cpp``)
2765 Should be used for C, C++.
2766
2767 * ``LK_CSharp`` (in configuration: ``CSharp``)
2768 Should be used for C#.
2769
2770 * ``LK_Java`` (in configuration: ``Java``)
2771 Should be used for Java.
2772
2773 * ``LK_JavaScript`` (in configuration: ``JavaScript``)
2774 Should be used for JavaScript.
2775
2776 * ``LK_ObjC`` (in configuration: ``ObjC``)
2777 Should be used for Objective-C, Objective-C++.
2778
2779 * ``LK_Proto`` (in configuration: ``Proto``)
2780 Should be used for Protocol Buffers
2781 (https://developers.google.com/protocol-buffers/).
2782
2783 * ``LK_TableGen`` (in configuration: ``TableGen``)
2784 Should be used for TableGen code.
2785
2786 * ``LK_TextProto`` (in configuration: ``TextProto``)
2787 Should be used for Protocol Buffer messages in text format
2788 (https://developers.google.com/protocol-buffers/).
2789
2790
2791
2792 **MacroBlockBegin** (``std::string``)
2793 A regular expression matching macros that start a block.
2794
2795 .. code-block:: c++
2796
2797 # With:
2798 MacroBlockBegin: "^NS_MAP_BEGIN|\
2799 NS_TABLE_HEAD$"
2800 MacroBlockEnd: "^\
2801 NS_MAP_END|\
2802 NS_TABLE_.*_END$"
2803
2804 NS_MAP_BEGIN
2805 foo();
2806 NS_MAP_END
2807
2808 NS_TABLE_HEAD
2809 bar();
2810 NS_TABLE_FOO_END
2811
2812 # Without:
2813 NS_MAP_BEGIN
2814 foo();
2815 NS_MAP_END
2816
2817 NS_TABLE_HEAD
2818 bar();
2819 NS_TABLE_FOO_END
2820
2821 **MacroBlockEnd** (``std::string``)
2822 A regular expression matching macros that end a block.
2823
2824 **MaxEmptyLinesToKeep** (``unsigned``)
2825 The maximum number of consecutive empty lines to keep.
2826
2827 .. code-block:: c++
2828
2829 MaxEmptyLinesToKeep: 1 vs. MaxEmptyLinesToKeep: 0
2830 int f() { int f() {
2831 int = 1; int i = 1;
2832 i = foo();
2833 i = foo(); return i;
2834 }
2835 return i;
2836 }
2837
2838 **NamespaceIndentation** (``NamespaceIndentationKind``)
2839 The indentation used for namespaces.
2840
2841 Possible values:
2842
2843 * ``NI_None`` (in configuration: ``None``)
2844 Don't indent in namespaces.
2845
2846 .. code-block:: c++
2847
2848 namespace out {
2849 int i;
2850 namespace in {
2851 int i;
2852 }
2853 }
2854
2855 * ``NI_Inner`` (in configuration: ``Inner``)
2856 Indent only in inner namespaces (nested in other namespaces).
2857
2858 .. code-block:: c++
2859
2860 namespace out {
2861 int i;
2862 namespace in {
2863 int i;
2864 }
2865 }
2866
2867 * ``NI_All`` (in configuration: ``All``)
2868 Indent in all namespaces.
2869
2870 .. code-block:: c++
2871
2872 namespace out {
2873 int i;
2874 namespace in {
2875 int i;
2876 }
2877 }
2878
2879
2880
2881 **NamespaceMacros** (``std::vector<std::string>``)
2882 A vector of macros which are used to open namespace blocks.
2883
2884 These are expected to be macros of the form:
2885
2886 .. code-block:: c++
2887
2888 NAMESPACE(<namespace-name>, ...) {
2889 <namespace-content>
2890 }
2891
2892 For example: TESTSUITE
2893
2894 **ObjCBinPackProtocolList** (``BinPackStyle``)
2895 Controls bin-packing Objective-C protocol conformance list
2896 items into as few lines as possible when they go over ``ColumnLimit``.
2897
2898 If ``Auto`` (the default), delegates to the value in
2899 ``BinPackParameters``. If that is ``true``, bin-packs Objective-C
2900 protocol conformance list items into as few lines as possible
2901 whenever they go over ``ColumnLimit``.
2902
2903 If ``Always``, always bin-packs Objective-C protocol conformance
2904 list items into as few lines as possible whenever they go over
2905 ``ColumnLimit``.
2906
2907 If ``Never``, lays out Objective-C protocol conformance list items
2908 onto individual lines whenever they go over ``ColumnLimit``.
2909
2910
2911 .. code-block:: objc
2912
2913 Always (or Auto, if BinPackParameters=true):
2914 @interface ccccccccccccc () <
2915 ccccccccccccc, ccccccccccccc,
2916 ccccccccccccc, ccccccccccccc> {
2917 }
2918
2919 Never (or Auto, if BinPackParameters=false):
2920 @interface ddddddddddddd () <
2921 ddddddddddddd,
2922 ddddddddddddd,
2923 ddddddddddddd,
2924 ddddddddddddd> {
2925 }
2926
2927 Possible values:
2928
2929 * ``BPS_Auto`` (in configuration: ``Auto``)
2930 Automatically determine parameter bin-packing behavior.
2931
2932 * ``BPS_Always`` (in configuration: ``Always``)
2933 Always bin-pack parameters.
2934
2935 * ``BPS_Never`` (in configuration: ``Never``)
2936 Never bin-pack parameters.
2937
2938
2939
2940 **ObjCBlockIndentWidth** (``unsigned``)
2941 The number of characters to use for indentation of ObjC blocks.
2942
2943 .. code-block:: objc
2944
2945 ObjCBlockIndentWidth: 4
2946
2947 [operation setCompletionBlock:^{
2948 [self onOperationDone];
2949 }];
2950
2951 **ObjCBreakBeforeNestedBlockParam** (``bool``)
2952 Break parameters list into lines when there is nested block
2953 parameters in a function call.
2954
2955 .. code-block:: c++
2956
2957 false:
2958 - (void)_aMethod
2959 {
2960 [self.test1 t:self w:self callback:^(typeof(self) self, NSNumber
2961 *u, NSNumber *v) {
2962 u = c;
2963 }]
2964 }
2965 true:
2966 - (void)_aMethod
2967 {
2968 [self.test1 t:self
2969 w:self
2970 callback:^(typeof(self) self, NSNumber *u, NSNumber *v) {
2971 u = c;
2972 }]
2973 }
2974
2975 **ObjCSpaceAfterProperty** (``bool``)
2976 Add a space after ``@property`` in Objective-C, i.e. use
2977 ``@property (readonly)`` instead of ``@property(readonly)``.
2978
2979 **ObjCSpaceBeforeProtocolList** (``bool``)
2980 Add a space in front of an Objective-C protocol list, i.e. use
2981 ``Foo <Protocol>`` instead of ``Foo<Protocol>``.
2982
2983 **PenaltyBreakAssignment** (``unsigned``)
2984 The penalty for breaking around an assignment operator.
2985
2986 **PenaltyBreakBeforeFirstCallParameter** (``unsigned``)
2987 The penalty for breaking a function call after ``call(``.
2988
2989 **PenaltyBreakComment** (``unsigned``)
2990 The penalty for each line break introduced inside a comment.
2991
2992 **PenaltyBreakFirstLessLess** (``unsigned``)
2993 The penalty for breaking before the first ``<<``.
2994
2995 **PenaltyBreakString** (``unsigned``)
2996 The penalty for each line break introduced inside a string literal.
2997
2998 **PenaltyBreakTemplateDeclaration** (``unsigned``)
2999 The penalty for breaking after template declaration.
3000
3001 **PenaltyExcessCharacter** (``unsigned``)
3002 The penalty for each character outside of the column limit.
3003
3004 **PenaltyIndentedWhitespace** (``unsigned``)
3005 Penalty for each character of whitespace indentation
3006 (counted relative to leading non-whitespace column).
3007
3008 **PenaltyReturnTypeOnItsOwnLine** (``unsigned``)
3009 Penalty for putting the return type of a function onto its own
3010 line.
3011
3012 **PointerAlignment** (``PointerAlignmentStyle``)
3013 Pointer and reference alignment style.
3014
3015 Possible values:
3016
3017 * ``PAS_Left`` (in configuration: ``Left``)
3018 Align pointer to the left.
3019
3020 .. code-block:: c++
3021
3022 int* a;
3023
3024 * ``PAS_Right`` (in configuration: ``Right``)
3025 Align pointer to the right.
3026
3027 .. code-block:: c++
3028
3029 int *a;
3030
3031 * ``PAS_Middle`` (in configuration: ``Middle``)
3032 Align pointer in the middle.
3033
3034 .. code-block:: c++
3035
3036 int * a;
3037
3038
3039
3040 **RawStringFormats** (``std::vector<RawStringFormat>``)
3041 Defines hints for detecting supported languages code blocks in raw
3042 strings.
3043
3044 A raw string with a matching delimiter or a matching enclosing function
3045 name will be reformatted assuming the specified language based on the
3046 style for that language defined in the .clang-format file. If no style has
3047 been defined in the .clang-format file for the specific language, a
3048 predefined style given by 'BasedOnStyle' is used. If 'BasedOnStyle' is not
3049 found, the formatting is based on llvm style. A matching delimiter takes
3050 precedence over a matching enclosing function name for determining the
3051 language of the raw string contents.
3052
3053 If a canonical delimiter is specified, occurrences of other delimiters for
3054 the same language will be updated to the canonical if possible.
3055
3056 There should be at most one specification per language and each delimiter
3057 and enclosing function should not occur in multiple specifications.
3058
3059 To configure this in the .clang-format file, use:
3060
3061 .. code-block:: yaml
3062
3063 RawStringFormats:
3064 - Language: TextProto
3065 Delimiters:
3066 - 'pb'
3067 - 'proto'
3068 EnclosingFunctions:
3069 - 'PARSE_TEXT_PROTO'
3070 BasedOnStyle: google
3071 - Language: Cpp
3072 Delimiters:
3073 - 'cc'
3074 - 'cpp'
3075 BasedOnStyle: llvm
3076 CanonicalDelimiter: 'cc'
3077
3078 **ReflowComments** (``bool``)
3079 If ``true``, clang-format will attempt to re-flow comments.
3080
3081 .. code-block:: c++
3082
3083 false:
3084 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information
3085 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information */
3086
3087 true:
3088 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of
3089 // information
3090 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of
3091 * information */
3092
3093 **ShortNamespaceLines** (``unsigned``)
3094 The maximal number of unwrapped lines that a short namespace spans.
3095 Defaults to 1.
3096
3097 This determines the maximum length of short namespaces by counting
3098 unwrapped lines (i.e. containing neither opening nor closing
3099 namespace brace) and makes "FixNamespaceComments" omit adding
3100 end comments for those.
3101
3102 .. code-block:: c++
3103
3104 ShortNamespaceLines: 1 vs. ShortNamespaceLines: 0
3105 namespace a { namespace a {
3106 int foo; int foo;
3107 } } // namespace a
3108
3109 ShortNamespaceLines: 1 vs. ShortNamespaceLines: 0
3110 namespace b { namespace b {
3111 int foo; int foo;
3112 int bar; int bar;
3113 } // namespace b } // namespace b
3114
3115 **SortIncludes** (``SortIncludesOptions``)
3116 Controls if and how clang-format will sort ``#includes``.
3117 If ``Never``, includes are never sorted.
3118 If ``CaseInsensitive``, includes are sorted in an ASCIIbetical or case
3119 insensitive fashion.
3120 If ``CaseSensitive``, includes are sorted in an alphabetical or case
3121 sensitive fashion.
3122
3123 Possible values:
3124
3125 * ``SI_Never`` (in configuration: ``Never``)
3126 Includes are never sorted.
3127
3128 .. code-block:: c++
3129
3130 #include "B/A.h"
3131 #include "A/B.h"
3132 #include "a/b.h"
3133 #include "A/b.h"
3134 #include "B/a.h"
3135
3136 * ``SI_CaseSensitive`` (in configuration: ``CaseSensitive``)
3137 Includes are sorted in an ASCIIbetical or case sensitive fashion.
3138
3139 .. code-block:: c++
3140
3141 #include "A/B.h"
3142 #include "A/b.h"
3143 #include "B/A.h"
3144 #include "B/a.h"
3145 #include "a/b.h"
3146
3147 * ``SI_CaseInsensitive`` (in configuration: ``CaseInsensitive``)
3148 Includes are sorted in an alphabetical or case insensitive fashion.
3149
3150 .. code-block:: c++
3151
3152 #include "A/B.h"
3153 #include "A/b.h"
3154 #include "a/b.h"
3155 #include "B/A.h"
3156 #include "B/a.h"
3157
3158
3159
3160 **SortJavaStaticImport** (``SortJavaStaticImportOptions``)
3161 When sorting Java imports, by default static imports are placed before
3162 non-static imports. If ``JavaStaticImportAfterImport`` is ``After``,
3163 static imports are placed after non-static imports.
3164
3165 Possible values:
3166
3167 * ``SJSIO_Before`` (in configuration: ``Before``)
3168 Static imports are placed before non-static imports.
3169
3170 .. code-block:: java
3171
3172 import static org.example.function1;
3173
3174 import org.example.ClassA;
3175
3176 * ``SJSIO_After`` (in configuration: ``After``)
3177 Static imports are placed after non-static imports.
3178
3179 .. code-block:: java
3180
3181 import org.example.ClassA;
3182
3183 import static org.example.function1;
3184
3185
3186
3187 **SortUsingDeclarations** (``bool``)
3188 If ``true``, clang-format will sort using declarations.
3189
3190 The order of using declarations is defined as follows:
3191 Split the strings by "::" and discard any initial empty strings. The last
3192 element of each list is a non-namespace name; all others are namespace
3193 names. Sort the lists of names lexicographically, where the sort order of
3194 individual names is that all non-namespace names come before all namespace
3195 names, and within those groups, names are in case-insensitive
3196 lexicographic order.
3197
3198 .. code-block:: c++
3199
3200 false: true:
3201 using std::cout; vs. using std::cin;
3202 using std::cin; using std::cout;
3203
3204 **SpaceAfterCStyleCast** (``bool``)
3205 If ``true``, a space is inserted after C style casts.
3206
3207 .. code-block:: c++
3208
3209 true: false:
3210 (int) i; vs. (int)i;
3211
3212 **SpaceAfterLogicalNot** (``bool``)
3213 If ``true``, a space is inserted after the logical not operator (``!``).
3214
3215 .. code-block:: c++
3216
3217 true: false:
3218 ! someExpression(); vs. !someExpression();
3219
3220 **SpaceAfterTemplateKeyword** (``bool``)
3221 If ``true``, a space will be inserted after the 'template' keyword.
3222
3223 .. code-block:: c++
3224
3225 true: false:
3226 template <int> void foo(); vs. template<int> void foo();
3227
3228 **SpaceAroundPointerQualifiers** (``SpaceAroundPointerQualifiersStyle``)
3229 Defines in which cases to put a space before or after pointer qualifiers
3230
3231 Possible values:
3232
3233 * ``SAPQ_Default`` (in configuration: ``Default``)
3234 Don't ensure spaces around pointer qualifiers and use PointerAlignment
3235 instead.
3236
3237 .. code-block:: c++
3238
3239 PointerAlignment: Left PointerAlignment: Right
3240 void* const* x = NULL; vs. void *const *x = NULL;
3241
3242 * ``SAPQ_Before`` (in configuration: ``Before``)
3243 Ensure that there is a space before pointer qualifiers.
3244
3245 .. code-block:: c++
3246
3247 PointerAlignment: Left PointerAlignment: Right
3248 void* const* x = NULL; vs. void * const *x = NULL;
3249
3250 * ``SAPQ_After`` (in configuration: ``After``)
3251 Ensure that there is a space after pointer qualifiers.
3252
3253 .. code-block:: c++
3254
3255 PointerAlignment: Left PointerAlignment: Right
3256 void* const * x = NULL; vs. void *const *x = NULL;
3257
3258 * ``SAPQ_Both`` (in configuration: ``Both``)
3259 Ensure that there is a space both before and after pointer qualifiers.
3260
3261 .. code-block:: c++
3262
3263 PointerAlignment: Left PointerAlignment: Right
3264 void* const * x = NULL; vs. void * const *x = NULL;
3265
3266
3267
3268 **SpaceBeforeAssignmentOperators** (``bool``)
3269 If ``false``, spaces will be removed before assignment operators.
3270
3271 .. code-block:: c++
3272
3273 true: false:
3274 int a = 5; vs. int a= 5;
3275 a += 42; a+= 42;
3276
3277 **SpaceBeforeCaseColon** (``bool``)
3278 If ``false``, spaces will be removed before case colon.
3279
3280 .. code-block:: c++
3281
3282 true: false
3283 switch (x) { vs. switch (x) {
3284 case 1 : break; case 1: break;
3285 } }
3286
3287 **SpaceBeforeCpp11BracedList** (``bool``)
3288 If ``true``, a space will be inserted before a C++11 braced list
3289 used to initialize an object (after the preceding identifier or type).
3290
3291 .. code-block:: c++
3292
3293 true: false:
3294 Foo foo { bar }; vs. Foo foo{ bar };
3295 Foo {}; Foo{};
3296 vector<int> { 1, 2, 3 }; vector<int>{ 1, 2, 3 };
3297 new int[3] { 1, 2, 3 }; new int[3]{ 1, 2, 3 };
3298
3299 **SpaceBeforeCtorInitializerColon** (``bool``)
3300 If ``false``, spaces will be removed before constructor initializer
3301 colon.
3302
3303 .. code-block:: c++
3304
3305 true: false:
3306 Foo::Foo() : a(a) {} Foo::Foo(): a(a) {}
3307
3308 **SpaceBeforeInheritanceColon** (``bool``)
3309 If ``false``, spaces will be removed before inheritance colon.
3310
3311 .. code-block:: c++
3312
3313 true: false:
3314 class Foo : Bar {} vs. class Foo: Bar {}
3315
3316 **SpaceBeforeParens** (``SpaceBeforeParensOptions``)
3317 Defines in which cases to put a space before opening parentheses.
3318
3319 Possible values:
3320
3321 * ``SBPO_Never`` (in configuration: ``Never``)
3322 Never put a space before opening parentheses.
3323
3324 .. code-block:: c++
3325
3326 void f() {
3327 if(true) {
3328 f();
3329 }
3330 }
3331
3332 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``)
3333 Put a space before opening parentheses only after control statement
3334 keywords (``for/if/while...``).
3335
3336 .. code-block:: c++
3337
3338 void f() {
3339 if (true) {
3340 f();
3341 }
3342 }
3343
3344 * ``SBPO_ControlStatementsExceptForEachMacros`` (in configuration: ``ControlStatementsExceptForEachMacros``)
3345 Same as ``SBPO_ControlStatements`` except this option doesn't apply to
3346 ForEach macros. This is useful in projects where ForEach macros are
3347 treated as function calls instead of control statements.
3348
3349 .. code-block:: c++
3350
3351 void f() {
3352 Q_FOREACH(...) {
3353 f();
3354 }
3355 }
3356
3357 * ``SBPO_NonEmptyParentheses`` (in configuration: ``NonEmptyParentheses``)
3358 Put a space before opening parentheses only if the parentheses are not
3359 empty i.e. '()'
3360
3361 .. code-block:: c++
3362
3363 void() {
3364 if (true) {
3365 f();
3366 g (x, y, z);
3367 }
3368 }
3369
3370 * ``SBPO_Always`` (in configuration: ``Always``)
3371 Always put a space before opening parentheses, except when it's
3372 prohibited by the syntax rules (in function-like macro definitions) or
3373 when determined by other style rules (after unary operators, opening
3374 parentheses, etc.)
3375
3376 .. code-block:: c++
3377
3378 void f () {
3379 if (true) {
3380 f ();
3381 }
3382 }
3383
3384
3385
3386 **SpaceBeforeRangeBasedForLoopColon** (``bool``)
3387 If ``false``, spaces will be removed before range-based for loop
3388 colon.
3389
3390 .. code-block:: c++
3391
3392 true: false:
3393 for (auto v : values) {} vs. for(auto v: values) {}
3394
3395 **SpaceBeforeSquareBrackets** (``bool``)
3396 If ``true``, spaces will be before ``[``.
3397 Lambdas will not be affected. Only the first ``[`` will get a space added.
3398
3399 .. code-block:: c++
3400
3401 true: false:
3402 int a [5]; vs. int a[5];
3403 int a [5][5]; vs. int a[5][5];
3404
3405 **SpaceInEmptyBlock** (``bool``)
3406 If ``true``, spaces will be inserted into ``{}``.
3407
3408 .. code-block:: c++
3409
3410 true: false:
3411 void f() { } vs. void f() {}
3412 while (true) { } while (true) {}
3413
3414 **SpaceInEmptyParentheses** (``bool``)
3415 If ``true``, spaces may be inserted into ``()``.
3416
3417 .. code-block:: c++
3418
3419 true: false:
3420 void f( ) { vs. void f() {
3421 int x[] = {foo( ), bar( )}; int x[] = {foo(), bar()};
3422 if (true) { if (true) {
3423 f( ); f();
3424 } }
3425 } }
3426
3427 **SpacesBeforeTrailingComments** (``unsigned``)
3428 The number of spaces before trailing line comments
3429 (``//`` - comments).
3430
3431 This does not affect trailing block comments (``/*`` - comments) as
3432 those commonly have different usage patterns and a number of special
3433 cases.
3434
3435 .. code-block:: c++
3436
3437 SpacesBeforeTrailingComments: 3
3438 void f() {
3439 if (true) { // foo1
3440 f(); // bar
3441 } // foo
3442 }
3443
3444 **SpacesInAngles** (``bool``)
3445 If ``true``, spaces will be inserted after ``<`` and before ``>``
3446 in template argument lists.
3447
3448 .. code-block:: c++
3449
3450 true: false:
3451 static_cast< int >(arg); vs. static_cast<int>(arg);
3452 std::function< void(int) > fct; std::function<void(int)> fct;
3453
3454 **SpacesInCStyleCastParentheses** (``bool``)
3455 If ``true``, spaces may be inserted into C style casts.
3456
3457 .. code-block:: c++
3458
3459 true: false:
3460 x = ( int32 )y vs. x = (int32)y
3461
3462 **SpacesInConditionalStatement** (``bool``)
3463 If ``true``, spaces will be inserted around if/for/switch/while
3464 conditions.
3465
3466 .. code-block:: c++
3467
3468 true: false:
3469 if ( a ) { ... } vs. if (a) { ... }
3470 while ( i < 5 ) { ... } while (i < 5) { ... }
3471
3472 **SpacesInContainerLiterals** (``bool``)
3473 If ``true``, spaces are inserted inside container literals (e.g.
3474 ObjC and Javascript array and dict literals).
3475
3476 .. code-block:: js
3477
3478 true: false:
3479 var arr = [ 1, 2, 3 ]; vs. var arr = [1, 2, 3];
3480 f({a : 1, b : 2, c : 3}); f({a: 1, b: 2, c: 3});
3481
3482 **SpacesInLineCommentPrefix** (``SpacesInLineComment``)
3483 How many spaces are allowed at the start of a line comment. To disable the
3484 maximum set it to ``-1``, apart from that the maximum takes precedence
3485 over the minimum.
3486 Minimum = 1 Maximum = -1
3487 // One space is forced
3488
3489 // but more spaces are possible
3490
3491 Minimum = 0
3492 Maximum = 0
3493 //Forces to start every comment directly after the slashes
3494
3495 Note that in line comment sections the relative indent of the subsequent
3496 lines is kept, that means the following:
3497
3498 .. code-block:: c++
3499
3500 before: after:
3501 Minimum: 1
3502 //if (b) { // if (b) {
3503 // return true; // return true;
3504 //} // }
3505
3506 Maximum: 0
3507 /// List: ///List:
3508 /// - Foo /// - Foo
3509 /// - Bar /// - Bar
3510
3511 Nested configuration flags:
3512
3513
3514 * ``unsigned Minimum`` The minimum number of spaces at the start of the comment.
3515
3516 * ``unsigned Maximum`` The maximum number of spaces at the start of the comment.
3517
3518
3519 **SpacesInParentheses** (``bool``)
3520 If ``true``, spaces will be inserted after ``(`` and before ``)``.
3521
3522 .. code-block:: c++
3523
3524 true: false:
3525 t f( Deleted & ) & = delete; vs. t f(Deleted &) & = delete;
3526
3527 **SpacesInSquareBrackets** (``bool``)
3528 If ``true``, spaces will be inserted after ``[`` and before ``]``.
3529 Lambdas without arguments or unspecified size array declarations will not
3530 be affected.
3531
3532 .. code-block:: c++
3533
3534 true: false:
3535 int a[ 5 ]; vs. int a[5];
3536 std::unique_ptr<int[]> foo() {} // Won't be affected
3537
3538 **Standard** (``LanguageStandard``)
3539 Parse and format C++ constructs compatible with this standard.
3540
3541 .. code-block:: c++
3542
3543 c++03: latest:
3544 vector<set<int> > x; vs. vector<set<int>> x;
3545
3546 Possible values:
3547
3548 * ``LS_Cpp03`` (in configuration: ``c++03``)
3549 Parse and format as C++03.
3550 ``Cpp03`` is a deprecated alias for ``c++03``
3551
3552 * ``LS_Cpp11`` (in configuration: ``c++11``)
3553 Parse and format as C++11.
3554
3555 * ``LS_Cpp14`` (in configuration: ``c++14``)
3556 Parse and format as C++14.
3557
3558 * ``LS_Cpp17`` (in configuration: ``c++17``)
3559 Parse and format as C++17.
3560
3561 * ``LS_Cpp20`` (in configuration: ``c++20``)
3562 Parse and format as C++20.
3563
3564 * ``LS_Latest`` (in configuration: ``Latest``)
3565 Parse and format using the latest supported language version.
3566 ``Cpp11`` is a deprecated alias for ``Latest``
3567
3568 * ``LS_Auto`` (in configuration: ``Auto``)
3569 Automatic detection based on the input.
3570
3571
3572
3573 **StatementAttributeLikeMacros** (``std::vector<std::string>``)
3574 Macros which are ignored in front of a statement, as if they were an
3575 attribute. So that they are not parsed as identifier, for example for Qts
3576 emit.
3577
3578 .. code-block:: c++
3579
3580 AlignConsecutiveDeclarations: true
3581 StatementAttributeLikeMacros: []
3582 unsigned char data = 'x';
3583 emit signal(data); // This is parsed as variable declaration.
3584
3585 AlignConsecutiveDeclarations: true
3586 StatementAttributeLikeMacros: [emit]
3587 unsigned char data = 'x';
3588 emit signal(data); // Now it's fine again.
3589
3590 **StatementMacros** (``std::vector<std::string>``)
3591 A vector of macros that should be interpreted as complete
3592 statements.
3593
3594 Typical macros are expressions, and require a semi-colon to be
3595 added; sometimes this is not the case, and this allows to make
3596 clang-format aware of such cases.
3597
3598 For example: Q_UNUSED
3599
3600 **TabWidth** (``unsigned``)
3601 The number of columns used for tab stops.
3602
3603 **TypenameMacros** (``std::vector<std::string>``)
3604 A vector of macros that should be interpreted as type declarations
3605 instead of as function calls.
3606
3607 These are expected to be macros of the form:
3608
3609 .. code-block:: c++
3610
3611 STACK_OF(...)
3612
3613 In the .clang-format configuration file, this can be configured like:
3614
3615 .. code-block:: yaml
3616
3617 TypenameMacros: ['STACK_OF', 'LIST']
3618
3619 For example: OpenSSL STACK_OF, BSD LIST_ENTRY.
3620
3621 **UseCRLF** (``bool``)
3622 Use ``\r\n`` instead of ``\n`` for line breaks.
3623 Also used as fallback if ``DeriveLineEnding`` is true.
3624
3625 **UseTab** (``UseTabStyle``)
3626 The way to use tab characters in the resulting file.
3627
3628 Possible values:
3629
3630 * ``UT_Never`` (in configuration: ``Never``)
3631 Never use tab.
3632
3633 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``)
3634 Use tabs only for indentation.
3635
3636 * ``UT_ForContinuationAndIndentation`` (in configuration: ``ForContinuationAndIndentation``)
3637 Fill all leading whitespace with tabs, and use spaces for alignment that
3638 appears within a line (e.g. consecutive assignments and declarations).
3639
3640 * ``UT_AlignWithSpaces`` (in configuration: ``AlignWithSpaces``)
3641 Use tabs for line continuation and indentation, and spaces for
3642 alignment.
3643
3644 * ``UT_Always`` (in configuration: ``Always``)
3645 Use tabs whenever we need to fill whitespace that spans at least from
3646 one tab stop to the next one.
3647
3648
3649
3650 **WhitespaceSensitiveMacros** (``std::vector<std::string>``)
3651 A vector of macros which are whitespace-sensitive and should not
3652 be touched.
3653
3654 These are expected to be macros of the form:
3655
3656 .. code-block:: c++
3657
3658 STRINGIZE(...)
3659
3660 In the .clang-format configuration file, this can be configured like:
3661
3662 .. code-block:: yaml
3663
3664 WhitespaceSensitiveMacros: ['STRINGIZE', 'PP_STRINGIZE']
3665
3666 For example: BOOST_PP_STRINGIZE
3667
3668 .. END_FORMAT_STYLE_OPTIONS
3669
3670 Adding additional style options
3671 ===============================
3672
3673 Each additional style option adds costs to the clang-format project. Some of
3674 these costs affect the clang-format development itself, as we need to make
3675 sure that any given combination of options work and that new features don't
3676 break any of the existing options in any way. There are also costs for end users
3677 as options become less discoverable and people have to think about and make a
3678 decision on options they don't really care about.
3679
3680 The goal of the clang-format project is more on the side of supporting a
3681 limited set of styles really well as opposed to supporting every single style
3682 used by a codebase somewhere in the wild. Of course, we do want to support all
3683 major projects and thus have established the following bar for adding style
3684 options. Each new style option must ..
3685
3686 * be used in a project of significant size (have dozens of contributors)
3687 * have a publicly accessible style guide
3688 * have a person willing to contribute and maintain patches
3689
3690 Examples
3691 ========
3692
3693 A style similar to the `Linux Kernel style
3694 <https://www.kernel.org/doc/Documentation/CodingStyle>`_:
3695
3696 .. code-block:: yaml
3697
3698 BasedOnStyle: LLVM
3699 IndentWidth: 8
3700 UseTab: Always
3701 BreakBeforeBraces: Linux
3702 AllowShortIfStatementsOnASingleLine: false
3703 IndentCaseLabels: false
3704
3705 The result is (imagine that tabs are used for indentation here):
3706
3707 .. code-block:: c++
3708
3709 void test()
3710 {
3711 switch (x) {
3712 case 0:
3713 case 1:
3714 do_something();
3715 break;
3716 case 2:
3717 do_something_else();
3718 break;
3719 default:
3720 break;
3721 }
3722 if (condition)
3723 do_something_completely_different();
3724
3725 if (x == y) {
3726 q();
3727 } else if (x > y) {
3728 w();
3729 } else {
3730 r();
3731 }
3732 }
3733
3734 A style similar to the default Visual Studio formatting style:
3735
3736 .. code-block:: yaml
3737
3738 UseTab: Never
3739 IndentWidth: 4
3740 BreakBeforeBraces: Allman
3741 AllowShortIfStatementsOnASingleLine: false
3742 IndentCaseLabels: false
3743 ColumnLimit: 0
3744
3745 The result is:
3746
3747 .. code-block:: c++
3748
3749 void test()
3750 {
3751 switch (suffix)
3752 {
3753 case 0:
3754 case 1:
3755 do_something();
3756 break;
3757 case 2:
3758 do_something_else();
3759 break;
3760 default:
3761 break;
3762 }
3763 if (condition)
3764 do_something_completely_different();
3765
3766 if (x == y)
3767 {
3768 q();
3769 }
3770 else if (x > y)
3771 {
3772 w();
3773 }
3774 else
3775 {
3776 r();
3777 }
3778 }
3779