### This file holds rules specific to C#

#include Uncrustify.Common-CStyle.cfg
### This file holds rules common to all c-style languages (currently C# and C++)
#
##
## General options
##
#
#newlines                                          { Auto, LF, CR, CRLF }
#  The type of line endings. Default=Auto
#
input_tab_size=4                                    # Number
#  The original size of tabs in the input. Default=8
#
#output_tab_size                                   Number
#  The size of tabs in the output (only used if align_with_tabs=true). Default=8
#
#string_escape_char                                Number
#  The ASCII value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
#
#string_escape_char2                               Number
#  Alternate string escape char for Pawn. Only works right before the quote char.
#
string_replace_tab_chars=true                       # { False, True }
#  Replace tab characters found in string literals with the escape sequence \t instead.
#
tok_split_gte=false                                 # { False, True }
#  Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
#  If true, 'assert(x<0 && y>=3)' will be broken. Default=False
#  Improvements to template detection may make this option obsolete.
#
disable_processing_cmt=*begin-nonstandard-formatting*
#  Override the default ' *INDENT-OFF*' in comments for disabling processing of part of the file.
#
enable_processing_cmt=*end-nonstandard-formatting*
#  Override the default ' *INDENT-ON*' in comments for enabling processing of part of the file.
#
#enable_digraphs                                   { False, True }
#  Enable parsing of digraphs. Default=False
#
utf8_bom=remove                                     # { Ignore, Add, Remove, Force }
#  Control what to do with the UTF-8 BOM (recommend 'remove')
#
utf8_byte=false                                     # { False, True }
#  If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
#
utf8_force=false                                    # { False, True }
#  Force the output encoding to UTF-8
#
##
## Indenting
##
#
indent_columns=4                                    # Number
#  The number of columns to indent per level.
#  Usually 2, 3, 4, or 8. Default=8
#
#indent_continue                                   Number
#  The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
#  For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
#
indent_with_tabs=0                                  # Number
#  How to use tabs when indenting code
#  0=spaces only
#  1=indent with tabs to brace level, align with spaces (default)
#  2=indent and align with tabs, using spaces when not on a tabstop
#
indent_cmt_with_tabs=false                          # { False, True }
#  Comments that are not a brace level are indented with tabs on a tabstop.
#  Requires indent_with_tabs=2. If false, will use spaces.
#
indent_align_string=false                           # { False, True }
#  Whether to indent strings broken by '\' so that they line up
#
#indent_xml_string                                 Number
#  The number of spaces to indent multi-line XML strings.
#  Requires indent_align_string=True
#
#indent_brace                                      Number
#  Spaces to indent '{' from level
#
indent_braces=false                                 # { False, True }
#  Whether braces are indented to the body level
#
indent_braces_no_func=false                         # { False, True }
#  Disabled indenting function braces if indent_braces is true
#
indent_braces_no_class=false                        # { False, True }
#  Disabled indenting class braces if indent_braces is true
#
indent_braces_no_struct=false                       # { False, True }
#  Disabled indenting struct braces if indent_braces is true
#
indent_brace_parent=false                           # { False, True }
#  Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
#
#indent_paren_open_brace                           { False, True }
#  Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
#
indent_cs_delegate_brace=true                       # { False, True }
#  indent a C# delegate by another level, default is to not indent by another level.
#
indent_namespace=true                               # { False, True }
#  Whether the 'namespace' body is indented
#
#indent_namespace_single_indent                    { False, True }
#  Only indent one namespace and no sub-namespaces.
#  Requires indent_namespace=true.
#
#indent_namespace_level                            Number
#  The number of spaces to indent a namespace block
#
#indent_namespace_limit                            Number
#  If the body of the namespace is longer than this number, it won't be indented.
#  Requires indent_namespace=true. Default=0 (no limit)
#
indent_extern=false                                 # { False, True }
#  Whether the 'extern "C"' body is indented
#
indent_class=true                                   # { False, True }
#  Whether the 'class' body is indented
#
indent_class_colon=false                            # { False, True }
#  Whether to indent the stuff after a leading base class colon
#
#indent_class_on_colon                             { False, True }
#  Indent based on a class colon instead of the stuff after the colon.
#  Requires indent_class_colon=true. Default=False
#
#indent_constr_colon                               { False, True }
#  Whether to indent the stuff after a leading class initializer colon
#
#indent_ctor_init_leading                          Number
#  Virtual indent from the ':' for member initializers. Default=2
#
#indent_ctor_init                                  Number
#  Additional indenting for constructor initializer list
#
indent_else_if=false                                # { False, True }
#  False=treat 'else\nif' as 'else if' for indenting purposes
#  True=indent the 'if' one level
#
#indent_var_def_blk                                Number
#  Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
#
indent_var_def_cont=false                           # { False, True }
#  Indent continued variable declarations instead of aligning.
#
#indent_shift                                      { False, True }
#  Indent continued shift expressions ('<<' and '>>') instead of aligning.
#  Turn align_left_shift off when enabling this.
#
#indent_func_def_force_col1                        { False, True }
#  True:  force indentation of function definition to start in column 1
#  False: use the default behavior
#
indent_func_call_param=true                         # { False, True }
#  True:  indent continued function call parameters one indent level
#  False: align parameters under the open paren
#
indent_func_def_param=true                          # { False, True }
#  Same as indent_func_call_param, but for function defs
#
indent_func_proto_param=true                        # { False, True }
#  Same as indent_func_call_param, but for function protos
#
indent_func_class_param=false                       # { False, True }
#  Same as indent_func_call_param, but for class declarations
#
indent_func_ctor_var_param=false                    # { False, True }
#  Same as indent_func_call_param, but for class variable constructors
#
indent_template_param=false                         # { False, True }
#  Same as indent_func_call_param, but for templates
#
indent_func_param_double=false                      # { False, True }
#  Double the indent for indent_func_xxx_param options
#
#indent_func_const                                 Number
#  Indentation column for standalone 'const' function decl/proto qualifier
#
#indent_func_throw                                 Number
#  Indentation column for standalone 'throw' function decl/proto qualifier
#
#indent_member                                     Number
#  The number of spaces to indent a continued '->' or '.'
#  Usually set to 0, 1, or indent_columns.
#
#indent_sing_line_comments                         Number
#  Spaces to indent single line ('//') comments on lines before code
#
indent_relative_single_line_comments=false          # { False, True }
#  If set, will indent trailing single line ('//') comments relative
#  to the code instead of trying to keep the same absolute column
#
indent_switch_case=4                                # Number
#  Spaces to indent 'case' from 'switch'
#  Usually 0 or indent_columns.
#
indent_case_shift=0                                 # Number
#  Spaces to shift the 'case' line, without affecting any other lines
#  Usually 0.
#
indent_case_brace=0                                 # Number
#  Spaces to indent '{' from 'case'.
#  By default, the brace will appear under the 'c' in case.
#  Usually set to 0 or indent_columns.
#
indent_col1_comment=false                           # { False, True }
#  Whether to indent comments found in first column
#
indent_label=-4                                     # Number
#  How to indent goto labels
#    >0: absolute column where 1 is the leftmost column
#   <=0: subtract from brace indent
#  Default=1
#
indent_access_spec=-4                               # Number
#  Same as indent_label, but for access specifiers that are followed by a colon. Default=1
#
#indent_access_spec_body                           { False, True }
#  Indent the code after an access specifier by one level.
#  If set, this option forces 'indent_access_spec=0'
#
indent_paren_nl=false                               # { False, True }
#  If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
#
#indent_paren_close                                Number
#  Controls the indent of a close paren after a newline.
#  0: Indent to body level
#  1: Align under the open paren
#  2: Indent to the brace level
#
indent_comma_paren=false                            # { False, True }
#  Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
#
indent_bool_paren=false                             # { False, True }
#  Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
#
indent_first_bool_expr=false                        # { False, True }
#  If 'indent_bool_paren' is true, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
#
indent_square_nl=false                              # { False, True }
#  If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
#
indent_preserve_sql=false                           # { False, True }
#  Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
#
#indent_align_assign                               { False, True }
#  Align continued statements at the '='. Default=True
#  If FALSE or the '=' is followed by a newline, the next line is indent one tab.
#
#indent_oc_block                                   { False, True }
#  Indent OC blocks at brace level instead of usual rules.
#
#indent_oc_block_msg                               Number
#  Indent OC blocks in a message relative to the parameter name.
#  0=use indent_oc_block rules, 1+=spaces to indent
#
#indent_oc_msg_colon                               Number
#  Minimum indent for subsequent parameters
#
#indent_oc_msg_prioritize_first_colon              { False, True }
#  If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
#  Default=True.
#
indent_oc_block_msg_xcode_style=true                # { False, True }
#  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).
#
#indent_oc_block_msg_from_keyword                  { False, True }
#  If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
#
#indent_oc_block_msg_from_colon                    { False, True }
#  If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
#
#indent_oc_block_msg_from_caret                    { False, True }
#  If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
#
#indent_oc_block_msg_from_brace                    { False, True }
#  If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
#
#indent_min_vbrace_open                            Number
#  When indenting after virtual brace open and newline add further spaces to reach this min. indent.
#
#indent_vbrace_open_on_tabstop                     { False, True }
#  TRUE: When indenting after virtual brace open and newline add further spaces after regular indent to reach next tabstop.
#
#indent_token_after_brace                          { False, True }
#  If true, a brace followed by another token (not a newline) will indent all contained lines to match the token. Default=True.
#
#indent_cpp_lambda_body                            { False, True }
#  If true, cpp lambda body will be indented.
#
indent_off_after_return_new=true                    # { False, True }
#  If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column.
#
indent_single_after_return=true                     # { False, True }
#  If true, the tokens after return are indented with regular single indentation.By default (false) the indentation is after the return token.
#
##
## Spacing options
##
#
sp_arith=add                                        # { Ignore, Add, Remove, Force }
#  Add or remove space around arithmetic operator '+', '-', '/', '*', etc
#  also '>>>' '<<' '>>' '%' '|'
#
sp_assign=add                                       # { Ignore, Add, Remove, Force }
#  Add or remove space around assignment operator '=', '+=', etc
#
#sp_cpp_lambda_assign                              { Ignore, Add, Remove, Force }
#  Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
#
#sp_cpp_lambda_paren                               { Ignore, Add, Remove, Force }
#  Add or remove space after the capture specification in C++11 lambda.
#
sp_assign_default=add                               # { Ignore, Add, Remove, Force }
#  Add or remove space around assignment operator '=' in a prototype
#
#sp_before_assign                                  { Ignore, Add, Remove, Force }
#  Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
#
#sp_after_assign                                   { Ignore, Add, Remove, Force }
#  Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
#
#sp_enum_paren                                     { Ignore, Add, Remove, Force }
#  Add or remove space in 'NS_ENUM ('
#
sp_enum_assign=add                                  # { Ignore, Add, Remove, Force }
#  Add or remove space around assignment '=' in enum
#
#sp_enum_before_assign                             { Ignore, Add, Remove, Force }
#  Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
#
#sp_enum_after_assign                              { Ignore, Add, Remove, Force }
#  Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
#
sp_pp_concat=remove                                 # { Ignore, Add, Remove, Force }
#  Add or remove space around preprocessor '##' concatenation operator. Default=Add
#
sp_pp_stringify=remove                              # { Ignore, Add, Remove, Force }
#  Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
#
#sp_before_pp_stringify                            { Ignore, Add, Remove, Force }
#  Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
#
sp_bool=add                                         # { Ignore, Add, Remove, Force }
#  Add or remove space around boolean operators '&&' and '||'
#
sp_compare=add                                      # { Ignore, Add, Remove, Force }
#  Add or remove space around compare operator '<', '>', '==', etc
#
sp_inside_paren=remove                              # { Ignore, Add, Remove, Force }
#  Add or remove space inside '(' and ')'
#
sp_paren_paren=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space between nested parens: '((' vs ') )'
#
#sp_cparen_oparen                                  { Ignore, Add, Remove, Force }
#  Add or remove space between back-to-back parens: ')(' vs ') ('
#
sp_balance_nested_parens=false                      # { False, True }
#  Whether to balance spaces inside nested parens
#
sp_paren_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove space between ')' and '{'
#
#sp_before_ptr_star                                { Ignore, Add, Remove, Force }
#  Add or remove space before pointer star '*'
#
#sp_before_unnamed_ptr_star                        { Ignore, Add, Remove, Force }
#  Add or remove space before pointer star '*' that isn't followed by a variable name
#  If set to 'ignore', sp_before_ptr_star is used instead.
#
#sp_between_ptr_star                               { Ignore, Add, Remove, Force }
#  Add or remove space between pointer stars '*'
#
#sp_after_ptr_star                                 { Ignore, Add, Remove, Force }
#  Add or remove space after pointer star '*', if followed by a word.
#
#sp_after_ptr_star_qualifier                       { Ignore, Add, Remove, Force }
#  Add or remove space after pointer star '*', if followed by a qualifier.
#
#sp_after_ptr_star_func                            { Ignore, Add, Remove, Force }
#  Add or remove space after a pointer star '*', if followed by a func proto/def.
#
#sp_ptr_star_paren                                 { Ignore, Add, Remove, Force }
#  Add or remove space after a pointer star '*', if followed by an open paren (function types).
#
#sp_before_ptr_star_func                           { Ignore, Add, Remove, Force }
#  Add or remove space before a pointer star '*', if followed by a func proto/def.
#
#sp_before_byref                                   { Ignore, Add, Remove, Force }
#  Add or remove space before a reference sign '&'
#
#sp_before_unnamed_byref                           { Ignore, Add, Remove, Force }
#  Add or remove space before a reference sign '&' that isn't followed by a variable name
#  If set to 'ignore', sp_before_byref is used instead.
#
#sp_after_byref                                    { Ignore, Add, Remove, Force }
#  Add or remove space after reference sign '&', if followed by a word.
#
#sp_after_byref_func                               { Ignore, Add, Remove, Force }
#  Add or remove space after a reference sign '&', if followed by a func proto/def.
#
#sp_before_byref_func                              { Ignore, Add, Remove, Force }
#  Add or remove space before a reference sign '&', if followed by a func proto/def.
#
sp_after_type=ignore                                # { Ignore, Add, Remove, Force }
#  Add or remove space between type and word. Default=Force
#
#sp_before_template_paren                          { Ignore, Add, Remove, Force }
#  Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
#
sp_template_angle=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space in 'template <' vs 'template<'.
#  If set to ignore, sp_before_angle is used.
#
sp_before_angle=remove                              # { Ignore, Add, Remove, Force }
#  Add or remove space before '<>'
#
sp_inside_angle=remove                              # { Ignore, Add, Remove, Force }
#  Add or remove space inside '<' and '>'
#
#sp_after_angle                                    { Ignore, Add, Remove, Force }
#  Add or remove space after '<>'
#
sp_angle_paren=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space between '<>' and '(' as found in 'new List<byte>(foo);'
#
sp_angle_paren_empty=remove                         # { Ignore, Add, Remove, Force }
#  Add or remove space between '<>' and '()' as found in 'new List<byte>();'
#
sp_angle_word=add                                   # { Ignore, Add, Remove, Force }
#  Add or remove space between '<>' and a word as in 'List<byte> m;' or 'template <typename T> static ...'
#
sp_angle_shift=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
#
#sp_permit_cpp11_shift                             { False, True }
#  Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
#  sp_angle_shift cannot remove the space without this option.
#
sp_before_sparen=force                              # { Ignore, Add, Remove, Force }
#  Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
#
sp_inside_sparen=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space inside if-condition '(' and ')'
#
#sp_inside_sparen_close                            { Ignore, Add, Remove, Force }
#  Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
#
#sp_inside_sparen_open                             { Ignore, Add, Remove, Force }
#  Add or remove space after if-condition '('. Overrides sp_inside_sparen.
#
sp_after_sparen=add                                 # { Ignore, Add, Remove, Force }
#  Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
#
sp_sparen_brace=force                               # { Ignore, Add, Remove, Force }
#  Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while', etc.
#
#sp_invariant_paren                                { Ignore, Add, Remove, Force }
#  Add or remove space between 'invariant' and '(' in the D language.
#
#sp_after_invariant_paren                          { Ignore, Add, Remove, Force }
#  Add or remove space after the ')' in 'invariant (C) c' in the D language.
#
sp_special_semi=force                               # { Ignore, Add, Remove, Force }
#  Add or remove space before empty statement ';' on 'if', 'for' and 'while'
#
sp_before_semi=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space before ';'. Default=Remove
#
sp_before_semi_for=remove                           # { Ignore, Add, Remove, Force }
#  Add or remove space before ';' in non-empty 'for' statements
#
sp_before_semi_for_empty=remove                     # { Ignore, Add, Remove, Force }
#  Add or remove space before a semicolon of an empty part of a for statement.
#
sp_after_semi=add                                   # { Ignore, Add, Remove, Force }
#  Add or remove space after ';', except when followed by a comment. Default=Add
#
sp_after_semi_for=force                             # { Ignore, Add, Remove, Force }
#  Add or remove space after ';' in non-empty 'for' statements. Default=Force
#
sp_after_semi_for_empty=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
#
sp_before_square=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space before '[' (except '[]')
#
sp_before_squares=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space before '[]'
#
sp_inside_square=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space inside a non-empty '[' and ']'
#
sp_after_comma=add                                  # { Ignore, Add, Remove, Force }
#  Add or remove space after ','
#
sp_before_comma=ignore                              # { Ignore, Add, Remove, Force }
#  Add or remove space before ','. Default=Remove
#
sp_after_mdatype_commas=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space between ',' and ']' in multidimensional array type 'int[,,]'
#
sp_before_mdatype_commas=remove                     # { Ignore, Add, Remove, Force }
#  Add or remove space between '[' and ',' in multidimensional array type 'int[,,]'
#
sp_between_mdatype_commas=remove                    # { Ignore, Add, Remove, Force }
#  Add or remove space between ',' in multidimensional array type 'int[,,]'
#
sp_paren_comma=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space between an open paren and comma: '(,' vs '( ,'. Default=Force
#
#sp_before_ellipsis                                { Ignore, Add, Remove, Force }
#  Add or remove space before the variadic '...' when preceded by a non-punctuator
#
sp_after_class_colon=force                          # { Ignore, Add, Remove, Force }
#  Add or remove space after class ':'
#
sp_before_class_colon=force                         # { Ignore, Add, Remove, Force }
#  Add or remove space before class ':'
#
#sp_after_constr_colon                             { Ignore, Add, Remove, Force }
#  Add or remove space after class constructor ':'
#
#sp_before_constr_colon                            { Ignore, Add, Remove, Force }
#  Add or remove space before class constructor ':'
#
sp_before_case_colon=remove                         # { Ignore, Add, Remove, Force }
#  Add or remove space before case ':'. Default=Remove
#
sp_after_operator=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space between 'operator' and operator sign
#
sp_after_operator_sym=remove                        # { Ignore, Add, Remove, Force }
#  Add or remove space between the operator symbol and the open paren, as in 'operator ++('
#
sp_after_operator_sym_empty=remove                  # { Ignore, Add, Remove, Force }
#  Add or remove space between the operator symbol and the open paren when the operator has no arguments, as in 'operator *()'
#
sp_after_cast=remove                                # { Ignore, Add, Remove, Force }
#  Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
#
sp_inside_paren_cast=remove                         # { Ignore, Add, Remove, Force }
#  Add or remove spaces inside cast parens
#
sp_cpp_cast_paren=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
#
sp_sizeof_paren=remove                              # { Ignore, Add, Remove, Force }
#  Add or remove space between 'sizeof' and '('
#
#sp_after_tag                                      { Ignore, Add, Remove, Force }
#  Add or remove space after the tag keyword (Pawn)
#
sp_inside_braces_enum=add                           # { Ignore, Add, Remove, Force }
#  Add or remove space inside enum '{' and '}'
#
#sp_inside_braces_struct                           { Ignore, Add, Remove, Force }
#  Add or remove space inside struct/union '{' and '}'
#
#sp_inside_braces                                  { Ignore, Add, Remove, Force }
#  Add or remove space inside '{' and '}'
#
sp_inside_braces_empty=remove                       # { Ignore, Add, Remove, Force }
#  Add or remove space inside '{}'
#
sp_type_func=ignore                                 # { Ignore, Add, Remove, Force }
#  Add or remove space between return type and function name
#  A minimum of 1 is forced except for pointer return types.
#
sp_func_proto_paren=remove                          # { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '(' on function declaration
#
#sp_func_proto_paren_empty                         { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '()' on function declaration without parameters
#
sp_func_def_paren=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '(' on function definition
#
#sp_func_def_paren_empty                           { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '()' on function definition without parameters
#
sp_inside_fparens=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space inside empty function '()'
#
sp_inside_fparen=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space inside function '(' and ')'
#
#sp_inside_tparen                                  { Ignore, Add, Remove, Force }
#  Add or remove space inside the first parens in the function type: 'void (*x)(...)'
#
#sp_after_tparen_close                             { Ignore, Add, Remove, Force }
#  Add or remove between the parens in the function type: 'void (*x)(...)'
#
#sp_square_fparen                                  { Ignore, Add, Remove, Force }
#  Add or remove space between ']' and '(' when part of a function call.
#
sp_fparen_brace=add                                 # { Ignore, Add, Remove, Force }
#  Add or remove space between ')' and '{' of function
#
#sp_fparen_dbrace                                  { Ignore, Add, Remove, Force }
#  Java: Add or remove space between ')' and '{{' of double brace initializer.
#
sp_func_call_paren=remove                           # { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '(' on function calls
#
sp_func_call_paren_empty=remove                     # { Ignore, Add, Remove, Force }
#  Add or remove space between function name and '()' on function calls without parameters.
#  If set to 'ignore' (the default), sp_func_call_paren is used.
#
sp_func_call_user_paren=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space between the user function name and '(' on function calls
#  You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
#
sp_func_class_paren=remove                          # { Ignore, Add, Remove, Force }
#  Add or remove space between a constructor/destructor and the open paren
#
#sp_func_class_paren_empty                         { Ignore, Add, Remove, Force }
#  Add or remove space between a constructor without parameters or destructor and '()'
#
sp_return_paren=add                                 # { Ignore, Add, Remove, Force }
#  Add or remove space between 'return' and '('
#
#sp_attribute_paren                                { Ignore, Add, Remove, Force }
#  Add or remove space between '__attribute__' and '('
#
sp_defined_paren=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space between 'defined' and '(' in '#if defined (FOO)'
#
sp_throw_paren=add                                  # { Ignore, Add, Remove, Force }
#  Add or remove space between 'throw' and '(' in 'throw (something)'
#
#sp_after_throw                                    { Ignore, Add, Remove, Force }
#  Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
#
sp_catch_paren=add                                  # { Ignore, Add, Remove, Force }
#  Add or remove space between 'catch' and '(' in 'catch (something) { }'
#  If set to ignore, sp_before_sparen is used.
#
#sp_version_paren                                  { Ignore, Add, Remove, Force }
#  Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
#  If set to ignore, sp_before_sparen is used.
#
#sp_scope_paren                                    { Ignore, Add, Remove, Force }
#  Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
#  If set to ignore, sp_before_sparen is used.
#
#sp_super_paren                                    { Ignore, Add, Remove, Force }
#  Add or remove space between 'super' and '(' in 'super (something)'. Default=Remove
#
#sp_this_paren                                     { Ignore, Add, Remove, Force }
#  Add or remove space between 'this' and '(' in 'this (something)'. Default=Remove
#
#sp_macro                                          { Ignore, Add, Remove, Force }
#  Add or remove space between macro and value
#
#sp_macro_func                                     { Ignore, Add, Remove, Force }
#  Add or remove space between macro function ')' and value
#
#sp_else_brace                                     { Ignore, Add, Remove, Force }
#  Add or remove space between 'else' and '{' if on the same line
#
#sp_brace_else                                     { Ignore, Add, Remove, Force }
#  Add or remove space between '}' and 'else' if on the same line
#
sp_brace_typedef=add                                # { Ignore, Add, Remove, Force }
#  Add or remove space between '}' and the name of a typedef on the same line
#
#sp_catch_brace                                    { Ignore, Add, Remove, Force }
#  Add or remove space between 'catch' and '{' if on the same line
#
#sp_brace_catch                                    { Ignore, Add, Remove, Force }
#  Add or remove space between '}' and 'catch' if on the same line
#
#sp_finally_brace                                  { Ignore, Add, Remove, Force }
#  Add or remove space between 'finally' and '{' if on the same line
#
#sp_brace_finally                                  { Ignore, Add, Remove, Force }
#  Add or remove space between '}' and 'finally' if on the same line
#
#sp_try_brace                                      { Ignore, Add, Remove, Force }
#  Add or remove space between 'try' and '{' if on the same line
#
sp_getset_brace=add                                 # { Ignore, Add, Remove, Force }
#  Add or remove space between get/set and '{' if on the same line
#
#sp_word_brace                                     { Ignore, Add, Remove, Force }
#  Add or remove space between a variable and '{' for C++ uniform initialization. Default=Add
#
#sp_word_brace_ns                                  { Ignore, Add, Remove, Force }
#  Add or remove space between a variable and '{' for a namespace. Default=Add
#
# bug: UNI-10496
#sp_before_dc=remove                               # { Ignore, Add, Remove, Force }
#  Add or remove space before the '::' operator
#
sp_after_dc=remove                                 # { Ignore, Add, Remove, Force }
#  Add or remove space after the '::' operator
#
#sp_d_array_colon                                  { Ignore, Add, Remove, Force }
#  Add or remove around the D named array initializer ':' operator
#
sp_not=remove                                       # { Ignore, Add, Remove, Force }
#  Add or remove space after the '!' (not) operator. Default=Remove
#
sp_inv=remove                                       # { Ignore, Add, Remove, Force }
#  Add or remove space after the '~' (invert) operator. Default=Remove
#
sp_addr=remove                                      # { Ignore, Add, Remove, Force }
#  Add or remove space after the '&' (address-of) operator. Default=Remove
#  This does not affect the spacing after a '&' that is part of a type.
#
sp_member=remove                                    # { Ignore, Add, Remove, Force }
#  Add or remove space around the '.' or '->' operators. Default=Remove
#
sp_deref=remove                                     # { Ignore, Add, Remove, Force }
#  Add or remove space after the '*' (dereference) operator. Default=Remove
#  This does not affect the spacing after a '*' that is part of a type.
#
sp_sign=remove                                      # { Ignore, Add, Remove, Force }
#  Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. Default=Remove
#
sp_incdec=remove                                    # { Ignore, Add, Remove, Force }
#  Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
#
sp_before_nl_cont=add                               # { Ignore, Add, Remove, Force }
#  Add or remove space before a backslash-newline at the end of a line. Default=Add
#
sp_after_oc_scope=force                             # { Ignore, Add, Remove, Force }
#  Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
#
sp_after_oc_colon=remove                            # { Ignore, Add, Remove, Force }
#  Add or remove space after the colon in message specs
#  '-(int) f:(int) x;' vs '-(int) f: (int) x;'
#
sp_before_oc_colon=remove                           # { Ignore, Add, Remove, Force }
#  Add or remove space before the colon in message specs
#  '-(int) f: (int) x;' vs '-(int) f : (int) x;'
#
sp_after_oc_dict_colon=force                        # { Ignore, Add, Remove, Force }
#  Add or remove space after the colon in immutable dictionary expression
#  'NSDictionary *test = @{@"foo" :@"bar"};'
#
sp_before_oc_dict_colon=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space before the colon in immutable dictionary expression
#  'NSDictionary *test = @{@"foo" :@"bar"};'
#
sp_after_send_oc_colon=force                        # { Ignore, Add, Remove, Force }
#  Add or remove space after the colon in message specs
#  '[object setValue:1];' vs '[object setValue: 1];'
#
sp_before_send_oc_colon=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space before the colon in message specs
#  '[object setValue:1];' vs '[object setValue :1];'
#
sp_after_oc_type=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove space after the (type) in message specs
#  '-(int)f: (int) x;' vs '-(int)f: (int)x;'
#
sp_after_oc_return_type=remove                      # { Ignore, Add, Remove, Force }
#  Add or remove space after the first (type) in message specs
#  '-(int) f:(int)x;' vs '-(int)f:(int)x;'
#
sp_after_oc_at_sel=remove                           # { Ignore, Add, Remove, Force }
#  Add or remove space between '@selector' and '('
#  '@selector(msgName)' vs '@selector (msgName)'
#  Also applies to @protocol() constructs
#
#sp_after_oc_at_sel_parens                         { Ignore, Add, Remove, Force }
#  Add or remove space between '@selector(x)' and the following word
#  '@selector(foo) a:' vs '@selector(foo)a:'
#
sp_inside_oc_at_sel_parens=remove                   # { Ignore, Add, Remove, Force }
#  Add or remove space inside '@selector' parens
#  '@selector(foo)' vs '@selector( foo )'
#  Also applies to @protocol() constructs
#
#sp_before_oc_block_caret                          { Ignore, Add, Remove, Force }
#  Add or remove space before a block pointer caret
#  '^int (int arg){...}' vs. ' ^int (int arg){...}'
#
#sp_after_oc_block_caret                           { Ignore, Add, Remove, Force }
#  Add or remove space after a block pointer caret
#  '^int (int arg){...}' vs. '^ int (int arg){...}'
#
#sp_after_oc_msg_receiver                          { Ignore, Add, Remove, Force }
#  Add or remove space between the receiver and selector in a message.
#  '[receiver selector ...]'
#
#sp_after_oc_property                              { Ignore, Add, Remove, Force }
#  Add or remove space after @property.
#
sp_cond_colon=add                                   # { Ignore, Add, Remove, Force }
#  Add or remove space around the ':' in 'b ? t : f'
#
#sp_cond_colon_before                              { Ignore, Add, Remove, Force }
#  Add or remove space before the ':' in 'b ? t : f'. Overrides sp_cond_colon.
#
#sp_cond_colon_after                               { Ignore, Add, Remove, Force }
#  Add or remove space after the ':' in 'b ? t : f'. Overrides sp_cond_colon.
#
sp_cond_question=add                                # { Ignore, Add, Remove, Force }
#  Add or remove space around the '?' in 'b ? t : f'
#
#sp_cond_question_before                           { Ignore, Add, Remove, Force }
#  Add or remove space before the '?' in 'b ? t : f'. Overrides sp_cond_question.
#
#sp_cond_question_after                            { Ignore, Add, Remove, Force }
#  Add or remove space after the '?' in 'b ? t : f'. Overrides sp_cond_question.
#
#sp_cond_ternary_short                             { Ignore, Add, Remove, Force }
#  In the abbreviated ternary form (a ?: b), add/remove space between ? and :.'. Overrides all other sp_cond_* options.
#
sp_case_label=ignore                                # { Ignore, Add, Remove, Force }
#  Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
#
#sp_range                                          { Ignore, Add, Remove, Force }
#  Control the space around the D '..' operator.
#
#sp_after_for_colon                                { Ignore, Add, Remove, Force }
#  Control the spacing after ':' in 'for (TYPE VAR : EXPR)'
#
#sp_before_for_colon                               { Ignore, Add, Remove, Force }
#  Control the spacing before ':' in 'for (TYPE VAR : EXPR)'
#
#sp_extern_paren                                   { Ignore, Add, Remove, Force }
#  Control the spacing in 'extern (C)' (D)
#
#sp_cmt_cpp_start                                  { Ignore, Add, Remove, Force }
#  Control the space after the opening of a C++ comment '// A' vs '//A'
#
#sp_cmt_cpp_doxygen                                { False, True }
#  TRUE: If space is added with sp_cmt_cpp_start, do it after doxygen sequences like '///', '///<', '//!' and '//!<'.
#
#sp_cmt_cpp_qttr                                   { False, True }
#  TRUE: If space is added with sp_cmt_cpp_start, do it after Qt translator or meta-data comments like '//:', '//=', and '//~'.
#
#sp_endif_cmt                                      { Ignore, Add, Remove, Force }
#  Controls the spaces between #else or #endif and a trailing comment
#
sp_after_new=force                                  # { Ignore, Add, Remove, Force }
#  Controls the spaces after 'new', 'delete' and 'delete[]'
#
sp_between_new_paren=remove                         # { Ignore, Add, Remove, Force }
#  Controls the spaces between new and '(' in 'new()'
#
#sp_before_tr_emb_cmt                              { Ignore, Add, Remove, Force }
#  Controls the spaces before a trailing or embedded comment
#
#sp_num_before_tr_emb_cmt                          Number
#  Number of spaces before a trailing or embedded comment
#
#sp_annotation_paren                               { Ignore, Add, Remove, Force }
#  Control space between a Java annotation and the open paren.
#
sp_skip_vbrace_tokens=true                          # { False, True }
#  If true, vbrace tokens are dropped to the previous token and skipped.
#
##
## Code alignment (not left column spaces/tabs)
##
#
align_keep_tabs=false                               # { False, True }
#  Whether to keep non-indenting tabs
#
align_with_tabs=false                               # { False, True }
#  Whether to use tabs for aligning
#
align_on_tabstop=false                              # { False, True }
#  Whether to bump out to the next tab when aligning
#
align_number_right=false                             # { False, True }
#  Whether to left-align numbers
#
#align_keep_extra_space                            { False, True }
#  Whether to keep whitespace not required for alignment.
#
align_func_params=false                             # { False, True }
#  Align variable definitions in prototypes and functions
#
align_same_func_call_params=false                   # { False, True }
#  Align parameters in single-line functions that have the same name.
#  The function names must already be aligned with each other.
#
#align_var_def_span                                Number
#  The span for aligning variable definitions (0=don't align)
#
#align_var_def_star_style                          Number
#  How to align the star in variable definitions.
#   0=Part of the type     'void *   foo;'
#   1=Part of the variable 'void     *foo;'
#   2=Dangling             'void    *foo;'
#
#align_var_def_amp_style                           Number
#  How to align the '&' in variable definitions.
#   0=Part of the type
#   1=Part of the variable
#   2=Dangling
#
#align_var_def_thresh                              Number
#  The threshold for aligning variable definitions (0=no limit)
#
#align_var_def_gap                                 Number
#  The gap for aligning variable definitions
#
align_var_def_colon=false                           # { False, True }
#  Whether to align the colon in struct bit fields
#
align_var_def_attribute=false                       # { False, True }
#  Whether to align any attribute after the variable name
#
align_var_def_inline=false                          # { False, True }
#  Whether to align inline struct/enum/union variable definitions
#
#align_assign_span                                 Number
#  The span for aligning on '=' in assignments (0=don't align)
#
#align_assign_thresh                               Number
#  The threshold for aligning on '=' in assignments (0=no limit)
#
#align_enum_equ_span                               Number
#  The span for aligning on '=' in enums (0=don't align)
#
#align_enum_equ_thresh                             Number
#  The threshold for aligning on '=' in enums (0=no limit)
#
#align_var_struct_span                             Number
#  The span for aligning struct/union (0=don't align)
#
#align_var_struct_thresh                           Number
#  The threshold for aligning struct/union member definitions (0=no limit)
#
#align_var_struct_gap                              Number
#  The gap for aligning struct/union member definitions
#
#align_struct_init_span                            Number
#  The span for aligning struct initializer values (0=don't align)
#
#align_typedef_gap                                 Number
#  The minimum space between the type and the synonym of a typedef
#
#align_typedef_span                                Number
#  The span for aligning single-line typedefs (0=don't align)
#
#align_typedef_func                                Number
#  How to align typedef'd functions with other typedefs
#  0: Don't mix them at all
#  1: align the open paren with the types
#  2: align the function type name with the other type names
#
#align_typedef_star_style                          Number
#  Controls the positioning of the '*' in typedefs. Just try it.
#  0: Align on typedef type, ignore '*'
#  1: The '*' is part of type name: typedef int  *pint;
#  2: The '*' is part of the type, but dangling: typedef int *pint;
#
#align_typedef_amp_style                           Number
#  Controls the positioning of the '&' in typedefs. Just try it.
#  0: Align on typedef type, ignore '&'
#  1: The '&' is part of type name: typedef int  &pint;
#  2: The '&' is part of the type, but dangling: typedef int &pint;
#
#align_right_cmt_span                              Number
#  The span for aligning comments that end lines (0=don't align)
#
align_right_cmt_mix=false                           # { False, True }
#  If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
#
#align_right_cmt_gap                               Number
#  If a trailing comment is more than this number of columns away from the text it follows,
#  it will qualify for being aligned. This has to be > 0 to do anything.
#
#align_right_cmt_at_col                            Number
#  Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
#
#align_func_proto_span                             Number
#  The span for aligning function prototypes (0=don't align)
#
#align_func_proto_gap                              Number
#  Minimum gap between the return type and the function name.
#
align_on_operator=false                             # { False, True }
#  Align function protos on the 'operator' keyword instead of what follows
#
align_mix_var_proto=false                           # { False, True }
#  Whether to mix aligning prototype and variable declarations.
#  If true, align_var_def_XXX options are used instead of align_func_proto_XXX options.
#
align_single_line_func=false                        # { False, True }
#  Align single-line functions with function prototypes, uses align_func_proto_span
#
align_single_line_brace=false                       # { False, True }
#  Aligning the open brace of single-line functions.
#  Requires align_single_line_func=true, uses align_func_proto_span
#
#align_single_line_brace_gap                       Number
#  Gap for align_single_line_brace.
#
#align_oc_msg_spec_span                            Number
#  The span for aligning ObjC msg spec (0=don't align)
#
align_nl_cont=false                                 # { False, True }
#  Whether to align macros wrapped with a backslash and a newline.
#  This will not work right if the macro contains a multi-line comment.
#
#align_pp_define_together                          { False, True }
#  # Align macro functions and variables together
#
#align_pp_define_gap                               Number
#  The minimum space between label and value of a preprocessor define
#
#align_pp_define_span                              Number
#  The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
#
align_left_shift=false                              # { False, True }
#  Align lines that start with '<<' with previous '<<'. Default=True
#
#align_asm_colon                                   { False, True }
#  Align text after asm volatile () colons.
#
#align_oc_msg_colon_span                           Number
#  Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
#
#align_oc_msg_colon_first                          { False, True }
#  If true, always align with the first parameter, even if it is too short.
#
#align_oc_decl_colon                               { False, True }
#  Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
#
##
## Newline adding and removing options
##
#
nl_collapse_empty_body=false                        # { False, True }
#  Whether to collapse empty blocks between '{' and '}'
#
nl_assign_leave_one_liners=true                     # { False, True }
#  Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
#
nl_class_leave_one_liners=true                      # { False, True }
#  Don't split one-line braced statements inside a class xx { } body
#
nl_enum_leave_one_liners=true                       # { False, True }
#  Don't split one-line enums: 'enum foo { BAR = 15 };'
#
nl_getset_leave_one_liners=true                     # { False, True }
#  Don't split one-line get or set functions
#
nl_func_leave_one_liners=true                       # { False, True }
#  Don't split one-line function definitions - 'int foo() { return 0; }'
#
nl_cpp_lambda_leave_one_liners=true                 # { False, True }
#  Don't split one-line C++11 lambdas - '[]() { return 0; }'
#
nl_if_leave_one_liners=false                        # { False, True }
#  Don't split one-line if/else statements - 'if(a) b++;'
#
#nl_while_leave_one_liners                         { False, True }
#  Don't split one-line while statements - 'while(a) b++;'
#
nl_oc_msg_leave_one_liner=true                      # { False, True }
#  Don't split one-line OC messages
#
#nl_oc_block_brace                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between Objective-C block signature and '{'
#
nl_start_of_file=remove                             # { Ignore, Add, Remove, Force }
#  Add or remove newlines at the start of the file
#
#nl_start_of_file_min                              Number
#  The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
#
nl_end_of_file=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline at the end of the file
#
nl_end_of_file_min=1                                # Number
#  The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
#
nl_assign_brace=force                               # { Ignore, Add, Remove, Force }
#  Add or remove newline between '=' and '{'
#
#nl_assign_square                                  { Ignore, Add, Remove, Force }
#  Add or remove newline between '=' and '[' (D only)
#
#nl_after_square_assign                            { Ignore, Add, Remove, Force }
#  Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
#
#nl_func_var_def_blk                               Number
#  The number of blank lines after a block of variable definitions at the top of a function body
#  0 = No change (default)
#
#nl_typedef_blk_start                              Number
#  The number of newlines before a block of typedefs
#  0 = No change (default)
#  the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start'
#
#nl_typedef_blk_end                                Number
#  The number of newlines after a block of typedefs
#  0 = No change (default)
#
#nl_typedef_blk_in                                 Number
#  The maximum consecutive newlines within a block of typedefs
#  0 = No change (default)
#
#nl_var_def_blk_start                              Number
#  The number of newlines before a block of variable definitions not at the top of a function body
#  0 = No change (default)
#  the option 'nl_after_access_spec' takes preference over 'nl_var_def_blk_start'
#
#nl_var_def_blk_end                                Number
#  The number of newlines after a block of variable definitions not at the top of a function body
#  0 = No change (default)
#
#nl_var_def_blk_in                                 Number
#  The maximum consecutive newlines within a block of variable definitions
#  0 = No change (default)
#
#nl_fcall_brace                                    { Ignore, Add, Remove, Force }
#  Add or remove newline between a function call's ')' and '{', as in:
#  list_for_each(item, &list) { }
#
nl_enum_brace=force                                 # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'enum' and '{'
#
nl_struct_brace=force                               # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'struct and '{'
#
nl_union_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'union' and '{'
#
nl_if_brace=force                                   # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'if' and '{'
#
nl_brace_else=force                                 # { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and 'else'
#
#nl_elseif_brace                                   { Ignore, Add, Remove, Force }
#  Add or remove newline between 'else if' and '{'
#  If set to ignore, nl_if_brace is used instead
#
nl_else_brace=force                                 # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'else' and '{'
#
nl_else_if=remove                                   # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'else' and 'if'
#
nl_brace_finally=force                              # { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and 'finally'
#
nl_finally_brace=force                              # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'finally' and '{'
#
nl_try_brace=force                                  # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'try' and '{'
#
nl_getset_brace=force                               # { Ignore, Add, Remove, Force }
#  Add or remove newline between get/set and '{'
#
nl_for_brace=force                                  # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'for' and '{'
#
nl_catch_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'catch' and '{'
#
nl_brace_catch=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and 'catch'
#
#nl_brace_square                                   { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and ']'
#
#nl_brace_fparen                                   { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and ')' in a function invocation
#
nl_while_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'while' and '{'
#
#nl_scope_brace                                    { Ignore, Add, Remove, Force }
#  Add or remove newline between 'scope (x)' and '{' (D)
#
#nl_unittest_brace                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between 'unittest' and '{' (D)
#
#nl_version_brace                                  { Ignore, Add, Remove, Force }
#  Add or remove newline between 'version (x)' and '{' (D)
#
nl_using_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'using' and '{'
#
nl_brace_brace=ignore                               # { Ignore, Add, Remove, Force }
#  Add or remove newline between two open or close braces.
#  Due to general newline/brace handling, REMOVE may not work.
#
nl_do_brace=force                                   # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'do' and '{'
#
nl_brace_while=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between '}' and 'while' of 'do' statement
#
nl_switch_brace=force                               # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'switch' and '{'
#
#nl_synchronized_brace                             { Ignore, Add, Remove, Force }
#  Add or remove newline between 'synchronized' and '{'
#
nl_multi_line_cond=false                            # { False, True }
#  Add a newline between ')' and '{' if the ')' is on a different line than the if/for/etc.
#  Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and nl_catch_brace.
#
#nl_multi_line_define                              { False, True }
#  Force a newline in a define after the macro name for multi-line defines.
#
nl_before_case=false                                # { False, True }
#  Whether to put a newline before 'case' statement, not after the first 'case'
#
#nl_before_throw                                   { Ignore, Add, Remove, Force }
#  Add or remove newline between ')' and 'throw'
#
nl_after_case=false                                 # { False, True }
#  Whether to put a newline after 'case' statement
#
nl_case_colon_brace=force                           # { Ignore, Add, Remove, Force }
#  Add or remove a newline between a case ':' and '{'. Overrides nl_after_case.
#
nl_namespace_brace=force                            # { Ignore, Add, Remove, Force }
#  Newline between namespace and {
#
nl_template_class=ignore                            # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'template<>' and whatever follows.
#
nl_class_brace=force                                # { Ignore, Add, Remove, Force }
#  Add or remove newline between 'class' and '{'
#
#nl_class_init_args                                { Ignore, Add, Remove, Force }
#  Add or remove newline before/after each ',' in the base class list,
#    (tied to pos_class_comma).
#
#nl_constr_init_args                               { Ignore, Add, Remove, Force }
#  Add or remove newline after each ',' in the constructor member initialization.
#  Related to nl_constr_colon, pos_constr_colon and pos_constr_comma.
#
#nl_enum_own_lines                                 { Ignore, Add, Remove, Force }
#  Add or remove newline before first element, after comma, and after last element in enum
#
#nl_func_type_name                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between return type and function name in a function definition
#
#nl_func_type_name_class                           { Ignore, Add, Remove, Force }
#  Add or remove newline between return type and function name inside a class {}
#  Uses nl_func_type_name or nl_func_proto_type_name if set to ignore.
#
#nl_func_class_scope                               { Ignore, Add, Remove, Force }
#  Add or remove newline between class specification and '::' in 'void A::f() { }'
#  Only appears in separate member implementation (does not appear with in-line implmementation)
#
#nl_func_scope_name                                { Ignore, Add, Remove, Force }
#  Add or remove newline between function scope and name
#  Controls the newline after '::' in 'void A::f() { }'
#
#nl_func_proto_type_name                           { Ignore, Add, Remove, Force }
#  Add or remove newline between return type and function name in a prototype
#
#nl_func_paren                                     { Ignore, Add, Remove, Force }
#  Add or remove newline between a function name and the opening '(' in the declaration
#
#nl_func_def_paren                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between a function name and the opening '(' in the definition
#
#nl_func_decl_start                                { Ignore, Add, Remove, Force }
#  Add or remove newline after '(' in a function declaration
#
#nl_func_def_start                                 { Ignore, Add, Remove, Force }
#  Add or remove newline after '(' in a function definition
#
#nl_func_decl_start_single                         { Ignore, Add, Remove, Force }
#  Overrides nl_func_decl_start when there is only one parameter.
#
#nl_func_def_start_single                          { Ignore, Add, Remove, Force }
#  Overrides nl_func_def_start when there is only one parameter.
#
#nl_func_decl_start_multi_line                     { False, True }
#  Whether to add newline after '(' in a function declaration if '(' and ')' are in different lines.
#
#nl_func_def_start_multi_line                      { False, True }
#  Whether to add newline after '(' in a function definition if '(' and ')' are in different lines.
#
#nl_func_decl_args                                 { Ignore, Add, Remove, Force }
#  Add or remove newline after each ',' in a function declaration
#
#nl_func_def_args                                  { Ignore, Add, Remove, Force }
#  Add or remove newline after each ',' in a function definition
#
#nl_func_decl_args_multi_line                      { False, True }
#  Whether to add newline after each ',' in a function declaration if '(' and ')' are in different lines.
#
#nl_func_def_args_multi_line                       { False, True }
#  Whether to add newline after each ',' in a function definition if '(' and ')' are in different lines.
#
#nl_func_decl_end                                  { Ignore, Add, Remove, Force }
#  Add or remove newline before the ')' in a function declaration
#
#nl_func_def_end                                   { Ignore, Add, Remove, Force }
#  Add or remove newline before the ')' in a function definition
#
#nl_func_decl_end_single                           { Ignore, Add, Remove, Force }
#  Overrides nl_func_decl_end when there is only one parameter.
#
#nl_func_def_end_single                            { Ignore, Add, Remove, Force }
#  Overrides nl_func_def_end when there is only one parameter.
#
#nl_func_decl_end_multi_line                       { False, True }
#  Whether to add newline before ')' in a function declaration if '(' and ')' are in different lines.
#
#nl_func_def_end_multi_line                        { False, True }
#  Whether to add newline before ')' in a function definition if '(' and ')' are in different lines.
#
#nl_func_decl_empty                                { Ignore, Add, Remove, Force }
#  Add or remove newline between '()' in a function declaration.
#
#nl_func_def_empty                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between '()' in a function definition.
#
#nl_func_call_start_multi_line                     { False, True }
#  Whether to add newline after '(' in a function call if '(' and ')' are in different lines.
#
#nl_func_call_args_multi_line                      { False, True }
#  Whether to add newline after each ',' in a function call if '(' and ')' are in different lines.
#
#nl_func_call_end_multi_line                       { False, True }
#  Whether to add newline before ')' in a function call if '(' and ')' are in different lines.
#
#nl_oc_msg_args                                    { False, True }
#  Whether to put each OC message parameter on a separate line
#  See nl_oc_msg_leave_one_liner
#
nl_fdef_brace=force                                 # { Ignore, Add, Remove, Force }
#  Add or remove newline between function signature and '{'
#
#nl_cpp_ldef_brace                                 { Ignore, Add, Remove, Force }
#  Add or remove newline between C++11 lambda signature and '{'
#
#nl_return_expr                                    { Ignore, Add, Remove, Force }
#  Add or remove a newline between the return keyword and return expression.
#
nl_after_semicolon=false                            # { False, True }
#  Whether to put a newline after semicolons, except in 'for' statements
#
#nl_paren_dbrace_open                              { Ignore, Add, Remove, Force }
#  Java: Control the newline between the ')' and '{{' of the double brace initializer.
#
nl_after_brace_open=false                           # { False, True }
#  Whether to put a newline after brace open.
#  This also adds a newline before the matching brace close.
#
nl_after_brace_open_cmt=false                       # { False, True }
#  If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
#  placed between the open brace and a trailing single-line comment.
#
nl_after_vbrace_open=false                          # { False, True }
#  Whether to put a newline after a virtual brace open with a non-empty body.
#  These occur in un-braced if/while/do/for statement bodies.
#
nl_after_vbrace_open_empty=false                    # { False, True }
#  Whether to put a newline after a virtual brace open with an empty body.
#  These occur in un-braced if/while/do/for statement bodies.
#
nl_after_brace_close=false                          # { False, True }
#  Whether to put a newline after a brace close.
#  Does not apply if followed by a necessary ';'.
#
nl_after_vbrace_close=false                         # { False, True }
#  Whether to put a newline after a virtual brace close.
#  Would add a newline before return in: 'if (foo) a++; return;'
#
#nl_brace_struct_var                               { Ignore, Add, Remove, Force }
#  Control the newline between the close brace and 'b' in: 'struct { int a; } b;'
#  Affects enums, unions and structures. If set to ignore, uses nl_after_brace_close
#
#nl_define_macro                                   { False, True }
#  Whether to alter newlines in '#define' macros
#
nl_squeeze_ifdef=false                              # { False, True }
#  Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and '#endif'. Does not affect top-level #ifdefs.
#
#nl_squeeze_ifdef_top_level                        { False, True }
#  Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well.
#
#nl_before_if                                      { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'if'
#
#nl_after_if                                       { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'if' statement
#
#nl_before_for                                     { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'for'
#
#nl_after_for                                      { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'for' statement
#
#nl_before_while                                   { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'while'
#
#nl_after_while                                    { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'while' statement
#
#nl_before_switch                                  { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'switch'
#
#nl_after_switch                                   { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'switch' statement
#
#nl_before_synchronized                            { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'synchronized'
#
#nl_after_synchronized                             { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'synchronized' statement
#
#nl_before_do                                      { Ignore, Add, Remove, Force }
#  Add or remove blank line before 'do'
#
#nl_after_do                                       { Ignore, Add, Remove, Force }
#  Add or remove blank line after 'do/while' statement
#
nl_ds_struct_enum_cmt=false                         # { False, True }
#  Whether to double-space commented-entries in struct/union/enum
#
nl_ds_struct_enum_close_brace=false                 # { False, True }
#  force nl before } of a struct/union/enum
#  (lower priority than 'eat_blanks_before_close_brace')
#
#nl_before_func_class_def                          Number
#  Add or remove blank line before 'func_class_def'
#
#nl_before_func_class_proto                        Number
#  Add or remove blank line before 'func_class_proto'
#
#nl_class_colon                                    { Ignore, Add, Remove, Force }
#  Add or remove a newline before/after a class colon,
#    (tied to pos_class_colon).
#
#nl_constr_colon                                   { Ignore, Add, Remove, Force }
#  Add or remove a newline around a class constructor colon.
#  Related to nl_constr_init_args, pos_constr_colon and pos_constr_comma.
#
nl_create_if_one_liner=false                        # { False, True }
#  Change simple unbraced if statements into a one-liner
#  'if(b)\n i++;' => 'if(b) i++;'
#
nl_create_for_one_liner=false                       # { False, True }
#  Change simple unbraced for statements into a one-liner
#  'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
#
nl_create_while_one_liner=false                     # { False, True }
#  Change simple unbraced while statements into a one-liner
#  'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
#
#nl_split_if_one_liner                             { False, True }
#   Change a one-liner if statement into simple unbraced if
#  'if(b) i++;' => 'if(b) i++;'
#
#nl_split_for_one_liner                            { False, True }
#  Change a one-liner for statement into simple unbraced for
#  'for (i=0;<5;i++) foo(i);' => 'for (i=0;<5;i++) foo(i);'
#
#nl_split_while_one_liner                          { False, True }
#  Change simple unbraced while statements into a one-liner while
#  'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
#
##
## Positioning options
##
#
#pos_arith                                         { Ignore, Lead, Trail }
#  The position of arithmetic operators in wrapped expressions
#
#pos_assign                                        { Ignore, Lead, Trail }
#  The position of assignment in wrapped expressions.
#  Do not affect '=' followed by '{'
#
#pos_bool                                          { Ignore, Lead, Trail }
#  The position of boolean operators in wrapped expressions
#
#pos_compare                                       { Ignore, Lead, Trail }
#  The position of comparison operators in wrapped expressions
#
#pos_conditional                                   { Ignore, Lead, Trail }
#  The position of conditional (b ? t : f) operators in wrapped expressions
#
#pos_comma                                         { Ignore, Lead, Trail }
#  The position of the comma in wrapped expressions
#
#pos_enum_comma                                    { Ignore, Lead, Trail }
#  The position of the comma in enum entries
#
#pos_class_comma                                   { Ignore, Lead, Trail }
#  The position of the comma in the base class list if there are more than one line,
#    (tied to nl_class_init_args).
#
#pos_constr_comma                                  { Ignore, Lead, Trail }
#  The position of the comma in the constructor initialization list.
#  Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon.
#
#pos_class_colon                                   { Ignore, Lead, Trail }
#  The position of trailing/leading class colon, between class and base class list
#    (tied to nl_class_colon).
#
#pos_constr_colon                                  { Ignore, Lead, Trail }
#  The position of colons between constructor and member initialization,
#  (tied to UO_nl_constr_colon).
#  Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
#
##
## Line Splitting options
##
#
#code_width                                        Number
#  Try to limit code width to N number of columns
#
ls_for_split_full=false                             # { False, True }
#  Whether to fully split long 'for' statements at semi-colons
#
ls_func_split_full=false                            # { False, True }
#  Whether to fully split long function protos/calls at commas
#
#ls_code_width                                     { False, True }
#  Whether to split lines as close to code_width as possible and ignore some groupings
#
##
## Blank line options
##
#
nl_max=3                                            # Number
#  The maximum consecutive newlines (3 = 2 blank lines)
#
#nl_after_func_proto                               Number
#  The number of newlines after a function prototype, if followed by another function prototype
#
#nl_after_func_proto_group                         Number
#  The number of newlines after a function prototype, if not followed by another function prototype
#
#nl_after_func_class_proto                         Number
#  The number of newlines after a function class prototype, if followed by another function class prototype
#
#nl_after_func_class_proto_group                   Number
#  The number of newlines after a function class prototype, if not followed by another function class prototype
#
#nl_before_func_body_def                           Number
#  The number of newlines before a multi-line function def body
#
#nl_before_func_body_proto                         Number
#  The number of newlines before a multi-line function prototype body
#
nl_after_func_body=2                                # Number
#  The number of newlines after '}' of a multi-line function body
#
#nl_after_func_body_class                          Number
#  The number of newlines after '}' of a multi-line function body in a class declaration
#
#nl_after_func_body_one_liner                      Number
#  The number of newlines after '}' of a single line function body
#
#nl_before_block_comment                           Number
#  The minimum number of newlines before a multi-line comment.
#  Doesn't apply if after a brace open or another multi-line comment.
#
#nl_before_c_comment                               Number
#  The minimum number of newlines before a single-line C comment.
#  Doesn't apply if after a brace open or other single-line C comments.
#
#nl_before_cpp_comment                             Number
#  The minimum number of newlines before a CPP comment.
#  Doesn't apply if after a brace open or other CPP comments.
#
nl_after_multiline_comment=false                    # { False, True }
#  Whether to force a newline after a multi-line comment.
#
#nl_after_label_colon                              { False, True }
#  Whether to force a newline after a label's colon.
#
#nl_after_struct                                   Number
#  The number of newlines after '}' or ';' of a struct/enum/union definition
#
#nl_after_class                                    Number
#  The number of newlines after '}' or ';' of a class definition
#
#nl_before_access_spec                             Number
#  The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
#  Will not change the newline count if after a brace open.
#  0 = No change.
#
#nl_after_access_spec                              Number
#  The number of newlines after a 'private:', 'public:', 'protected:', 'signals:' or 'slots:' label.
#  0 = No change.
#  the option 'nl_after_access_spec' takes preference over 'nl_typedef_blk_start' and 'nl_var_def_blk_start'
#
#nl_comment_func_def                               Number
#  The number of newlines between a function def and the function comment.
#  0 = No change.
#
#nl_after_try_catch_finally                        Number
#  The number of newlines after a try-catch-finally block that isn't followed by a brace close.
#  0 = No change.
#
#nl_around_cs_property                             Number
#  The number of newlines before and after a property, indexer or event decl.
#  0 = No change.
#
#nl_between_get_set                                Number
#  The number of newlines between the get/set/add/remove handlers in C#.
#  0 = No change.
#
nl_property_brace=force                             # { Ignore, Add, Remove, Force }
#  Add or remove newline between C# property and the '{'
#
eat_blanks_after_open_brace=true                    # { False, True }
#  Whether to remove blank lines after '{'
#
eat_blanks_before_close_brace=true                  # { False, True }
#  Whether to remove blank lines before '}'
#
#nl_remove_extra_newlines                          Number
#  How aggressively to remove extra newlines not in preproc.
#  0: No change
#  1: Remove most newlines not handled by other config
#  2: Remove all newlines and reformat completely by config
#
#nl_before_return                                  { False, True }
#  Whether to put a blank line before 'return' statements, unless after an open brace.
#
nl_after_return=false                               # { False, True }
#  Whether to put a blank line after 'return' statements, unless followed by a close brace.
#
#nl_after_annotation                               { Ignore, Add, Remove, Force }
#  Whether to put a newline after a Java annotation statement.
#  Only affects annotations that are after a newline.
#
#nl_between_annotation                             { Ignore, Add, Remove, Force }
#  Controls the newline between two annotations.
#
##
## Code modifying options (non-whitespace)
##
#
#mod_full_brace_do                                 { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line 'do' statement
#
#mod_full_brace_for                                { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line 'for' statement
#
#mod_full_brace_function                           { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line function definitions. (Pawn)
#
#mod_full_brace_if                                 { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
#
mod_full_brace_if_chain=false                       # { False, True }
#  Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
#  If any must be braced, they are all braced.  If all can be unbraced, then the braces are removed.
#
#mod_full_brace_if_chain_only                      { False, True }
#  Make all if/elseif/else statements with at least one 'else' or 'else if' fully braced.
#  If mod_full_brace_if_chain is used together with this option, all if-else chains will get braces,
#  and simple 'if' statements will lose them (if possible).
#
#
#mod_full_brace_nl                                 Number
#  Don't remove braces around statements that span N newlines
#
#mod_full_brace_while                              { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line 'while' statement
#
#mod_full_brace_using                              { Ignore, Add, Remove, Force }
#  Add or remove braces on single-line 'using ()' statement
#
mod_paren_on_return=ignore                          # { Ignore, Add, Remove, Force }
#  Add or remove unnecessary paren on 'return' statement
#
mod_pawn_semicolon=false                            # { False, True }
#  Whether to change optional semicolons to real semicolons
#
mod_full_paren_if_bool=false                        # { False, True }
#  Add parens on 'while' and 'if' statement around bools
#
mod_remove_extra_semicolon=true                     # { False, True }
#  Whether to remove superfluous semicolons
#
#mod_add_long_function_closebrace_comment          Number
#  If a function body exceeds the specified number of newlines and doesn't have a comment after
#  the close brace, a comment will be added.
#
#mod_add_long_namespace_closebrace_comment         Number
#  If a namespace body exceeds the specified number of newlines and doesn't have a comment after
#  the close brace, a comment will be added.
#
#mod_add_long_switch_closebrace_comment            Number
#  If a switch body exceeds the specified number of newlines and doesn't have a comment after
#  the close brace, a comment will be added.
#
#mod_add_long_ifdef_endif_comment                  Number
#  If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
#  the #endif, a comment will be added.
#
#mod_add_long_ifdef_else_comment                   Number
#  If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
#  the #else, a comment will be added.
#
#mod_sort_import                                   { False, True }
#  If TRUE, will sort consecutive single-line 'import' statements [Java, D]
#
#mod_sort_using                                    { False, True }
#  If TRUE, will sort consecutive single-line 'using' statements [C#]
#
#mod_sort_include                                  { False, True }
#  If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
#  This is generally a bad idea, as it may break your code.
#
mod_move_case_break=false                           # { False, True }
#  If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
#
#mod_case_brace                                    { Ignore, Add, Remove, Force }
#  Will add or remove the braces around a fully braced case statement.
#  Will only remove the braces if there are no variable declarations in the block.
#
mod_remove_empty_return=true                        # { False, True }
#  If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
#
##
## Comment modifications
##
#
#cmt_width                                         Number
#  Try to wrap comments at cmt_width columns
#
#cmt_reflow_mode                                   Number
#  Set the comment reflow mode (default: 0)
#  0: no reflowing (apart from the line wrapping due to cmt_width)
#  1: no touching at all
#  2: full reflow
#
#
#cmt_convert_tab_to_spaces                         { False, True }
#  Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
#
cmt_indent_multi=false                              # { False, True }
#  If false, disable all multi-line comment changes, including cmt_width. keyword substitution and leading chars.
#  Default=True.
#
cmt_c_group=false                                   # { False, True }
#  Whether to group c-comments that look like they are in a block
#
cmt_c_nl_start=false                                # { False, True }
#  Whether to put an empty '/*' on the first line of the combined c-comment
#
cmt_c_nl_end=false                                  # { False, True }
#  Whether to put a newline before the closing '*/' of the combined c-comment
#
cmt_cpp_group=false                                 # { False, True }
#  Whether to group cpp-comments that look like they are in a block
#
cmt_cpp_nl_start=false                              # { False, True }
#  Whether to put an empty '/*' on the first line of the combined cpp-comment
#
cmt_cpp_nl_end=false                                # { False, True }
#  Whether to put a newline before the closing '*/' of the combined cpp-comment
#
cmt_cpp_to_c=false                                  # { False, True }
#  Whether to change cpp-comments into c-comments
#
cmt_star_cont=false                                 # { False, True }
#  Whether to put a star on subsequent comment lines
#
#cmt_sp_before_star_cont                           Number
#  The number of spaces to insert at the start of subsequent comment lines
#
#cmt_sp_after_star_cont                            Number
#  The number of spaces to insert after the star on subsequent comment lines
#
cmt_multi_check_last=false                          # { False, True }
#  For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
#  the comment are the same length. Default=True
#
#cmt_multi_first_len_minimum                       Number
#  For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
#  the comment are the same length AND if the length is bigger as the first_len minimum. Default=4
#
#cmt_insert_file_header                            String
#  The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
#  Will substitute $(filename) with the current file's name.
#
#cmt_insert_file_footer                            String
#  The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
#  Will substitute $(filename) with the current file's name.
#
#cmt_insert_func_header                            String
#  The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
#  Will substitute $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
#  Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
#
#cmt_insert_class_header                           String
#  The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
#  Will substitute $(class) with the class name.
#
#cmt_insert_oc_msg_header                          String
#  The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
#  Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
#
cmt_insert_before_preproc=false                     # { False, True }
#  If a preprocessor is encountered when stepping backwards from a function name, then
#  this option decides whether the comment should be inserted.
#  Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
#
#cmt_insert_before_inlines                         { False, True }
#  If a function is declared inline to a class definition, then
#  this option decides whether the comment should be inserted.
#  Affects cmt_insert_func_header.
#
#cmt_insert_before_ctor_dtor                       { False, True }
#  If the function is a constructor/destructor, then
#  this option decides whether the comment should be inserted.
#  Affects cmt_insert_func_header.
#
##
## Preprocessor options
##
#
#pp_indent                                         { Ignore, Add, Remove, Force }
#  Control indent of preprocessors inside #if blocks at brace level 0 (file-level)
#
#pp_indent_at_level                                { False, True }
#  Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
#
#pp_indent_count                                   Number
#  Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
#  If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
#  Default=1.
#
pp_space=ignore                                     # { Ignore, Add, Remove, Force }
#  Add or remove space after # based on pp_level of #if blocks
#
#pp_space_count                                    Number
#  Sets the number of spaces added with pp_space
#
#pp_indent_region                                  Number
#  The indent for #region and #endregion in C# and '#pragma region' in C/C++
#
#pp_region_indent_code                             { False, True }
#  Whether to indent the code between #region and #endregion
#
#pp_indent_if                                      Number
#  If pp_indent_at_level=true, sets the indent for #if, #else and #endif when not at file-level.
#  0:  indent preprocessors using output_tab_size.
#  >0: column at which all preprocessors will be indented.
#
#pp_if_indent_code                                 { False, True }
#  Control whether to indent the code between #if, #else and #endif.
#
#pp_define_at_level                                { False, True }
#  Whether to indent '#define' at the brace level (true) or from column 1 (false)
#
#pp_ignore_define_body                             { False, True }
#  Whether to ignore the '#define' body while formatting.
#
##
## Use or Do not Use options
##
#
#use_indent_func_call_param                        { False, True }
#  True:  indent_func_call_param will be used (default)
#  False: indent_func_call_param will NOT be used
#
#use_indent_continue_only_once                     { False, True }
#  The value of the indentation for a continuation line is calculate differently if the line is:
#    a declaration :your case with QString fileName ...
#    an assigment  :your case with pSettings = new QSettings( ...
#  At the second case the option value might be used twice:
#    at the assigment
#    at the function call (if present)
#  To prevent the double use of the option value, use this option with the value 'true'.
#  True:  indent_continue will be used only once
#  False: indent_continue will be used every time (default)
#
use_options_overriding_for_qt_macros=false          # { False, True }
#  SIGNAL/SLOT Qt macros have special formatting options. See options_for_QT.cpp for details.
#  Default=True.
#
##
## Warn levels - 1: error, 2: warning (default), 3: note
##
#
warn_level_tabs_found_in_verbatim_string_literals=1 # { 1, 2, 3 }
#  Warning is given if doing tab-to-\t replacement and we have found one in a C# verbatim string literal.
#
###
### -=- Below here is unstable (work-in-progress) -=-
###

