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