1========================== 2Clang-Format Style Options 3========================== 4 5:doc:`ClangFormatStyleOptions` describes configurable formatting style options 6supported by :doc:`LibFormat` and :doc:`ClangFormat`. 7 8When using :program:`clang-format` command line utility or 9``clang::format::reformat(...)`` functions from code, one can either use one of 10the predefined styles (LLVM, Google, Chromium, Mozilla, WebKit) or create a 11custom style by configuring specific style options. 12 13 14Configuring Style with clang-format 15=================================== 16 17:program:`clang-format` supports two ways to provide custom style options: 18directly specify style configuration in the ``-style=`` command line option or 19use ``-style=file`` and put style configuration in the ``.clang-format`` or 20``_clang-format`` file in the project directory. 21 22When using ``-style=file``, :program:`clang-format` for each input file will 23try to find the ``.clang-format`` file located in the closest parent directory 24of the input file. When the standard input is used, the search is started from 25the current directory. 26 27The ``.clang-format`` file uses YAML format: 28 29.. code-block:: yaml 30 31 key1: value1 32 key2: value2 33 # A comment. 34 ... 35 36The configuration file can consist of several sections each having different 37``Language:`` parameter denoting the programming language this section of the 38configuration is targeted at. See the description of the **Language** option 39below for the list of supported languages. The first section may have no 40language set, it will set the default style options for all lanugages. 41Configuration sections for specific language will override options set in the 42default section. 43 44When :program:`clang-format` formats a file, it auto-detects the language using 45the file name. When formatting standard input or a file that doesn't have the 46extension corresponding to its language, ``-assume-filename=`` option can be 47used to override the file name :program:`clang-format` uses to detect the 48language. 49 50An example of a configuration file for multiple languages: 51 52.. code-block:: yaml 53 54 --- 55 # We'll use defaults from the LLVM style, but with 4 columns indentation. 56 BasedOnStyle: LLVM 57 IndentWidth: 4 58 --- 59 Language: Cpp 60 # Force pointers to the type for C++. 61 DerivePointerAlignment: false 62 PointerAlignment: Left 63 --- 64 Language: JavaScript 65 # Use 100 columns for JS. 66 ColumnLimit: 100 67 --- 68 Language: Proto 69 # Don't format .proto files. 70 DisableFormat: true 71 ... 72 73An easy way to get a valid ``.clang-format`` file containing all configuration 74options of a certain predefined style is: 75 76.. code-block:: console 77 78 clang-format -style=llvm -dump-config > .clang-format 79 80When specifying configuration in the ``-style=`` option, the same configuration 81is applied for all input files. The format of the configuration is: 82 83.. code-block:: console 84 85 -style='{key1: value1, key2: value2, ...}' 86 87 88Disabling Formatting on a Piece of Code 89======================================= 90 91Clang-format understands also special comments that switch formatting in a 92delimited range. The code between a comment ``// clang-format off`` or 93``/* clang-format off */`` up to a comment ``// clang-format on`` or 94``/* clang-format on */`` will not be formatted. The comments themselves 95will be formatted (aligned) normally. 96 97.. code-block:: c++ 98 99 int formatted_code; 100 // clang-format off 101 void unformatted_code ; 102 // clang-format on 103 void formatted_code_again; 104 105 106Configuring Style in Code 107========================= 108 109When using ``clang::format::reformat(...)`` functions, the format is specified 110by supplying the `clang::format::FormatStyle 111<http://clang.llvm.org/doxygen/structclang_1_1format_1_1FormatStyle.html>`_ 112structure. 113 114 115Configurable Format Style Options 116================================= 117 118This section lists the supported style options. Value type is specified for 119each option. For enumeration types possible values are specified both as a C++ 120enumeration member (with a prefix, e.g. ``LS_Auto``), and as a value usable in 121the configuration (without a prefix: ``Auto``). 122 123 124**BasedOnStyle** (``string``) 125 The style used for all options not specifically set in the configuration. 126 127 This option is supported only in the :program:`clang-format` configuration 128 (both within ``-style='{...}'`` and the ``.clang-format`` file). 129 130 Possible values: 131 132 * ``LLVM`` 133 A style complying with the `LLVM coding standards 134 <http://llvm.org/docs/CodingStandards.html>`_ 135 * ``Google`` 136 A style complying with `Google's C++ style guide 137 <http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml>`_ 138 * ``Chromium`` 139 A style complying with `Chromium's style guide 140 <http://www.chromium.org/developers/coding-style>`_ 141 * ``Mozilla`` 142 A style complying with `Mozilla's style guide 143 <https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style>`_ 144 * ``WebKit`` 145 A style complying with `WebKit's style guide 146 <http://www.webkit.org/coding/coding-style.html>`_ 147 148.. START_FORMAT_STYLE_OPTIONS 149 150**AccessModifierOffset** (``int``) 151 The extra indent or outdent of access modifiers, e.g. ``public:``. 152 153**AlignAfterOpenBracket** (``BracketAlignmentStyle``) 154 If ``true``, horizontally aligns arguments after an open bracket. 155 156 This applies to round brackets (parentheses), angle brackets and square 157 brackets. 158 159 Possible values: 160 161 * ``BAS_Align`` (in configuration: ``Align``) 162 Align parameters on the open bracket, e.g.: 163 164 .. code-block:: c++ 165 166 someLongFunction(argument1, 167 argument2); 168 169 * ``BAS_DontAlign`` (in configuration: ``DontAlign``) 170 Don't align, instead use ``ContinuationIndentWidth``, e.g.: 171 172 .. code-block:: c++ 173 174 someLongFunction(argument1, 175 argument2); 176 177 * ``BAS_AlwaysBreak`` (in configuration: ``AlwaysBreak``) 178 Always break after an open bracket, if the parameters don't fit 179 on a single line, e.g.: 180 181 .. code-block:: c++ 182 183 someLongFunction( 184 argument1, argument2); 185 186 187 188**AlignConsecutiveAssignments** (``bool``) 189 If ``true``, aligns consecutive assignments. 190 191 This will align the assignment operators of consecutive lines. This 192 will result in formattings like 193 194 .. code-block:: c++ 195 196 int aaaa = 12; 197 int b = 23; 198 int ccc = 23; 199 200**AlignConsecutiveDeclarations** (``bool``) 201 If ``true``, aligns consecutive declarations. 202 203 This will align the declaration names of consecutive lines. This 204 will result in formattings like 205 206 .. code-block:: c++ 207 208 int aaaa = 12; 209 float b = 23; 210 std::string ccc = 23; 211 212**AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``) 213 Options for aligning backslashes in escaped newlines. 214 215 Possible values: 216 217 * ``ENAS_DontAlign`` (in configuration: ``DontAlign``) 218 Don't align escaped newlines. 219 220 .. code-block:: c++ 221 222 #define A \ 223 int aaaa; \ 224 int b; \ 225 int dddddddddd; 226 227 * ``ENAS_Left`` (in configuration: ``Left``) 228 Align escaped newlines as far left as possible. 229 230 .. code-block:: c++ 231 232 true: 233 #define A \ 234 int aaaa; \ 235 int b; \ 236 int dddddddddd; 237 238 false: 239 240 * ``ENAS_Right`` (in configuration: ``Right``) 241 Align escaped newlines in the right-most column. 242 243 .. code-block:: c++ 244 245 #define A \ 246 int aaaa; \ 247 int b; \ 248 int dddddddddd; 249 250 251 252**AlignOperands** (``bool``) 253 If ``true``, horizontally align operands of binary and ternary 254 expressions. 255 256 Specifically, this aligns operands of a single expression that needs to be 257 split over multiple lines, e.g.: 258 259 .. code-block:: c++ 260 261 int aaa = bbbbbbbbbbbbbbb + 262 ccccccccccccccc; 263 264**AlignTrailingComments** (``bool``) 265 If ``true``, aligns trailing comments. 266 267 .. code-block:: c++ 268 269 true: false: 270 int a; // My comment a vs. int a; // My comment a 271 int b = 2; // comment b int b = 2; // comment about b 272 273**AllowAllParametersOfDeclarationOnNextLine** (``bool``) 274 If the function declaration doesn't fit on a line, 275 allow putting all parameters of a function declaration onto 276 the next line even if ``BinPackParameters`` is ``false``. 277 278 .. code-block:: c++ 279 280 true: 281 void myFunction( 282 int a, int b, int c, int d, int e); 283 284 false: 285 void myFunction(int a, 286 int b, 287 int c, 288 int d, 289 int e); 290 291**AllowShortBlocksOnASingleLine** (``bool``) 292 Allows contracting simple braced statements to a single line. 293 294 E.g., this allows ``if (a) { return; }`` to be put on a single line. 295 296**AllowShortCaseLabelsOnASingleLine** (``bool``) 297 If ``true``, short case labels will be contracted to a single line. 298 299 .. code-block:: c++ 300 301 true: false: 302 switch (a) { vs. switch (a) { 303 case 1: x = 1; break; case 1: 304 case 2: return; x = 1; 305 } break; 306 case 2: 307 return; 308 } 309 310**AllowShortFunctionsOnASingleLine** (``ShortFunctionStyle``) 311 Dependent on the value, ``int f() { return 0; }`` can be put on a 312 single line. 313 314 Possible values: 315 316 * ``SFS_None`` (in configuration: ``None``) 317 Never merge functions into a single line. 318 319 * ``SFS_InlineOnly`` (in configuration: ``InlineOnly``) 320 Only merge functions defined inside a class. Same as "inline", 321 except it does not implies "empty": i.e. top level empty functions 322 are not merged either. 323 324 .. code-block:: c++ 325 326 class Foo { 327 void f() { foo(); } 328 }; 329 void f() { 330 foo(); 331 } 332 void f() { 333 } 334 335 * ``SFS_Empty`` (in configuration: ``Empty``) 336 Only merge empty functions. 337 338 .. code-block:: c++ 339 340 void f() {} 341 void f2() { 342 bar2(); 343 } 344 345 * ``SFS_Inline`` (in configuration: ``Inline``) 346 Only merge functions defined inside a class. Implies "empty". 347 348 .. code-block:: c++ 349 350 class Foo { 351 void f() { foo(); } 352 }; 353 void f() { 354 foo(); 355 } 356 void f() {} 357 358 * ``SFS_All`` (in configuration: ``All``) 359 Merge all functions fitting on a single line. 360 361 .. code-block:: c++ 362 363 class Foo { 364 void f() { foo(); } 365 }; 366 void f() { bar(); } 367 368 369 370**AllowShortIfStatementsOnASingleLine** (``bool``) 371 If ``true``, ``if (a) return;`` can be put on a single line. 372 373**AllowShortLoopsOnASingleLine** (``bool``) 374 If ``true``, ``while (true) continue;`` can be put on a single 375 line. 376 377**AlwaysBreakAfterDefinitionReturnType** (``DefinitionReturnTypeBreakingStyle``) 378 The function definition return type breaking style to use. This 379 option is **deprecated** and is retained for backwards compatibility. 380 381 Possible values: 382 383 * ``DRTBS_None`` (in configuration: ``None``) 384 Break after return type automatically. 385 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account. 386 387 * ``DRTBS_All`` (in configuration: ``All``) 388 Always break after the return type. 389 390 * ``DRTBS_TopLevel`` (in configuration: ``TopLevel``) 391 Always break after the return types of top-level functions. 392 393 394 395**AlwaysBreakAfterReturnType** (``ReturnTypeBreakingStyle``) 396 The function declaration return type breaking style to use. 397 398 Possible values: 399 400 * ``RTBS_None`` (in configuration: ``None``) 401 Break after return type automatically. 402 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account. 403 404 .. code-block:: c++ 405 406 class A { 407 int f() { return 0; }; 408 }; 409 int f(); 410 int f() { return 1; } 411 412 * ``RTBS_All`` (in configuration: ``All``) 413 Always break after the return type. 414 415 .. code-block:: c++ 416 417 class A { 418 int 419 f() { 420 return 0; 421 }; 422 }; 423 int 424 f(); 425 int 426 f() { 427 return 1; 428 } 429 430 * ``RTBS_TopLevel`` (in configuration: ``TopLevel``) 431 Always break after the return types of top-level functions. 432 433 .. code-block:: c++ 434 435 class A { 436 int f() { return 0; }; 437 }; 438 int 439 f(); 440 int 441 f() { 442 return 1; 443 } 444 445 * ``RTBS_AllDefinitions`` (in configuration: ``AllDefinitions``) 446 Always break after the return type of function definitions. 447 448 .. code-block:: c++ 449 450 class A { 451 int 452 f() { 453 return 0; 454 }; 455 }; 456 int f(); 457 int 458 f() { 459 return 1; 460 } 461 462 * ``RTBS_TopLevelDefinitions`` (in configuration: ``TopLevelDefinitions``) 463 Always break after the return type of top-level definitions. 464 465 .. code-block:: c++ 466 467 class A { 468 int f() { return 0; }; 469 }; 470 int f(); 471 int 472 f() { 473 return 1; 474 } 475 476 477 478**AlwaysBreakBeforeMultilineStrings** (``bool``) 479 If ``true``, always break before multiline string literals. 480 481 This flag is mean to make cases where there are multiple multiline strings 482 in a file look more consistent. Thus, it will only take effect if wrapping 483 the string at that point leads to it being indented 484 ``ContinuationIndentWidth`` spaces from the start of the line. 485 486 .. code-block:: c++ 487 488 true: false: 489 aaaa = vs. aaaa = "bbbb" 490 "bbbb" "cccc"; 491 "cccc"; 492 493**AlwaysBreakTemplateDeclarations** (``bool``) 494 If ``true``, always break after the ``template<...>`` of a template 495 declaration. 496 497 .. code-block:: c++ 498 499 true: false: 500 template <typename T> vs. template <typename T> class C {}; 501 class C {}; 502 503**BinPackArguments** (``bool``) 504 If ``false``, a function call's arguments will either be all on the 505 same line or will have one line each. 506 507 .. code-block:: c++ 508 509 true: 510 void f() { 511 f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa, 512 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); 513 } 514 515 false: 516 void f() { 517 f(aaaaaaaaaaaaaaaaaaaa, 518 aaaaaaaaaaaaaaaaaaaa, 519 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); 520 } 521 522**BinPackParameters** (``bool``) 523 If ``false``, a function declaration's or function definition's 524 parameters will either all be on the same line or will have one line each. 525 526 .. code-block:: c++ 527 528 true: 529 void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa, 530 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {} 531 532 false: 533 void f(int aaaaaaaaaaaaaaaaaaaa, 534 int aaaaaaaaaaaaaaaaaaaa, 535 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {} 536 537**BraceWrapping** (``BraceWrappingFlags``) 538 Control of individual brace wrapping cases. 539 540 If ``BreakBeforeBraces`` is set to ``BS_Custom``, use this to specify how 541 each individual brace case should be handled. Otherwise, this is ignored. 542 543 .. code-block:: yaml 544 545 # Example of usage: 546 BreakBeforeBraces: Custom 547 BraceWrapping: 548 AfterEnum: true 549 AfterStruct: false 550 SplitEmptyFunction: false 551 552 Nested configuration flags: 553 554 555 * ``bool AfterClass`` Wrap class definitions. 556 557 .. code-block:: c++ 558 559 true: 560 class foo {}; 561 562 false: 563 class foo 564 {}; 565 566 * ``bool AfterControlStatement`` Wrap control statements (``if``/``for``/``while``/``switch``/..). 567 568 .. code-block:: c++ 569 570 true: 571 if (foo()) 572 { 573 } else 574 {} 575 for (int i = 0; i < 10; ++i) 576 {} 577 578 false: 579 if (foo()) { 580 } else { 581 } 582 for (int i = 0; i < 10; ++i) { 583 } 584 585 * ``bool AfterEnum`` Wrap enum definitions. 586 587 .. code-block:: c++ 588 589 true: 590 enum X : int 591 { 592 B 593 }; 594 595 false: 596 enum X : int { B }; 597 598 * ``bool AfterFunction`` Wrap function definitions. 599 600 .. code-block:: c++ 601 602 true: 603 void foo() 604 { 605 bar(); 606 bar2(); 607 } 608 609 false: 610 void foo() { 611 bar(); 612 bar2(); 613 } 614 615 * ``bool AfterNamespace`` Wrap namespace definitions. 616 617 .. code-block:: c++ 618 619 true: 620 namespace 621 { 622 int foo(); 623 int bar(); 624 } 625 626 false: 627 namespace { 628 int foo(); 629 int bar(); 630 } 631 632 * ``bool AfterObjCDeclaration`` Wrap ObjC definitions (``@autoreleasepool``, interfaces, ..). 633 634 * ``bool AfterStruct`` Wrap struct definitions. 635 636 .. code-block:: c++ 637 638 true: 639 struct foo 640 { 641 int x; 642 }; 643 644 false: 645 struct foo { 646 int x; 647 }; 648 649 * ``bool AfterUnion`` Wrap union definitions. 650 651 .. code-block:: c++ 652 653 true: 654 union foo 655 { 656 int x; 657 } 658 659 false: 660 union foo { 661 int x; 662 } 663 664 * ``bool AfterExternBlock`` Wrap extern blocks. 665 666 .. code-block:: c++ 667 668 true: 669 extern "C" 670 { 671 int foo(); 672 } 673 674 false: 675 extern "C" { 676 int foo(); 677 } 678 679 * ``bool BeforeCatch`` Wrap before ``catch``. 680 681 .. code-block:: c++ 682 683 true: 684 try { 685 foo(); 686 } 687 catch () { 688 } 689 690 false: 691 try { 692 foo(); 693 } catch () { 694 } 695 696 * ``bool BeforeElse`` Wrap before ``else``. 697 698 .. code-block:: c++ 699 700 true: 701 if (foo()) { 702 } 703 else { 704 } 705 706 false: 707 if (foo()) { 708 } else { 709 } 710 711 * ``bool IndentBraces`` Indent the wrapped braces themselves. 712 713 * ``bool SplitEmptyFunction`` If ``false``, empty function body can be put on a single line. 714 This option is used only if the opening brace of the function has 715 already been wrapped, i.e. the `AfterFunction` brace wrapping mode is 716 set, and the function could/should not be put on a single line (as per 717 `AllowShortFunctionsOnASingleLine` and constructor formatting options). 718 719 .. code-block:: c++ 720 721 int f() vs. inf f() 722 {} { 723 } 724 725 * ``bool SplitEmptyRecord`` If ``false``, empty record (e.g. class, struct or union) body 726 can be put on a single line. This option is used only if the opening 727 brace of the record has already been wrapped, i.e. the `AfterClass` 728 (for classes) brace wrapping mode is set. 729 730 .. code-block:: c++ 731 732 class Foo vs. class Foo 733 {} { 734 } 735 736 * ``bool SplitEmptyNamespace`` If ``false``, empty namespace body can be put on a single line. 737 This option is used only if the opening brace of the namespace has 738 already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is 739 set. 740 741 .. code-block:: c++ 742 743 namespace Foo vs. namespace Foo 744 {} { 745 } 746 747 748**BreakAfterJavaFieldAnnotations** (``bool``) 749 Break after each annotation on a field in Java files. 750 751 .. code-block:: java 752 753 true: false: 754 @Partial vs. @Partial @Mock DataLoad loader; 755 @Mock 756 DataLoad loader; 757 758**BreakBeforeBinaryOperators** (``BinaryOperatorStyle``) 759 The way to wrap binary operators. 760 761 Possible values: 762 763 * ``BOS_None`` (in configuration: ``None``) 764 Break after operators. 765 766 .. code-block:: c++ 767 768 LooooooooooongType loooooooooooooooooooooongVariable = 769 someLooooooooooooooooongFunction(); 770 771 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + 772 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == 773 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && 774 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > 775 ccccccccccccccccccccccccccccccccccccccccc; 776 777 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``) 778 Break before operators that aren't assignments. 779 780 .. code-block:: c++ 781 782 LooooooooooongType loooooooooooooooooooooongVariable = 783 someLooooooooooooooooongFunction(); 784 785 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 786 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 787 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 788 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 789 > ccccccccccccccccccccccccccccccccccccccccc; 790 791 * ``BOS_All`` (in configuration: ``All``) 792 Break before operators. 793 794 .. code-block:: c++ 795 796 LooooooooooongType loooooooooooooooooooooongVariable 797 = someLooooooooooooooooongFunction(); 798 799 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 800 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 801 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 802 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 803 > ccccccccccccccccccccccccccccccccccccccccc; 804 805 806 807**BreakBeforeBraces** (``BraceBreakingStyle``) 808 The brace breaking style to use. 809 810 Possible values: 811 812 * ``BS_Attach`` (in configuration: ``Attach``) 813 Always attach braces to surrounding context. 814 815 .. code-block:: c++ 816 817 try { 818 foo(); 819 } catch () { 820 } 821 void foo() { bar(); } 822 class foo {}; 823 if (foo()) { 824 } else { 825 } 826 enum X : int { A, B }; 827 828 * ``BS_Linux`` (in configuration: ``Linux``) 829 Like ``Attach``, but break before braces on function, namespace and 830 class definitions. 831 832 .. code-block:: c++ 833 834 try { 835 foo(); 836 } catch () { 837 } 838 void foo() { bar(); } 839 class foo 840 { 841 }; 842 if (foo()) { 843 } else { 844 } 845 enum X : int { A, B }; 846 847 * ``BS_Mozilla`` (in configuration: ``Mozilla``) 848 Like ``Attach``, but break before braces on enum, function, and record 849 definitions. 850 851 .. code-block:: c++ 852 853 try { 854 foo(); 855 } catch () { 856 } 857 void foo() { bar(); } 858 class foo 859 { 860 }; 861 if (foo()) { 862 } else { 863 } 864 enum X : int { A, B }; 865 866 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``) 867 Like ``Attach``, but break before function definitions, ``catch``, and 868 ``else``. 869 870 .. code-block:: c++ 871 872 try { 873 foo(); 874 } catch () { 875 } 876 void foo() { bar(); } 877 class foo 878 { 879 }; 880 if (foo()) { 881 } else { 882 } 883 enum X : int 884 { 885 A, 886 B 887 }; 888 889 * ``BS_Allman`` (in configuration: ``Allman``) 890 Always break before braces. 891 892 .. code-block:: c++ 893 894 try { 895 foo(); 896 } 897 catch () { 898 } 899 void foo() { bar(); } 900 class foo { 901 }; 902 if (foo()) { 903 } 904 else { 905 } 906 enum X : int { A, B }; 907 908 * ``BS_GNU`` (in configuration: ``GNU``) 909 Always break before braces and add an extra level of indentation to 910 braces of control statements, not to those of class, function 911 or other definitions. 912 913 .. code-block:: c++ 914 915 try 916 { 917 foo(); 918 } 919 catch () 920 { 921 } 922 void foo() { bar(); } 923 class foo 924 { 925 }; 926 if (foo()) 927 { 928 } 929 else 930 { 931 } 932 enum X : int 933 { 934 A, 935 B 936 }; 937 938 * ``BS_WebKit`` (in configuration: ``WebKit``) 939 Like ``Attach``, but break before functions. 940 941 .. code-block:: c++ 942 943 try { 944 foo(); 945 } catch () { 946 } 947 void foo() { bar(); } 948 class foo { 949 }; 950 if (foo()) { 951 } else { 952 } 953 enum X : int { A, B }; 954 955 * ``BS_Custom`` (in configuration: ``Custom``) 956 Configure each individual brace in `BraceWrapping`. 957 958 959 960**BreakBeforeInheritanceComma** (``bool``) 961 If ``true``, in the class inheritance expression clang-format will 962 break before ``:`` and ``,`` if there is multiple inheritance. 963 964 .. code-block:: c++ 965 966 true: false: 967 class MyClass vs. class MyClass : public X, public Y { 968 : public X }; 969 , public Y { 970 }; 971 972**BreakBeforeTernaryOperators** (``bool``) 973 If ``true``, ternary operators will be placed after line breaks. 974 975 .. code-block:: c++ 976 977 true: 978 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription 979 ? firstValue 980 : SecondValueVeryVeryVeryVeryLong; 981 982 false: 983 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription ? 984 firstValue : 985 SecondValueVeryVeryVeryVeryLong; 986 987**BreakConstructorInitializers** (``BreakConstructorInitializersStyle``) 988 The constructor initializers style to use. 989 990 Possible values: 991 992 * ``BCIS_BeforeColon`` (in configuration: ``BeforeColon``) 993 Break constructor initializers before the colon and after the commas. 994 995 .. code-block:: c++ 996 997 Constructor() 998 : initializer1(), 999 initializer2() 1000 1001 * ``BCIS_BeforeComma`` (in configuration: ``BeforeComma``) 1002 Break constructor initializers before the colon and commas, and align 1003 the commas with the colon. 1004 1005 .. code-block:: c++ 1006 1007 Constructor() 1008 : initializer1() 1009 , initializer2() 1010 1011 * ``BCIS_AfterColon`` (in configuration: ``AfterColon``) 1012 Break constructor initializers after the colon and commas. 1013 1014 .. code-block:: c++ 1015 1016 Constructor() : 1017 initializer1(), 1018 initializer2() 1019 1020 1021 1022**BreakStringLiterals** (``bool``) 1023 Allow breaking string literals when formatting. 1024 1025**ColumnLimit** (``unsigned``) 1026 The column limit. 1027 1028 A column limit of ``0`` means that there is no column limit. In this case, 1029 clang-format will respect the input's line breaking decisions within 1030 statements unless they contradict other rules. 1031 1032**CommentPragmas** (``std::string``) 1033 A regular expression that describes comments with special meaning, 1034 which should not be split into lines or otherwise changed. 1035 1036 .. code-block:: c++ 1037 1038 // CommentPragmas: '^ FOOBAR pragma:' 1039 // Will leave the following line unaffected 1040 #include <vector> // FOOBAR pragma: keep 1041 1042**CompactNamespaces** (``bool``) 1043 If ``true``, consecutive namespace declarations will be on the same 1044 line. If ``false``, each namespace is declared on a new line. 1045 1046 .. code-block:: c++ 1047 1048 true: 1049 namespace Foo { namespace Bar { 1050 }} 1051 1052 false: 1053 namespace Foo { 1054 namespace Bar { 1055 } 1056 } 1057 1058 If it does not fit on a single line, the overflowing namespaces get 1059 wrapped: 1060 1061 .. code-block:: c++ 1062 1063 namespace Foo { namespace Bar { 1064 namespace Extra { 1065 }}} 1066 1067**ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``) 1068 If the constructor initializers don't fit on a line, put each 1069 initializer on its own line. 1070 1071 .. code-block:: c++ 1072 1073 true: 1074 SomeClass::Constructor() 1075 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1076 return 0; 1077 } 1078 1079 false: 1080 SomeClass::Constructor() 1081 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), 1082 aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1083 return 0; 1084 } 1085 1086**ConstructorInitializerIndentWidth** (``unsigned``) 1087 The number of characters to use for indentation of constructor 1088 initializer lists. 1089 1090**ContinuationIndentWidth** (``unsigned``) 1091 Indent width for line continuations. 1092 1093 .. code-block:: c++ 1094 1095 ContinuationIndentWidth: 2 1096 1097 int i = // VeryVeryVeryVeryVeryLongComment 1098 longFunction( // Again a long comment 1099 arg); 1100 1101**Cpp11BracedListStyle** (``bool``) 1102 If ``true``, format braced lists as best suited for C++11 braced 1103 lists. 1104 1105 Important differences: 1106 - No spaces inside the braced list. 1107 - No line break before the closing brace. 1108 - Indentation with the continuation indent, not with the block indent. 1109 1110 Fundamentally, C++11 braced lists are formatted exactly like function 1111 calls would be formatted in their place. If the braced list follows a name 1112 (e.g. a type or variable name), clang-format formats as if the ``{}`` were 1113 the parentheses of a function call with that name. If there is no name, 1114 a zero-length name is assumed. 1115 1116 .. code-block:: c++ 1117 1118 true: false: 1119 vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 }; 1120 vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} }; 1121 f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]); 1122 new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 }; 1123 1124**DerivePointerAlignment** (``bool``) 1125 If ``true``, analyze the formatted file for the most common 1126 alignment of ``&`` and ``*``. 1127 Pointer and reference alignment styles are going to be updated according 1128 to the preferences found in the file. 1129 ``PointerAlignment`` is then used only as fallback. 1130 1131**DisableFormat** (``bool``) 1132 Disables formatting completely. 1133 1134**ExperimentalAutoDetectBinPacking** (``bool``) 1135 If ``true``, clang-format detects whether function calls and 1136 definitions are formatted with one parameter per line. 1137 1138 Each call can be bin-packed, one-per-line or inconclusive. If it is 1139 inconclusive, e.g. completely on one line, but a decision needs to be 1140 made, clang-format analyzes whether there are other bin-packed cases in 1141 the input file and act accordingly. 1142 1143 NOTE: This is an experimental flag, that might go away or be renamed. Do 1144 not use this in config files, etc. Use at your own risk. 1145 1146**FixNamespaceComments** (``bool``) 1147 If ``true``, clang-format adds missing namespace end comments and 1148 fixes invalid existing ones. 1149 1150 .. code-block:: c++ 1151 1152 true: false: 1153 namespace a { vs. namespace a { 1154 foo(); foo(); 1155 } // namespace a; } 1156 1157**ForEachMacros** (``std::vector<std::string>``) 1158 A vector of macros that should be interpreted as foreach loops 1159 instead of as function calls. 1160 1161 These are expected to be macros of the form: 1162 1163 .. code-block:: c++ 1164 1165 FOREACH(<variable-declaration>, ...) 1166 <loop-body> 1167 1168 In the .clang-format configuration file, this can be configured like: 1169 1170 .. code-block:: yaml 1171 1172 ForEachMacros: ['RANGES_FOR', 'FOREACH'] 1173 1174 For example: BOOST_FOREACH. 1175 1176**IncludeBlocks** (``IncludeBlocksStyle``) 1177 Dependent on the value, multiple ``#include`` blocks can be sorted 1178 as one and divided based on category. 1179 1180 Possible values: 1181 1182 * ``IBS_Preserve`` (in configuration: ``Preserve``) 1183 Sort each ``#include`` block separately. 1184 1185 .. code-block:: c++ 1186 1187 #include "b.h" into #include "b.h" 1188 1189 #include <lib/main.h> #include "a.h" 1190 #include "a.h" #include <lib/main.h> 1191 1192 * ``IBS_Merge`` (in configuration: ``Merge``) 1193 Merge multiple ``#include`` blocks together and sort as one. 1194 1195 .. code-block:: c++ 1196 1197 #include "b.h" into #include "a.h" 1198 #include "b.h" 1199 #include <lib/main.h> #include <lib/main.h> 1200 #include "a.h" 1201 1202 * ``IBS_Regroup`` (in configuration: ``Regroup``) 1203 Merge multiple ``#include`` blocks together and sort as one. 1204 Then split into groups based on category priority. See 1205 ``IncludeCategories``. 1206 1207 .. code-block:: c++ 1208 1209 #include "b.h" into #include "a.h" 1210 #include "b.h" 1211 #include <lib/main.h> 1212 #include "a.h" #include <lib/main.h> 1213 1214 1215 1216**IncludeCategories** (``std::vector<IncludeCategory>``) 1217 Regular expressions denoting the different ``#include`` categories 1218 used for ordering ``#includes``. 1219 1220 These regular expressions are matched against the filename of an include 1221 (including the <> or "") in order. The value belonging to the first 1222 matching regular expression is assigned and ``#includes`` are sorted first 1223 according to increasing category number and then alphabetically within 1224 each category. 1225 1226 If none of the regular expressions match, INT_MAX is assigned as 1227 category. The main header for a source file automatically gets category 0. 1228 so that it is generally kept at the beginning of the ``#includes`` 1229 (http://llvm.org/docs/CodingStandards.html#include-style). However, you 1230 can also assign negative priorities if you have certain headers that 1231 always need to be first. 1232 1233 To configure this in the .clang-format file, use: 1234 1235 .. code-block:: yaml 1236 1237 IncludeCategories: 1238 - Regex: '^"(llvm|llvm-c|clang|clang-c)/' 1239 Priority: 2 1240 - Regex: '^(<|"(gtest|gmock|isl|json)/)' 1241 Priority: 3 1242 - Regex: '.*' 1243 Priority: 1 1244 1245**IncludeIsMainRegex** (``std::string``) 1246 Specify a regular expression of suffixes that are allowed in the 1247 file-to-main-include mapping. 1248 1249 When guessing whether a #include is the "main" include (to assign 1250 category 0, see above), use this regex of allowed suffixes to the header 1251 stem. A partial match is done, so that: 1252 - "" means "arbitrary suffix" 1253 - "$" means "no suffix" 1254 1255 For example, if configured to "(_test)?$", then a header a.h would be seen 1256 as the "main" include in both a.cc and a_test.cc. 1257 1258**IndentCaseLabels** (``bool``) 1259 Indent case labels one level from the switch statement. 1260 1261 When ``false``, use the same indentation level as for the switch statement. 1262 Switch statement body is always indented one level more than case labels. 1263 1264 .. code-block:: c++ 1265 1266 false: true: 1267 switch (fool) { vs. switch (fool) { 1268 case 1: case 1: 1269 bar(); bar(); 1270 break; break; 1271 default: default: 1272 plop(); plop(); 1273 } } 1274 1275**IndentPPDirectives** (``PPDirectiveIndentStyle``) 1276 The preprocessor directive indenting style to use. 1277 1278 Possible values: 1279 1280 * ``PPDIS_None`` (in configuration: ``None``) 1281 Does not indent any directives. 1282 1283 .. code-block:: c++ 1284 1285 #if FOO 1286 #if BAR 1287 #include <foo> 1288 #endif 1289 #endif 1290 1291 * ``PPDIS_AfterHash`` (in configuration: ``AfterHash``) 1292 Indents directives after the hash. 1293 1294 .. code-block:: c++ 1295 1296 #if FOO 1297 # if BAR 1298 # include <foo> 1299 # endif 1300 #endif 1301 1302 1303 1304**IndentWidth** (``unsigned``) 1305 The number of columns to use for indentation. 1306 1307 .. code-block:: c++ 1308 1309 IndentWidth: 3 1310 1311 void f() { 1312 someFunction(); 1313 if (true, false) { 1314 f(); 1315 } 1316 } 1317 1318**IndentWrappedFunctionNames** (``bool``) 1319 Indent if a function definition or declaration is wrapped after the 1320 type. 1321 1322 .. code-block:: c++ 1323 1324 true: 1325 LoooooooooooooooooooooooooooooooooooooooongReturnType 1326 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1327 1328 false: 1329 LoooooooooooooooooooooooooooooooooooooooongReturnType 1330 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1331 1332**JavaScriptQuotes** (``JavaScriptQuoteStyle``) 1333 The JavaScriptQuoteStyle to use for JavaScript strings. 1334 1335 Possible values: 1336 1337 * ``JSQS_Leave`` (in configuration: ``Leave``) 1338 Leave string quotes as they are. 1339 1340 .. code-block:: js 1341 1342 string1 = "foo"; 1343 string2 = 'bar'; 1344 1345 * ``JSQS_Single`` (in configuration: ``Single``) 1346 Always use single quotes. 1347 1348 .. code-block:: js 1349 1350 string1 = 'foo'; 1351 string2 = 'bar'; 1352 1353 * ``JSQS_Double`` (in configuration: ``Double``) 1354 Always use double quotes. 1355 1356 .. code-block:: js 1357 1358 string1 = "foo"; 1359 string2 = "bar"; 1360 1361 1362 1363**JavaScriptWrapImports** (``bool``) 1364 Whether to wrap JavaScript import/export statements. 1365 1366 .. code-block:: js 1367 1368 true: 1369 import { 1370 VeryLongImportsAreAnnoying, 1371 VeryLongImportsAreAnnoying, 1372 VeryLongImportsAreAnnoying, 1373 } from 'some/module.js' 1374 1375 false: 1376 import {VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying,} from "some/module.js" 1377 1378**KeepEmptyLinesAtTheStartOfBlocks** (``bool``) 1379 If true, the empty line at the start of blocks is kept. 1380 1381 .. code-block:: c++ 1382 1383 true: false: 1384 if (foo) { vs. if (foo) { 1385 bar(); 1386 bar(); } 1387 } 1388 1389**Language** (``LanguageKind``) 1390 Language, this format style is targeted at. 1391 1392 Possible values: 1393 1394 * ``LK_None`` (in configuration: ``None``) 1395 Do not use. 1396 1397 * ``LK_Cpp`` (in configuration: ``Cpp``) 1398 Should be used for C, C++. 1399 1400 * ``LK_Java`` (in configuration: ``Java``) 1401 Should be used for Java. 1402 1403 * ``LK_JavaScript`` (in configuration: ``JavaScript``) 1404 Should be used for JavaScript. 1405 1406 * ``LK_ObjC`` (in configuration: ``ObjC``) 1407 Should be used for Objective-C, Objective-C++. 1408 1409 * ``LK_Proto`` (in configuration: ``Proto``) 1410 Should be used for Protocol Buffers 1411 (https://developers.google.com/protocol-buffers/). 1412 1413 * ``LK_TableGen`` (in configuration: ``TableGen``) 1414 Should be used for TableGen code. 1415 1416 * ``LK_TextProto`` (in configuration: ``TextProto``) 1417 Should be used for Protocol Buffer messages in text format 1418 (https://developers.google.com/protocol-buffers/). 1419 1420 1421 1422**MacroBlockBegin** (``std::string``) 1423 A regular expression matching macros that start a block. 1424 1425 .. code-block:: c++ 1426 1427 # With: 1428 MacroBlockBegin: "^NS_MAP_BEGIN|\ 1429 NS_TABLE_HEAD$" 1430 MacroBlockEnd: "^\ 1431 NS_MAP_END|\ 1432 NS_TABLE_.*_END$" 1433 1434 NS_MAP_BEGIN 1435 foo(); 1436 NS_MAP_END 1437 1438 NS_TABLE_HEAD 1439 bar(); 1440 NS_TABLE_FOO_END 1441 1442 # Without: 1443 NS_MAP_BEGIN 1444 foo(); 1445 NS_MAP_END 1446 1447 NS_TABLE_HEAD 1448 bar(); 1449 NS_TABLE_FOO_END 1450 1451**MacroBlockEnd** (``std::string``) 1452 A regular expression matching macros that end a block. 1453 1454**MaxEmptyLinesToKeep** (``unsigned``) 1455 The maximum number of consecutive empty lines to keep. 1456 1457 .. code-block:: c++ 1458 1459 MaxEmptyLinesToKeep: 1 vs. MaxEmptyLinesToKeep: 0 1460 int f() { int f() { 1461 int = 1; int i = 1; 1462 i = foo(); 1463 i = foo(); return i; 1464 } 1465 return i; 1466 } 1467 1468**NamespaceIndentation** (``NamespaceIndentationKind``) 1469 The indentation used for namespaces. 1470 1471 Possible values: 1472 1473 * ``NI_None`` (in configuration: ``None``) 1474 Don't indent in namespaces. 1475 1476 .. code-block:: c++ 1477 1478 namespace out { 1479 int i; 1480 namespace in { 1481 int i; 1482 } 1483 } 1484 1485 * ``NI_Inner`` (in configuration: ``Inner``) 1486 Indent only in inner namespaces (nested in other namespaces). 1487 1488 .. code-block:: c++ 1489 1490 namespace out { 1491 int i; 1492 namespace in { 1493 int i; 1494 } 1495 } 1496 1497 * ``NI_All`` (in configuration: ``All``) 1498 Indent in all namespaces. 1499 1500 .. code-block:: c++ 1501 1502 namespace out { 1503 int i; 1504 namespace in { 1505 int i; 1506 } 1507 } 1508 1509 1510 1511**ObjCBlockIndentWidth** (``unsigned``) 1512 The number of characters to use for indentation of ObjC blocks. 1513 1514 .. code-block:: objc 1515 1516 ObjCBlockIndentWidth: 4 1517 1518 [operation setCompletionBlock:^{ 1519 [self onOperationDone]; 1520 }]; 1521 1522**ObjCSpaceAfterProperty** (``bool``) 1523 Add a space after ``@property`` in Objective-C, i.e. use 1524 ``@property (readonly)`` instead of ``@property(readonly)``. 1525 1526**ObjCSpaceBeforeProtocolList** (``bool``) 1527 Add a space in front of an Objective-C protocol list, i.e. use 1528 ``Foo <Protocol>`` instead of ``Foo<Protocol>``. 1529 1530**PenaltyBreakAssignment** (``unsigned``) 1531 The penalty for breaking around an assignment operator. 1532 1533**PenaltyBreakBeforeFirstCallParameter** (``unsigned``) 1534 The penalty for breaking a function call after ``call(``. 1535 1536**PenaltyBreakComment** (``unsigned``) 1537 The penalty for each line break introduced inside a comment. 1538 1539**PenaltyBreakFirstLessLess** (``unsigned``) 1540 The penalty for breaking before the first ``<<``. 1541 1542**PenaltyBreakString** (``unsigned``) 1543 The penalty for each line break introduced inside a string literal. 1544 1545**PenaltyExcessCharacter** (``unsigned``) 1546 The penalty for each character outside of the column limit. 1547 1548**PenaltyReturnTypeOnItsOwnLine** (``unsigned``) 1549 Penalty for putting the return type of a function onto its own 1550 line. 1551 1552**PointerAlignment** (``PointerAlignmentStyle``) 1553 Pointer and reference alignment style. 1554 1555 Possible values: 1556 1557 * ``PAS_Left`` (in configuration: ``Left``) 1558 Align pointer to the left. 1559 1560 .. code-block:: c++ 1561 1562 int* a; 1563 1564 * ``PAS_Right`` (in configuration: ``Right``) 1565 Align pointer to the right. 1566 1567 .. code-block:: c++ 1568 1569 int *a; 1570 1571 * ``PAS_Middle`` (in configuration: ``Middle``) 1572 Align pointer in the middle. 1573 1574 .. code-block:: c++ 1575 1576 int * a; 1577 1578 1579 1580**RawStringFormats** (``std::vector<RawStringFormat>``) 1581 Defines hints for detecting supported languages code blocks in raw 1582 strings. 1583 1584 A raw string with a matching delimiter or a matching enclosing function 1585 name will be reformatted assuming the specified language based on the 1586 style for that language defined in the .clang-format file. If no style has 1587 been defined in the .clang-format file for the specific language, a 1588 predefined style given by 'BasedOnStyle' is used. If 'BasedOnStyle' is not 1589 found, the formatting is based on llvm style. A matching delimiter takes 1590 precedence over a matching enclosing function name for determining the 1591 language of the raw string contents. 1592 1593 If a canonical delimiter is specified, occurrences of other delimiters for 1594 the same language will be updated to the canonical if possible. 1595 1596 There should be at most one specification per language and each delimiter 1597 and enclosing function should not occur in multiple specifications. 1598 1599 To configure this in the .clang-format file, use: 1600 1601 .. code-block:: yaml 1602 1603 RawStringFormats: 1604 - Language: TextProto 1605 Delimiters: 1606 - 'pb' 1607 - 'proto' 1608 EnclosingFunctions: 1609 - 'PARSE_TEXT_PROTO' 1610 BasedOnStyle: google 1611 - Language: Cpp 1612 Delimiters: 1613 - 'cc' 1614 - 'cpp' 1615 BasedOnStyle: llvm 1616 CanonicalDelimiter: 'cc' 1617 1618**ReflowComments** (``bool``) 1619 If ``true``, clang-format will attempt to re-flow comments. 1620 1621 .. code-block:: c++ 1622 1623 false: 1624 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information 1625 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information */ 1626 1627 true: 1628 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 1629 // information 1630 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 1631 * information */ 1632 1633**SortIncludes** (``bool``) 1634 If ``true``, clang-format will sort ``#includes``. 1635 1636 .. code-block:: c++ 1637 1638 false: true: 1639 #include "b.h" vs. #include "a.h" 1640 #include "a.h" #include "b.h" 1641 1642**SortUsingDeclarations** (``bool``) 1643 If ``true``, clang-format will sort using declarations. 1644 1645 The order of using declarations is defined as follows: 1646 Split the strings by "::" and discard any initial empty strings. The last 1647 element of each list is a non-namespace name; all others are namespace 1648 names. Sort the lists of names lexicographically, where the sort order of 1649 individual names is that all non-namespace names come before all namespace 1650 names, and within those groups, names are in case-insensitive 1651 lexicographic order. 1652 1653 .. code-block:: c++ 1654 1655 false: true: 1656 using std::cout; vs. using std::cin; 1657 using std::cin; using std::cout; 1658 1659**SpaceAfterCStyleCast** (``bool``) 1660 If ``true``, a space is inserted after C style casts. 1661 1662 .. code-block:: c++ 1663 1664 true: false: 1665 (int)i; vs. (int) i; 1666 1667**SpaceAfterTemplateKeyword** (``bool``) 1668 If ``true``, a space will be inserted after the 'template' keyword. 1669 1670 .. code-block:: c++ 1671 1672 true: false: 1673 template <int> void foo(); vs. template<int> void foo(); 1674 1675**SpaceBeforeAssignmentOperators** (``bool``) 1676 If ``false``, spaces will be removed before assignment operators. 1677 1678 .. code-block:: c++ 1679 1680 true: false: 1681 int a = 5; vs. int a=5; 1682 a += 42 a+=42; 1683 1684**SpaceBeforeParens** (``SpaceBeforeParensOptions``) 1685 Defines in which cases to put a space before opening parentheses. 1686 1687 Possible values: 1688 1689 * ``SBPO_Never`` (in configuration: ``Never``) 1690 Never put a space before opening parentheses. 1691 1692 .. code-block:: c++ 1693 1694 void f() { 1695 if(true) { 1696 f(); 1697 } 1698 } 1699 1700 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``) 1701 Put a space before opening parentheses only after control statement 1702 keywords (``for/if/while...``). 1703 1704 .. code-block:: c++ 1705 1706 void f() { 1707 if (true) { 1708 f(); 1709 } 1710 } 1711 1712 * ``SBPO_Always`` (in configuration: ``Always``) 1713 Always put a space before opening parentheses, except when it's 1714 prohibited by the syntax rules (in function-like macro definitions) or 1715 when determined by other style rules (after unary operators, opening 1716 parentheses, etc.) 1717 1718 .. code-block:: c++ 1719 1720 void f () { 1721 if (true) { 1722 f (); 1723 } 1724 } 1725 1726 1727 1728**SpaceInEmptyParentheses** (``bool``) 1729 If ``true``, spaces may be inserted into ``()``. 1730 1731 .. code-block:: c++ 1732 1733 true: false: 1734 void f( ) { vs. void f() { 1735 int x[] = {foo( ), bar( )}; int x[] = {foo(), bar()}; 1736 if (true) { if (true) { 1737 f( ); f(); 1738 } } 1739 } } 1740 1741**SpacesBeforeTrailingComments** (``unsigned``) 1742 The number of spaces before trailing line comments 1743 (``//`` - comments). 1744 1745 This does not affect trailing block comments (``/*`` - comments) as 1746 those commonly have different usage patterns and a number of special 1747 cases. 1748 1749 .. code-block:: c++ 1750 1751 SpacesBeforeTrailingComments: 3 1752 void f() { 1753 if (true) { // foo1 1754 f(); // bar 1755 } // foo 1756 } 1757 1758**SpacesInAngles** (``bool``) 1759 If ``true``, spaces will be inserted after ``<`` and before ``>`` 1760 in template argument lists. 1761 1762 .. code-block:: c++ 1763 1764 true: false: 1765 static_cast< int >(arg); vs. static_cast<int>(arg); 1766 std::function< void(int) > fct; std::function<void(int)> fct; 1767 1768**SpacesInCStyleCastParentheses** (``bool``) 1769 If ``true``, spaces may be inserted into C style casts. 1770 1771 .. code-block:: c++ 1772 1773 true: false: 1774 x = ( int32 )y vs. x = (int32)y 1775 1776**SpacesInContainerLiterals** (``bool``) 1777 If ``true``, spaces are inserted inside container literals (e.g. 1778 ObjC and Javascript array and dict literals). 1779 1780 .. code-block:: js 1781 1782 true: false: 1783 var arr = [ 1, 2, 3 ]; vs. var arr = [1, 2, 3]; 1784 f({a : 1, b : 2, c : 3}); f({a: 1, b: 2, c: 3}); 1785 1786**SpacesInParentheses** (``bool``) 1787 If ``true``, spaces will be inserted after ``(`` and before ``)``. 1788 1789 .. code-block:: c++ 1790 1791 true: false: 1792 t f( Deleted & ) & = delete; vs. t f(Deleted &) & = delete; 1793 1794**SpacesInSquareBrackets** (``bool``) 1795 If ``true``, spaces will be inserted after ``[`` and before ``]``. 1796 Lambdas or unspecified size array declarations will not be affected. 1797 1798 .. code-block:: c++ 1799 1800 true: false: 1801 int a[ 5 ]; vs. int a[5]; 1802 std::unique_ptr<int[]> foo() {} // Won't be affected 1803 1804**Standard** (``LanguageStandard``) 1805 Format compatible with this standard, e.g. use ``A<A<int> >`` 1806 instead of ``A<A<int>>`` for ``LS_Cpp03``. 1807 1808 Possible values: 1809 1810 * ``LS_Cpp03`` (in configuration: ``Cpp03``) 1811 Use C++03-compatible syntax. 1812 1813 * ``LS_Cpp11`` (in configuration: ``Cpp11``) 1814 Use features of C++11, C++14 and C++1z (e.g. ``A<A<int>>`` instead of 1815 ``A<A<int> >``). 1816 1817 * ``LS_Auto`` (in configuration: ``Auto``) 1818 Automatic detection based on the input. 1819 1820 1821 1822**TabWidth** (``unsigned``) 1823 The number of columns used for tab stops. 1824 1825**UseTab** (``UseTabStyle``) 1826 The way to use tab characters in the resulting file. 1827 1828 Possible values: 1829 1830 * ``UT_Never`` (in configuration: ``Never``) 1831 Never use tab. 1832 1833 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``) 1834 Use tabs only for indentation. 1835 1836 * ``UT_ForContinuationAndIndentation`` (in configuration: ``ForContinuationAndIndentation``) 1837 Use tabs only for line continuation and indentation. 1838 1839 * ``UT_Always`` (in configuration: ``Always``) 1840 Use tabs whenever we need to fill whitespace that spans at least from 1841 one tab stop to the next one. 1842 1843 1844 1845.. END_FORMAT_STYLE_OPTIONS 1846 1847Adding additional style options 1848=============================== 1849 1850Each additional style option adds costs to the clang-format project. Some of 1851these costs affect the clang-format development itself, as we need to make 1852sure that any given combination of options work and that new features don't 1853break any of the existing options in any way. There are also costs for end users 1854as options become less discoverable and people have to think about and make a 1855decision on options they don't really care about. 1856 1857The goal of the clang-format project is more on the side of supporting a 1858limited set of styles really well as opposed to supporting every single style 1859used by a codebase somewhere in the wild. Of course, we do want to support all 1860major projects and thus have established the following bar for adding style 1861options. Each new style option must .. 1862 1863 * be used in a project of significant size (have dozens of contributors) 1864 * have a publicly accessible style guide 1865 * have a person willing to contribute and maintain patches 1866 1867Examples 1868======== 1869 1870A style similar to the `Linux Kernel style 1871<https://www.kernel.org/doc/Documentation/CodingStyle>`_: 1872 1873.. code-block:: yaml 1874 1875 BasedOnStyle: LLVM 1876 IndentWidth: 8 1877 UseTab: Always 1878 BreakBeforeBraces: Linux 1879 AllowShortIfStatementsOnASingleLine: false 1880 IndentCaseLabels: false 1881 1882The result is (imagine that tabs are used for indentation here): 1883 1884.. code-block:: c++ 1885 1886 void test() 1887 { 1888 switch (x) { 1889 case 0: 1890 case 1: 1891 do_something(); 1892 break; 1893 case 2: 1894 do_something_else(); 1895 break; 1896 default: 1897 break; 1898 } 1899 if (condition) 1900 do_something_completely_different(); 1901 1902 if (x == y) { 1903 q(); 1904 } else if (x > y) { 1905 w(); 1906 } else { 1907 r(); 1908 } 1909 } 1910 1911A style similar to the default Visual Studio formatting style: 1912 1913.. code-block:: yaml 1914 1915 UseTab: Never 1916 IndentWidth: 4 1917 BreakBeforeBraces: Allman 1918 AllowShortIfStatementsOnASingleLine: false 1919 IndentCaseLabels: false 1920 ColumnLimit: 0 1921 1922The result is: 1923 1924.. code-block:: c++ 1925 1926 void test() 1927 { 1928 switch (suffix) 1929 { 1930 case 0: 1931 case 1: 1932 do_something(); 1933 break; 1934 case 2: 1935 do_something_else(); 1936 break; 1937 default: 1938 break; 1939 } 1940 if (condition) 1941 do_somthing_completely_different(); 1942 1943 if (x == y) 1944 { 1945 q(); 1946 } 1947 else if (x > y) 1948 { 1949 w(); 1950 } 1951 else 1952 { 1953 r(); 1954 } 1955 } 1956