# blocked by https://sourceforge.net/p/uncrustify/bugs/619/
# can be turned back on at any time
#mod_add_long_ifdef_else_comment=8
#mod_add_long_ifdef_endif_comment=8
mod_add_long_ifdef_else_comment=0
mod_add_long_ifdef_endif_comment=0



# Setting this 'false' will cause an extra tab to be added to function call args from an assignment:
#
# x = o.Func2(a, b,
#         y);
# o.Func2(a, b,
#     y);
#
# ...but setting it 'true' is often worse:
#
# ExtraReallyLongType reallyLongVariableName = someTest
#                                            ? someTrueExpr
#                                            : someFalseExpr
#
# ...except sometimes we really do want that. What we need is an indent_align_assign_threshold, or,
# better but maybe more complicated, indent_align_assign=ignore to leave alone what the engineer did.
# (currently unreported)
indent_align_assign=false

# this is causing a few problems, but usually with block comments and autodoc markup. perhaps only add a space
# if first letter is not a symbol and this is a standalone comment: not preceded or followed by another c++
# comment line at the same level of indentation.
# REVISIT: work was done to have it eliminate space for doxygen markup in c6aca7b, maybe can improve on it for us
# (test using Runtime/Allocator/BucketAllocator.h)
# IMPORTANT: see task at https://trello.com/c/wUgiuvbX before going further
#sp_cmt_cpp_start=add
sp_cmt_cpp_start=ignore

# https://sourceforge.net/p/uncrustify/bugs/619/
#sp_endif_cmt=force
sp_endif_cmt=ignore

# want to turn this on, but can't do it without also getting alignment right. try running it on this file as an example:
# Tools\BugReporterV2\qt_face\lib\src\MainWindow.cpp
#nl_cpp_ldef_brace=force
