1# Uncrustify 0.62
2#
3# Custom configuration for PyInstaller. Based on PEP 7 style guidelines.
4#
5# Invoke uncrustify with `bootloader` as the working dir as follows:
6# $ uncrustify -c uncrustify.cfg --no-backup src/*.{h,c} windows/*.h
7#
8
9#
10# General options
11#
12
13# The type of line endings
14newlines                                  = auto     # auto/lf/crlf/cr
15
16# The original size of tabs in the input
17input_tab_size                            = 4        # number
18
19# The size of tabs in the output (only used if align_with_tabs=true)
20output_tab_size                           = 4        # number
21
22# The ASCII value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
23string_escape_char                        = 92       # number
24
25# Alternate string escape char for Pawn. Only works right before the quote char.
26string_escape_char2                       = 0        # number
27
28# Replace tab characters found in string literals with the escape sequence \t instead.
29string_replace_tab_chars                  = false    # false/true
30
31# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
32# If true (default), 'assert(x<0 && y>=3)' will be broken.
33# Improvements to template detection may make this option obsolete.
34tok_split_gte                             = false    # false/true
35
36# Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
37disable_processing_cmt                    = ""         # string
38
39# Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
40enable_processing_cmt                     = ""         # string
41
42# Enable parsing of digraphs. Default=false
43enable_digraphs                           = false    # false/true
44
45# Control what to do with the UTF-8 BOM (recommend 'remove')
46utf8_bom                                  = ignore   # ignore/add/remove/force
47
48# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
49utf8_byte                                 = false    # false/true
50
51# Force the output encoding to UTF-8
52utf8_force                                = false    # false/true
53
54#
55# Indenting
56#
57
58# The number of columns to indent per level.
59# Usually 2, 3, 4, or 8.
60indent_columns                            = 4        # number
61
62# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
63# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
64indent_continue                           = 0        # number
65
66# How to use tabs when indenting code
67# 0=spaces only
68# 1=indent with tabs to brace level, align with spaces
69# 2=indent and align with tabs, using spaces when not on a tabstop
70indent_with_tabs                          = 0        # number
71
72# Comments that are not a brace level are indented with tabs on a tabstop.
73# Requires indent_with_tabs=2. If false, will use spaces.
74indent_cmt_with_tabs                      = false    # false/true
75
76# Whether to indent strings broken by '\' so that they line up
77indent_align_string                       = false    # false/true
78
79# The number of spaces to indent multi-line XML strings.
80# Requires indent_align_string=True
81indent_xml_string                         = 0        # number
82
83# Spaces to indent '{' from level
84indent_brace                              = 0        # number
85
86# Whether braces are indented to the body level
87indent_braces                             = false    # false/true
88
89# Disabled indenting function braces if indent_braces is true
90indent_braces_no_func                     = false    # false/true
91
92# Disabled indenting class braces if indent_braces is true
93indent_braces_no_class                    = false    # false/true
94
95# Disabled indenting struct braces if indent_braces is true
96indent_braces_no_struct                   = false    # false/true
97
98# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
99indent_brace_parent                       = false    # false/true
100
101# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
102indent_paren_open_brace                   = false    # false/true
103
104# Whether the 'namespace' body is indented
105indent_namespace                          = false    # false/true
106
107# Only indent one namespace and no sub-namespaces.
108# Requires indent_namespace=true.
109indent_namespace_single_indent            = false    # false/true
110
111# The number of spaces to indent a namespace block
112indent_namespace_level                    = 0        # number
113
114# If the body of the namespace is longer than this number, it won't be indented.
115# Requires indent_namespace=true. Default=0 (no limit)
116indent_namespace_limit                    = 0        # number
117
118# Whether the 'extern "C"' body is indented
119indent_extern                             = false    # false/true
120
121# Whether the 'class' body is indented
122indent_class                              = false    # false/true
123
124# Whether to indent the stuff after a leading base class colon
125indent_class_colon                        = false    # false/true
126
127# Indent based on a class colon instead of the stuff after the colon.
128# Requires indent_class_colon=true. Default=false
129indent_class_on_colon                     = false    # false/true
130
131# Whether to indent the stuff after a leading class initializer colon
132indent_constr_colon                       = false    # false/true
133
134# Virtual indent from the ':' for member initializers. Default is 2
135indent_ctor_init_leading                  = 2        # number
136
137# Additional indenting for constructor initializer list
138indent_ctor_init                          = 0        # number
139
140# False=treat 'else\nif' as 'else if' for indenting purposes
141# True=indent the 'if' one level
142indent_else_if                            = false    # false/true
143
144# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
145indent_var_def_blk                        = 0        # number
146
147# Indent continued variable declarations instead of aligning.
148indent_var_def_cont                       = false    # false/true
149
150# Indent continued shift expressions ('<<' and '>>') instead of aligning.
151# Turn align_left_shift off when enabling this.
152indent_shift                              = false    # false/true
153
154# True:  force indentation of function definition to start in column 1
155# False: use the default behavior
156indent_func_def_force_col1                = false    # false/true
157
158# True:  indent continued function call parameters one indent level
159# False: align parameters under the open paren
160indent_func_call_param                    = false    # false/true
161
162# Same as indent_func_call_param, but for function defs
163indent_func_def_param                     = false    # false/true
164
165# Same as indent_func_call_param, but for function protos
166indent_func_proto_param                   = false    # false/true
167
168# Same as indent_func_call_param, but for class declarations
169indent_func_class_param                   = false    # false/true
170
171# Same as indent_func_call_param, but for class variable constructors
172indent_func_ctor_var_param                = false    # false/true
173
174# Same as indent_func_call_param, but for templates
175indent_template_param                     = false    # false/true
176
177# Double the indent for indent_func_xxx_param options
178indent_func_param_double                  = false    # false/true
179
180# Indentation column for standalone 'const' function decl/proto qualifier
181indent_func_const                         = 0        # number
182
183# Indentation column for standalone 'throw' function decl/proto qualifier
184indent_func_throw                         = 0        # number
185
186# The number of spaces to indent a continued '->' or '.'
187# Usually set to 0, 1, or indent_columns.
188indent_member                             = 0        # number
189
190# Spaces to indent single line ('//') comments on lines before code
191indent_sing_line_comments                 = 0        # number
192
193# If set, will indent trailing single line ('//') comments relative
194# to the code instead of trying to keep the same absolute column
195indent_relative_single_line_comments      = false    # false/true
196
197# Spaces to indent 'case' from 'switch'
198# Usually 0 or indent_columns.
199indent_switch_case                        = 0        # number
200
201# Spaces to shift the 'case' line, without affecting any other lines
202# Usually 0.
203indent_case_shift                         = 0        # number
204
205# Spaces to indent '{' from 'case'.
206# By default, the brace will appear under the 'c' in case.
207# Usually set to 0 or indent_columns.
208indent_case_brace                         = 0        # number
209
210# Whether to indent comments found in first column
211indent_col1_comment                       = false    # false/true
212
213# How to indent goto labels
214#  >0 : absolute column where 1 is the leftmost column
215#  <=0 : subtract from brace indent
216indent_label                              = 1        # number
217
218# Same as indent_label, but for access specifiers that are followed by a colon
219indent_access_spec                        = 1        # number
220
221# Indent the code after an access specifier by one level.
222# If set, this option forces 'indent_access_spec=0'
223indent_access_spec_body                   = false    # false/true
224
225# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
226indent_paren_nl                           = false    # false/true
227
228# Controls the indent of a close paren after a newline.
229# 0: Indent to body level
230# 1: Align under the open paren
231# 2: Indent to the brace level
232indent_paren_close                        = 0        # number
233
234# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
235indent_comma_paren                        = false    # false/true
236
237# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
238indent_bool_paren                         = false    # false/true
239
240# If 'indent_bool_paren' is true, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
241indent_first_bool_expr                    = false    # false/true
242
243# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
244indent_square_nl                          = false    # false/true
245
246# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
247indent_preserve_sql                       = false    # false/true
248
249# Align continued statements at the '='. Default=True
250# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
251indent_align_assign                       = true     # false/true
252
253# Indent OC blocks at brace level instead of usual rules.
254indent_oc_block                           = false    # false/true
255
256# Indent OC blocks in a message relative to the parameter name.
257# 0=use indent_oc_block rules, 1+=spaces to indent
258indent_oc_block_msg                       = 0        # number
259
260# Minimum indent for subsequent parameters
261indent_oc_msg_colon                       = 0        # number
262
263# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
264# Default is true.
265indent_oc_msg_prioritize_first_colon      = true     # false/true
266
267# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
268indent_oc_block_msg_xcode_style           = false    # false/true
269
270# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
271indent_oc_block_msg_from_keyword          = false    # false/true
272
273# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
274indent_oc_block_msg_from_colon            = false    # false/true
275
276# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
277indent_oc_block_msg_from_caret            = false    # false/true
278
279# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
280indent_oc_block_msg_from_brace            = false    # false/true
281
282# When identing after virtual brace open and newline add further spaces to reach this min. indent.
283indent_min_vbrace_open                    = 0        # number
284
285# TRUE: When identing after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
286indent_vbrace_open_on_tabstop             = false    # false/true
287
288#
289# Spacing options
290#
291
292# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
293sp_arith                                  = add   # ignore/add/remove/force
294
295# Add or remove space around assignment operator '=', '+=', etc
296sp_assign                                 = add   # ignore/add/remove/force
297
298# Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
299sp_cpp_lambda_assign                      = ignore   # ignore/add/remove/force
300
301# Add or remove space after the capture specification in C++11 lambda.
302sp_cpp_lambda_paren                       = ignore   # ignore/add/remove/force
303
304# Add or remove space around assignment operator '=' in a prototype
305sp_assign_default                         = add   # ignore/add/remove/force
306
307# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
308sp_before_assign                          = ignore   # ignore/add/remove/force
309
310# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
311sp_after_assign                           = ignore   # ignore/add/remove/force
312
313# Add or remove space in 'NS_ENUM ('
314sp_enum_paren                             = ignore   # ignore/add/remove/force
315
316# Add or remove space around assignment '=' in enum
317sp_enum_assign                            = ignore   # ignore/add/remove/force
318
319# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
320sp_enum_before_assign                     = ignore   # ignore/add/remove/force
321
322# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
323sp_enum_after_assign                      = ignore   # ignore/add/remove/force
324
325# Add or remove space around preprocessor '##' concatenation operator. Default=Add
326sp_pp_concat                              = add      # ignore/add/remove/force
327
328# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
329sp_pp_stringify                           = ignore   # ignore/add/remove/force
330
331# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
332sp_before_pp_stringify                    = ignore   # ignore/add/remove/force
333
334# Add or remove space around boolean operators '&&' and '||'
335sp_bool                                   = add   # ignore/add/remove/force
336
337# Add or remove space around compare operator '<', '>', '==', etc
338sp_compare                                = add   # ignore/add/remove/force
339
340# Add or remove space inside '(' and ')'
341sp_inside_paren                           = ignore   # ignore/add/remove/force
342
343# Add or remove space between nested parens: '((' vs ') )'
344sp_paren_paren                            = ignore   # ignore/add/remove/force
345
346# Add or remove space between back-to-back parens: ')(' vs ') ('
347sp_cparen_oparen                          = ignore   # ignore/add/remove/force
348
349# Whether to balance spaces inside nested parens
350sp_balance_nested_parens                  = false    # false/true
351
352# Add or remove space between ')' and '{'
353sp_paren_brace                            = ignore   # ignore/add/remove/force
354
355# Add or remove space before pointer star '*'
356sp_before_ptr_star                        = ignore   # ignore/add/remove/force
357
358# Add or remove space before pointer star '*' that isn't followed by a variable name
359# If set to 'ignore', sp_before_ptr_star is used instead.
360sp_before_unnamed_ptr_star                = ignore   # ignore/add/remove/force
361
362# Add or remove space between pointer stars '*'
363sp_between_ptr_star                       = ignore   # ignore/add/remove/force
364
365# Add or remove space after pointer star '*', if followed by a word.
366sp_after_ptr_star                         = ignore   # ignore/add/remove/force
367
368# Add or remove space after pointer star '*', if followed by a qualifier.
369sp_after_ptr_star_qualifier               = ignore   # ignore/add/remove/force
370
371# Add or remove space after a pointer star '*', if followed by a func proto/def.
372sp_after_ptr_star_func                    = ignore   # ignore/add/remove/force
373
374# Add or remove space after a pointer star '*', if followed by an open paren (function types).
375sp_ptr_star_paren                         = ignore   # ignore/add/remove/force
376
377# Add or remove space before a pointer star '*', if followed by a func proto/def.
378sp_before_ptr_star_func                   = ignore   # ignore/add/remove/force
379
380# Add or remove space before a reference sign '&'
381sp_before_byref                           = ignore   # ignore/add/remove/force
382
383# Add or remove space before a reference sign '&' that isn't followed by a variable name
384# If set to 'ignore', sp_before_byref is used instead.
385sp_before_unnamed_byref                   = ignore   # ignore/add/remove/force
386
387# Add or remove space after reference sign '&', if followed by a word.
388sp_after_byref                            = ignore   # ignore/add/remove/force
389
390# Add or remove space after a reference sign '&', if followed by a func proto/def.
391sp_after_byref_func                       = ignore   # ignore/add/remove/force
392
393# Add or remove space before a reference sign '&', if followed by a func proto/def.
394sp_before_byref_func                      = ignore   # ignore/add/remove/force
395
396# Add or remove space between type and word. Default=Force
397sp_after_type                             = force    # ignore/add/remove/force
398
399# Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
400sp_before_template_paren                  = ignore   # ignore/add/remove/force
401
402# Add or remove space in 'template <' vs 'template<'.
403# If set to ignore, sp_before_angle is used.
404sp_template_angle                         = ignore   # ignore/add/remove/force
405
406# Add or remove space before '<>'
407sp_before_angle                           = ignore   # ignore/add/remove/force
408
409# Add or remove space inside '<' and '>'
410sp_inside_angle                           = ignore   # ignore/add/remove/force
411
412# Add or remove space after '<>'
413sp_after_angle                            = ignore   # ignore/add/remove/force
414
415# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
416sp_angle_paren                            = ignore   # ignore/add/remove/force
417
418# Add or remove space between '<>' and a word as in 'List<byte> m;'
419sp_angle_word                             = ignore   # ignore/add/remove/force
420
421# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
422sp_angle_shift                            = add      # ignore/add/remove/force
423
424# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
425# sp_angle_shift cannot remove the space without this option.
426sp_permit_cpp11_shift                     = false    # false/true
427
428# Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
429sp_before_sparen                          = add   # ignore/add/remove/force
430
431# Add or remove space inside if-condition '(' and ')'
432sp_inside_sparen                          = remove   # ignore/add/remove/force
433
434# Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
435sp_inside_sparen_close                    = ignore   # ignore/add/remove/force
436
437# Add or remove space after if-condition '('. Overrides sp_inside_sparen.
438sp_inside_sparen_open                     = ignore   # ignore/add/remove/force
439
440# Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
441sp_after_sparen                           = add   # ignore/add/remove/force
442
443# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
444sp_sparen_brace                           = ignore   # ignore/add/remove/force
445
446# Add or remove space between 'invariant' and '(' in the D language.
447sp_invariant_paren                        = ignore   # ignore/add/remove/force
448
449# Add or remove space after the ')' in 'invariant (C) c' in the D language.
450sp_after_invariant_paren                  = ignore   # ignore/add/remove/force
451
452# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
453sp_special_semi                           = ignore   # ignore/add/remove/force
454
455# Add or remove space before ';'. Default=Remove
456sp_before_semi                            = remove   # ignore/add/remove/force
457
458# Add or remove space before ';' in non-empty 'for' statements
459sp_before_semi_for                        = ignore   # ignore/add/remove/force
460
461# Add or remove space before a semicolon of an empty part of a for statement.
462sp_before_semi_for_empty                  = ignore   # ignore/add/remove/force
463
464# Add or remove space after ';', except when followed by a comment. Default=Add
465sp_after_semi                             = add      # ignore/add/remove/force
466
467# Add or remove space after ';' in non-empty 'for' statements. Default=Force
468sp_after_semi_for                         = force    # ignore/add/remove/force
469
470# Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
471sp_after_semi_for_empty                   = ignore   # ignore/add/remove/force
472
473# Add or remove space before '[' (except '[]')
474sp_before_square                          = ignore   # ignore/add/remove/force
475
476# Add or remove space before '[]'
477sp_before_squares                         = ignore   # ignore/add/remove/force
478
479# Add or remove space inside a non-empty '[' and ']'
480sp_inside_square                          = ignore   # ignore/add/remove/force
481
482# Add or remove space after ','
483sp_after_comma                            = add   # ignore/add/remove/force
484
485# Add or remove space before ','
486sp_before_comma                           = remove   # ignore/add/remove/force
487
488# Add or remove space between ',' and ']' in multidimensional array type 'int[,,]'
489sp_after_mdatype_commas                   = ignore   # ignore/add/remove/force
490
491# Add or remove space between '[' and ',' in multidimensional array type 'int[,,]'
492sp_before_mdatype_commas                  = ignore   # ignore/add/remove/force
493
494# Add or remove space between ',' in multidimensional array type 'int[,,]'
495sp_between_mdatype_commas                 = ignore   # ignore/add/remove/force
496
497# Add or remove space between an open paren and comma: '(,' vs '( ,'
498sp_paren_comma                            = force    # ignore/add/remove/force
499
500# Add or remove space before the variadic '...' when preceded by a non-punctuator
501sp_before_ellipsis                        = ignore   # ignore/add/remove/force
502
503# Add or remove space after class ':'
504sp_after_class_colon                      = ignore   # ignore/add/remove/force
505
506# Add or remove space before class ':'
507sp_before_class_colon                     = ignore   # ignore/add/remove/force
508
509# Add or remove space after class constructor ':'
510sp_after_constr_colon                     = ignore   # ignore/add/remove/force
511
512# Add or remove space before class constructor ':'
513sp_before_constr_colon                    = ignore   # ignore/add/remove/force
514
515# Add or remove space before case ':'. Default=Remove
516sp_before_case_colon                      = remove   # ignore/add/remove/force
517
518# Add or remove space between 'operator' and operator sign
519sp_after_operator                         = ignore   # ignore/add/remove/force
520
521# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
522sp_after_operator_sym                     = ignore   # ignore/add/remove/force
523
524# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
525sp_after_cast                             = ignore   # ignore/add/remove/force
526
527# Add or remove spaces inside cast parens
528sp_inside_paren_cast                      = ignore   # ignore/add/remove/force
529
530# Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
531sp_cpp_cast_paren                         = ignore   # ignore/add/remove/force
532
533# Add or remove space between 'sizeof' and '('
534sp_sizeof_paren                           = ignore   # ignore/add/remove/force
535
536# Add or remove space after the tag keyword (Pawn)
537sp_after_tag                              = ignore   # ignore/add/remove/force
538
539# Add or remove space inside enum '{' and '}'
540sp_inside_braces_enum                     = ignore   # ignore/add/remove/force
541
542# Add or remove space inside struct/union '{' and '}'
543sp_inside_braces_struct                   = ignore   # ignore/add/remove/force
544
545# Add or remove space inside '{' and '}'
546sp_inside_braces                          = ignore   # ignore/add/remove/force
547
548# Add or remove space inside '{}'
549sp_inside_braces_empty                    = ignore   # ignore/add/remove/force
550
551# Add or remove space between return type and function name
552# A minimum of 1 is forced except for pointer return types.
553sp_type_func                              = ignore   # ignore/add/remove/force
554
555# Add or remove space between function name and '(' on function declaration
556sp_func_proto_paren                       = ignore   # ignore/add/remove/force
557
558# Add or remove space between function name and '(' on function definition
559sp_func_def_paren                         = ignore   # ignore/add/remove/force
560
561# Add or remove space inside empty function '()'
562sp_inside_fparens                         = ignore   # ignore/add/remove/force
563
564# Add or remove space inside function '(' and ')'
565sp_inside_fparen                          = ignore   # ignore/add/remove/force
566
567# Add or remove space inside the first parens in the function type: 'void (*x)(...)'
568sp_inside_tparen                          = ignore   # ignore/add/remove/force
569
570# Add or remove between the parens in the function type: 'void (*x)(...)'
571sp_after_tparen_close                     = ignore   # ignore/add/remove/force
572
573# Add or remove space between ']' and '(' when part of a function call.
574sp_square_fparen                          = ignore   # ignore/add/remove/force
575
576# Add or remove space between ')' and '{' of function
577sp_fparen_brace                           = ignore   # ignore/add/remove/force
578
579# Java: Add or remove space between ')' and '{{' of double brace initializer.
580sp_fparen_dbrace                          = ignore   # ignore/add/remove/force
581
582# Add or remove space between function name and '(' on function calls
583sp_func_call_paren                        = ignore   # ignore/add/remove/force
584
585# Add or remove space between function name and '()' on function calls without parameters.
586# If set to 'ignore' (the default), sp_func_call_paren is used.
587sp_func_call_paren_empty                  = ignore   # ignore/add/remove/force
588
589# Add or remove space between the user function name and '(' on function calls
590# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
591sp_func_call_user_paren                   = ignore   # ignore/add/remove/force
592
593# Add or remove space between a constructor/destructor and the open paren
594sp_func_class_paren                       = ignore   # ignore/add/remove/force
595
596# Add or remove space between 'return' and '('
597sp_return_paren                           = ignore   # ignore/add/remove/force
598
599# Add or remove space between '__attribute__' and '('
600sp_attribute_paren                        = ignore   # ignore/add/remove/force
601
602# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
603sp_defined_paren                          = ignore   # ignore/add/remove/force
604
605# Add or remove space between 'throw' and '(' in 'throw (something)'
606sp_throw_paren                            = ignore   # ignore/add/remove/force
607
608# Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
609sp_after_throw                            = ignore   # ignore/add/remove/force
610
611# Add or remove space between 'catch' and '(' in 'catch (something) { }'
612# If set to ignore, sp_before_sparen is used.
613sp_catch_paren                            = ignore   # ignore/add/remove/force
614
615# Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
616# If set to ignore, sp_before_sparen is used.
617sp_version_paren                          = ignore   # ignore/add/remove/force
618
619# Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
620# If set to ignore, sp_before_sparen is used.
621sp_scope_paren                            = ignore   # ignore/add/remove/force
622
623# Add or remove space between macro and value
624sp_macro                                  = ignore   # ignore/add/remove/force
625
626# Add or remove space between macro function ')' and value
627sp_macro_func                             = ignore   # ignore/add/remove/force
628
629# Add or remove space between 'else' and '{' if on the same line
630sp_else_brace                             = add   # ignore/add/remove/force
631
632# Add or remove space between '}' and 'else' if on the same line
633sp_brace_else                             = add   # ignore/add/remove/force
634
635# Add or remove space between '}' and the name of a typedef on the same line
636sp_brace_typedef                          = ignore   # ignore/add/remove/force
637
638# Add or remove space between 'catch' and '{' if on the same line
639sp_catch_brace                            = ignore   # ignore/add/remove/force
640
641# Add or remove space between '}' and 'catch' if on the same line
642sp_brace_catch                            = ignore   # ignore/add/remove/force
643
644# Add or remove space between 'finally' and '{' if on the same line
645sp_finally_brace                          = ignore   # ignore/add/remove/force
646
647# Add or remove space between '}' and 'finally' if on the same line
648sp_brace_finally                          = ignore   # ignore/add/remove/force
649
650# Add or remove space between 'try' and '{' if on the same line
651sp_try_brace                              = ignore   # ignore/add/remove/force
652
653# Add or remove space between get/set and '{' if on the same line
654sp_getset_brace                           = ignore   # ignore/add/remove/force
655
656# Add or remove space between a variable and '{' for C++ uniform initialization
657sp_word_brace                             = add      # ignore/add/remove/force
658
659# Add or remove space between a variable and '{' for a namespace
660sp_word_brace_ns                          = add      # ignore/add/remove/force
661
662# Add or remove space before the '::' operator
663sp_before_dc                              = ignore   # ignore/add/remove/force
664
665# Add or remove space after the '::' operator
666sp_after_dc                               = ignore   # ignore/add/remove/force
667
668# Add or remove around the D named array initializer ':' operator
669sp_d_array_colon                          = ignore   # ignore/add/remove/force
670
671# Add or remove space after the '!' (not) operator. Default=Remove
672sp_not                                    = remove   # ignore/add/remove/force
673
674# Add or remove space after the '~' (invert) operator. Default=Remove
675sp_inv                                    = remove   # ignore/add/remove/force
676
677# Add or remove space after the '&' (address-of) operator. Default=Remove
678# This does not affect the spacing after a '&' that is part of a type.
679sp_addr                                   = remove   # ignore/add/remove/force
680
681# Add or remove space around the '.' or '->' operators. Default=Remove
682sp_member                                 = remove   # ignore/add/remove/force
683
684# Add or remove space after the '*' (dereference) operator. Default=Remove
685# This does not affect the spacing after a '*' that is part of a type.
686sp_deref                                  = remove   # ignore/add/remove/force
687
688# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. Default=Remove
689sp_sign                                   = remove   # ignore/add/remove/force
690
691# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
692sp_incdec                                 = remove   # ignore/add/remove/force
693
694# Add or remove space before a backslash-newline at the end of a line. Default=Add
695sp_before_nl_cont                         = add      # ignore/add/remove/force
696
697# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
698sp_after_oc_scope                         = ignore   # ignore/add/remove/force
699
700# Add or remove space after the colon in message specs
701# '-(int) f:(int) x;' vs '-(int) f: (int) x;'
702sp_after_oc_colon                         = ignore   # ignore/add/remove/force
703
704# Add or remove space before the colon in message specs
705# '-(int) f: (int) x;' vs '-(int) f : (int) x;'
706sp_before_oc_colon                        = ignore   # ignore/add/remove/force
707
708# Add or remove space after the colon in immutable dictionary expression
709# 'NSDictionary *test = @{@"foo" :@"bar"};'
710sp_after_oc_dict_colon                    = ignore   # ignore/add/remove/force
711
712# Add or remove space before the colon in immutable dictionary expression
713# 'NSDictionary *test = @{@"foo" :@"bar"};'
714sp_before_oc_dict_colon                   = ignore   # ignore/add/remove/force
715
716# Add or remove space after the colon in message specs
717# '[object setValue:1];' vs '[object setValue: 1];'
718sp_after_send_oc_colon                    = ignore   # ignore/add/remove/force
719
720# Add or remove space before the colon in message specs
721# '[object setValue:1];' vs '[object setValue :1];'
722sp_before_send_oc_colon                   = ignore   # ignore/add/remove/force
723
724# Add or remove space after the (type) in message specs
725# '-(int)f: (int) x;' vs '-(int)f: (int)x;'
726sp_after_oc_type                          = ignore   # ignore/add/remove/force
727
728# Add or remove space after the first (type) in message specs
729# '-(int) f:(int)x;' vs '-(int)f:(int)x;'
730sp_after_oc_return_type                   = ignore   # ignore/add/remove/force
731
732# Add or remove space between '@selector' and '('
733# '@selector(msgName)' vs '@selector (msgName)'
734# Also applies to @protocol() constructs
735sp_after_oc_at_sel                        = ignore   # ignore/add/remove/force
736
737# Add or remove space between '@selector(x)' and the following word
738# '@selector(foo) a:' vs '@selector(foo)a:'
739sp_after_oc_at_sel_parens                 = ignore   # ignore/add/remove/force
740
741# Add or remove space inside '@selector' parens
742# '@selector(foo)' vs '@selector( foo )'
743# Also applies to @protocol() constructs
744sp_inside_oc_at_sel_parens                = ignore   # ignore/add/remove/force
745
746# Add or remove space before a block pointer caret
747# '^int (int arg){...}' vs. ' ^int (int arg){...}'
748sp_before_oc_block_caret                  = ignore   # ignore/add/remove/force
749
750# Add or remove space after a block pointer caret
751# '^int (int arg){...}' vs. '^ int (int arg){...}'
752sp_after_oc_block_caret                   = ignore   # ignore/add/remove/force
753
754# Add or remove space between the receiver and selector in a message.
755# '[receiver selector ...]'
756sp_after_oc_msg_receiver                  = ignore   # ignore/add/remove/force
757
758# Add or remove space after @property.
759sp_after_oc_property                      = ignore   # ignore/add/remove/force
760
761# Add or remove space around the ':' in 'b ? t : f'
762sp_cond_colon                             = ignore   # ignore/add/remove/force
763
764# Add or remove space before the ':' in 'b ? t : f'. Overrides sp_cond_colon.
765sp_cond_colon_before                      = ignore   # ignore/add/remove/force
766
767# Add or remove space after the ':' in 'b ? t : f'. Overrides sp_cond_colon.
768sp_cond_colon_after                       = ignore   # ignore/add/remove/force
769
770# Add or remove space around the '?' in 'b ? t : f'
771sp_cond_question                          = ignore   # ignore/add/remove/force
772
773# Add or remove space before the '?' in 'b ? t : f'. Overrides sp_cond_question.
774sp_cond_question_before                   = ignore   # ignore/add/remove/force
775
776# Add or remove space after the '?' in 'b ? t : f'. Overrides sp_cond_question.
777sp_cond_question_after                    = ignore   # ignore/add/remove/force
778
779# In the abbreviated ternary form (a ?: b), add/remove space between ? and :.'. Overrides all other sp_cond_* options.
780sp_cond_ternary_short                     = ignore   # ignore/add/remove/force
781
782# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
783sp_case_label                             = ignore   # ignore/add/remove/force
784
785# Control the space around the D '..' operator.
786sp_range                                  = ignore   # ignore/add/remove/force
787
788# Control the spacing after ':' in 'for (TYPE VAR : EXPR)' (Java)
789sp_after_for_colon                        = ignore   # ignore/add/remove/force
790
791# Control the spacing before ':' in 'for (TYPE VAR : EXPR)' (Java)
792sp_before_for_colon                       = ignore   # ignore/add/remove/force
793
794# Control the spacing in 'extern (C)' (D)
795sp_extern_paren                           = ignore   # ignore/add/remove/force
796
797# Control the space after the opening of a C++ comment '// A' vs '//A'
798sp_cmt_cpp_start                          = ignore   # ignore/add/remove/force
799
800# TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
801sp_cmt_cpp_doxygen                        = false    # false/true
802
803# TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
804sp_cmt_cpp_qttr                           = false    # false/true
805
806# Controls the spaces between #else or #endif and a trailing comment
807sp_endif_cmt                              = ignore   # ignore/add/remove/force
808
809# Controls the spaces after 'new', 'delete', and 'delete[]'
810sp_after_new                              = ignore   # ignore/add/remove/force
811
812# Controls the spaces between new and '(' in 'new()'
813sp_between_new_paren                      = ignore   # ignore/add/remove/force
814
815# Controls the spaces before a trailing or embedded comment
816sp_before_tr_emb_cmt                      = add   # ignore/add/remove/force
817
818# Number of spaces before a trailing or embedded comment
819sp_num_before_tr_emb_cmt                  = 2        # number
820
821# Control space between a Java annotation and the open paren.
822sp_annotation_paren                       = ignore   # ignore/add/remove/force
823
824#
825# Code alignment (not left column spaces/tabs)
826#
827
828# Whether to keep non-indenting tabs
829align_keep_tabs                           = false    # false/true
830
831# Whether to use tabs for aligning
832align_with_tabs                           = false    # false/true
833
834# Whether to bump out to the next tab when aligning
835align_on_tabstop                          = false    # false/true
836
837# Whether to left-align numbers
838align_number_left                         = false    # false/true
839
840# Whether to keep whitespace not required for alignment.
841align_keep_extra_space                    = false    # false/true
842
843# Align variable definitions in prototypes and functions
844align_func_params                         = false    # false/true
845
846# Align parameters in single-line functions that have the same name.
847# The function names must already be aligned with each other.
848align_same_func_call_params               = false    # false/true
849
850# The span for aligning variable definitions (0=don't align)
851align_var_def_span                        = 0        # number
852
853# How to align the star in variable definitions.
854#  0=Part of the type     'void *   foo;'
855#  1=Part of the variable 'void     *foo;'
856#  2=Dangling             'void    *foo;'
857align_var_def_star_style                  = 0        # number
858
859# How to align the '&' in variable definitions.
860#  0=Part of the type
861#  1=Part of the variable
862#  2=Dangling
863align_var_def_amp_style                   = 0        # number
864
865# The threshold for aligning variable definitions (0=no limit)
866align_var_def_thresh                      = 0        # number
867
868# The gap for aligning variable definitions
869align_var_def_gap                         = 0        # number
870
871# Whether to align the colon in struct bit fields
872align_var_def_colon                       = false    # false/true
873
874# Whether to align any attribute after the variable name
875align_var_def_attribute                   = false    # false/true
876
877# Whether to align inline struct/enum/union variable definitions
878align_var_def_inline                      = false    # false/true
879
880# The span for aligning on '=' in assignments (0=don't align)
881align_assign_span                         = 0        # number
882
883# The threshold for aligning on '=' in assignments (0=no limit)
884align_assign_thresh                       = 0        # number
885
886# The span for aligning on '=' in enums (0=don't align)
887align_enum_equ_span                       = 0        # number
888
889# The threshold for aligning on '=' in enums (0=no limit)
890align_enum_equ_thresh                     = 0        # number
891
892# The span for aligning struct/union (0=don't align)
893align_var_struct_span                     = 2        # number
894
895# The threshold for aligning struct/union member definitions (0=no limit)
896align_var_struct_thresh                   = 0        # number
897
898# The gap for aligning struct/union member definitions
899align_var_struct_gap                      = 0        # number
900
901# The span for aligning struct initializer values (0=don't align)
902align_struct_init_span                    = 0        # number
903
904# The minimum space between the type and the synonym of a typedef
905align_typedef_gap                         = 0        # number
906
907# The span for aligning single-line typedefs (0=don't align)
908align_typedef_span                        = 0        # number
909
910# How to align typedef'd functions with other typedefs
911# 0: Don't mix them at all
912# 1: align the open paren with the types
913# 2: align the function type name with the other type names
914align_typedef_func                        = 0        # number
915
916# Controls the positioning of the '*' in typedefs. Just try it.
917# 0: Align on typedef type, ignore '*'
918# 1: The '*' is part of type name: typedef int  *pint;
919# 2: The '*' is part of the type, but dangling: typedef int *pint;
920align_typedef_star_style                  = 0        # number
921
922# Controls the positioning of the '&' in typedefs. Just try it.
923# 0: Align on typedef type, ignore '&'
924# 1: The '&' is part of type name: typedef int  &pint;
925# 2: The '&' is part of the type, but dangling: typedef int &pint;
926align_typedef_amp_style                   = 0        # number
927
928# The span for aligning comments that end lines (0=don't align)
929align_right_cmt_span                      = 2        # number
930
931# If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
932align_right_cmt_mix                       = false    # false/true
933
934# If a trailing comment is more than this number of columns away from the text it follows,
935# it will qualify for being aligned. This has to be > 0 to do anything.
936align_right_cmt_gap                       = 1        # number
937
938# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
939align_right_cmt_at_col                    = 0        # number
940
941# The span for aligning function prototypes (0=don't align)
942align_func_proto_span                     = 0        # number
943
944# Minimum gap between the return type and the function name.
945align_func_proto_gap                      = 0        # number
946
947# Align function protos on the 'operator' keyword instead of what follows
948align_on_operator                         = false    # false/true
949
950# Whether to mix aligning prototype and variable declarations.
951# If true, align_var_def_XXX options are used instead of align_func_proto_XXX options.
952align_mix_var_proto                       = false    # false/true
953
954# Align single-line functions with function prototypes, uses align_func_proto_span
955align_single_line_func                    = false    # false/true
956
957# Aligning the open brace of single-line functions.
958# Requires align_single_line_func=true, uses align_func_proto_span
959align_single_line_brace                   = false    # false/true
960
961# Gap for align_single_line_brace.
962align_single_line_brace_gap               = 0        # number
963
964# The span for aligning ObjC msg spec (0=don't align)
965align_oc_msg_spec_span                    = 0        # number
966
967# Whether to align macros wrapped with a backslash and a newline.
968# This will not work right if the macro contains a multi-line comment.
969align_nl_cont                             = false    # false/true
970
971# # Align macro functions and variables together
972align_pp_define_together                  = false    # false/true
973
974# The minimum space between label and value of a preprocessor define
975align_pp_define_gap                       = 0        # number
976
977# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
978align_pp_define_span                      = 0        # number
979
980# Align lines that start with '<<' with previous '<<'. Default=true
981align_left_shift                          = true     # false/true
982
983# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
984align_oc_msg_colon_span                   = 0        # number
985
986# If true, always align with the first parameter, even if it is too short.
987align_oc_msg_colon_first                  = false    # false/true
988
989# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
990align_oc_decl_colon                       = false    # false/true
991
992#
993# Newline adding and removing options
994#
995
996# Whether to collapse empty blocks between '{' and '}'
997nl_collapse_empty_body                    = false    # false/true
998
999# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
1000nl_assign_leave_one_liners                = false    # false/true
1001
1002# Don't split one-line braced statements inside a class xx { } body
1003nl_class_leave_one_liners                 = false    # false/true
1004
1005# Don't split one-line enums: 'enum foo { BAR = 15 };'
1006nl_enum_leave_one_liners                  = false    # false/true
1007
1008# Don't split one-line get or set functions
1009nl_getset_leave_one_liners                = false    # false/true
1010
1011# Don't split one-line function definitions - 'int foo() { return 0; }'
1012nl_func_leave_one_liners                  = false    # false/true
1013
1014# Don't split one-line C++11 lambdas - '[]() { return 0; }'
1015nl_cpp_lambda_leave_one_liners            = false    # false/true
1016
1017# Don't split one-line if/else statements - 'if(a) b++;'
1018nl_if_leave_one_liners                    = false    # false/true
1019
1020# Don't split one-line while statements - 'while(a) b++;'
1021nl_while_leave_one_liners                 = false    # false/true
1022
1023# Don't split one-line OC messages
1024nl_oc_msg_leave_one_liner                 = false    # false/true
1025
1026# Add or remove newlines at the start of the file
1027nl_start_of_file                          = ignore   # ignore/add/remove/force
1028
1029# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
1030nl_start_of_file_min                      = 0        # number
1031
1032# Add or remove newline at the end of the file
1033nl_end_of_file                            = ignore   # ignore/add/remove/force
1034
1035# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
1036nl_end_of_file_min                        = 0        # number
1037
1038# Add or remove newline between '=' and '{'
1039nl_assign_brace                           = ignore   # ignore/add/remove/force
1040
1041# Add or remove newline between '=' and '[' (D only)
1042nl_assign_square                          = ignore   # ignore/add/remove/force
1043
1044# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
1045nl_after_square_assign                    = ignore   # ignore/add/remove/force
1046
1047# The number of blank lines after a block of variable definitions at the top of a function body
1048# 0 = No change (default)
1049nl_func_var_def_blk                       = 1        # number
1050
1051# The number of newlines before a block of typedefs
1052# 0 = No change (default)
1053nl_typedef_blk_start                      = 0        # number
1054
1055# The number of newlines after a block of typedefs
1056# 0 = No change (default)
1057nl_typedef_blk_end                        = 0        # number
1058
1059# The maximum consecutive newlines within a block of typedefs
1060# 0 = No change (default)
1061nl_typedef_blk_in                         = 0        # number
1062
1063# The number of newlines before a block of variable definitions not at the top of a function body
1064# 0 = No change (default)
1065nl_var_def_blk_start                      = 0        # number
1066
1067# The number of newlines after a block of variable definitions not at the top of a function body
1068# 0 = No change (default)
1069nl_var_def_blk_end                        = 0        # number
1070
1071# The maximum consecutive newlines within a block of variable definitions
1072# 0 = No change (default)
1073nl_var_def_blk_in                         = 0        # number
1074
1075# Add or remove newline between a function call's ')' and '{', as in:
1076# list_for_each(item, &list) { }
1077nl_fcall_brace                            = ignore   # ignore/add/remove/force
1078
1079# Add or remove newline between 'enum' and '{'
1080nl_enum_brace                             = ignore   # ignore/add/remove/force
1081
1082# Add or remove newline between 'struct and '{'
1083nl_struct_brace                           = ignore   # ignore/add/remove/force
1084
1085# Add or remove newline between 'union' and '{'
1086nl_union_brace                            = ignore   # ignore/add/remove/force
1087
1088# Add or remove newline between 'if' and '{'
1089nl_if_brace                               = remove   # ignore/add/remove/force
1090
1091# Add or remove newline between '}' and 'else'
1092nl_brace_else                             = add   # ignore/add/remove/force
1093
1094# Add or remove newline between 'else if' and '{'
1095# If set to ignore, nl_if_brace is used instead
1096nl_elseif_brace                           = ignore   # ignore/add/remove/force
1097
1098# Add or remove newline between 'else' and '{'
1099nl_else_brace                             = remove   # ignore/add/remove/force
1100
1101# Add or remove newline between 'else' and 'if'
1102nl_else_if                                = ignore   # ignore/add/remove/force
1103
1104# Add or remove newline between '}' and 'finally'
1105nl_brace_finally                          = ignore   # ignore/add/remove/force
1106
1107# Add or remove newline between 'finally' and '{'
1108nl_finally_brace                          = ignore   # ignore/add/remove/force
1109
1110# Add or remove newline between 'try' and '{'
1111nl_try_brace                              = ignore   # ignore/add/remove/force
1112
1113# Add or remove newline between get/set and '{'
1114nl_getset_brace                           = ignore   # ignore/add/remove/force
1115
1116# Add or remove newline between 'for' and '{'
1117nl_for_brace                              = remove   # ignore/add/remove/force
1118
1119# Add or remove newline between 'catch' and '{'
1120nl_catch_brace                            = ignore   # ignore/add/remove/force
1121
1122# Add or remove newline between '}' and 'catch'
1123nl_brace_catch                            = ignore   # ignore/add/remove/force
1124
1125# Add or remove newline between '}' and ']'
1126nl_brace_square                           = ignore   # ignore/add/remove/force
1127
1128# Add or remove newline between '}' and ')' in a function invocation
1129nl_brace_fparen                           = ignore   # ignore/add/remove/force
1130
1131# Add or remove newline between 'while' and '{'
1132nl_while_brace                            = remove   # ignore/add/remove/force
1133
1134# Add or remove newline between 'scope (x)' and '{' (D)
1135nl_scope_brace                            = ignore   # ignore/add/remove/force
1136
1137# Add or remove newline between 'unittest' and '{' (D)
1138nl_unittest_brace                         = ignore   # ignore/add/remove/force
1139
1140# Add or remove newline between 'version (x)' and '{' (D)
1141nl_version_brace                          = ignore   # ignore/add/remove/force
1142
1143# Add or remove newline between 'using' and '{'
1144nl_using_brace                            = ignore   # ignore/add/remove/force
1145
1146# Add or remove newline between two open or close braces.
1147# Due to general newline/brace handling, REMOVE may not work.
1148nl_brace_brace                            = ignore   # ignore/add/remove/force
1149
1150# Add or remove newline between 'do' and '{'
1151nl_do_brace                               = remove   # ignore/add/remove/force
1152
1153# Add or remove newline between '}' and 'while' of 'do' statement
1154nl_brace_while                            = add   # ignore/add/remove/force
1155
1156# Add or remove newline between 'switch' and '{'
1157nl_switch_brace                           = ignore   # ignore/add/remove/force
1158
1159# Add or remove newline between 'synchronized' and '{'
1160nl_synchronized_brace                     = ignore   # ignore/add/remove/force
1161
1162# Add a newline between ')' and '{' if the ')' is on a different line than the if/for/etc.
1163# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch, and nl_catch_brace.
1164nl_multi_line_cond                        = false    # false/true
1165
1166# Force a newline in a define after the macro name for multi-line defines.
1167nl_multi_line_define                      = false    # false/true
1168
1169# Whether to put a newline before 'case' statement
1170nl_before_case                            = false    # false/true
1171
1172# Add or remove newline between ')' and 'throw'
1173nl_before_throw                           = ignore   # ignore/add/remove/force
1174
1175# Whether to put a newline after 'case' statement
1176nl_after_case                             = false    # false/true
1177
1178# Add or remove a newline between a case ':' and '{'. Overrides nl_after_case.
1179nl_case_colon_brace                       = ignore   # ignore/add/remove/force
1180
1181# Newline between namespace and {
1182nl_namespace_brace                        = ignore   # ignore/add/remove/force
1183
1184# Add or remove newline between 'template<>' and whatever follows.
1185nl_template_class                         = ignore   # ignore/add/remove/force
1186
1187# Add or remove newline between 'class' and '{'
1188nl_class_brace                            = ignore   # ignore/add/remove/force
1189
1190# Add or remove newline after each ',' in the class base list
1191nl_class_init_args                        = ignore   # ignore/add/remove/force
1192
1193# Add or remove newline after each ',' in the constructor member initialization
1194nl_constr_init_args                       = ignore   # ignore/add/remove/force
1195
1196# Add or remove newline between return type and function name in a function definition
1197nl_func_type_name                         = add   # ignore/add/remove/force
1198
1199# Add or remove newline between return type and function name inside a class {}
1200# Uses nl_func_type_name or nl_func_proto_type_name if set to ignore.
1201nl_func_type_name_class                   = ignore   # ignore/add/remove/force
1202
1203# Add or remove newline between function scope and name in a definition
1204# Controls the newline after '::' in 'void A::f() { }'
1205nl_func_scope_name                        = ignore   # ignore/add/remove/force
1206
1207# Add or remove newline between return type and function name in a prototype
1208nl_func_proto_type_name                   = ignore   # ignore/add/remove/force
1209
1210# Add or remove newline between a function name and the opening '('
1211nl_func_paren                             = ignore   # ignore/add/remove/force
1212
1213# Add or remove newline between a function name and the opening '(' in the definition
1214nl_func_def_paren                         = ignore   # ignore/add/remove/force
1215
1216# Add or remove newline after '(' in a function declaration
1217nl_func_decl_start                        = ignore   # ignore/add/remove/force
1218
1219# Add or remove newline after '(' in a function definition
1220nl_func_def_start                         = ignore   # ignore/add/remove/force
1221
1222# Overrides nl_func_decl_start when there is only one parameter.
1223nl_func_decl_start_single                 = ignore   # ignore/add/remove/force
1224
1225# Overrides nl_func_def_start when there is only one parameter.
1226nl_func_def_start_single                  = ignore   # ignore/add/remove/force
1227
1228# Add or remove newline after each ',' in a function declaration
1229nl_func_decl_args                         = ignore   # ignore/add/remove/force
1230
1231# Add or remove newline after each ',' in a function definition
1232nl_func_def_args                          = ignore   # ignore/add/remove/force
1233
1234# Add or remove newline before the ')' in a function declaration
1235nl_func_decl_end                          = ignore   # ignore/add/remove/force
1236
1237# Add or remove newline before the ')' in a function definition
1238nl_func_def_end                           = ignore   # ignore/add/remove/force
1239
1240# Overrides nl_func_decl_end when there is only one parameter.
1241nl_func_decl_end_single                   = ignore   # ignore/add/remove/force
1242
1243# Overrides nl_func_def_end when there is only one parameter.
1244nl_func_def_end_single                    = ignore   # ignore/add/remove/force
1245
1246# Add or remove newline between '()' in a function declaration.
1247nl_func_decl_empty                        = ignore   # ignore/add/remove/force
1248
1249# Add or remove newline between '()' in a function definition.
1250nl_func_def_empty                         = ignore   # ignore/add/remove/force
1251
1252# Whether to put each OC message parameter on a separate line
1253# See nl_oc_msg_leave_one_liner
1254nl_oc_msg_args                            = false    # false/true
1255
1256# Add or remove newline between function signature and '{'
1257nl_fdef_brace                             = add   # ignore/add/remove/force
1258
1259# Add or remove newline between C++11 lambda signature and '{'
1260nl_cpp_ldef_brace                         = ignore   # ignore/add/remove/force
1261
1262# Add or remove a newline between the return keyword and return expression.
1263nl_return_expr                            = ignore   # ignore/add/remove/force
1264
1265# Whether to put a newline after semicolons, except in 'for' statements
1266nl_after_semicolon                        = false    # false/true
1267
1268# Java: Control the newline between the ')' and '{{' of the double brace initializer.
1269nl_paren_dbrace_open                      = ignore   # ignore/add/remove/force
1270
1271# Whether to put a newline after brace open.
1272# This also adds a newline before the matching brace close.
1273nl_after_brace_open                       = false    # false/true
1274
1275# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
1276# placed between the open brace and a trailing single-line comment.
1277nl_after_brace_open_cmt                   = false    # false/true
1278
1279# Whether to put a newline after a virtual brace open with a non-empty body.
1280# These occur in un-braced if/while/do/for statement bodies.
1281nl_after_vbrace_open                      = false    # false/true
1282
1283# Whether to put a newline after a virtual brace open with an empty body.
1284# These occur in un-braced if/while/do/for statement bodies.
1285nl_after_vbrace_open_empty                = false    # false/true
1286
1287# Whether to put a newline after a brace close.
1288# Does not apply if followed by a necessary ';'.
1289nl_after_brace_close                      = false    # false/true
1290
1291# Whether to put a newline after a virtual brace close.
1292# Would add a newline before return in: 'if (foo) a++; return;'
1293nl_after_vbrace_close                     = false    # false/true
1294
1295# Control the newline between the close brace and 'b' in: 'struct { int a; } b;'
1296# Affects enums, unions, and structures. If set to ignore, uses nl_after_brace_close
1297nl_brace_struct_var                       = ignore   # ignore/add/remove/force
1298
1299# Whether to alter newlines in '#define' macros
1300nl_define_macro                           = false    # false/true
1301
1302# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'. Does not affect the whole-file #ifdef.
1303nl_squeeze_ifdef                          = false    # false/true
1304
1305# Add or remove blank line before 'if'
1306nl_before_if                              = add   # ignore/add/remove/force
1307
1308# Add or remove blank line after 'if' statement
1309nl_after_if                               = ignore   # ignore/add/remove/force
1310
1311# Add or remove blank line before 'for'
1312nl_before_for                             = add   # ignore/add/remove/force
1313
1314# Add or remove blank line after 'for' statement
1315nl_after_for                              = ignore   # ignore/add/remove/force
1316
1317# Add or remove blank line before 'while'
1318nl_before_while                           = add   # ignore/add/remove/force
1319
1320# Add or remove blank line after 'while' statement
1321nl_after_while                            = ignore   # ignore/add/remove/force
1322
1323# Add or remove blank line before 'switch'
1324nl_before_switch                          = add   # ignore/add/remove/force
1325
1326# Add or remove blank line after 'switch' statement
1327nl_after_switch                           = ignore   # ignore/add/remove/force
1328
1329# Add or remove blank line before 'synchronized'
1330nl_before_synchronized                    = ignore   # ignore/add/remove/force
1331
1332# Add or remove blank line after 'synchronized' statement
1333nl_after_synchronized                     = ignore   # ignore/add/remove/force
1334
1335# Add or remove blank line before 'do'
1336nl_before_do                              = add   # ignore/add/remove/force
1337
1338# Add or remove blank line after 'do/while' statement
1339nl_after_do                               = ignore   # ignore/add/remove/force
1340
1341# Whether to double-space commented-entries in struct/enum
1342nl_ds_struct_enum_cmt                     = false    # false/true
1343
1344# Whether to double-space before the close brace of a struct/union/enum
1345# (lower priority than 'eat_blanks_before_close_brace')
1346nl_ds_struct_enum_close_brace             = false    # false/true
1347
1348# Add or remove a newline around a class colon.
1349# Related to pos_class_colon, nl_class_init_args, and pos_class_comma.
1350nl_class_colon                            = ignore   # ignore/add/remove/force
1351
1352# Add or remove a newline around a class constructor colon.
1353# Related to pos_constr_colon, nl_constr_init_args, and pos_constr_comma.
1354nl_constr_colon                           = ignore   # ignore/add/remove/force
1355
1356# Change simple unbraced if statements into a one-liner
1357# 'if(b)\n i++;' => 'if(b) i++;'
1358nl_create_if_one_liner                    = false    # false/true
1359
1360# Change simple unbraced for statements into a one-liner
1361# 'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
1362nl_create_for_one_liner                   = false    # false/true
1363
1364# Change simple unbraced while statements into a one-liner
1365# 'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
1366nl_create_while_one_liner                 = false    # false/true
1367
1368#
1369# Positioning options
1370#
1371
1372# The position of arithmetic operators in wrapped expressions
1373pos_arith                                 = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1374
1375# The position of assignment in wrapped expressions.
1376# Do not affect '=' followed by '{'
1377pos_assign                                = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1378
1379# The position of boolean operators in wrapped expressions
1380pos_bool                                  = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1381
1382# The position of comparison operators in wrapped expressions
1383pos_compare                               = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1384
1385# The position of conditional (b ? t : f) operators in wrapped expressions
1386pos_conditional                           = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1387
1388# The position of the comma in wrapped expressions
1389pos_comma                                 = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1390
1391# The position of the comma in the class base list
1392pos_class_comma                           = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1393
1394# The position of the comma in the constructor initialization list
1395pos_constr_comma                          = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1396
1397# The position of colons between class and base class list
1398pos_class_colon                           = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1399
1400# The position of colons between constructor and member initialization
1401pos_constr_colon                          = ignore   # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
1402
1403#
1404# Line Splitting options
1405#
1406
1407# Try to limit code width to N number of columns
1408code_width                                = 90        # number
1409
1410# Whether to fully split long 'for' statements at semi-colons
1411ls_for_split_full                         = false    # false/true
1412
1413# Whether to fully split long function protos/calls at commas
1414ls_func_split_full                        = false    # false/true
1415
1416# Whether to split lines as close to code_width as possible and ignore some groupings
1417ls_code_width                             = false    # false/true
1418
1419#
1420# Blank line options
1421#
1422
1423# The maximum consecutive newlines
1424nl_max                                    = 2        # number
1425
1426# The number of newlines after a function prototype, if followed by another function prototype
1427nl_after_func_proto                       = 0        # number
1428
1429# The number of newlines after a function prototype, if not followed by another function prototype
1430nl_after_func_proto_group                 = 0        # number
1431
1432# The number of newlines after '}' of a multi-line function body
1433nl_after_func_body                        = 0        # number
1434
1435# The number of newlines after '}' of a multi-line function body in a class declaration
1436nl_after_func_body_class                  = 0        # number
1437
1438# The number of newlines after '}' of a single line function body
1439nl_after_func_body_one_liner              = 0        # number
1440
1441# The minimum number of newlines before a multi-line comment.
1442# Doesn't apply if after a brace open or another multi-line comment.
1443nl_before_block_comment                   = 0        # number
1444
1445# The minimum number of newlines before a single-line C comment.
1446# Doesn't apply if after a brace open or other single-line C comments.
1447nl_before_c_comment                       = 0        # number
1448
1449# The minimum number of newlines before a CPP comment.
1450# Doesn't apply if after a brace open or other CPP comments.
1451nl_before_cpp_comment                     = 0        # number
1452
1453# Whether to force a newline after a multi-line comment.
1454nl_after_multiline_comment                = false    # false/true
1455
1456# Whether to force a newline after a label's colon.
1457nl_after_label_colon                      = false    # false/true
1458
1459# The number of newlines after '}' or ';' of a struct/enum/union definition
1460nl_after_struct                           = 0        # number
1461
1462# The number of newlines after '}' or ';' of a class definition
1463nl_after_class                            = 0        # number
1464
1465# The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
1466# Will not change the newline count if after a brace open.
1467# 0 = No change.
1468nl_before_access_spec                     = 0        # number
1469
1470# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
1471# 0 = No change.
1472nl_after_access_spec                      = 0        # number
1473
1474# The number of newlines between a function def and the function comment.
1475# 0 = No change.
1476nl_comment_func_def                       = 0        # number
1477
1478# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
1479# 0 = No change.
1480nl_after_try_catch_finally                = 0        # number
1481
1482# The number of newlines before and after a property, indexer or event decl.
1483# 0 = No change.
1484nl_around_cs_property                     = 0        # number
1485
1486# The number of newlines between the get/set/add/remove handlers in C#.
1487# 0 = No change.
1488nl_between_get_set                        = 0        # number
1489
1490# Add or remove newline between C# property and the '{'
1491nl_property_brace                         = ignore   # ignore/add/remove/force
1492
1493# Whether to remove blank lines after '{'
1494eat_blanks_after_open_brace               = false    # false/true
1495
1496# Whether to remove blank lines before '}'
1497eat_blanks_before_close_brace             = false    # false/true
1498
1499# How aggressively to remove extra newlines not in preproc.
1500# 0: No change
1501# 1: Remove most newlines not handled by other config
1502# 2: Remove all newlines and reformat completely by config
1503nl_remove_extra_newlines                  = 0        # number
1504
1505# Whether to put a blank line before 'return' statements, unless after an open brace.
1506nl_before_return                          = false    # false/true
1507
1508# Whether to put a blank line after 'return' statements, unless followed by a close brace.
1509nl_after_return                           = false    # false/true
1510
1511# Whether to put a newline after a Java annotation statement.
1512# Only affects annotations that are after a newline.
1513nl_after_annotation                       = ignore   # ignore/add/remove/force
1514
1515# Controls the newline between two annotations.
1516nl_between_annotation                     = ignore   # ignore/add/remove/force
1517
1518#
1519# Code modifying options (non-whitespace)
1520#
1521
1522# Add or remove braces on single-line 'do' statement
1523mod_full_brace_do                         = add   # ignore/add/remove/force
1524
1525# Add or remove braces on single-line 'for' statement
1526mod_full_brace_for                        = add   # ignore/add/remove/force
1527
1528# Add or remove braces on single-line function definitions. (Pawn)
1529mod_full_brace_function                   = add   # ignore/add/remove/force
1530
1531# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
1532mod_full_brace_if                         = add   # ignore/add/remove/force
1533
1534# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
1535# If any must be braced, they are all braced.  If all can be unbraced, then the braces are removed.
1536mod_full_brace_if_chain                   = false    # false/true
1537
1538# Don't remove braces around statements that span N newlines
1539mod_full_brace_nl                         = 0        # number
1540
1541# Add or remove braces on single-line 'while' statement
1542mod_full_brace_while                      = add   # ignore/add/remove/force
1543
1544# Add or remove braces on single-line 'using ()' statement
1545mod_full_brace_using                      = ignore   # ignore/add/remove/force
1546
1547# Add or remove unnecessary paren on 'return' statement
1548mod_paren_on_return                       = remove   # ignore/add/remove/force
1549
1550# Whether to change optional semicolons to real semicolons
1551mod_pawn_semicolon                        = false    # false/true
1552
1553# Add parens on 'while' and 'if' statement around bools
1554mod_full_paren_if_bool                    = false    # false/true
1555
1556# Whether to remove superfluous semicolons
1557mod_remove_extra_semicolon                = false    # false/true
1558
1559# If a function body exceeds the specified number of newlines and doesn't have a comment after
1560# the close brace, a comment will be added.
1561mod_add_long_function_closebrace_comment  = 0        # number
1562
1563# If a namespace body exceeds the specified number of newlines and doesn't have a comment after
1564# the close brace, a comment will be added.
1565mod_add_long_namespace_closebrace_comment = 0        # number
1566
1567# If a switch body exceeds the specified number of newlines and doesn't have a comment after
1568# the close brace, a comment will be added.
1569mod_add_long_switch_closebrace_comment    = 0        # number
1570
1571# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
1572# the #endif, a comment will be added.
1573mod_add_long_ifdef_endif_comment          = 12        # number
1574
1575# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
1576# the #else, a comment will be added.
1577mod_add_long_ifdef_else_comment           = 12        # number
1578
1579# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
1580mod_sort_import                           = false    # false/true
1581
1582# If TRUE, will sort consecutive single-line 'using' statements [C#]
1583mod_sort_using                            = false    # false/true
1584
1585# If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
1586# This is generally a bad idea, as it may break your code.
1587mod_sort_include                          = false    # false/true
1588
1589# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
1590mod_move_case_break                       = false    # false/true
1591
1592# Will add or remove the braces around a fully braced case statement.
1593# Will only remove the braces if there are no variable declarations in the block.
1594mod_case_brace                            = ignore   # ignore/add/remove/force
1595
1596# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
1597mod_remove_empty_return                   = false    # false/true
1598
1599#
1600# Comment modifications
1601#
1602
1603# Try to wrap comments at cmt_width columns
1604cmt_width                                 = 0        # number
1605
1606# Set the comment reflow mode (default: 0)
1607# 0: no reflowing (apart from the line wrapping due to cmt_width)
1608# 1: no touching at all
1609# 2: full reflow
1610cmt_reflow_mode                           = 0        # number
1611
1612# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
1613cmt_convert_tab_to_spaces                 = false    # false/true
1614
1615# If false, disable all multi-line comment changes, including cmt_width. keyword substitution, and leading chars.
1616# Default is true.
1617cmt_indent_multi                          = true     # false/true
1618
1619# Whether to group c-comments that look like they are in a block
1620cmt_c_group                               = true     # false/true
1621
1622# Whether to put an empty '/*' on the first line of the combined c-comment
1623cmt_c_nl_start                            = true     # false/true
1624
1625# Whether to put a newline before the closing '*/' of the combined c-comment
1626cmt_c_nl_end                              = true     # false/true
1627
1628# Whether to group cpp-comments that look like they are in a block
1629cmt_cpp_group                             = false    # false/true
1630
1631# Whether to put an empty '/*' on the first line of the combined cpp-comment
1632cmt_cpp_nl_start                          = false    # false/true
1633
1634# Whether to put a newline before the closing '*/' of the combined cpp-comment
1635cmt_cpp_nl_end                            = false    # false/true
1636
1637# Whether to change cpp-comments into c-comments
1638cmt_cpp_to_c                              = true     # false/true
1639
1640# Whether to put a star on subsequent comment lines
1641cmt_star_cont                             = true     # false/true
1642
1643# The number of spaces to insert at the start of subsequent comment lines
1644cmt_sp_before_star_cont                   = 0        # number
1645
1646# The number of spaces to insert after the star on subsequent comment lines
1647cmt_sp_after_star_cont                    = 1        # number
1648
1649# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
1650# the comment are the same length. Default=True
1651cmt_multi_check_last                      = true     # false/true
1652
1653# The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
1654# Will substitute $(filename) with the current file's name.
1655cmt_insert_file_header                    = ""         # string
1656
1657# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
1658# Will substitute $(filename) with the current file's name.
1659cmt_insert_file_footer                    = ""         # string
1660
1661# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
1662# Will substitute $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
1663# Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
1664cmt_insert_func_header                    = ""         # string
1665
1666# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
1667# Will substitute $(class) with the class name.
1668cmt_insert_class_header                   = ""         # string
1669
1670# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
1671# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
1672cmt_insert_oc_msg_header                  = ""         # string
1673
1674# If a preprocessor is encountered when stepping backwards from a function name, then
1675# this option decides whether the comment should be inserted.
1676# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
1677cmt_insert_before_preproc                 = false    # false/true
1678
1679#
1680# Preprocessor options
1681#
1682
1683# Control indent of preprocessors inside #if blocks at brace level 0 (file-level)
1684pp_indent                                 = add   # ignore/add/remove/force
1685
1686# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
1687pp_indent_at_level                        = false    # false/true
1688
1689# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
1690# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
1691# Default=1.
1692pp_indent_count                           = 4        # number
1693
1694# Add or remove space after # based on pp_level of #if blocks
1695pp_space                                  = ignore   # ignore/add/remove/force
1696
1697# Sets the number of spaces added with pp_space
1698pp_space_count                            = 0        # number
1699
1700# The indent for #region and #endregion in C# and '#pragma region' in C/C++
1701pp_indent_region                          = 0        # number
1702
1703# Whether to indent the code between #region and #endregion
1704pp_region_indent_code                     = false    # false/true
1705
1706# If pp_indent_at_level=true, sets the indent for #if, #else, and #endif when not at file-level.
1707# 0:  indent preprocessors using output_tab_size.
1708# >0: column at which all preprocessors will be indented.
1709pp_indent_if                              = 0        # number
1710
1711# Control whether to indent the code between #if, #else and #endif.
1712pp_if_indent_code                         = false    # false/true
1713
1714# Whether to indent '#define' at the brace level (true) or from column 1 (false)
1715pp_define_at_level                        = false    # false/true
1716
1717# You can force a token to be a type with the 'type' option.
1718# Example:
1719# type myfoo1 myfoo2
1720#
1721# You can create custom macro-based indentation using macro-open,
1722# macro-else and macro-close.
1723# Example:
1724# macro-open  BEGIN_TEMPLATE_MESSAGE_MAP
1725# macro-open  BEGIN_MESSAGE_MAP
1726# macro-close END_MESSAGE_MAP
1727#
1728# You can assign any keyword to any type with the set option.
1729# set func_call_user _ N_
1730#
1731# The full syntax description of all custom definition config entries
1732# is shown below:
1733#
1734# define custom tokens as:
1735# - embed whitespace in token using '' escape character, or
1736#   put token in quotes
1737# - these: ' " and ` are recognized as quote delimiters
1738#
1739# type token1 token2 token3 ...
1740#             ^ optionally specify multiple tokens on a single line
1741# define def_token output_token
1742#                  ^ output_token is optional, then NULL is assumed
1743# macro-open token
1744# macro-close token
1745# macro-else token
1746# set id token1 token2 ...
1747#               ^ optionally specify multiple tokens on a single line
1748#     ^ id is one of the names in token_enum.h sans the CT_ prefix,
1749#       e.g. PP_PRAGMA
1750#
1751# all tokens are separated by any mix of ',' commas, '=' equal signs
1752# and whitespace (space, tab)
1753#
1754# You can add support for other file extensions using the 'file_ext' command.
1755# The first arg is the language name used with the '-l' option.
1756# The remaining args are file extensions, matched with 'endswith'.
1757#   file_ext CPP .ch .cxx .cpp.in
1758#
1759file_ext C .h