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