blob: 727e60488f0a29a7d3953a57b37a6a580eea36b1 [file] [log] [blame]
Alexander Kornienkod278e0e2013-09-04 15:09:13 +00001==========================
2Clang-Format Style Options
3==========================
4
5:doc:`ClangFormatStyleOptions` describes configurable formatting style options
6supported by :doc:`LibFormat` and :doc:`ClangFormat`.
7
8When using :program:`clang-format` command line utility or
9``clang::format::reformat(...)`` functions from code, one can either use one of
10the predefined styles (LLVM, Google, Chromium, Mozilla, WebKit) or create a
11custom style by configuring specific style options.
12
13
14Configuring Style with clang-format
15===================================
16
17:program:`clang-format` supports two ways to provide custom style options:
18directly specify style configuration in the ``-style=`` command line option or
Hans Wennborg9f6581b2013-09-10 15:41:12 +000019use ``-style=file`` and put style configuration in the ``.clang-format`` or
20``_clang-format`` file in the project directory.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +000021
22When using ``-style=file``, :program:`clang-format` for each input file will
23try to find the ``.clang-format`` file located in the closest parent directory
24of the input file. When the standard input is used, the search is started from
25the current directory.
26
27The ``.clang-format`` file uses YAML format:
28
29.. code-block:: yaml
30
31 key1: value1
32 key2: value2
33 # A comment.
34 ...
35
Alexander Kornienko092cb212014-08-12 13:34:22 +000036The configuration file can consist of several sections each having different
37``Language:`` parameter denoting the programming language this section of the
38configuration is targeted at. See the description of the **Language** option
39below for the list of supported languages. The first section may have no
40language set, it will set the default style options for all lanugages.
41Configuration sections for specific language will override options set in the
42default section.
43
44When :program:`clang-format` formats a file, it auto-detects the language using
45the file name. When formatting standard input or a file that doesn't have the
46extension corresponding to its language, ``-assume-filename=`` option can be
47used to override the file name :program:`clang-format` uses to detect the
48language.
49
50An example of a configuration file for multiple languages:
51
52.. code-block:: yaml
53
54 ---
55 # We'll use defaults from the LLVM style, but with 4 columns indentation.
56 BasedOnStyle: LLVM
57 IndentWidth: 4
58 ---
59 Language: Cpp
60 # Force pointers to the type for C++.
61 DerivePointerAlignment: false
62 PointerAlignment: Left
63 ---
64 Language: JavaScript
65 # Use 100 columns for JS.
66 ColumnLimit: 100
67 ---
68 Language: Proto
69 # Don't format .proto files.
70 DisableFormat: true
71 ...
72
Alexander Kornienkod278e0e2013-09-04 15:09:13 +000073An easy way to get a valid ``.clang-format`` file containing all configuration
74options of a certain predefined style is:
75
76.. code-block:: console
77
78 clang-format -style=llvm -dump-config > .clang-format
79
80When specifying configuration in the ``-style=`` option, the same configuration
81is applied for all input files. The format of the configuration is:
82
83.. code-block:: console
84
85 -style='{key1: value1, key2: value2, ...}'
86
87
Daniel Jasperd8b4ec02014-10-07 12:15:15 +000088Disabling Formatting on a Piece of Code
89=======================================
90
91Clang-format understands also special comments that switch formatting in a
92delimited range. The code between a comment ``// clang-format off`` or
93``/* clang-format off */`` up to a comment ``// clang-format on`` or
94``/* clang-format on */`` will not be formatted. The comments themselves
95will be formatted (aligned) normally.
96
97.. code-block:: c++
98
99 int formatted_code;
100 // clang-format off
101 void unformatted_code ;
102 // clang-format on
103 void formatted_code_again;
104
105
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000106Configuring Style in Code
107=========================
108
109When using ``clang::format::reformat(...)`` functions, the format is specified
110by supplying the `clang::format::FormatStyle
111<http://clang.llvm.org/doxygen/structclang_1_1format_1_1FormatStyle.html>`_
112structure.
113
114
115Configurable Format Style Options
116=================================
117
118This section lists the supported style options. Value type is specified for
119each option. For enumeration types possible values are specified both as a C++
Alexander Kornienko472d27a2013-09-04 15:14:18 +0000120enumeration member (with a prefix, e.g. ``LS_Auto``), and as a value usable in
121the configuration (without a prefix: ``Auto``).
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000122
123
124**BasedOnStyle** (``string``)
125 The style used for all options not specifically set in the configuration.
126
127 This option is supported only in the :program:`clang-format` configuration
128 (both within ``-style='{...}'`` and the ``.clang-format`` file).
129
130 Possible values:
131
132 * ``LLVM``
133 A style complying with the `LLVM coding standards
134 <http://llvm.org/docs/CodingStandards.html>`_
135 * ``Google``
136 A style complying with `Google's C++ style guide
137 <http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml>`_
138 * ``Chromium``
139 A style complying with `Chromium's style guide
140 <http://www.chromium.org/developers/coding-style>`_
141 * ``Mozilla``
142 A style complying with `Mozilla's style guide
143 <https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style>`_
144 * ``WebKit``
145 A style complying with `WebKit's style guide
146 <http://www.webkit.org/coding/coding-style.html>`_
147
148.. START_FORMAT_STYLE_OPTIONS
149
150**AccessModifierOffset** (``int``)
151 The extra indent or outdent of access modifiers, e.g. ``public:``.
152
Daniel Jasper3219e432014-12-02 13:24:51 +0000153**AlignAfterOpenBracket** (``bool``)
154 If ``true``, horizontally aligns arguments after an open bracket.
155
156 This applies to round brackets (parentheses), angle brackets and square
157 brackets. This will result in formattings like
Daniel Jasper20580fd2015-06-11 13:31:45 +0000158 \code
159 someLongFunction(argument1,
160 argument2);
161 \endcode
Daniel Jasper3219e432014-12-02 13:24:51 +0000162
Daniel Jaspera44991332015-04-29 13:06:49 +0000163**AlignConsecutiveAssignments** (``bool``)
164 If ``true``, aligns consecutive assignments.
165
166 This will align the assignment operators of consecutive lines. This
167 will result in formattings like
Daniel Jasper20580fd2015-06-11 13:31:45 +0000168 \code
169 int aaaa = 12;
170 int b = 23;
171 int ccc = 23;
172 \endcode
Daniel Jaspera44991332015-04-29 13:06:49 +0000173
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000174**AlignEscapedNewlinesLeft** (``bool``)
175 If ``true``, aligns escaped newlines as far left as possible.
176 Otherwise puts them into the right-most column.
177
Daniel Jasper3219e432014-12-02 13:24:51 +0000178**AlignOperands** (``bool``)
179 If ``true``, horizontally align operands of binary and ternary
180 expressions.
181
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000182**AlignTrailingComments** (``bool``)
183 If ``true``, aligns trailing comments.
184
185**AllowAllParametersOfDeclarationOnNextLine** (``bool``)
186 Allow putting all parameters of a function declaration onto
187 the next line even if ``BinPackParameters`` is ``false``.
188
Daniel Jasper17605d32014-05-14 09:33:35 +0000189**AllowShortBlocksOnASingleLine** (``bool``)
190 Allows contracting simple braced statements to a single line.
191
192 E.g., this allows ``if (a) { return; }`` to be put on a single line.
193
Daniel Jasperb87899b2014-09-10 13:11:45 +0000194**AllowShortCaseLabelsOnASingleLine** (``bool``)
195 If ``true``, short case labels will be contracted to a single line.
196
Daniel Jasperb5524822014-04-09 14:05:49 +0000197**AllowShortFunctionsOnASingleLine** (``ShortFunctionStyle``)
198 Dependent on the value, ``int f() { return 0; }`` can be put
199 on a single line.
200
201 Possible values:
202
203 * ``SFS_None`` (in configuration: ``None``)
204 Never merge functions into a single line.
Daniel Jasper3219e432014-12-02 13:24:51 +0000205 * ``SFS_Empty`` (in configuration: ``Empty``)
206 Only merge empty functions.
Daniel Jasper20580fd2015-06-11 13:31:45 +0000207 * ``SFS_Inline`` (in configuration: ``Inline``)
208 Only merge functions defined inside a class. Implies "empty".
Daniel Jasperb5524822014-04-09 14:05:49 +0000209 * ``SFS_All`` (in configuration: ``All``)
210 Merge all functions fitting on a single line.
211
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000212
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000213**AllowShortIfStatementsOnASingleLine** (``bool``)
214 If ``true``, ``if (a) return;`` can be put on a single
215 line.
216
217**AllowShortLoopsOnASingleLine** (``bool``)
218 If ``true``, ``while (true) continue;`` can be put on a
219 single line.
220
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000221**AlwaysBreakAfterDefinitionReturnType** (``DefinitionReturnTypeBreakingStyle``)
222 The function definition return type breaking style to use.
Daniel Jasperca4ea1c2014-08-05 12:16:31 +0000223
Birunthan Mohanathasa0388a82015-06-29 15:30:42 +0000224 Possible values:
225
226 * ``DRTBS_None`` (in configuration: ``None``)
227 Break after return type automatically.
228 ``PenaltyReturnTypeOnItsOwnLine`` is taken into account.
229 * ``DRTBS_All`` (in configuration: ``All``)
230 Always break after the return type.
231 * ``DRTBS_TopLevel`` (in configuration: ``TopLevel``)
232 Always break after the return types of top level functions.
233
Daniel Jasperca4ea1c2014-08-05 12:16:31 +0000234
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000235**AlwaysBreakBeforeMultilineStrings** (``bool``)
236 If ``true``, always break before multiline string literals.
237
Daniel Jasper2aaedd32015-06-18 09:12:47 +0000238 This flag is mean to make cases where there are multiple multiline strings
239 in a file look more consistent. Thus, it will only take effect if wrapping
240 the string at that point leads to it being indented
241 ``ContinuationIndentWidth`` spaces from the start of the line.
242
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000243**AlwaysBreakTemplateDeclarations** (``bool``)
244 If ``true``, always break after the ``template<...>`` of a
245 template declaration.
246
Daniel Jasper18210d72014-10-09 09:52:05 +0000247**BinPackArguments** (``bool``)
248 If ``false``, a function call's arguments will either be all on the
249 same line or will have one line each.
250
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000251**BinPackParameters** (``bool``)
Daniel Jasper18210d72014-10-09 09:52:05 +0000252 If ``false``, a function declaration's or function definition's
253 parameters will either all be on the same line or will have one line each.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000254
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000255**BraceWrapping** (``BraceWrappingFlags``)
256 Control of individual brace wrapping cases.
257
258 If ``BreakBeforeBraces`` is set to ``custom``, use this to specify how each
259 individual brace case should be handled. Otherwise, this is ignored.
260
261 Nested configuration flags:
262
263 * ``bool AfterClass`` Wrap class definitions.
264 * ``bool AfterControlStatement`` Wrap control statements (if/for/while/switch/..).
265 * ``bool AfterEnum`` Wrap enum definitions.
266 * ``bool AfterFunction`` Wrap function definitions.
267 * ``bool AfterNamespace`` Wrap namespace definitions.
268 * ``bool AfterObjCDeclaration`` Wrap ObjC definitions (@autoreleasepool, interfaces, ..).
269 * ``bool AfterStruct`` Wrap struct definitions.
270 * ``bool AfterUnion`` Wrap union definitions.
271 * ``bool BeforeCatch`` Wrap before ``catch``.
272 * ``bool BeforeElse`` Wrap before ``else``.
273 * ``bool IndentBraces`` Indent the wrapped braces themselves.
274
275
Daniel Jasperac043c92014-09-15 11:11:00 +0000276**BreakBeforeBinaryOperators** (``BinaryOperatorStyle``)
277 The way to wrap binary operators.
278
279 Possible values:
280
281 * ``BOS_None`` (in configuration: ``None``)
282 Break after operators.
283 * ``BOS_NonAssignment`` (in configuration: ``NonAssignment``)
284 Break before operators that aren't assignments.
285 * ``BOS_All`` (in configuration: ``All``)
286 Break before operators.
287
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000288
289**BreakBeforeBraces** (``BraceBreakingStyle``)
290 The brace breaking style to use.
291
292 Possible values:
293
294 * ``BS_Attach`` (in configuration: ``Attach``)
295 Always attach braces to surrounding context.
296 * ``BS_Linux`` (in configuration: ``Linux``)
297 Like ``Attach``, but break before braces on function, namespace and
298 class definitions.
Birunthan Mohanathas305fa9c2015-07-12 03:13:54 +0000299 * ``BS_Mozilla`` (in configuration: ``Mozilla``)
300 Like ``Attach``, but break before braces on enum, function, and record
301 definitions.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000302 * ``BS_Stroustrup`` (in configuration: ``Stroustrup``)
Roman Kashitsyn291f64f2015-08-10 13:43:19 +0000303 Like ``Attach``, but break before function definitions, 'catch', and 'else'.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000304 * ``BS_Allman`` (in configuration: ``Allman``)
305 Always break before braces.
Daniel Jasperee107ad2014-02-13 12:51:50 +0000306 * ``BS_GNU`` (in configuration: ``GNU``)
307 Always break before braces and add an extra level of indentation to
308 braces of control statements, not to those of class, function
309 or other definitions.
Roman Kashitsyn291f64f2015-08-10 13:43:19 +0000310 * ``BS_WebKit`` (in configuration: ``WebKit``)
311 Like ``Attach``, but break before functions.
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000312 * ``BS_Custom`` (in configuration: ``Custom``)
313 Configure each individual brace in ``BraceWrapping``.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000314
315
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000316**BreakBeforeTernaryOperators** (``bool``)
317 If ``true``, ternary operators will be placed after line breaks.
318
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000319**BreakConstructorInitializersBeforeComma** (``bool``)
320 Always break constructor initializers before commas and align
321 the commas with the colon.
322
323**ColumnLimit** (``unsigned``)
324 The column limit.
325
326 A column limit of ``0`` means that there is no column limit. In this case,
327 clang-format will respect the input's line breaking decisions within
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000328 statements unless they contradict other rules.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000329
Daniel Jasperee107ad2014-02-13 12:51:50 +0000330**CommentPragmas** (``std::string``)
331 A regular expression that describes comments with special meaning,
332 which should not be split into lines or otherwise changed.
333
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000334**ConstructorInitializerAllOnOneLineOrOnePerLine** (``bool``)
335 If the constructor initializers don't fit on a line, put each
336 initializer on its own line.
337
338**ConstructorInitializerIndentWidth** (``unsigned``)
339 The number of characters to use for indentation of constructor
340 initializer lists.
341
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000342**ContinuationIndentWidth** (``unsigned``)
343 Indent width for line continuations.
344
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000345**Cpp11BracedListStyle** (``bool``)
346 If ``true``, format braced lists as best suited for C++11 braced
347 lists.
348
349 Important differences:
350 - No spaces inside the braced list.
351 - No line break before the closing brace.
352 - Indentation with the continuation indent, not with the block indent.
353
354 Fundamentally, C++11 braced lists are formatted exactly like function
355 calls would be formatted in their place. If the braced list follows a name
356 (e.g. a type or variable name), clang-format formats as if the ``{}`` were
357 the parentheses of a function call with that name. If there is no name,
358 a zero-length name is assumed.
359
Daniel Jasper553d4872014-06-17 12:40:34 +0000360**DerivePointerAlignment** (``bool``)
361 If ``true``, analyze the formatted file for the most common
Daniel Jasper7f432662014-12-02 14:21:16 +0000362 alignment of & and \*. ``PointerAlignment`` is then used only as fallback.
Daniel Jasper553d4872014-06-17 12:40:34 +0000363
364**DisableFormat** (``bool``)
Birunthan Mohanathasb744e722015-06-27 09:25:28 +0000365 Disables formatting completely.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000366
367**ExperimentalAutoDetectBinPacking** (``bool``)
368 If ``true``, clang-format detects whether function calls and
369 definitions are formatted with one parameter per line.
370
371 Each call can be bin-packed, one-per-line or inconclusive. If it is
372 inconclusive, e.g. completely on one line, but a decision needs to be
373 made, clang-format analyzes whether there are other bin-packed cases in
374 the input file and act accordingly.
375
376 NOTE: This is an experimental flag, that might go away or be renamed. Do
377 not use this in config files, etc. Use at your own risk.
378
Daniel Jaspere1e43192014-04-01 12:55:11 +0000379**ForEachMacros** (``std::vector<std::string>``)
Daniel Jasperb5524822014-04-09 14:05:49 +0000380 A vector of macros that should be interpreted as foreach loops
381 instead of as function calls.
Daniel Jaspere1e43192014-04-01 12:55:11 +0000382
Daniel Jasperb5524822014-04-09 14:05:49 +0000383 These are expected to be macros of the form:
Daniel Jasper20580fd2015-06-11 13:31:45 +0000384 \code
385 FOREACH(<variable-declaration>, ...)
386 <loop-body>
387 \endcode
Daniel Jasperb5524822014-04-09 14:05:49 +0000388
389 For example: BOOST_FOREACH.
Daniel Jaspere1e43192014-04-01 12:55:11 +0000390
Daniel Jasperc1bc38e2015-09-29 14:57:55 +0000391**IncludeCategories** (``std::vector<std::pair<std::string, unsigned>>``)
392 Regular expressions denoting the different #include categories used
393 for ordering #includes.
394
395 These regular expressions are matched against the filename of an include
396 (including the <> or "") in order. The value belonging to the first
397 matching regular expression is assigned and #includes are sorted first
398 according to increasing category number and then alphabetically within
399 each category.
400
401 If none of the regular expressions match, UINT_MAX is assigned as
402 category. The main header for a source file automatically gets category 0,
403 so that it is kept at the beginning of the #includes
404 (http://llvm.org/docs/CodingStandards.html#include-style).
405
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000406**IndentCaseLabels** (``bool``)
407 Indent case labels one level from the switch statement.
408
409 When ``false``, use the same indentation level as for the switch statement.
410 Switch statement body is always indented one level more than case labels.
411
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000412**IndentWidth** (``unsigned``)
Alexander Kornienko45ca09b2013-09-27 16:16:55 +0000413 The number of columns to use for indentation.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000414
Daniel Jasperc75e1ef2014-07-09 08:42:42 +0000415**IndentWrappedFunctionNames** (``bool``)
416 Indent if a function definition or declaration is wrapped after the
417 type.
418
Daniel Jasperb5524822014-04-09 14:05:49 +0000419**KeepEmptyLinesAtTheStartOfBlocks** (``bool``)
420 If true, empty lines at the start of blocks are kept.
421
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000422**Language** (``LanguageKind``)
423 Language, this format style is targeted at.
424
425 Possible values:
426
427 * ``LK_None`` (in configuration: ``None``)
428 Do not use.
429 * ``LK_Cpp`` (in configuration: ``Cpp``)
430 Should be used for C, C++, ObjectiveC, ObjectiveC++.
Daniel Jasper18210d72014-10-09 09:52:05 +0000431 * ``LK_Java`` (in configuration: ``Java``)
432 Should be used for Java.
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000433 * ``LK_JavaScript`` (in configuration: ``JavaScript``)
434 Should be used for JavaScript.
Daniel Jasperee107ad2014-02-13 12:51:50 +0000435 * ``LK_Proto`` (in configuration: ``Proto``)
436 Should be used for Protocol Buffers
437 (https://developers.google.com/protocol-buffers/).
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000438
439
Birunthan Mohanathasb001a0b2015-07-03 17:25:16 +0000440**MacroBlockBegin** (``std::string``)
441 A regular expression matching macros that start a block.
442
443**MacroBlockEnd** (``std::string``)
444 A regular expression matching macros that end a block.
445
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000446**MaxEmptyLinesToKeep** (``unsigned``)
447 The maximum number of consecutive empty lines to keep.
448
449**NamespaceIndentation** (``NamespaceIndentationKind``)
450 The indentation used for namespaces.
451
452 Possible values:
453
454 * ``NI_None`` (in configuration: ``None``)
455 Don't indent in namespaces.
456 * ``NI_Inner`` (in configuration: ``Inner``)
457 Indent only in inner namespaces (nested in other namespaces).
458 * ``NI_All`` (in configuration: ``All``)
459 Indent in all namespaces.
460
461
Daniel Jaspereb2226e2014-10-28 16:56:37 +0000462**ObjCBlockIndentWidth** (``unsigned``)
463 The number of characters to use for indentation of ObjC blocks.
464
Daniel Jasperee107ad2014-02-13 12:51:50 +0000465**ObjCSpaceAfterProperty** (``bool``)
466 Add a space after ``@property`` in Objective-C, i.e. use
Daniel Jasper17605d32014-05-14 09:33:35 +0000467 ``\@property (readonly)`` instead of ``\@property(readonly)``.
Daniel Jasperee107ad2014-02-13 12:51:50 +0000468
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000469**ObjCSpaceBeforeProtocolList** (``bool``)
470 Add a space in front of an Objective-C protocol list, i.e. use
471 ``Foo <Protocol>`` instead of ``Foo<Protocol>``.
472
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000473**PenaltyBreakBeforeFirstCallParameter** (``unsigned``)
474 The penalty for breaking a function call after "call(".
475
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000476**PenaltyBreakComment** (``unsigned``)
477 The penalty for each line break introduced inside a comment.
478
479**PenaltyBreakFirstLessLess** (``unsigned``)
480 The penalty for breaking before the first ``<<``.
481
482**PenaltyBreakString** (``unsigned``)
483 The penalty for each line break introduced inside a string literal.
484
485**PenaltyExcessCharacter** (``unsigned``)
486 The penalty for each character outside of the column limit.
487
488**PenaltyReturnTypeOnItsOwnLine** (``unsigned``)
489 Penalty for putting the return type of a function onto its own
490 line.
491
Daniel Jasper553d4872014-06-17 12:40:34 +0000492**PointerAlignment** (``PointerAlignmentStyle``)
493 Pointer and reference alignment style.
494
495 Possible values:
496
497 * ``PAS_Left`` (in configuration: ``Left``)
498 Align pointer to the left.
499 * ``PAS_Right`` (in configuration: ``Right``)
500 Align pointer to the right.
501 * ``PAS_Middle`` (in configuration: ``Middle``)
502 Align pointer in the middle.
503
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000504
Daniel Jasperb87899b2014-09-10 13:11:45 +0000505**SpaceAfterCStyleCast** (``bool``)
506 If ``true``, a space may be inserted after C style casts.
507
Daniel Jasperd94bff32013-09-25 15:15:02 +0000508**SpaceBeforeAssignmentOperators** (``bool``)
Alexander Kornienko45ca09b2013-09-27 16:16:55 +0000509 If ``false``, spaces will be removed before assignment operators.
Daniel Jasperd94bff32013-09-25 15:15:02 +0000510
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000511**SpaceBeforeParens** (``SpaceBeforeParensOptions``)
512 Defines in which cases to put a space before opening parentheses.
513
514 Possible values:
515
516 * ``SBPO_Never`` (in configuration: ``Never``)
517 Never put a space before opening parentheses.
518 * ``SBPO_ControlStatements`` (in configuration: ``ControlStatements``)
519 Put a space before opening parentheses only after control statement
520 keywords (``for/if/while...``).
521 * ``SBPO_Always`` (in configuration: ``Always``)
522 Always put a space before opening parentheses, except when it's
523 prohibited by the syntax rules (in function-like macro definitions) or
524 when determined by other style rules (after unary operators, opening
525 parentheses, etc.)
526
527
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000528**SpaceInEmptyParentheses** (``bool``)
Daniel Jasperee107ad2014-02-13 12:51:50 +0000529 If ``true``, spaces may be inserted into '()'.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000530
531**SpacesBeforeTrailingComments** (``unsigned``)
Daniel Jasperc0be7602014-05-15 13:55:19 +0000532 The number of spaces before trailing line comments
533 (``//`` - comments).
Daniel Jasperb5524822014-04-09 14:05:49 +0000534
Daniel Jasperc0be7602014-05-15 13:55:19 +0000535 This does not affect trailing block comments (``/**/`` - comments) as those
Daniel Jasperb5524822014-04-09 14:05:49 +0000536 commonly have different usage patterns and a number of special cases.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000537
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000538**SpacesInAngles** (``bool``)
539 If ``true``, spaces will be inserted after '<' and before '>' in
540 template argument lists
541
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000542**SpacesInCStyleCastParentheses** (``bool``)
Daniel Jasperee107ad2014-02-13 12:51:50 +0000543 If ``true``, spaces may be inserted into C style casts.
544
545**SpacesInContainerLiterals** (``bool``)
546 If ``true``, spaces are inserted inside container literals (e.g.
547 ObjC and Javascript array and dict literals).
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000548
549**SpacesInParentheses** (``bool``)
Alexander Kornienkofdca83d2013-12-10 10:18:34 +0000550 If ``true``, spaces will be inserted after '(' and before ')'.
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000551
Daniel Jasperad981f82014-08-26 11:41:14 +0000552**SpacesInSquareBrackets** (``bool``)
Daniel Jasperb87899b2014-09-10 13:11:45 +0000553 If ``true``, spaces will be inserted after '[' and before ']'.
Daniel Jasperad981f82014-08-26 11:41:14 +0000554
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000555**Standard** (``LanguageStandard``)
556 Format compatible with this standard, e.g. use
557 ``A<A<int> >`` instead of ``A<A<int>>`` for LS_Cpp03.
558
559 Possible values:
560
561 * ``LS_Cpp03`` (in configuration: ``Cpp03``)
562 Use C++03-compatible syntax.
563 * ``LS_Cpp11`` (in configuration: ``Cpp11``)
564 Use features of C++11 (e.g. ``A<A<int>>`` instead of
565 ``A<A<int> >``).
566 * ``LS_Auto`` (in configuration: ``Auto``)
567 Automatic detection based on the input.
568
569
Alexander Kornienko45ca09b2013-09-27 16:16:55 +0000570**TabWidth** (``unsigned``)
571 The number of columns used for tab stops.
572
573**UseTab** (``UseTabStyle``)
574 The way to use tab characters in the resulting file.
575
576 Possible values:
577
578 * ``UT_Never`` (in configuration: ``Never``)
579 Never use tab.
580 * ``UT_ForIndentation`` (in configuration: ``ForIndentation``)
581 Use tabs only for indentation.
582 * ``UT_Always`` (in configuration: ``Always``)
583 Use tabs whenever we need to fill whitespace that spans at least from
584 one tab stop to the next one.
585
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000586
587.. END_FORMAT_STYLE_OPTIONS
588
Daniel Jasper49d3d582015-10-05 07:24:55 +0000589Adding additional style options
590===============================
591
592Each additional style option adds costs to the clang-format project. Some of
593these costs affect the clang-format developement itself, as we need to make
594sure that any given combination of options work and that new features don't
595break any of the existing options in any way. There are also costs for end users
596as options become less discoverable and people have to think about and make a
597decision on options they don't really care about.
598
599The goal of the clang-format project is more on the side of supporting a
600limited set of styles really well as opposed to supporting every single style
601used by a codebase somewhere in the wild. Of course, we do want to support all
602major projects and thus have established the following bar for adding style
603options. Each new style option must ..
604
Daniel Jasperfcbea712015-10-05 13:30:42 +0000605 * be used in a project of significant size (have dozens of contributors)
606 * have a publicly accessible style guide
607 * have a person willing to contribute and maintain patches
Daniel Jasper49d3d582015-10-05 07:24:55 +0000608
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000609Examples
610========
611
612A style similar to the `Linux Kernel style
613<https://www.kernel.org/doc/Documentation/CodingStyle>`_:
614
615.. code-block:: yaml
616
617 BasedOnStyle: LLVM
618 IndentWidth: 8
Alexander Kornienko8ba68f62013-09-27 16:19:25 +0000619 UseTab: Always
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000620 BreakBeforeBraces: Linux
621 AllowShortIfStatementsOnASingleLine: false
622 IndentCaseLabels: false
623
624The result is (imagine that tabs are used for indentation here):
625
626.. code-block:: c++
627
628 void test()
629 {
630 switch (x) {
631 case 0:
632 case 1:
633 do_something();
634 break;
635 case 2:
636 do_something_else();
637 break;
638 default:
639 break;
640 }
641 if (condition)
642 do_something_completely_different();
643
644 if (x == y) {
645 q();
646 } else if (x > y) {
647 w();
648 } else {
649 r();
650 }
651 }
652
653A style similar to the default Visual Studio formatting style:
654
655.. code-block:: yaml
656
Alexander Kornienko8ba68f62013-09-27 16:19:25 +0000657 UseTab: Never
Alexander Kornienkod278e0e2013-09-04 15:09:13 +0000658 IndentWidth: 4
659 BreakBeforeBraces: Allman
660 AllowShortIfStatementsOnASingleLine: false
661 IndentCaseLabels: false
662 ColumnLimit: 0
663
664The result is:
665
666.. code-block:: c++
667
668 void test()
669 {
670 switch (suffix)
671 {
672 case 0:
673 case 1:
674 do_something();
675 break;
676 case 2:
677 do_something_else();
678 break;
679 default:
680 break;
681 }
682 if (condition)
683 do_somthing_completely_different();
684
685 if (x == y)
686 {
687 q();
688 }
689 else if (x > y)
690 {
691 w();
692 }
693 else
694 {
695 r();
696 }
697 }
698