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, Microsoft) or 11create a custom 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 Language: CSharp 73 # Use 100 columns for C#. 74 ColumnLimit: 100 75 ... 76 77An easy way to get a valid ``.clang-format`` file containing all configuration 78options of a certain predefined style is: 79 80.. code-block:: console 81 82 clang-format -style=llvm -dump-config > .clang-format 83 84When specifying configuration in the ``-style=`` option, the same configuration 85is applied for all input files. The format of the configuration is: 86 87.. code-block:: console 88 89 -style='{key1: value1, key2: value2, ...}' 90 91 92Disabling Formatting on a Piece of Code 93======================================= 94 95Clang-format understands also special comments that switch formatting in a 96delimited range. The code between a comment ``// clang-format off`` or 97``/* clang-format off */`` up to a comment ``// clang-format on`` or 98``/* clang-format on */`` will not be formatted. The comments themselves 99will be formatted (aligned) normally. 100 101.. code-block:: c++ 102 103 int formatted_code; 104 // clang-format off 105 void unformatted_code ; 106 // clang-format on 107 void formatted_code_again; 108 109 110Configuring Style in Code 111========================= 112 113When using ``clang::format::reformat(...)`` functions, the format is specified 114by supplying the `clang::format::FormatStyle 115<https://clang.llvm.org/doxygen/structclang_1_1format_1_1FormatStyle.html>`_ 116structure. 117 118 119Configurable Format Style Options 120================================= 121 122This section lists the supported style options. Value type is specified for 123each option. For enumeration types possible values are specified both as a C++ 124enumeration member (with a prefix, e.g. ``LS_Auto``), and as a value usable in 125the configuration (without a prefix: ``Auto``). 126 127 128**BasedOnStyle** (``string``) 129 The style used for all options not specifically set in the configuration. 130 131 This option is supported only in the :program:`clang-format` configuration 132 (both within ``-style='{...}'`` and the ``.clang-format`` file). 133 134 Possible values: 135 136 * ``LLVM`` 137 A style complying with the `LLVM coding standards 138 <https://llvm.org/docs/CodingStandards.html>`_ 139 * ``Google`` 140 A style complying with `Google's C++ style guide 141 <https://google.github.io/styleguide/cppguide.html>`_ 142 * ``Chromium`` 143 A style complying with `Chromium's style guide 144 <https://www.chromium.org/developers/coding-style>`_ 145 * ``Mozilla`` 146 A style complying with `Mozilla's style guide 147 <https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style>`_ 148 * ``WebKit`` 149 A style complying with `WebKit's style guide 150 <https://www.webkit.org/coding/coding-style.html>`_ 151 * ``Microsoft`` 152 A style complying with `Microsoft's style guide 153 <https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference?view=vs-2017>`_ 154 155.. START_FORMAT_STYLE_OPTIONS 156 157**AccessModifierOffset** (``int``) 158 The extra indent or outdent of access modifiers, e.g. ``public:``. 159 160**AlignAfterOpenBracket** (``BracketAlignmentStyle``) 161 If ``true``, horizontally aligns arguments after an open bracket. 162 163 This applies to round brackets (parentheses), angle brackets and square 164 brackets. 165 166 Possible values: 167 168 * ``BAS_Align`` (in configuration: ``Align``) 169 Align parameters on the open bracket, e.g.: 170 171 .. code-block:: c++ 172 173 someLongFunction(argument1, 174 argument2); 175 176 * ``BAS_DontAlign`` (in configuration: ``DontAlign``) 177 Don't align, instead use ``ContinuationIndentWidth``, e.g.: 178 179 .. code-block:: c++ 180 181 someLongFunction(argument1, 182 argument2); 183 184 * ``BAS_AlwaysBreak`` (in configuration: ``AlwaysBreak``) 185 Always break after an open bracket, if the parameters don't fit 186 on a single line, e.g.: 187 188 .. code-block:: c++ 189 190 someLongFunction( 191 argument1, argument2); 192 193 194 195**AlignConsecutiveAssignments** (``bool``) 196 If ``true``, aligns consecutive assignments. 197 198 This will align the assignment operators of consecutive lines. This 199 will result in formattings like 200 201 .. code-block:: c++ 202 203 int aaaa = 12; 204 int b = 23; 205 int ccc = 23; 206 207**AlignConsecutiveDeclarations** (``bool``) 208 If ``true``, aligns consecutive declarations. 209 210 This will align the declaration names of consecutive lines. This 211 will result in formattings like 212 213 .. code-block:: c++ 214 215 int aaaa = 12; 216 float b = 23; 217 std::string ccc = 23; 218 219**AlignConsecutiveMacros** (``bool``) 220 If ``true``, aligns consecutive C/C++ preprocessor macros. 221 222 This will align C/C++ preprocessor macros of consecutive lines. 223 Will result in formattings like 224 225 .. code-block:: c++ 226 227 #define SHORT_NAME 42 228 #define LONGER_NAME 0x007f 229 #define EVEN_LONGER_NAME (2) 230 #define foo(x) (x * x) 231 #define bar(y, z) (y + z) 232 233**AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``) 234 Options for aligning backslashes in escaped newlines. 235 236 Possible values: 237 238 * ``ENAS_DontAlign`` (in configuration: ``DontAlign``) 239 Don't align escaped newlines. 240 241 .. code-block:: c++ 242 243 #define A \ 244 int aaaa; \ 245 int b; \ 246 int dddddddddd; 247 248 * ``ENAS_Left`` (in configuration: ``Left``) 249 Align escaped newlines as far left as possible. 250 251 .. code-block:: c++ 252 253 true: 254 #define A \ 255 int aaaa; \ 256 int b; \ 257 int dddddddddd; 258 259 false: 260 261 * ``ENAS_Right`` (in configuration: ``Right``) 262 Align escaped newlines in the right-most column. 263 264 .. code-block:: c++ 265 266 #define A \ 267 int aaaa; \ 268 int b; \ 269 int dddddddddd; 270 271 272 273**AlignOperands** (``bool``) 274 If ``true``, horizontally align operands of binary and ternary 275 expressions. 276 277 Specifically, this aligns operands of a single expression that needs to be 278 split over multiple lines, e.g.: 279 280 .. code-block:: c++ 281 282 int aaa = bbbbbbbbbbbbbbb + 283 ccccccccccccccc; 284 285**AlignTrailingComments** (``bool``) 286 If ``true``, aligns trailing comments. 287 288 .. code-block:: c++ 289 290 true: false: 291 int a; // My comment a vs. int a; // My comment a 292 int b = 2; // comment b int b = 2; // comment about b 293 294**AllowAllArgumentsOnNextLine** (``bool``) 295 If a function call or braced initializer list doesn't fit on a 296 line, allow putting all arguments onto the next line, even if 297 ``BinPackArguments`` is ``false``. 298 299 .. code-block:: c++ 300 301 true: 302 callFunction( 303 a, b, c, d); 304 305 false: 306 callFunction(a, 307 b, 308 c, 309 d); 310 311**AllowAllConstructorInitializersOnNextLine** (``bool``) 312 If a constructor definition with a member initializer list doesn't 313 fit on a single line, allow putting all member initializers onto the next 314 line, if ```ConstructorInitializerAllOnOneLineOrOnePerLine``` is true. 315 Note that this parameter has no effect if 316 ```ConstructorInitializerAllOnOneLineOrOnePerLine``` is false. 317 318 .. code-block:: c++ 319 320 true: 321 MyClass::MyClass() : 322 member0(0), member1(2) {} 323 324 false: 325 MyClass::MyClass() : 326 member0(0), 327 member1(2) {} 328 329**AllowAllParametersOfDeclarationOnNextLine** (``bool``) 330 If the function declaration doesn't fit on a line, 331 allow putting all parameters of a function declaration onto 332 the next line even if ``BinPackParameters`` is ``false``. 333 334 .. code-block:: c++ 335 336 true: 337 void myFunction( 338 int a, int b, int c, int d, int e); 339 340 false: 341 void myFunction(int a, 342 int b, 343 int c, 344 int d, 345 int e); 346 347**AllowShortBlocksOnASingleLine** (``ShortBlockStyle``) 348 Dependent on the value, ``while (true) { continue; }`` can be put on a 349 single line. 350 351 Possible values: 352 353 * ``SBS_Never`` (in configuration: ``Never``) 354 Never merge blocks into a single line. 355 356 .. code-block:: c++ 357 358 while (true) { 359 } 360 while (true) { 361 continue; 362 } 363 364 * ``SBS_Empty`` (in configuration: ``Empty``) 365 Only merge empty blocks. 366 367 .. code-block:: c++ 368 369 while (true) {} 370 while (true) { 371 continue; 372 } 373 374 * ``SBS_Always`` (in configuration: ``Always``) 375 Always merge short blocks into a single line. 376 377 .. code-block:: c++ 378 379 while (true) {} 380 while (true) { continue; } 381 382 383 384**AllowShortCaseLabelsOnASingleLine** (``bool``) 385 If ``true``, short case labels will be contracted to a single line. 386 387 .. code-block:: c++ 388 389 true: false: 390 switch (a) { vs. switch (a) { 391 case 1: x = 1; break; case 1: 392 case 2: return; x = 1; 393 } break; 394 case 2: 395 return; 396 } 397 398**AllowShortFunctionsOnASingleLine** (``ShortFunctionStyle``) 399 Dependent on the value, ``int f() { return 0; }`` can be put on a 400 single line. 401 402 Possible values: 403 404 * ``SFS_None`` (in configuration: ``None``) 405 Never merge functions into a single line. 406 407 * ``SFS_InlineOnly`` (in configuration: ``InlineOnly``) 408 Only merge functions defined inside a class. Same as "inline", 409 except it does not implies "empty": i.e. top level empty functions 410 are not merged either. 411 412 .. code-block:: c++ 413 414 class Foo { 415 void f() { foo(); } 416 }; 417 void f() { 418 foo(); 419 } 420 void f() { 421 } 422 423 * ``SFS_Empty`` (in configuration: ``Empty``) 424 Only merge empty functions. 425 426 .. code-block:: c++ 427 428 void f() {} 429 void f2() { 430 bar2(); 431 } 432 433 * ``SFS_Inline`` (in configuration: ``Inline``) 434 Only merge functions defined inside a class. Implies "empty". 435 436 .. code-block:: c++ 437 438 class Foo { 439 void f() { foo(); } 440 }; 441 void f() { 442 foo(); 443 } 444 void f() {} 445 446 * ``SFS_All`` (in configuration: ``All``) 447 Merge all functions fitting on a single line. 448 449 .. code-block:: c++ 450 451 class Foo { 452 void f() { foo(); } 453 }; 454 void f() { bar(); } 455 456 457 458**AllowShortIfStatementsOnASingleLine** (``ShortIfStyle``) 459 If ``true``, ``if (a) return;`` can be put on a single line. 460 461 Possible values: 462 463 * ``SIS_Never`` (in configuration: ``Never``) 464 Never put short ifs on the same line. 465 466 .. code-block:: c++ 467 468 if (a) 469 return ; 470 else { 471 return; 472 } 473 474 * ``SIS_WithoutElse`` (in configuration: ``WithoutElse``) 475 Without else put short ifs on the same line only if 476 the else is not a compound statement. 477 478 .. code-block:: c++ 479 480 if (a) return; 481 else 482 return; 483 484 * ``SIS_Always`` (in configuration: ``Always``) 485 Always put short ifs on the same line if 486 the else is not a compound statement or not. 487 488 .. code-block:: c++ 489 490 if (a) return; 491 else { 492 return; 493 } 494 495 496 497**AllowShortLambdasOnASingleLine** (``ShortLambdaStyle``) 498 Dependent on the value, ``auto lambda []() { return 0; }`` can be put on a 499 single line. 500 501 Possible values: 502 503 * ``SLS_None`` (in configuration: ``None``) 504 Never merge lambdas into a single line. 505 506 * ``SLS_Empty`` (in configuration: ``Empty``) 507 Only merge empty lambdas. 508 509 .. code-block:: c++ 510 511 auto lambda = [](int a) {} 512 auto lambda2 = [](int a) { 513 return a; 514 }; 515 516 * ``SLS_Inline`` (in configuration: ``Inline``) 517 Merge lambda into a single line if argument of a function. 518 519 .. code-block:: c++ 520 521 auto lambda = [](int a) { 522 return a; 523 }; 524 sort(a.begin(), a.end(), ()[] { return x < y; }) 525 526 * ``SLS_All`` (in configuration: ``All``) 527 Merge all lambdas fitting on a single line. 528 529 .. code-block:: c++ 530 531 auto lambda = [](int a) {} 532 auto lambda2 = [](int a) { return a; }; 533 534 535 536**AllowShortLoopsOnASingleLine** (``bool``) 537 If ``true``, ``while (true) continue;`` can be put on a single 538 line. 539 540**AlwaysBreakAfterDefinitionReturnType** (``DefinitionReturnTypeBreakingStyle``) 541 The function definition return type breaking style to use. This 542 option is **deprecated** and is retained for backwards compatibility. 543 544 Possible values: 545 546 * ``DRTBS_None`` (in configuration: ``None``) 547 Break after return type automatically. 548 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account. 549 550 * ``DRTBS_All`` (in configuration: ``All``) 551 Always break after the return type. 552 553 * ``DRTBS_TopLevel`` (in configuration: ``TopLevel``) 554 Always break after the return types of top-level functions. 555 556 557 558**AlwaysBreakAfterReturnType** (``ReturnTypeBreakingStyle``) 559 The function declaration return type breaking style to use. 560 561 Possible values: 562 563 * ``RTBS_None`` (in configuration: ``None``) 564 Break after return type automatically. 565 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account. 566 567 .. code-block:: c++ 568 569 class A { 570 int f() { return 0; }; 571 }; 572 int f(); 573 int f() { return 1; } 574 575 * ``RTBS_All`` (in configuration: ``All``) 576 Always break after the return type. 577 578 .. code-block:: c++ 579 580 class A { 581 int 582 f() { 583 return 0; 584 }; 585 }; 586 int 587 f(); 588 int 589 f() { 590 return 1; 591 } 592 593 * ``RTBS_TopLevel`` (in configuration: ``TopLevel``) 594 Always break after the return types of top-level functions. 595 596 .. code-block:: c++ 597 598 class A { 599 int f() { return 0; }; 600 }; 601 int 602 f(); 603 int 604 f() { 605 return 1; 606 } 607 608 * ``RTBS_AllDefinitions`` (in configuration: ``AllDefinitions``) 609 Always break after the return type of function definitions. 610 611 .. code-block:: c++ 612 613 class A { 614 int 615 f() { 616 return 0; 617 }; 618 }; 619 int f(); 620 int 621 f() { 622 return 1; 623 } 624 625 * ``RTBS_TopLevelDefinitions`` (in configuration: ``TopLevelDefinitions``) 626 Always break after the return type of top-level definitions. 627 628 .. code-block:: c++ 629 630 class A { 631 int f() { return 0; }; 632 }; 633 int f(); 634 int 635 f() { 636 return 1; 637 } 638 639 640 641**AlwaysBreakBeforeMultilineStrings** (``bool``) 642 If ``true``, always break before multiline string literals. 643 644 This flag is mean to make cases where there are multiple multiline strings 645 in a file look more consistent. Thus, it will only take effect if wrapping 646 the string at that point leads to it being indented 647 ``ContinuationIndentWidth`` spaces from the start of the line. 648 649 .. code-block:: c++ 650 651 true: false: 652 aaaa = vs. aaaa = "bbbb" 653 "bbbb" "cccc"; 654 "cccc"; 655 656**AlwaysBreakTemplateDeclarations** (``BreakTemplateDeclarationsStyle``) 657 The template declaration breaking style to use. 658 659 Possible values: 660 661 * ``BTDS_No`` (in configuration: ``No``) 662 Do not force break before declaration. 663 ``PenaltyBreakTemplateDeclaration`` is taken into account. 664 665 .. code-block:: c++ 666 667 template <typename T> T foo() { 668 } 669 template <typename T> T foo(int aaaaaaaaaaaaaaaaaaaaa, 670 int bbbbbbbbbbbbbbbbbbbbb) { 671 } 672 673 * ``BTDS_MultiLine`` (in configuration: ``MultiLine``) 674 Force break after template declaration only when the following 675 declaration spans multiple lines. 676 677 .. code-block:: c++ 678 679 template <typename T> T foo() { 680 } 681 template <typename T> 682 T foo(int aaaaaaaaaaaaaaaaaaaaa, 683 int bbbbbbbbbbbbbbbbbbbbb) { 684 } 685 686 * ``BTDS_Yes`` (in configuration: ``Yes``) 687 Always break after template declaration. 688 689 .. code-block:: c++ 690 691 template <typename T> 692 T foo() { 693 } 694 template <typename T> 695 T foo(int aaaaaaaaaaaaaaaaaaaaa, 696 int bbbbbbbbbbbbbbbbbbbbb) { 697 } 698 699 700 701**BinPackArguments** (``bool``) 702 If ``false``, a function call's arguments will either be all on the 703 same line or will have one line each. 704 705 .. code-block:: c++ 706 707 true: 708 void f() { 709 f(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa, 710 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); 711 } 712 713 false: 714 void f() { 715 f(aaaaaaaaaaaaaaaaaaaa, 716 aaaaaaaaaaaaaaaaaaaa, 717 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); 718 } 719 720**BinPackParameters** (``bool``) 721 If ``false``, a function declaration's or function definition's 722 parameters will either all be on the same line or will have one line each. 723 724 .. code-block:: c++ 725 726 true: 727 void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa, 728 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {} 729 730 false: 731 void f(int aaaaaaaaaaaaaaaaaaaa, 732 int aaaaaaaaaaaaaaaaaaaa, 733 int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {} 734 735**BraceWrapping** (``BraceWrappingFlags``) 736 Control of individual brace wrapping cases. 737 738 If ``BreakBeforeBraces`` is set to ``BS_Custom``, use this to specify how 739 each individual brace case should be handled. Otherwise, this is ignored. 740 741 .. code-block:: yaml 742 743 # Example of usage: 744 BreakBeforeBraces: Custom 745 BraceWrapping: 746 AfterEnum: true 747 AfterStruct: false 748 SplitEmptyFunction: false 749 750 Nested configuration flags: 751 752 753 * ``bool AfterCaseLabel`` Wrap case labels. 754 755 .. code-block:: c++ 756 757 false: true: 758 switch (foo) { vs. switch (foo) { 759 case 1: { case 1: 760 bar(); { 761 break; bar(); 762 } break; 763 default: { } 764 plop(); default: 765 } { 766 } plop(); 767 } 768 } 769 770 * ``bool AfterClass`` Wrap class definitions. 771 772 .. code-block:: c++ 773 774 true: 775 class foo {}; 776 777 false: 778 class foo 779 {}; 780 781 * ``bool AfterControlStatement`` Wrap control statements (``if``/``for``/``while``/``switch``/..). 782 783 .. code-block:: c++ 784 785 true: 786 if (foo()) 787 { 788 } else 789 {} 790 for (int i = 0; i < 10; ++i) 791 {} 792 793 false: 794 if (foo()) { 795 } else { 796 } 797 for (int i = 0; i < 10; ++i) { 798 } 799 800 * ``bool AfterEnum`` Wrap enum definitions. 801 802 .. code-block:: c++ 803 804 true: 805 enum X : int 806 { 807 B 808 }; 809 810 false: 811 enum X : int { B }; 812 813 * ``bool AfterFunction`` Wrap function definitions. 814 815 .. code-block:: c++ 816 817 true: 818 void foo() 819 { 820 bar(); 821 bar2(); 822 } 823 824 false: 825 void foo() { 826 bar(); 827 bar2(); 828 } 829 830 * ``bool AfterNamespace`` Wrap namespace definitions. 831 832 .. code-block:: c++ 833 834 true: 835 namespace 836 { 837 int foo(); 838 int bar(); 839 } 840 841 false: 842 namespace { 843 int foo(); 844 int bar(); 845 } 846 847 * ``bool AfterObjCDeclaration`` Wrap ObjC definitions (interfaces, implementations...). 848 @autoreleasepool and @synchronized blocks are wrapped 849 according to `AfterControlStatement` flag. 850 851 * ``bool AfterStruct`` Wrap struct definitions. 852 853 .. code-block:: c++ 854 855 true: 856 struct foo 857 { 858 int x; 859 }; 860 861 false: 862 struct foo { 863 int x; 864 }; 865 866 * ``bool AfterUnion`` Wrap union definitions. 867 868 .. code-block:: c++ 869 870 true: 871 union foo 872 { 873 int x; 874 } 875 876 false: 877 union foo { 878 int x; 879 } 880 881 * ``bool AfterExternBlock`` Wrap extern blocks. 882 883 .. code-block:: c++ 884 885 true: 886 extern "C" 887 { 888 int foo(); 889 } 890 891 false: 892 extern "C" { 893 int foo(); 894 } 895 896 * ``bool BeforeCatch`` Wrap before ``catch``. 897 898 .. code-block:: c++ 899 900 true: 901 try { 902 foo(); 903 } 904 catch () { 905 } 906 907 false: 908 try { 909 foo(); 910 } catch () { 911 } 912 913 * ``bool BeforeElse`` Wrap before ``else``. 914 915 .. code-block:: c++ 916 917 true: 918 if (foo()) { 919 } 920 else { 921 } 922 923 false: 924 if (foo()) { 925 } else { 926 } 927 928 * ``bool IndentBraces`` Indent the wrapped braces themselves. 929 930 * ``bool SplitEmptyFunction`` If ``false``, empty function body can be put on a single line. 931 This option is used only if the opening brace of the function has 932 already been wrapped, i.e. the `AfterFunction` brace wrapping mode is 933 set, and the function could/should not be put on a single line (as per 934 `AllowShortFunctionsOnASingleLine` and constructor formatting options). 935 936 .. code-block:: c++ 937 938 int f() vs. inf f() 939 {} { 940 } 941 942 * ``bool SplitEmptyRecord`` If ``false``, empty record (e.g. class, struct or union) body 943 can be put on a single line. This option is used only if the opening 944 brace of the record has already been wrapped, i.e. the `AfterClass` 945 (for classes) brace wrapping mode is set. 946 947 .. code-block:: c++ 948 949 class Foo vs. class Foo 950 {} { 951 } 952 953 * ``bool SplitEmptyNamespace`` If ``false``, empty namespace body can be put on a single line. 954 This option is used only if the opening brace of the namespace has 955 already been wrapped, i.e. the `AfterNamespace` brace wrapping mode is 956 set. 957 958 .. code-block:: c++ 959 960 namespace Foo vs. namespace Foo 961 {} { 962 } 963 964 965**BreakAfterJavaFieldAnnotations** (``bool``) 966 Break after each annotation on a field in Java files. 967 968 .. code-block:: java 969 970 true: false: 971 @Partial vs. @Partial @Mock DataLoad loader; 972 @Mock 973 DataLoad loader; 974 975**BreakBeforeBinaryOperators** (``BinaryOperatorStyle``) 976 The way to wrap binary operators. 977 978 Possible values: 979 980 * ``BOS_None`` (in configuration: ``None``) 981 Break after operators. 982 983 .. code-block:: c++ 984 985 LooooooooooongType loooooooooooooooooooooongVariable = 986 someLooooooooooooooooongFunction(); 987 988 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + 989 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == 990 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && 991 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > 992 ccccccccccccccccccccccccccccccccccccccccc; 993 994 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``) 995 Break before operators that aren't assignments. 996 997 .. code-block:: c++ 998 999 LooooooooooongType loooooooooooooooooooooongVariable = 1000 someLooooooooooooooooongFunction(); 1001 1002 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1003 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1004 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1005 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1006 > ccccccccccccccccccccccccccccccccccccccccc; 1007 1008 * ``BOS_All`` (in configuration: ``All``) 1009 Break before operators. 1010 1011 .. code-block:: c++ 1012 1013 LooooooooooongType loooooooooooooooooooooongVariable 1014 = someLooooooooooooooooongFunction(); 1015 1016 bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1017 + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1018 == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1019 && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1020 > ccccccccccccccccccccccccccccccccccccccccc; 1021 1022 1023 1024**BreakBeforeBraces** (``BraceBreakingStyle``) 1025 The brace breaking style to use. 1026 1027 Possible values: 1028 1029 * ``BS_Attach`` (in configuration: ``Attach``) 1030 Always attach braces to surrounding context. 1031 1032 .. code-block:: c++ 1033 1034 try { 1035 foo(); 1036 } catch () { 1037 } 1038 void foo() { bar(); } 1039 class foo {}; 1040 if (foo()) { 1041 } else { 1042 } 1043 enum X : int { A, B }; 1044 1045 * ``BS_Linux`` (in configuration: ``Linux``) 1046 Like ``Attach``, but break before braces on function, namespace and 1047 class definitions. 1048 1049 .. code-block:: c++ 1050 1051 try { 1052 foo(); 1053 } catch () { 1054 } 1055 void foo() { bar(); } 1056 class foo 1057 { 1058 }; 1059 if (foo()) { 1060 } else { 1061 } 1062 enum X : int { A, B }; 1063 1064 * ``BS_Mozilla`` (in configuration: ``Mozilla``) 1065 Like ``Attach``, but break before braces on enum, function, and record 1066 definitions. 1067 1068 .. code-block:: c++ 1069 1070 try { 1071 foo(); 1072 } catch () { 1073 } 1074 void foo() { bar(); } 1075 class foo 1076 { 1077 }; 1078 if (foo()) { 1079 } else { 1080 } 1081 enum X : int { A, B }; 1082 1083 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``) 1084 Like ``Attach``, but break before function definitions, ``catch``, and 1085 ``else``. 1086 1087 .. code-block:: c++ 1088 1089 try { 1090 foo(); 1091 } 1092 catch () { 1093 } 1094 void foo() { bar(); } 1095 class foo { 1096 }; 1097 if (foo()) { 1098 } 1099 else { 1100 } 1101 enum X : int { A, B }; 1102 1103 * ``BS_Allman`` (in configuration: ``Allman``) 1104 Always break before braces. 1105 1106 .. code-block:: c++ 1107 1108 try 1109 { 1110 foo(); 1111 } 1112 catch () 1113 { 1114 } 1115 void foo() { bar(); } 1116 class foo 1117 { 1118 }; 1119 if (foo()) 1120 { 1121 } 1122 else 1123 { 1124 } 1125 enum X : int 1126 { 1127 A, 1128 B 1129 }; 1130 1131 * ``BS_Whitesmiths`` (in configuration: ``Whitesmiths``) 1132 Like ``Allman`` but always indent braces and line up code with braces. 1133 1134 .. code-block:: c++ 1135 1136 try 1137 { 1138 foo(); 1139 } 1140 catch () 1141 { 1142 } 1143 void foo() { bar(); } 1144 class foo 1145 { 1146 }; 1147 if (foo()) 1148 { 1149 } 1150 else 1151 { 1152 } 1153 enum X : int 1154 { 1155 A, 1156 B 1157 }; 1158 1159 * ``BS_GNU`` (in configuration: ``GNU``) 1160 Always break before braces and add an extra level of indentation to 1161 braces of control statements, not to those of class, function 1162 or other definitions. 1163 1164 .. code-block:: c++ 1165 1166 try 1167 { 1168 foo(); 1169 } 1170 catch () 1171 { 1172 } 1173 void foo() { bar(); } 1174 class foo 1175 { 1176 }; 1177 if (foo()) 1178 { 1179 } 1180 else 1181 { 1182 } 1183 enum X : int 1184 { 1185 A, 1186 B 1187 }; 1188 1189 * ``BS_WebKit`` (in configuration: ``WebKit``) 1190 Like ``Attach``, but break before functions. 1191 1192 .. code-block:: c++ 1193 1194 try { 1195 foo(); 1196 } catch () { 1197 } 1198 void foo() { bar(); } 1199 class foo { 1200 }; 1201 if (foo()) { 1202 } else { 1203 } 1204 enum X : int { A, B }; 1205 1206 * ``BS_Custom`` (in configuration: ``Custom``) 1207 Configure each individual brace in `BraceWrapping`. 1208 1209 1210 1211**BreakBeforeTernaryOperators** (``bool``) 1212 If ``true``, ternary operators will be placed after line breaks. 1213 1214 .. code-block:: c++ 1215 1216 true: 1217 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription 1218 ? firstValue 1219 : SecondValueVeryVeryVeryVeryLong; 1220 1221 false: 1222 veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongDescription ? 1223 firstValue : 1224 SecondValueVeryVeryVeryVeryLong; 1225 1226**BreakConstructorInitializers** (``BreakConstructorInitializersStyle``) 1227 The constructor initializers style to use. 1228 1229 Possible values: 1230 1231 * ``BCIS_BeforeColon`` (in configuration: ``BeforeColon``) 1232 Break constructor initializers before the colon and after the commas. 1233 1234 .. code-block:: c++ 1235 1236 Constructor() 1237 : initializer1(), 1238 initializer2() 1239 1240 * ``BCIS_BeforeComma`` (in configuration: ``BeforeComma``) 1241 Break constructor initializers before the colon and commas, and align 1242 the commas with the colon. 1243 1244 .. code-block:: c++ 1245 1246 Constructor() 1247 : initializer1() 1248 , initializer2() 1249 1250 * ``BCIS_AfterColon`` (in configuration: ``AfterColon``) 1251 Break constructor initializers after the colon and commas. 1252 1253 .. code-block:: c++ 1254 1255 Constructor() : 1256 initializer1(), 1257 initializer2() 1258 1259 1260 1261**BreakInheritanceList** (``BreakInheritanceListStyle``) 1262 The inheritance list style to use. 1263 1264 Possible values: 1265 1266 * ``BILS_BeforeColon`` (in configuration: ``BeforeColon``) 1267 Break inheritance list before the colon and after the commas. 1268 1269 .. code-block:: c++ 1270 1271 class Foo 1272 : Base1, 1273 Base2 1274 {}; 1275 1276 * ``BILS_BeforeComma`` (in configuration: ``BeforeComma``) 1277 Break inheritance list before the colon and commas, and align 1278 the commas with the colon. 1279 1280 .. code-block:: c++ 1281 1282 class Foo 1283 : Base1 1284 , Base2 1285 {}; 1286 1287 * ``BILS_AfterColon`` (in configuration: ``AfterColon``) 1288 Break inheritance list after the colon and commas. 1289 1290 .. code-block:: c++ 1291 1292 class Foo : 1293 Base1, 1294 Base2 1295 {}; 1296 1297 1298 1299**BreakStringLiterals** (``bool``) 1300 Allow breaking string literals when formatting. 1301 1302**ColumnLimit** (``unsigned``) 1303 The column limit. 1304 1305 A column limit of ``0`` means that there is no column limit. In this case, 1306 clang-format will respect the input's line breaking decisions within 1307 statements unless they contradict other rules. 1308 1309**CommentPragmas** (``std::string``) 1310 A regular expression that describes comments with special meaning, 1311 which should not be split into lines or otherwise changed. 1312 1313 .. code-block:: c++ 1314 1315 // CommentPragmas: '^ FOOBAR pragma:' 1316 // Will leave the following line unaffected 1317 #include <vector> // FOOBAR pragma: keep 1318 1319**CompactNamespaces** (``bool``) 1320 If ``true``, consecutive namespace declarations will be on the same 1321 line. If ``false``, each namespace is declared on a new line. 1322 1323 .. code-block:: c++ 1324 1325 true: 1326 namespace Foo { namespace Bar { 1327 }} 1328 1329 false: 1330 namespace Foo { 1331 namespace Bar { 1332 } 1333 } 1334 1335 If it does not fit on a single line, the overflowing namespaces get 1336 wrapped: 1337 1338 .. code-block:: c++ 1339 1340 namespace Foo { namespace Bar { 1341 namespace Extra { 1342 }}} 1343 1344**ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``) 1345 If the constructor initializers don't fit on a line, put each 1346 initializer on its own line. 1347 1348 .. code-block:: c++ 1349 1350 true: 1351 SomeClass::Constructor() 1352 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1353 return 0; 1354 } 1355 1356 false: 1357 SomeClass::Constructor() 1358 : aaaaaaaa(aaaaaaaa), aaaaaaaa(aaaaaaaa), 1359 aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa) { 1360 return 0; 1361 } 1362 1363**ConstructorInitializerIndentWidth** (``unsigned``) 1364 The number of characters to use for indentation of constructor 1365 initializer lists as well as inheritance lists. 1366 1367**ContinuationIndentWidth** (``unsigned``) 1368 Indent width for line continuations. 1369 1370 .. code-block:: c++ 1371 1372 ContinuationIndentWidth: 2 1373 1374 int i = // VeryVeryVeryVeryVeryLongComment 1375 longFunction( // Again a long comment 1376 arg); 1377 1378**Cpp11BracedListStyle** (``bool``) 1379 If ``true``, format braced lists as best suited for C++11 braced 1380 lists. 1381 1382 Important differences: 1383 - No spaces inside the braced list. 1384 - No line break before the closing brace. 1385 - Indentation with the continuation indent, not with the block indent. 1386 1387 Fundamentally, C++11 braced lists are formatted exactly like function 1388 calls would be formatted in their place. If the braced list follows a name 1389 (e.g. a type or variable name), clang-format formats as if the ``{}`` were 1390 the parentheses of a function call with that name. If there is no name, 1391 a zero-length name is assumed. 1392 1393 .. code-block:: c++ 1394 1395 true: false: 1396 vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 }; 1397 vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} }; 1398 f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]); 1399 new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 }; 1400 1401**DerivePointerAlignment** (``bool``) 1402 If ``true``, analyze the formatted file for the most common 1403 alignment of ``&`` and ``*``. 1404 Pointer and reference alignment styles are going to be updated according 1405 to the preferences found in the file. 1406 ``PointerAlignment`` is then used only as fallback. 1407 1408**DisableFormat** (``bool``) 1409 Disables formatting completely. 1410 1411**ExperimentalAutoDetectBinPacking** (``bool``) 1412 If ``true``, clang-format detects whether function calls and 1413 definitions are formatted with one parameter per line. 1414 1415 Each call can be bin-packed, one-per-line or inconclusive. If it is 1416 inconclusive, e.g. completely on one line, but a decision needs to be 1417 made, clang-format analyzes whether there are other bin-packed cases in 1418 the input file and act accordingly. 1419 1420 NOTE: This is an experimental flag, that might go away or be renamed. Do 1421 not use this in config files, etc. Use at your own risk. 1422 1423**FixNamespaceComments** (``bool``) 1424 If ``true``, clang-format adds missing namespace end comments and 1425 fixes invalid existing ones. 1426 1427 .. code-block:: c++ 1428 1429 true: false: 1430 namespace a { vs. namespace a { 1431 foo(); foo(); 1432 } // namespace a } 1433 1434**ForEachMacros** (``std::vector<std::string>``) 1435 A vector of macros that should be interpreted as foreach loops 1436 instead of as function calls. 1437 1438 These are expected to be macros of the form: 1439 1440 .. code-block:: c++ 1441 1442 FOREACH(<variable-declaration>, ...) 1443 <loop-body> 1444 1445 In the .clang-format configuration file, this can be configured like: 1446 1447 .. code-block:: yaml 1448 1449 ForEachMacros: ['RANGES_FOR', 'FOREACH'] 1450 1451 For example: BOOST_FOREACH. 1452 1453**IncludeBlocks** (``IncludeBlocksStyle``) 1454 Dependent on the value, multiple ``#include`` blocks can be sorted 1455 as one and divided based on category. 1456 1457 Possible values: 1458 1459 * ``IBS_Preserve`` (in configuration: ``Preserve``) 1460 Sort each ``#include`` block separately. 1461 1462 .. code-block:: c++ 1463 1464 #include "b.h" into #include "b.h" 1465 1466 #include <lib/main.h> #include "a.h" 1467 #include "a.h" #include <lib/main.h> 1468 1469 * ``IBS_Merge`` (in configuration: ``Merge``) 1470 Merge multiple ``#include`` blocks together and sort as one. 1471 1472 .. code-block:: c++ 1473 1474 #include "b.h" into #include "a.h" 1475 #include "b.h" 1476 #include <lib/main.h> #include <lib/main.h> 1477 #include "a.h" 1478 1479 * ``IBS_Regroup`` (in configuration: ``Regroup``) 1480 Merge multiple ``#include`` blocks together and sort as one. 1481 Then split into groups based on category priority. See 1482 ``IncludeCategories``. 1483 1484 .. code-block:: c++ 1485 1486 #include "b.h" into #include "a.h" 1487 #include "b.h" 1488 #include <lib/main.h> 1489 #include "a.h" #include <lib/main.h> 1490 1491 1492 1493**IncludeCategories** (``std::vector<IncludeCategory>``) 1494 Regular expressions denoting the different ``#include`` categories 1495 used for ordering ``#includes``. 1496 1497 `POSIX extended 1498 <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html>`_ 1499 regular expressions are supported. 1500 1501 These regular expressions are matched against the filename of an include 1502 (including the <> or "") in order. The value belonging to the first 1503 matching regular expression is assigned and ``#includes`` are sorted first 1504 according to increasing category number and then alphabetically within 1505 each category. 1506 1507 If none of the regular expressions match, INT_MAX is assigned as 1508 category. The main header for a source file automatically gets category 0. 1509 so that it is generally kept at the beginning of the ``#includes`` 1510 (https://llvm.org/docs/CodingStandards.html#include-style). However, you 1511 can also assign negative priorities if you have certain headers that 1512 always need to be first. 1513 1514 There is a third and optional field ``SortPriority`` which can used while 1515 ``IncludeBloks = IBS_Regroup`` to define the priority in which ``#includes`` 1516 should be ordered, and value of ``Priority`` defines the order of 1517 ``#include blocks`` and also enables to group ``#includes`` of different 1518 priority for order.``SortPriority`` is set to the value of ``Priority`` 1519 as default if it is not assigned. 1520 1521 To configure this in the .clang-format file, use: 1522 1523 .. code-block:: yaml 1524 1525 IncludeCategories: 1526 - Regex: '^"(llvm|llvm-c|clang|clang-c)/' 1527 Priority: 2 1528 SortPriority: 2 1529 - Regex: '^(<|"(gtest|gmock|isl|json)/)' 1530 Priority: 3 1531 - Regex: '<[[:alnum:].]+>' 1532 Priority: 4 1533 - Regex: '.*' 1534 Priority: 1 1535 SortPriority: 0 1536 1537**IncludeIsMainRegex** (``std::string``) 1538 Specify a regular expression of suffixes that are allowed in the 1539 file-to-main-include mapping. 1540 1541 When guessing whether a #include is the "main" include (to assign 1542 category 0, see above), use this regex of allowed suffixes to the header 1543 stem. A partial match is done, so that: 1544 - "" means "arbitrary suffix" 1545 - "$" means "no suffix" 1546 1547 For example, if configured to "(_test)?$", then a header a.h would be seen 1548 as the "main" include in both a.cc and a_test.cc. 1549 1550**IndentCaseLabels** (``bool``) 1551 Indent case labels one level from the switch statement. 1552 1553 When ``false``, use the same indentation level as for the switch statement. 1554 Switch statement body is always indented one level more than case labels. 1555 1556 .. code-block:: c++ 1557 1558 false: true: 1559 switch (fool) { vs. switch (fool) { 1560 case 1: case 1: 1561 bar(); bar(); 1562 break; break; 1563 default: default: 1564 plop(); plop(); 1565 } } 1566 1567**IndentGotoLabels** (``bool``) 1568 Indent goto labels. 1569 1570 When ``false``, goto labels are flushed left. 1571 1572 .. code-block:: c++ 1573 1574 true: false: 1575 int f() { vs. int f() { 1576 if (foo()) { if (foo()) { 1577 label1: label1: 1578 bar(); bar(); 1579 } } 1580 label2: label2: 1581 return 1; return 1; 1582 } } 1583 1584**IndentPPDirectives** (``PPDirectiveIndentStyle``) 1585 The preprocessor directive indenting style to use. 1586 1587 Possible values: 1588 1589 * ``PPDIS_None`` (in configuration: ``None``) 1590 Does not indent any directives. 1591 1592 .. code-block:: c++ 1593 1594 #if FOO 1595 #if BAR 1596 #include <foo> 1597 #endif 1598 #endif 1599 1600 * ``PPDIS_AfterHash`` (in configuration: ``AfterHash``) 1601 Indents directives after the hash. 1602 1603 .. code-block:: c++ 1604 1605 #if FOO 1606 # if BAR 1607 # include <foo> 1608 # endif 1609 #endif 1610 1611 * ``PPDIS_BeforeHash`` (in configuration: ``BeforeHash``) 1612 Indents directives before the hash. 1613 1614 .. code-block:: c++ 1615 1616 #if FOO 1617 #if BAR 1618 #include <foo> 1619 #endif 1620 #endif 1621 1622 1623 1624**IndentWidth** (``unsigned``) 1625 The number of columns to use for indentation. 1626 1627 .. code-block:: c++ 1628 1629 IndentWidth: 3 1630 1631 void f() { 1632 someFunction(); 1633 if (true, false) { 1634 f(); 1635 } 1636 } 1637 1638**IndentWrappedFunctionNames** (``bool``) 1639 Indent if a function definition or declaration is wrapped after the 1640 type. 1641 1642 .. code-block:: c++ 1643 1644 true: 1645 LoooooooooooooooooooooooooooooooooooooooongReturnType 1646 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1647 1648 false: 1649 LoooooooooooooooooooooooooooooooooooooooongReturnType 1650 LoooooooooooooooooooooooooooooooongFunctionDeclaration(); 1651 1652**JavaImportGroups** (``std::vector<std::string>``) 1653 A vector of prefixes ordered by the desired groups for Java imports. 1654 1655 Each group is separated by a newline. Static imports will also follow the 1656 same grouping convention above all non-static imports. One group's prefix 1657 can be a subset of another - the longest prefix is always matched. Within 1658 a group, the imports are ordered lexicographically. 1659 1660 In the .clang-format configuration file, this can be configured like 1661 in the following yaml example. This will result in imports being 1662 formatted as in the Java example below. 1663 1664 .. code-block:: yaml 1665 1666 JavaImportGroups: ['com.example', 'com', 'org'] 1667 1668 1669 .. code-block:: java 1670 1671 import static com.example.function1; 1672 1673 import static com.test.function2; 1674 1675 import static org.example.function3; 1676 1677 import com.example.ClassA; 1678 import com.example.Test; 1679 import com.example.a.ClassB; 1680 1681 import com.test.ClassC; 1682 1683 import org.example.ClassD; 1684 1685**JavaScriptQuotes** (``JavaScriptQuoteStyle``) 1686 The JavaScriptQuoteStyle to use for JavaScript strings. 1687 1688 Possible values: 1689 1690 * ``JSQS_Leave`` (in configuration: ``Leave``) 1691 Leave string quotes as they are. 1692 1693 .. code-block:: js 1694 1695 string1 = "foo"; 1696 string2 = 'bar'; 1697 1698 * ``JSQS_Single`` (in configuration: ``Single``) 1699 Always use single quotes. 1700 1701 .. code-block:: js 1702 1703 string1 = 'foo'; 1704 string2 = 'bar'; 1705 1706 * ``JSQS_Double`` (in configuration: ``Double``) 1707 Always use double quotes. 1708 1709 .. code-block:: js 1710 1711 string1 = "foo"; 1712 string2 = "bar"; 1713 1714 1715 1716**JavaScriptWrapImports** (``bool``) 1717 Whether to wrap JavaScript import/export statements. 1718 1719 .. code-block:: js 1720 1721 true: 1722 import { 1723 VeryLongImportsAreAnnoying, 1724 VeryLongImportsAreAnnoying, 1725 VeryLongImportsAreAnnoying, 1726 } from 'some/module.js' 1727 1728 false: 1729 import {VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying, VeryLongImportsAreAnnoying,} from "some/module.js" 1730 1731**KeepEmptyLinesAtTheStartOfBlocks** (``bool``) 1732 If true, the empty line at the start of blocks is kept. 1733 1734 .. code-block:: c++ 1735 1736 true: false: 1737 if (foo) { vs. if (foo) { 1738 bar(); 1739 bar(); } 1740 } 1741 1742**Language** (``LanguageKind``) 1743 Language, this format style is targeted at. 1744 1745 Possible values: 1746 1747 * ``LK_None`` (in configuration: ``None``) 1748 Do not use. 1749 1750 * ``LK_Cpp`` (in configuration: ``Cpp``) 1751 Should be used for C, C++. 1752 1753 * ``LK_CSharp`` (in configuration: ``CSharp``) 1754 Should be used for C#. 1755 1756 * ``LK_Java`` (in configuration: ``Java``) 1757 Should be used for Java. 1758 1759 * ``LK_JavaScript`` (in configuration: ``JavaScript``) 1760 Should be used for JavaScript. 1761 1762 * ``LK_ObjC`` (in configuration: ``ObjC``) 1763 Should be used for Objective-C, Objective-C++. 1764 1765 * ``LK_Proto`` (in configuration: ``Proto``) 1766 Should be used for Protocol Buffers 1767 (https://developers.google.com/protocol-buffers/). 1768 1769 * ``LK_TableGen`` (in configuration: ``TableGen``) 1770 Should be used for TableGen code. 1771 1772 * ``LK_TextProto`` (in configuration: ``TextProto``) 1773 Should be used for Protocol Buffer messages in text format 1774 (https://developers.google.com/protocol-buffers/). 1775 1776 1777 1778**MacroBlockBegin** (``std::string``) 1779 A regular expression matching macros that start a block. 1780 1781 .. code-block:: c++ 1782 1783 # With: 1784 MacroBlockBegin: "^NS_MAP_BEGIN|\ 1785 NS_TABLE_HEAD$" 1786 MacroBlockEnd: "^\ 1787 NS_MAP_END|\ 1788 NS_TABLE_.*_END$" 1789 1790 NS_MAP_BEGIN 1791 foo(); 1792 NS_MAP_END 1793 1794 NS_TABLE_HEAD 1795 bar(); 1796 NS_TABLE_FOO_END 1797 1798 # Without: 1799 NS_MAP_BEGIN 1800 foo(); 1801 NS_MAP_END 1802 1803 NS_TABLE_HEAD 1804 bar(); 1805 NS_TABLE_FOO_END 1806 1807**MacroBlockEnd** (``std::string``) 1808 A regular expression matching macros that end a block. 1809 1810**MaxEmptyLinesToKeep** (``unsigned``) 1811 The maximum number of consecutive empty lines to keep. 1812 1813 .. code-block:: c++ 1814 1815 MaxEmptyLinesToKeep: 1 vs. MaxEmptyLinesToKeep: 0 1816 int f() { int f() { 1817 int = 1; int i = 1; 1818 i = foo(); 1819 i = foo(); return i; 1820 } 1821 return i; 1822 } 1823 1824**NamespaceIndentation** (``NamespaceIndentationKind``) 1825 The indentation used for namespaces. 1826 1827 Possible values: 1828 1829 * ``NI_None`` (in configuration: ``None``) 1830 Don't indent in namespaces. 1831 1832 .. code-block:: c++ 1833 1834 namespace out { 1835 int i; 1836 namespace in { 1837 int i; 1838 } 1839 } 1840 1841 * ``NI_Inner`` (in configuration: ``Inner``) 1842 Indent only in inner namespaces (nested in other namespaces). 1843 1844 .. code-block:: c++ 1845 1846 namespace out { 1847 int i; 1848 namespace in { 1849 int i; 1850 } 1851 } 1852 1853 * ``NI_All`` (in configuration: ``All``) 1854 Indent in all namespaces. 1855 1856 .. code-block:: c++ 1857 1858 namespace out { 1859 int i; 1860 namespace in { 1861 int i; 1862 } 1863 } 1864 1865 1866 1867**NamespaceMacros** (``std::vector<std::string>``) 1868 A vector of macros which are used to open namespace blocks. 1869 1870 These are expected to be macros of the form: 1871 1872 .. code-block:: c++ 1873 1874 NAMESPACE(<namespace-name>, ...) { 1875 <namespace-content> 1876 } 1877 1878 For example: TESTSUITE 1879 1880**ObjCBinPackProtocolList** (``BinPackStyle``) 1881 Controls bin-packing Objective-C protocol conformance list 1882 items into as few lines as possible when they go over ``ColumnLimit``. 1883 1884 If ``Auto`` (the default), delegates to the value in 1885 ``BinPackParameters``. If that is ``true``, bin-packs Objective-C 1886 protocol conformance list items into as few lines as possible 1887 whenever they go over ``ColumnLimit``. 1888 1889 If ``Always``, always bin-packs Objective-C protocol conformance 1890 list items into as few lines as possible whenever they go over 1891 ``ColumnLimit``. 1892 1893 If ``Never``, lays out Objective-C protocol conformance list items 1894 onto individual lines whenever they go over ``ColumnLimit``. 1895 1896 1897 .. code-block:: objc 1898 1899 Always (or Auto, if BinPackParameters=true): 1900 @interface ccccccccccccc () < 1901 ccccccccccccc, ccccccccccccc, 1902 ccccccccccccc, ccccccccccccc> { 1903 } 1904 1905 Never (or Auto, if BinPackParameters=false): 1906 @interface ddddddddddddd () < 1907 ddddddddddddd, 1908 ddddddddddddd, 1909 ddddddddddddd, 1910 ddddddddddddd> { 1911 } 1912 1913 Possible values: 1914 1915 * ``BPS_Auto`` (in configuration: ``Auto``) 1916 Automatically determine parameter bin-packing behavior. 1917 1918 * ``BPS_Always`` (in configuration: ``Always``) 1919 Always bin-pack parameters. 1920 1921 * ``BPS_Never`` (in configuration: ``Never``) 1922 Never bin-pack parameters. 1923 1924 1925 1926**ObjCBlockIndentWidth** (``unsigned``) 1927 The number of characters to use for indentation of ObjC blocks. 1928 1929 .. code-block:: objc 1930 1931 ObjCBlockIndentWidth: 4 1932 1933 [operation setCompletionBlock:^{ 1934 [self onOperationDone]; 1935 }]; 1936 1937**ObjCSpaceAfterProperty** (``bool``) 1938 Add a space after ``@property`` in Objective-C, i.e. use 1939 ``@property (readonly)`` instead of ``@property(readonly)``. 1940 1941**ObjCSpaceBeforeProtocolList** (``bool``) 1942 Add a space in front of an Objective-C protocol list, i.e. use 1943 ``Foo <Protocol>`` instead of ``Foo<Protocol>``. 1944 1945**PenaltyBreakAssignment** (``unsigned``) 1946 The penalty for breaking around an assignment operator. 1947 1948**PenaltyBreakBeforeFirstCallParameter** (``unsigned``) 1949 The penalty for breaking a function call after ``call(``. 1950 1951**PenaltyBreakComment** (``unsigned``) 1952 The penalty for each line break introduced inside a comment. 1953 1954**PenaltyBreakFirstLessLess** (``unsigned``) 1955 The penalty for breaking before the first ``<<``. 1956 1957**PenaltyBreakString** (``unsigned``) 1958 The penalty for each line break introduced inside a string literal. 1959 1960**PenaltyBreakTemplateDeclaration** (``unsigned``) 1961 The penalty for breaking after template declaration. 1962 1963**PenaltyExcessCharacter** (``unsigned``) 1964 The penalty for each character outside of the column limit. 1965 1966**PenaltyReturnTypeOnItsOwnLine** (``unsigned``) 1967 Penalty for putting the return type of a function onto its own 1968 line. 1969 1970**PointerAlignment** (``PointerAlignmentStyle``) 1971 Pointer and reference alignment style. 1972 1973 Possible values: 1974 1975 * ``PAS_Left`` (in configuration: ``Left``) 1976 Align pointer to the left. 1977 1978 .. code-block:: c++ 1979 1980 int* a; 1981 1982 * ``PAS_Right`` (in configuration: ``Right``) 1983 Align pointer to the right. 1984 1985 .. code-block:: c++ 1986 1987 int *a; 1988 1989 * ``PAS_Middle`` (in configuration: ``Middle``) 1990 Align pointer in the middle. 1991 1992 .. code-block:: c++ 1993 1994 int * a; 1995 1996 1997 1998**RawStringFormats** (``std::vector<RawStringFormat>``) 1999 Defines hints for detecting supported languages code blocks in raw 2000 strings. 2001 2002 A raw string with a matching delimiter or a matching enclosing function 2003 name will be reformatted assuming the specified language based on the 2004 style for that language defined in the .clang-format file. If no style has 2005 been defined in the .clang-format file for the specific language, a 2006 predefined style given by 'BasedOnStyle' is used. If 'BasedOnStyle' is not 2007 found, the formatting is based on llvm style. A matching delimiter takes 2008 precedence over a matching enclosing function name for determining the 2009 language of the raw string contents. 2010 2011 If a canonical delimiter is specified, occurrences of other delimiters for 2012 the same language will be updated to the canonical if possible. 2013 2014 There should be at most one specification per language and each delimiter 2015 and enclosing function should not occur in multiple specifications. 2016 2017 To configure this in the .clang-format file, use: 2018 2019 .. code-block:: yaml 2020 2021 RawStringFormats: 2022 - Language: TextProto 2023 Delimiters: 2024 - 'pb' 2025 - 'proto' 2026 EnclosingFunctions: 2027 - 'PARSE_TEXT_PROTO' 2028 BasedOnStyle: google 2029 - Language: Cpp 2030 Delimiters: 2031 - 'cc' 2032 - 'cpp' 2033 BasedOnStyle: llvm 2034 CanonicalDelimiter: 'cc' 2035 2036**ReflowComments** (``bool``) 2037 If ``true``, clang-format will attempt to re-flow comments. 2038 2039 .. code-block:: c++ 2040 2041 false: 2042 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information 2043 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of information */ 2044 2045 true: 2046 // veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 2047 // information 2048 /* second veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongComment with plenty of 2049 * information */ 2050 2051**SortIncludes** (``bool``) 2052 If ``true``, clang-format will sort ``#includes``. 2053 2054 .. code-block:: c++ 2055 2056 false: true: 2057 #include "b.h" vs. #include "a.h" 2058 #include "a.h" #include "b.h" 2059 2060**SortUsingDeclarations** (``bool``) 2061 If ``true``, clang-format will sort using declarations. 2062 2063 The order of using declarations is defined as follows: 2064 Split the strings by "::" and discard any initial empty strings. The last 2065 element of each list is a non-namespace name; all others are namespace 2066 names. Sort the lists of names lexicographically, where the sort order of 2067 individual names is that all non-namespace names come before all namespace 2068 names, and within those groups, names are in case-insensitive 2069 lexicographic order. 2070 2071 .. code-block:: c++ 2072 2073 false: true: 2074 using std::cout; vs. using std::cin; 2075 using std::cin; using std::cout; 2076 2077**SpaceAfterCStyleCast** (``bool``) 2078 If ``true``, a space is inserted after C style casts. 2079 2080 .. code-block:: c++ 2081 2082 true: false: 2083 (int) i; vs. (int)i; 2084 2085**SpaceAfterLogicalNot** (``bool``) 2086 If ``true``, a space is inserted after the logical not operator (``!``). 2087 2088 .. code-block:: c++ 2089 2090 true: false: 2091 ! someExpression(); vs. !someExpression(); 2092 2093**SpaceAfterTemplateKeyword** (``bool``) 2094 If ``true``, a space will be inserted after the 'template' keyword. 2095 2096 .. code-block:: c++ 2097 2098 true: false: 2099 template <int> void foo(); vs. template<int> void foo(); 2100 2101**SpaceBeforeAssignmentOperators** (``bool``) 2102 If ``false``, spaces will be removed before assignment operators. 2103 2104 .. code-block:: c++ 2105 2106 true: false: 2107 int a = 5; vs. int a= 5; 2108 a += 42; a+= 42; 2109 2110**SpaceBeforeCpp11BracedList** (``bool``) 2111 If ``true``, a space will be inserted before a C++11 braced list 2112 used to initialize an object (after the preceding identifier or type). 2113 2114 .. code-block:: c++ 2115 2116 true: false: 2117 Foo foo { bar }; vs. Foo foo{ bar }; 2118 Foo {}; Foo{}; 2119 vector<int> { 1, 2, 3 }; vector<int>{ 1, 2, 3 }; 2120 new int[3] { 1, 2, 3 }; new int[3]{ 1, 2, 3 }; 2121 2122**SpaceBeforeCtorInitializerColon** (``bool``) 2123 If ``false``, spaces will be removed before constructor initializer 2124 colon. 2125 2126 .. code-block:: c++ 2127 2128 true: false: 2129 Foo::Foo() : a(a) {} Foo::Foo(): a(a) {} 2130 2131**SpaceBeforeInheritanceColon** (``bool``) 2132 If ``false``, spaces will be removed before inheritance colon. 2133 2134 .. code-block:: c++ 2135 2136 true: false: 2137 class Foo : Bar {} vs. class Foo: Bar {} 2138 2139**SpaceBeforeParens** (``SpaceBeforeParensOptions``) 2140 Defines in which cases to put a space before opening parentheses. 2141 2142 Possible values: 2143 2144 * ``SBPO_Never`` (in configuration: ``Never``) 2145 Never put a space before opening parentheses. 2146 2147 .. code-block:: c++ 2148 2149 void f() { 2150 if(true) { 2151 f(); 2152 } 2153 } 2154 2155 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``) 2156 Put a space before opening parentheses only after control statement 2157 keywords (``for/if/while...``). 2158 2159 .. code-block:: c++ 2160 2161 void f() { 2162 if (true) { 2163 f(); 2164 } 2165 } 2166 2167 * ``SBPO_NonEmptyParentheses`` (in configuration: ``NonEmptyParentheses``) 2168 Put a space before opening parentheses only if the parentheses are not 2169 empty i.e. '()' 2170 2171 .. code-block:: c++ 2172 2173 void() { 2174 if (true) { 2175 f(); 2176 g (x, y, z); 2177 } 2178 } 2179 2180 * ``SBPO_Always`` (in configuration: ``Always``) 2181 Always put a space before opening parentheses, except when it's 2182 prohibited by the syntax rules (in function-like macro definitions) or 2183 when determined by other style rules (after unary operators, opening 2184 parentheses, etc.) 2185 2186 .. code-block:: c++ 2187 2188 void f () { 2189 if (true) { 2190 f (); 2191 } 2192 } 2193 2194 2195 2196**SpaceBeforeRangeBasedForLoopColon** (``bool``) 2197 If ``false``, spaces will be removed before range-based for loop 2198 colon. 2199 2200 .. code-block:: c++ 2201 2202 true: false: 2203 for (auto v : values) {} vs. for(auto v: values) {} 2204 2205**SpaceInEmptyBlock** (``bool``) 2206 If ``true``, spaces will be inserted into ``{}``. 2207 2208 .. code-block:: c++ 2209 2210 true: false: 2211 void f() { } vs. void f() {} 2212 while (true) { } while (true) {} 2213 2214**SpaceInEmptyParentheses** (``bool``) 2215 If ``true``, spaces may be inserted into ``()``. 2216 2217 .. code-block:: c++ 2218 2219 true: false: 2220 void f( ) { vs. void f() { 2221 int x[] = {foo( ), bar( )}; int x[] = {foo(), bar()}; 2222 if (true) { if (true) { 2223 f( ); f(); 2224 } } 2225 } } 2226 2227**SpacesBeforeTrailingComments** (``unsigned``) 2228 The number of spaces before trailing line comments 2229 (``//`` - comments). 2230 2231 This does not affect trailing block comments (``/*`` - comments) as 2232 those commonly have different usage patterns and a number of special 2233 cases. 2234 2235 .. code-block:: c++ 2236 2237 SpacesBeforeTrailingComments: 3 2238 void f() { 2239 if (true) { // foo1 2240 f(); // bar 2241 } // foo 2242 } 2243 2244**SpacesInAngles** (``bool``) 2245 If ``true``, spaces will be inserted after ``<`` and before ``>`` 2246 in template argument lists. 2247 2248 .. code-block:: c++ 2249 2250 true: false: 2251 static_cast< int >(arg); vs. static_cast<int>(arg); 2252 std::function< void(int) > fct; std::function<void(int)> fct; 2253 2254**SpacesInCStyleCastParentheses** (``bool``) 2255 If ``true``, spaces may be inserted into C style casts. 2256 2257 .. code-block:: c++ 2258 2259 true: false: 2260 x = ( int32 )y vs. x = (int32)y 2261 2262**SpacesInContainerLiterals** (``bool``) 2263 If ``true``, spaces are inserted inside container literals (e.g. 2264 ObjC and Javascript array and dict literals). 2265 2266 .. code-block:: js 2267 2268 true: false: 2269 var arr = [ 1, 2, 3 ]; vs. var arr = [1, 2, 3]; 2270 f({a : 1, b : 2, c : 3}); f({a: 1, b: 2, c: 3}); 2271 2272**SpacesInParentheses** (``bool``) 2273 If ``true``, spaces will be inserted after ``(`` and before ``)``. 2274 2275 .. code-block:: c++ 2276 2277 true: false: 2278 t f( Deleted & ) & = delete; vs. t f(Deleted &) & = delete; 2279 2280**SpacesInSquareBrackets** (``bool``) 2281 If ``true``, spaces will be inserted after ``[`` and before ``]``. 2282 Lambdas or unspecified size array declarations will not be affected. 2283 2284 .. code-block:: c++ 2285 2286 true: false: 2287 int a[ 5 ]; vs. int a[5]; 2288 std::unique_ptr<int[]> foo() {} // Won't be affected 2289 2290**Standard** (``LanguageStandard``) 2291 Format compatible with this standard, e.g. use ``A<A<int> >`` 2292 instead of ``A<A<int>>`` for ``LS_Cpp03``. 2293 2294 Possible values: 2295 2296 * ``LS_Cpp03`` (in configuration: ``Cpp03``) 2297 Use C++03-compatible syntax. 2298 2299 * ``LS_Cpp11`` (in configuration: ``Cpp11``) 2300 Use features of C++11, C++14 and C++1z (e.g. ``A<A<int>>`` instead of 2301 ``A<A<int> >``). 2302 2303 * ``LS_Auto`` (in configuration: ``Auto``) 2304 Automatic detection based on the input. 2305 2306 2307 2308**StatementMacros** (``std::vector<std::string>``) 2309 A vector of macros that should be interpreted as complete 2310 statements. 2311 2312 Typical macros are expressions, and require a semi-colon to be 2313 added; sometimes this is not the case, and this allows to make 2314 clang-format aware of such cases. 2315 2316 For example: Q_UNUSED 2317 2318**TabWidth** (``unsigned``) 2319 The number of columns used for tab stops. 2320 2321**TypenameMacros** (``std::vector<std::string>``) 2322 A vector of macros that should be interpreted as type declarations 2323 instead of as function calls. 2324 2325 These are expected to be macros of the form: 2326 2327 .. code-block:: c++ 2328 2329 STACK_OF(...) 2330 2331 In the .clang-format configuration file, this can be configured like: 2332 2333 .. code-block:: yaml 2334 2335 TypenameMacros: ['STACK_OF', 'LIST'] 2336 2337 For example: OpenSSL STACK_OF, BSD LIST_ENTRY. 2338 2339**UseTab** (``UseTabStyle``) 2340 The way to use tab characters in the resulting file. 2341 2342 Possible values: 2343 2344 * ``UT_Never`` (in configuration: ``Never``) 2345 Never use tab. 2346 2347 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``) 2348 Use tabs only for indentation. 2349 2350 * ``UT_ForContinuationAndIndentation`` (in configuration: ``ForContinuationAndIndentation``) 2351 Use tabs only for line continuation and indentation. 2352 2353 * ``UT_Always`` (in configuration: ``Always``) 2354 Use tabs whenever we need to fill whitespace that spans at least from 2355 one tab stop to the next one. 2356 2357 2358 2359.. END_FORMAT_STYLE_OPTIONS 2360 2361Adding additional style options 2362=============================== 2363 2364Each additional style option adds costs to the clang-format project. Some of 2365these costs affect the clang-format development itself, as we need to make 2366sure that any given combination of options work and that new features don't 2367break any of the existing options in any way. There are also costs for end users 2368as options become less discoverable and people have to think about and make a 2369decision on options they don't really care about. 2370 2371The goal of the clang-format project is more on the side of supporting a 2372limited set of styles really well as opposed to supporting every single style 2373used by a codebase somewhere in the wild. Of course, we do want to support all 2374major projects and thus have established the following bar for adding style 2375options. Each new style option must .. 2376 2377 * be used in a project of significant size (have dozens of contributors) 2378 * have a publicly accessible style guide 2379 * have a person willing to contribute and maintain patches 2380 2381Examples 2382======== 2383 2384A style similar to the `Linux Kernel style 2385<https://www.kernel.org/doc/Documentation/CodingStyle>`_: 2386 2387.. code-block:: yaml 2388 2389 BasedOnStyle: LLVM 2390 IndentWidth: 8 2391 UseTab: Always 2392 BreakBeforeBraces: Linux 2393 AllowShortIfStatementsOnASingleLine: false 2394 IndentCaseLabels: false 2395 2396The result is (imagine that tabs are used for indentation here): 2397 2398.. code-block:: c++ 2399 2400 void test() 2401 { 2402 switch (x) { 2403 case 0: 2404 case 1: 2405 do_something(); 2406 break; 2407 case 2: 2408 do_something_else(); 2409 break; 2410 default: 2411 break; 2412 } 2413 if (condition) 2414 do_something_completely_different(); 2415 2416 if (x == y) { 2417 q(); 2418 } else if (x > y) { 2419 w(); 2420 } else { 2421 r(); 2422 } 2423 } 2424 2425A style similar to the default Visual Studio formatting style: 2426 2427.. code-block:: yaml 2428 2429 UseTab: Never 2430 IndentWidth: 4 2431 BreakBeforeBraces: Allman 2432 AllowShortIfStatementsOnASingleLine: false 2433 IndentCaseLabels: false 2434 ColumnLimit: 0 2435 2436The result is: 2437 2438.. code-block:: c++ 2439 2440 void test() 2441 { 2442 switch (suffix) 2443 { 2444 case 0: 2445 case 1: 2446 do_something(); 2447 break; 2448 case 2: 2449 do_something_else(); 2450 break; 2451 default: 2452 break; 2453 } 2454 if (condition) 2455 do_somthing_completely_different(); 2456 2457 if (x == y) 2458 { 2459 q(); 2460 } 2461 else if (x > y) 2462 { 2463 w(); 2464 } 2465 else 2466 { 2467 r(); 2468 } 2469 } 2470