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