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 (interfaces, implementations...). 633 @autoreleasepool and @synchronized blocks are wrapped 634 according to `AfterControlStatement` flag. 635 636 * ``bool AfterStruct`` Wrap struct definitions. 637 638 .. code-block:: c++ 639 640 true: 641 struct foo 642 { 643 int x; 644 }; 645 646 false: 647 struct foo { 648 int x; 649 }; 650 651 * ``bool AfterUnion`` Wrap union definitions. 652 653 .. code-block:: c++ 654 655 true: 656 union foo 657 { 658 int x; 659 } 660 661 false: 662 union foo { 663 int x; 664 } 665 666 * ``bool AfterExternBlock`` Wrap extern blocks. 667 668 .. code-block:: c++ 669 670 true: 671 extern "C" 672 { 673 int foo(); 674 } 675 676 false: 677 extern "C" { 678 int foo(); 679 } 680 681 * ``bool BeforeCatch`` Wrap before ``catch``. 682 683 .. code-block:: c++ 684 685 true: 686 try { 687 foo(); 688 } 689 catch () { 690 } 691 692 false: 693 try { 694 foo(); 695 } catch () { 696 } 697 698 * ``bool BeforeElse`` Wrap before ``else``. 699 700 .. code-block:: c++ 701 702 true: 703 if (foo()) { 704 } 705 else { 706 } 707 708 false: 709 if (foo()) { 710 } else { 711 } 712 713 * ``bool IndentBraces`` Indent the wrapped braces themselves. 714 715 * ``bool SplitEmptyFunction`` If ``false``, empty function body can be put on a single line. 716 This option is used only if the opening brace of the function has 717 already been wrapped, i.e. the `AfterFunction` brace wrapping mode is 718 set, and the function could/should not be put on a single line (as per 719 `AllowShortFunctionsOnASingleLine` and constructor formatting options). 720 721 .. code-block:: c++ 722 723 int f() vs. inf f() 724 {} { 725 } 726 727 * ``bool SplitEmptyRecord`` If ``false``, empty record (e.g. class, struct or union) body 728 can be put on a single line. This option is used only if the opening 729 brace of the record has already been wrapped, i.e. the `AfterClass` 730 (for classes) brace wrapping mode is set. 731 732 .. code-block:: c++ 733 734 class Foo vs. class Foo 735 {} { 736 } 737 738 * ``bool SplitEmptyNamespace`` If ``false``, empty namespace body can be put on a single line. 739 This option is used only if the opening brace of the namespace has 740 already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is 741 set. 742 743 .. code-block:: c++ 744 745 namespace Foo vs. namespace Foo 746 {} { 747 } 748 749 750**BreakAfterJavaFieldAnnotations** (``bool``) 751 Break after each annotation on a field in Java files. 752 753 .. code-block:: java 754 755 true: false: 756 @Partial vs. @Partial @Mock DataLoad loader; 757 @Mock 758 DataLoad loader; 759 760**BreakBeforeBinaryOperators** (``BinaryOperatorStyle``) 761 The way to wrap binary operators. 762 763 Possible values: 764 765 * ``BOS_None`` (in configuration: ``None``) 766 Break after operators. 767 768 .. code-block:: c++ 769 770 LooooooooooongType loooooooooooooooooooooongVariable = 771 someLooooooooooooooooongFunction(); 772 773 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + 774 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == 775 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && 776 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > 777 ccccccccccccccccccccccccccccccccccccccccc; 778 779 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``) 780 Break before operators that aren't assignments. 781 782 .. code-block:: c++ 783 784 LooooooooooongType loooooooooooooooooooooongVariable = 785 someLooooooooooooooooongFunction(); 786 787 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 788 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 789 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 790 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 791 > ccccccccccccccccccccccccccccccccccccccccc; 792 793 * ``BOS_All`` (in configuration: ``All``) 794 Break before operators. 795 796 .. code-block:: c++ 797 798 LooooooooooongType loooooooooooooooooooooongVariable 799 = someLooooooooooooooooongFunction(); 800 801 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 802 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 803 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 804 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 805 > ccccccccccccccccccccccccccccccccccccccccc; 806 807 808 809**BreakBeforeBraces** (``BraceBreakingStyle``) 810 The brace breaking style to use. 811 812 Possible values: 813 814 * ``BS_Attach`` (in configuration: ``Attach``) 815 Always attach braces to surrounding context. 816 817 .. code-block:: c++ 818 819 try { 820 foo(); 821 } catch () { 822 } 823 void foo() { bar(); } 824 class foo {}; 825 if (foo()) { 826 } else { 827 } 828 enum X : int { A, B }; 829 830 * ``BS_Linux`` (in configuration: ``Linux``) 831 Like ``Attach``, but break before braces on function, namespace and 832 class definitions. 833 834 .. code-block:: c++ 835 836 try { 837 foo(); 838 } catch () { 839 } 840 void foo() { bar(); } 841 class foo 842 { 843 }; 844 if (foo()) { 845 } else { 846 } 847 enum X : int { A, B }; 848 849 * ``BS_Mozilla`` (in configuration: ``Mozilla``) 850 Like ``Attach``, but break before braces on enum, function, and record 851 definitions. 852 853 .. code-block:: c++ 854 855 try { 856 foo(); 857 } catch () { 858 } 859 void foo() { bar(); } 860 class foo 861 { 862 }; 863 if (foo()) { 864 } else { 865 } 866 enum X : int { A, B }; 867 868 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``) 869 Like ``Attach``, but break before function definitions, ``catch``, and 870 ``else``. 871 872 .. code-block:: c++ 873 874 try { 875 foo(); 876 } catch () { 877 } 878 void foo() { bar(); } 879 class foo 880 { 881 }; 882 if (foo()) { 883 } else { 884 } 885 enum X : int 886 { 887 A, 888 B 889 }; 890 891 * ``BS_Allman`` (in configuration: ``Allman``) 892 Always break before braces. 893 894 .. code-block:: c++ 895 896 try { 897 foo(); 898 } 899 catch () { 900 } 901 void foo() { bar(); } 902 class foo { 903 }; 904 if (foo()) { 905 } 906 else { 907 } 908 enum X : int { A, B }; 909 910 * ``BS_GNU`` (in configuration: ``GNU``) 911 Always break before braces and add an extra level of indentation to 912 braces of control statements, not to those of class, function 913 or other definitions. 914 915 .. code-block:: c++ 916 917 try 918 { 919 foo(); 920 } 921 catch () 922 { 923 } 924 void foo() { bar(); } 925 class foo 926 { 927 }; 928 if (foo()) 929 { 930 } 931 else 932 { 933 } 934 enum X : int 935 { 936 A, 937 B 938 }; 939 940 * ``BS_WebKit`` (in configuration: ``WebKit``) 941 Like ``Attach``, but break before functions. 942 943 .. code-block:: c++ 944 945 try { 946 foo(); 947 } catch () { 948 } 949 void foo() { bar(); } 950 class foo { 951 }; 952 if (foo()) { 953 } else { 954 } 955 enum X : int { A, B }; 956 957 * ``BS_Custom`` (in configuration: ``Custom``) 958 Configure each individual brace in `BraceWrapping`. 959 960 961 962**BreakBeforeInheritanceComma** (``bool``) 963 If ``true``, in the class inheritance expression clang-format will 964 break before ``:`` and ``,`` if there is multiple inheritance. 965 966 .. code-block:: c++ 967 968 true: false: 969 class MyClass vs. class MyClass : public X, public Y { 970 : public X }; 971 , public Y { 972 }; 973 974**BreakBeforeTernaryOperators** (``bool``) 975 If ``true``, ternary operators will be placed after line breaks. 976 977 .. code-block:: c++ 978 979 true: 980 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription 981 ? firstValue 982 : SecondValueVeryVeryVeryVeryLong; 983 984 false: 985 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription ? 986 firstValue : 987 SecondValueVeryVeryVeryVeryLong; 988 989**BreakConstructorInitializers** (``BreakConstructorInitializersStyle``) 990 The constructor initializers style to use. 991 992 Possible values: 993 994 * ``BCIS_BeforeColon`` (in configuration: ``BeforeColon``) 995 Break constructor initializers before the colon and after the commas. 996 997 .. code-block:: c++ 998 999 Constructor() 1000 : initializer1(), 1001 initializer2() 1002 1003 * ``BCIS_BeforeComma`` (in configuration: ``BeforeComma``) 1004 Break constructor initializers before the colon and commas, and align 1005 the commas with the colon. 1006 1007 .. code-block:: c++ 1008 1009 Constructor() 1010 : initializer1() 1011 , initializer2() 1012 1013 * ``BCIS_AfterColon`` (in configuration: ``AfterColon``) 1014 Break constructor initializers after the colon and commas. 1015 1016 .. code-block:: c++ 1017 1018 Constructor() : 1019 initializer1(), 1020 initializer2() 1021 1022 1023 1024**BreakStringLiterals** (``bool``) 1025 Allow breaking string literals when formatting. 1026 1027**ColumnLimit** (``unsigned``) 1028 The column limit. 1029 1030 A column limit of ``0`` means that there is no column limit. In this case, 1031 clang-format will respect the input's line breaking decisions within 1032 statements unless they contradict other rules. 1033 1034**CommentPragmas** (``std::string``) 1035 A regular expression that describes comments with special meaning, 1036 which should not be split into lines or otherwise changed. 1037 1038 .. code-block:: c++ 1039 1040 // CommentPragmas: '^ FOOBAR pragma:' 1041 // Will leave the following line unaffected 1042 #include <vector> // FOOBAR pragma: keep 1043 1044**CompactNamespaces** (``bool``) 1045 If ``true``, consecutive namespace declarations will be on the same 1046 line. If ``false``, each namespace is declared on a new line. 1047 1048 .. code-block:: c++ 1049 1050 true: 1051 namespace Foo { namespace Bar { 1052 }} 1053 1054 false: 1055 namespace Foo { 1056 namespace Bar { 1057 } 1058 } 1059 1060 If it does not fit on a single line, the overflowing namespaces get 1061 wrapped: 1062 1063 .. code-block:: c++ 1064 1065 namespace Foo { namespace Bar { 1066 namespace Extra { 1067 }}} 1068 1069**ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``) 1070 If the constructor initializers don't fit on a line, put each 1071 initializer on its own line. 1072 1073 .. code-block:: c++ 1074 1075 true: 1076 SomeClass::Constructor() 1077 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1078 return 0; 1079 } 1080 1081 false: 1082 SomeClass::Constructor() 1083 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), 1084 aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1085 return 0; 1086 } 1087 1088**ConstructorInitializerIndentWidth** (``unsigned``) 1089 The number of characters to use for indentation of constructor 1090 initializer lists. 1091 1092**ContinuationIndentWidth** (``unsigned``) 1093 Indent width for line continuations. 1094 1095 .. code-block:: c++ 1096 1097 ContinuationIndentWidth: 2 1098 1099 int i = // VeryVeryVeryVeryVeryLongComment 1100 longFunction( // Again a long comment 1101 arg); 1102 1103**Cpp11BracedListStyle** (``bool``) 1104 If ``true``, format braced lists as best suited for C++11 braced 1105 lists. 1106 1107 Important differences: 1108 - No spaces inside the braced list. 1109 - No line break before the closing brace. 1110 - Indentation with the continuation indent, not with the block indent. 1111 1112 Fundamentally, C++11 braced lists are formatted exactly like function 1113 calls would be formatted in their place. If the braced list follows a name 1114 (e.g. a type or variable name), clang-format formats as if the ``{}`` were 1115 the parentheses of a function call with that name. If there is no name, 1116 a zero-length name is assumed. 1117 1118 .. code-block:: c++ 1119 1120 true: false: 1121 vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 }; 1122 vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} }; 1123 f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]); 1124 new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 }; 1125 1126**DerivePointerAlignment** (``bool``) 1127 If ``true``, analyze the formatted file for the most common 1128 alignment of ``&`` and ``*``. 1129 Pointer and reference alignment styles are going to be updated according 1130 to the preferences found in the file. 1131 ``PointerAlignment`` is then used only as fallback. 1132 1133**DisableFormat** (``bool``) 1134 Disables formatting completely. 1135 1136**ExperimentalAutoDetectBinPacking** (``bool``) 1137 If ``true``, clang-format detects whether function calls and 1138 definitions are formatted with one parameter per line. 1139 1140 Each call can be bin-packed, one-per-line or inconclusive. If it is 1141 inconclusive, e.g. completely on one line, but a decision needs to be 1142 made, clang-format analyzes whether there are other bin-packed cases in 1143 the input file and act accordingly. 1144 1145 NOTE: This is an experimental flag, that might go away or be renamed. Do 1146 not use this in config files, etc. Use at your own risk. 1147 1148**FixNamespaceComments** (``bool``) 1149 If ``true``, clang-format adds missing namespace end comments and 1150 fixes invalid existing ones. 1151 1152 .. code-block:: c++ 1153 1154 true: false: 1155 namespace a { vs. namespace a { 1156 foo(); foo(); 1157 } // namespace a; } 1158 1159**ForEachMacros** (``std::vector<std::string>``) 1160 A vector of macros that should be interpreted as foreach loops 1161 instead of as function calls. 1162 1163 These are expected to be macros of the form: 1164 1165 .. code-block:: c++ 1166 1167 FOREACH(<variable-declaration>, ...) 1168 <loop-body> 1169 1170 In the .clang-format configuration file, this can be configured like: 1171 1172 .. code-block:: yaml 1173 1174 ForEachMacros: ['RANGES_FOR', 'FOREACH'] 1175 1176 For example: BOOST_FOREACH. 1177 1178**IncludeBlocks** (``IncludeBlocksStyle``) 1179 Dependent on the value, multiple ``#include`` blocks can be sorted 1180 as one and divided based on category. 1181 1182 Possible values: 1183 1184 * ``IBS_Preserve`` (in configuration: ``Preserve``) 1185 Sort each ``#include`` block separately. 1186 1187 .. code-block:: c++ 1188 1189 #include "b.h" into #include "b.h" 1190 1191 #include <lib/main.h> #include "a.h" 1192 #include "a.h" #include <lib/main.h> 1193 1194 * ``IBS_Merge`` (in configuration: ``Merge``) 1195 Merge multiple ``#include`` blocks together and sort as one. 1196 1197 .. code-block:: c++ 1198 1199 #include "b.h" into #include "a.h" 1200 #include "b.h" 1201 #include <lib/main.h> #include <lib/main.h> 1202 #include "a.h" 1203 1204 * ``IBS_Regroup`` (in configuration: ``Regroup``) 1205 Merge multiple ``#include`` blocks together and sort as one. 1206 Then split into groups based on category priority. See 1207 ``IncludeCategories``. 1208 1209 .. code-block:: c++ 1210 1211 #include "b.h" into #include "a.h" 1212 #include "b.h" 1213 #include <lib/main.h> 1214 #include "a.h" #include <lib/main.h> 1215 1216 1217 1218**IncludeCategories** (``std::vector<IncludeCategory>``) 1219 Regular expressions denoting the different ``#include`` categories 1220 used for ordering ``#includes``. 1221 1222 These regular expressions are matched against the filename of an include 1223 (including the <> or "") in order. The value belonging to the first 1224 matching regular expression is assigned and ``#includes`` are sorted first 1225 according to increasing category number and then alphabetically within 1226 each category. 1227 1228 If none of the regular expressions match, INT_MAX is assigned as 1229 category. The main header for a source file automatically gets category 0. 1230 so that it is generally kept at the beginning of the ``#includes`` 1231 (http://llvm.org/docs/CodingStandards.html#include-style). However, you 1232 can also assign negative priorities if you have certain headers that 1233 always need to be first. 1234 1235 To configure this in the .clang-format file, use: 1236 1237 .. code-block:: yaml 1238 1239 IncludeCategories: 1240 - Regex: '^"(llvm|llvm-c|clang|clang-c)/' 1241 Priority: 2 1242 - Regex: '^(<|"(gtest|gmock|isl|json)/)' 1243 Priority: 3 1244 - Regex: '.*' 1245 Priority: 1 1246 1247**IncludeIsMainRegex** (``std::string``) 1248 Specify a regular expression of suffixes that are allowed in the 1249 file-to-main-include mapping. 1250 1251 When guessing whether a #include is the "main" include (to assign 1252 category 0, see above), use this regex of allowed suffixes to the header 1253 stem. A partial match is done, so that: 1254 - "" means "arbitrary suffix" 1255 - "$" means "no suffix" 1256 1257 For example, if configured to "(_test)?$", then a header a.h would be seen 1258 as the "main" include in both a.cc and a_test.cc. 1259 1260**IndentCaseLabels** (``bool``) 1261 Indent case labels one level from the switch statement. 1262 1263 When ``false``, use the same indentation level as for the switch statement. 1264 Switch statement body is always indented one level more than case labels. 1265 1266 .. code-block:: c++ 1267 1268 false: true: 1269 switch (fool) { vs. switch (fool) { 1270 case 1: case 1: 1271 bar(); bar(); 1272 break; break; 1273 default: default: 1274 plop(); plop(); 1275 } } 1276 1277**IndentPPDirectives** (``PPDirectiveIndentStyle``) 1278 The preprocessor directive indenting style to use. 1279 1280 Possible values: 1281 1282 * ``PPDIS_None`` (in configuration: ``None``) 1283 Does not indent any directives. 1284 1285 .. code-block:: c++ 1286 1287 #if FOO 1288 #if BAR 1289 #include <foo> 1290 #endif 1291 #endif 1292 1293 * ``PPDIS_AfterHash`` (in configuration: ``AfterHash``) 1294 Indents directives after the hash. 1295 1296 .. code-block:: c++ 1297 1298 #if FOO 1299 # if BAR 1300 # include <foo> 1301 # endif 1302 #endif 1303 1304 1305 1306**IndentWidth** (``unsigned``) 1307 The number of columns to use for indentation. 1308 1309 .. code-block:: c++ 1310 1311 IndentWidth: 3 1312 1313 void f() { 1314 someFunction(); 1315 if (true, false) { 1316 f(); 1317 } 1318 } 1319 1320**IndentWrappedFunctionNames** (``bool``) 1321 Indent if a function definition or declaration is wrapped after the 1322 type. 1323 1324 .. code-block:: c++ 1325 1326 true: 1327 LoooooooooooooooooooooooooooooooooooooooongReturnType 1328 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1329 1330 false: 1331 LoooooooooooooooooooooooooooooooooooooooongReturnType 1332 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1333 1334**JavaScriptQuotes** (``JavaScriptQuoteStyle``) 1335 The JavaScriptQuoteStyle to use for JavaScript strings. 1336 1337 Possible values: 1338 1339 * ``JSQS_Leave`` (in configuration: ``Leave``) 1340 Leave string quotes as they are. 1341 1342 .. code-block:: js 1343 1344 string1 = "foo"; 1345 string2 = 'bar'; 1346 1347 * ``JSQS_Single`` (in configuration: ``Single``) 1348 Always use single quotes. 1349 1350 .. code-block:: js 1351 1352 string1 = 'foo'; 1353 string2 = 'bar'; 1354 1355 * ``JSQS_Double`` (in configuration: ``Double``) 1356 Always use double quotes. 1357 1358 .. code-block:: js 1359 1360 string1 = "foo"; 1361 string2 = "bar"; 1362 1363 1364 1365**JavaScriptWrapImports** (``bool``) 1366 Whether to wrap JavaScript import/export statements. 1367 1368 .. code-block:: js 1369 1370 true: 1371 import { 1372 VeryLongImportsAreAnnoying, 1373 VeryLongImportsAreAnnoying, 1374 VeryLongImportsAreAnnoying, 1375 } from 'some/module.js' 1376 1377 false: 1378 import {VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying,} from "some/module.js" 1379 1380**KeepEmptyLinesAtTheStartOfBlocks** (``bool``) 1381 If true, the empty line at the start of blocks is kept. 1382 1383 .. code-block:: c++ 1384 1385 true: false: 1386 if (foo) { vs. if (foo) { 1387 bar(); 1388 bar(); } 1389 } 1390 1391**Language** (``LanguageKind``) 1392 Language, this format style is targeted at. 1393 1394 Possible values: 1395 1396 * ``LK_None`` (in configuration: ``None``) 1397 Do not use. 1398 1399 * ``LK_Cpp`` (in configuration: ``Cpp``) 1400 Should be used for C, C++. 1401 1402 * ``LK_Java`` (in configuration: ``Java``) 1403 Should be used for Java. 1404 1405 * ``LK_JavaScript`` (in configuration: ``JavaScript``) 1406 Should be used for JavaScript. 1407 1408 * ``LK_ObjC`` (in configuration: ``ObjC``) 1409 Should be used for Objective-C, Objective-C++. 1410 1411 * ``LK_Proto`` (in configuration: ``Proto``) 1412 Should be used for Protocol Buffers 1413 (https://developers.google.com/protocol-buffers/). 1414 1415 * ``LK_TableGen`` (in configuration: ``TableGen``) 1416 Should be used for TableGen code. 1417 1418 * ``LK_TextProto`` (in configuration: ``TextProto``) 1419 Should be used for Protocol Buffer messages in text format 1420 (https://developers.google.com/protocol-buffers/). 1421 1422 1423 1424**MacroBlockBegin** (``std::string``) 1425 A regular expression matching macros that start a block. 1426 1427 .. code-block:: c++ 1428 1429 # With: 1430 MacroBlockBegin: "^NS_MAP_BEGIN|\ 1431 NS_TABLE_HEAD$" 1432 MacroBlockEnd: "^\ 1433 NS_MAP_END|\ 1434 NS_TABLE_.*_END$" 1435 1436 NS_MAP_BEGIN 1437 foo(); 1438 NS_MAP_END 1439 1440 NS_TABLE_HEAD 1441 bar(); 1442 NS_TABLE_FOO_END 1443 1444 # Without: 1445 NS_MAP_BEGIN 1446 foo(); 1447 NS_MAP_END 1448 1449 NS_TABLE_HEAD 1450 bar(); 1451 NS_TABLE_FOO_END 1452 1453**MacroBlockEnd** (``std::string``) 1454 A regular expression matching macros that end a block. 1455 1456**MaxEmptyLinesToKeep** (``unsigned``) 1457 The maximum number of consecutive empty lines to keep. 1458 1459 .. code-block:: c++ 1460 1461 MaxEmptyLinesToKeep: 1 vs. MaxEmptyLinesToKeep: 0 1462 int f() { int f() { 1463 int = 1; int i = 1; 1464 i = foo(); 1465 i = foo(); return i; 1466 } 1467 return i; 1468 } 1469 1470**NamespaceIndentation** (``NamespaceIndentationKind``) 1471 The indentation used for namespaces. 1472 1473 Possible values: 1474 1475 * ``NI_None`` (in configuration: ``None``) 1476 Don't indent in namespaces. 1477 1478 .. code-block:: c++ 1479 1480 namespace out { 1481 int i; 1482 namespace in { 1483 int i; 1484 } 1485 } 1486 1487 * ``NI_Inner`` (in configuration: ``Inner``) 1488 Indent only in inner namespaces (nested in other namespaces). 1489 1490 .. code-block:: c++ 1491 1492 namespace out { 1493 int i; 1494 namespace in { 1495 int i; 1496 } 1497 } 1498 1499 * ``NI_All`` (in configuration: ``All``) 1500 Indent in all namespaces. 1501 1502 .. code-block:: c++ 1503 1504 namespace out { 1505 int i; 1506 namespace in { 1507 int i; 1508 } 1509 } 1510 1511 1512 1513**ObjCBinPackProtocolList** (``BinPackStyle``) 1514 Controls bin-packing Objective-C protocol conformance list 1515 items into as few lines as possible when they go over ``ColumnLimit``. 1516 1517 If ``Auto`` (the default), delegates to the value in 1518 ``BinPackParameters``. If that is ``true``, bin-packs Objective-C 1519 protocol conformance list items into as few lines as possible 1520 whenever they go over ``ColumnLimit``. 1521 1522 If ``Always``, always bin-packs Objective-C protocol conformance 1523 list items into as few lines as possible whenever they go over 1524 ``ColumnLimit``. 1525 1526 If ``Never``, lays out Objective-C protocol conformance list items 1527 onto individual lines whenever they go over ``ColumnLimit``. 1528 1529 1530 .. code-block:: c++ 1531 1532 Always (or Auto, if BinPackParameters=true): 1533 @interface ccccccccccccc () < 1534 ccccccccccccc, ccccccccccccc, 1535 ccccccccccccc, ccccccccccccc> { 1536 } 1537 1538 Never (or Auto, if BinPackParameters=false): 1539 @interface ddddddddddddd () < 1540 ddddddddddddd, 1541 ddddddddddddd, 1542 ddddddddddddd, 1543 ddddddddddddd> { 1544 } 1545 1546 Possible values: 1547 1548 * ``BPS_Auto`` (in configuration: ``Auto``) 1549 Automatically determine parameter bin-packing behavior. 1550 1551 * ``BPS_Always`` (in configuration: ``Always``) 1552 Always bin-pack parameters. 1553 1554 * ``BPS_Never`` (in configuration: ``Never``) 1555 Never bin-pack parameters. 1556 1557 1558 1559**ObjCBlockIndentWidth** (``unsigned``) 1560 The number of characters to use for indentation of ObjC blocks. 1561 1562 .. code-block:: objc 1563 1564 ObjCBlockIndentWidth: 4 1565 1566 [operation setCompletionBlock:^{ 1567 [self onOperationDone]; 1568 }]; 1569 1570**ObjCSpaceAfterProperty** (``bool``) 1571 Add a space after ``@property`` in Objective-C, i.e. use 1572 ``@property (readonly)`` instead of ``@property(readonly)``. 1573 1574**ObjCSpaceBeforeProtocolList** (``bool``) 1575 Add a space in front of an Objective-C protocol list, i.e. use 1576 ``Foo <Protocol>`` instead of ``Foo<Protocol>``. 1577 1578**PenaltyBreakAssignment** (``unsigned``) 1579 The penalty for breaking around an assignment operator. 1580 1581**PenaltyBreakBeforeFirstCallParameter** (``unsigned``) 1582 The penalty for breaking a function call after ``call(``. 1583 1584**PenaltyBreakComment** (``unsigned``) 1585 The penalty for each line break introduced inside a comment. 1586 1587**PenaltyBreakFirstLessLess** (``unsigned``) 1588 The penalty for breaking before the first ``<<``. 1589 1590**PenaltyBreakString** (``unsigned``) 1591 The penalty for each line break introduced inside a string literal. 1592 1593**PenaltyExcessCharacter** (``unsigned``) 1594 The penalty for each character outside of the column limit. 1595 1596**PenaltyReturnTypeOnItsOwnLine** (``unsigned``) 1597 Penalty for putting the return type of a function onto its own 1598 line. 1599 1600**PointerAlignment** (``PointerAlignmentStyle``) 1601 Pointer and reference alignment style. 1602 1603 Possible values: 1604 1605 * ``PAS_Left`` (in configuration: ``Left``) 1606 Align pointer to the left. 1607 1608 .. code-block:: c++ 1609 1610 int* a; 1611 1612 * ``PAS_Right`` (in configuration: ``Right``) 1613 Align pointer to the right. 1614 1615 .. code-block:: c++ 1616 1617 int *a; 1618 1619 * ``PAS_Middle`` (in configuration: ``Middle``) 1620 Align pointer in the middle. 1621 1622 .. code-block:: c++ 1623 1624 int * a; 1625 1626 1627 1628**RawStringFormats** (``std::vector<RawStringFormat>``) 1629 Defines hints for detecting supported languages code blocks in raw 1630 strings. 1631 1632 A raw string with a matching delimiter or a matching enclosing function 1633 name will be reformatted assuming the specified language based on the 1634 style for that language defined in the .clang-format file. If no style has 1635 been defined in the .clang-format file for the specific language, a 1636 predefined style given by 'BasedOnStyle' is used. If 'BasedOnStyle' is not 1637 found, the formatting is based on llvm style. A matching delimiter takes 1638 precedence over a matching enclosing function name for determining the 1639 language of the raw string contents. 1640 1641 If a canonical delimiter is specified, occurrences of other delimiters for 1642 the same language will be updated to the canonical if possible. 1643 1644 There should be at most one specification per language and each delimiter 1645 and enclosing function should not occur in multiple specifications. 1646 1647 To configure this in the .clang-format file, use: 1648 1649 .. code-block:: yaml 1650 1651 RawStringFormats: 1652 - Language: TextProto 1653 Delimiters: 1654 - 'pb' 1655 - 'proto' 1656 EnclosingFunctions: 1657 - 'PARSE_TEXT_PROTO' 1658 BasedOnStyle: google 1659 - Language: Cpp 1660 Delimiters: 1661 - 'cc' 1662 - 'cpp' 1663 BasedOnStyle: llvm 1664 CanonicalDelimiter: 'cc' 1665 1666**ReflowComments** (``bool``) 1667 If ``true``, clang-format will attempt to re-flow comments. 1668 1669 .. code-block:: c++ 1670 1671 false: 1672 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information 1673 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information */ 1674 1675 true: 1676 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 1677 // information 1678 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 1679 * information */ 1680 1681**SortIncludes** (``bool``) 1682 If ``true``, clang-format will sort ``#includes``. 1683 1684 .. code-block:: c++ 1685 1686 false: true: 1687 #include "b.h" vs. #include "a.h" 1688 #include "a.h" #include "b.h" 1689 1690**SortUsingDeclarations** (``bool``) 1691 If ``true``, clang-format will sort using declarations. 1692 1693 The order of using declarations is defined as follows: 1694 Split the strings by "::" and discard any initial empty strings. The last 1695 element of each list is a non-namespace name; all others are namespace 1696 names. Sort the lists of names lexicographically, where the sort order of 1697 individual names is that all non-namespace names come before all namespace 1698 names, and within those groups, names are in case-insensitive 1699 lexicographic order. 1700 1701 .. code-block:: c++ 1702 1703 false: true: 1704 using std::cout; vs. using std::cin; 1705 using std::cin; using std::cout; 1706 1707**SpaceAfterCStyleCast** (``bool``) 1708 If ``true``, a space is inserted after C style casts. 1709 1710 .. code-block:: c++ 1711 1712 true: false: 1713 (int) i; vs. (int)i; 1714 1715**SpaceAfterTemplateKeyword** (``bool``) 1716 If ``true``, a space will be inserted after the 'template' keyword. 1717 1718 .. code-block:: c++ 1719 1720 true: false: 1721 template <int> void foo(); vs. template<int> void foo(); 1722 1723**SpaceBeforeAssignmentOperators** (``bool``) 1724 If ``false``, spaces will be removed before assignment operators. 1725 1726 .. code-block:: c++ 1727 1728 true: false: 1729 int a = 5; vs. int a=5; 1730 a += 42 a+=42; 1731 1732**SpaceBeforeCtorInitializerColon** (``bool``) 1733 If ``false``, spaces will be removed before constructor initializer 1734 colon. 1735 1736 .. code-block:: c++ 1737 1738 true: false: 1739 Foo::Foo() : a(a) {} Foo::Foo(): a(a) {} 1740 1741**SpaceBeforeInheritanceColon** (``bool``) 1742 If ``false``, spaces will be removed before inheritance colon. 1743 1744 .. code-block:: c++ 1745 1746 true: false: 1747 class Foo : Bar {} vs. class Foo: Bar {} 1748 1749**SpaceBeforeParens** (``SpaceBeforeParensOptions``) 1750 Defines in which cases to put a space before opening parentheses. 1751 1752 Possible values: 1753 1754 * ``SBPO_Never`` (in configuration: ``Never``) 1755 Never put a space before opening parentheses. 1756 1757 .. code-block:: c++ 1758 1759 void f() { 1760 if(true) { 1761 f(); 1762 } 1763 } 1764 1765 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``) 1766 Put a space before opening parentheses only after control statement 1767 keywords (``for/if/while...``). 1768 1769 .. code-block:: c++ 1770 1771 void f() { 1772 if (true) { 1773 f(); 1774 } 1775 } 1776 1777 * ``SBPO_Always`` (in configuration: ``Always``) 1778 Always put a space before opening parentheses, except when it's 1779 prohibited by the syntax rules (in function-like macro definitions) or 1780 when determined by other style rules (after unary operators, opening 1781 parentheses, etc.) 1782 1783 .. code-block:: c++ 1784 1785 void f () { 1786 if (true) { 1787 f (); 1788 } 1789 } 1790 1791 1792 1793**SpaceBeforeRangeBasedForLoopColon** (``bool``) 1794 If ``false``, spaces will be removed before range-based for loop 1795 colon. 1796 1797 .. code-block:: c++ 1798 1799 true: false: 1800 for (auto v : values) {} vs. for(auto v: values) {} 1801 1802**SpaceInEmptyParentheses** (``bool``) 1803 If ``true``, spaces may be inserted into ``()``. 1804 1805 .. code-block:: c++ 1806 1807 true: false: 1808 void f( ) { vs. void f() { 1809 int x[] = {foo( ), bar( )}; int x[] = {foo(), bar()}; 1810 if (true) { if (true) { 1811 f( ); f(); 1812 } } 1813 } } 1814 1815**SpacesBeforeTrailingComments** (``unsigned``) 1816 The number of spaces before trailing line comments 1817 (``//`` - comments). 1818 1819 This does not affect trailing block comments (``/*`` - comments) as 1820 those commonly have different usage patterns and a number of special 1821 cases. 1822 1823 .. code-block:: c++ 1824 1825 SpacesBeforeTrailingComments: 3 1826 void f() { 1827 if (true) { // foo1 1828 f(); // bar 1829 } // foo 1830 } 1831 1832**SpacesInAngles** (``bool``) 1833 If ``true``, spaces will be inserted after ``<`` and before ``>`` 1834 in template argument lists. 1835 1836 .. code-block:: c++ 1837 1838 true: false: 1839 static_cast< int >(arg); vs. static_cast<int>(arg); 1840 std::function< void(int) > fct; std::function<void(int)> fct; 1841 1842**SpacesInCStyleCastParentheses** (``bool``) 1843 If ``true``, spaces may be inserted into C style casts. 1844 1845 .. code-block:: c++ 1846 1847 true: false: 1848 x = ( int32 )y vs. x = (int32)y 1849 1850**SpacesInContainerLiterals** (``bool``) 1851 If ``true``, spaces are inserted inside container literals (e.g. 1852 ObjC and Javascript array and dict literals). 1853 1854 .. code-block:: js 1855 1856 true: false: 1857 var arr = [ 1, 2, 3 ]; vs. var arr = [1, 2, 3]; 1858 f({a : 1, b : 2, c : 3}); f({a: 1, b: 2, c: 3}); 1859 1860**SpacesInParentheses** (``bool``) 1861 If ``true``, spaces will be inserted after ``(`` and before ``)``. 1862 1863 .. code-block:: c++ 1864 1865 true: false: 1866 t f( Deleted & ) & = delete; vs. t f(Deleted &) & = delete; 1867 1868**SpacesInSquareBrackets** (``bool``) 1869 If ``true``, spaces will be inserted after ``[`` and before ``]``. 1870 Lambdas or unspecified size array declarations will not be affected. 1871 1872 .. code-block:: c++ 1873 1874 true: false: 1875 int a[ 5 ]; vs. int a[5]; 1876 std::unique_ptr<int[]> foo() {} // Won't be affected 1877 1878**Standard** (``LanguageStandard``) 1879 Format compatible with this standard, e.g. use ``A<A<int> >`` 1880 instead of ``A<A<int>>`` for ``LS_Cpp03``. 1881 1882 Possible values: 1883 1884 * ``LS_Cpp03`` (in configuration: ``Cpp03``) 1885 Use C++03-compatible syntax. 1886 1887 * ``LS_Cpp11`` (in configuration: ``Cpp11``) 1888 Use features of C++11, C++14 and C++1z (e.g. ``A<A<int>>`` instead of 1889 ``A<A<int> >``). 1890 1891 * ``LS_Auto`` (in configuration: ``Auto``) 1892 Automatic detection based on the input. 1893 1894 1895 1896**TabWidth** (``unsigned``) 1897 The number of columns used for tab stops. 1898 1899**UseTab** (``UseTabStyle``) 1900 The way to use tab characters in the resulting file. 1901 1902 Possible values: 1903 1904 * ``UT_Never`` (in configuration: ``Never``) 1905 Never use tab. 1906 1907 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``) 1908 Use tabs only for indentation. 1909 1910 * ``UT_ForContinuationAndIndentation`` (in configuration: ``ForContinuationAndIndentation``) 1911 Use tabs only for line continuation and indentation. 1912 1913 * ``UT_Always`` (in configuration: ``Always``) 1914 Use tabs whenever we need to fill whitespace that spans at least from 1915 one tab stop to the next one. 1916 1917 1918 1919.. END_FORMAT_STYLE_OPTIONS 1920 1921Adding additional style options 1922=============================== 1923 1924Each additional style option adds costs to the clang-format project. Some of 1925these costs affect the clang-format development itself, as we need to make 1926sure that any given combination of options work and that new features don't 1927break any of the existing options in any way. There are also costs for end users 1928as options become less discoverable and people have to think about and make a 1929decision on options they don't really care about. 1930 1931The goal of the clang-format project is more on the side of supporting a 1932limited set of styles really well as opposed to supporting every single style 1933used by a codebase somewhere in the wild. Of course, we do want to support all 1934major projects and thus have established the following bar for adding style 1935options. Each new style option must .. 1936 1937 * be used in a project of significant size (have dozens of contributors) 1938 * have a publicly accessible style guide 1939 * have a person willing to contribute and maintain patches 1940 1941Examples 1942======== 1943 1944A style similar to the `Linux Kernel style 1945<https://www.kernel.org/doc/Documentation/CodingStyle>`_: 1946 1947.. code-block:: yaml 1948 1949 BasedOnStyle: LLVM 1950 IndentWidth: 8 1951 UseTab: Always 1952 BreakBeforeBraces: Linux 1953 AllowShortIfStatementsOnASingleLine: false 1954 IndentCaseLabels: false 1955 1956The result is (imagine that tabs are used for indentation here): 1957 1958.. code-block:: c++ 1959 1960 void test() 1961 { 1962 switch (x) { 1963 case 0: 1964 case 1: 1965 do_something(); 1966 break; 1967 case 2: 1968 do_something_else(); 1969 break; 1970 default: 1971 break; 1972 } 1973 if (condition) 1974 do_something_completely_different(); 1975 1976 if (x == y) { 1977 q(); 1978 } else if (x > y) { 1979 w(); 1980 } else { 1981 r(); 1982 } 1983 } 1984 1985A style similar to the default Visual Studio formatting style: 1986 1987.. code-block:: yaml 1988 1989 UseTab: Never 1990 IndentWidth: 4 1991 BreakBeforeBraces: Allman 1992 AllowShortIfStatementsOnASingleLine: false 1993 IndentCaseLabels: false 1994 ColumnLimit: 0 1995 1996The result is: 1997 1998.. code-block:: c++ 1999 2000 void test() 2001 { 2002 switch (suffix) 2003 { 2004 case 0: 2005 case 1: 2006 do_something(); 2007 break; 2008 case 2: 2009 do_something_else(); 2010 break; 2011 default: 2012 break; 2013 } 2014 if (condition) 2015 do_somthing_completely_different(); 2016 2017 if (x == y) 2018 { 2019 q(); 2020 } 2021 else if (x > y) 2022 { 2023 w(); 2024 } 2025 else 2026 { 2027 r(); 2028 } 2029 } 2030