Skip to content

Instantly share code, notes, and snippets.

@amarcadet
Last active September 10, 2022 02:14

Revisions

  1. Antoine Marcadet revised this gist May 26, 2014. 1 changed file with 521 additions and 93 deletions.
    614 changes: 521 additions & 93 deletions uncrustify.cfg
    Original file line number Diff line number Diff line change
    @@ -1,104 +1,532 @@
    # http://uncrustify.sourceforge.net/default.cfg

    #
    # General options
    # Uncrustify Configuration File
    # File Created With UncrustifyX 0.4.3 (252)
    #

    newlines = auto # The type of line endings (auto/lf/crlf/cr)
    input_tab_size = 4 # The original size of tabs in the input
    output_tab_size = 4 # The size of tabs in the output (only used if align_with_tabs=true)
    utf8_bom = remove # Control what to do with the UTF-8 BOM (ignore/add/remove/force, recommend 'remove')
    utf8_force = true # Force the output encoding to UTF-8 (true/false)
    # Alignment
    # ---------

    #
    # Indenting
    #
    ## Alignment

    indent_columns = 4 # The number of columns to indent per level.
    indent_with_tabs = 0 # How to use tabs when indenting code (0= spaces only)
    indent_brace = 0 # Spaces to indent '{' from level
    indent_braces = false # Whether braces are indented to the body level
    indent_else_if = false # False=treat 'else\nif' as 'else if' for indenting purposes
    indent_switch_case = indent_columns # Spaces to indent 'case' from 'switch'
    indent_case_brace = 0 # Spaces to indent '{' from 'case'.
    indent_paren_close = 1 # Controls the indent of a close paren after a newline. (1= Align under the open paren)
    indent_align_assign = false # Align continued statements at the '='.
    indent_oc_block = true # Indent OC blocks at brace level instead of usual rules.
    indent_oc_block_msg = 0 # Indent OC blocks in a message relative to the parameter name.
    indent_oc_msg_colon = 0 # Minimum indent for subsequent parameters
    # Align ObjC declaration params on colon
    align_oc_decl_colon = true # boolean (false/true)

    # Align with tabs
    align_with_tabs = false # boolean (false/true)

    #
    # Spacing options
    #
    # Keep non-indenting tabs
    align_keep_tabs = false # boolean (false/true)

    sp_arith = force # Add or remove space around arithmetic operator '+', '-', '/', '*', etc
    sp_assign = force # Add or remove space around assignment operator '=', '+=', etc
    sp_assign_default = force # Add or remove space around assignment operator '=' in a prototype
    sp_enum_assign = force # Add or remove space around assignment '=' in enum
    sp_bool = force # Add or remove space around boolean operators '&&' and '||'
    sp_compare = force # Add or remove space around compare operator '<', '>', '==', etc
    sp_inside_paren = remove # Add or remove space inside '(' and ')'
    sp_paren_paren = force # Add or remove space between nested parens
    sp_balance_nested_parens = true # Whether to balance spaces inside nested parens
    sp_paren_brace = force # Add or remove space between ')' and '{'
    sp_before_ptr_star = force # Add or remove space before pointer star '*'
    sp_between_ptr_star = remove # Add or remove space between pointer stars '*'
    sp_after_ptr_star = remove # Add or remove space after pointer star '*', if followed by a word.
    sp_after_ptr_star_func = force # Add or remove space after a pointer star '*', if followed by a func proto/def.
    sp_before_ptr_star_func = force # Add or remove space before a pointer star '*', if followed by a func proto/def.
    sp_before_byref = remove # Add or remove space before a reference sign '&'
    sp_before_sparen = force # Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
    sp_inside_sparen = remove # Add or remove space inside if-condition '(' and ')'
    sp_after_sparen = force # Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
    sp_sparen_brace = force # Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
    sp_after_comma = force # Add or remove space after ','
    sp_after_class_colon = force # Add or remove space after class ':'
    sp_before_class_colon = force # Add or remove space before class ':'
    sp_after_cast = 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 # Add or remove spaces inside cast parens
    sp_sizeof_paren = remove # Add or remove space between 'sizeof' and '('
    sp_func_proto_paren = remove # Add or remove space between function name and '(' on function declaration
    sp_func_def_paren = remove # Add or remove space between function name and '(' on function definition
    sp_inside_fparens = remove # Add or remove space inside empty function '()'
    sp_inside_fparen = remove # Add or remove space inside function '(' and ')'
    sp_func_call_paren = remove # Add or remove space between function name and '(' on function calls
    sp_return_paren = force # Add or remove space between 'return' and '('
    sp_attribute_paren = force # Add or remove space between '__attribute__' and '('
    sp_catch_paren = force # Add or remove space between 'catch' and '(' in 'catch (something) { }
    sp_macro = force # Add or remove space between macro and value
    sp_macro_func = force # Add or remove space between macro function ')' and value
    sp_else_brace = force # Add or remove space between 'else' and '{' if on the same line
    sp_brace_else = force # Add or remove space between '}' and 'else' if on the same line
    sp_brace_typedef = force # Add or remove space between '}' and the name of a typedef on the same line
    sp_catch_brace = force # Add or remove space between 'catch' and '{' if on the same line
    sp_brace_catch = force # Add or remove space between '}' and 'catch' if on the same line
    sp_finally_brace = force # Add or remove space between 'finally' and '{' if on the same line
    sp_brace_finally = force # Add or remove space between '}' and 'finally' if on the same line
    sp_try_brace = force # Add or remove space between 'try' and '{' if on the same line
    sp_after_oc_scope = force # Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
    sp_after_oc_colon = remove # Add or remove space after the colon in message specs
    sp_before_oc_colon = remove # Add or remove space before the colon in message specs
    sp_before_oc_dict_colon = remove # Add or remove space before the colon in immutable dictionary expression
    sp_after_send_oc_colon = remove # Add or remove space after the colon in message specs
    sp_before_send_oc_colon = remove # Add or remove space before the colon in message specs
    sp_after_oc_type = remove # Add or remove space after the (type) in message specs
    sp_after_oc_return_type = remove # Add or remove space after the first (type) in message specs
    sp_after_oc_at_sel = remove # Add or remove space between '@selector' and '('
    sp_after_oc_at_sel_parens = force # Add or remove space between '@selector(x)' and the following word
    sp_inside_oc_at_sel_parens = remove # Add or remove space inside '@selector' parens
    sp_before_oc_block_caret = remove # Add or remove space before a block pointer caret
    sp_after_oc_block_caret = remove # Add or remove space after a block pointer caret
    sp_after_oc_msg_receiver = force # Add or remove space between the receiver and selector in a message.
    sp_after_oc_property = force # Add or remove space after @property.
    sp_cond_colon = force # Add or remove space around the ':' in 'b ? t : f'
    sp_cond_question = force # Add or remove space around the '?' in 'b ? t : f'
    sp_case_label = force # Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
    sp_cmt_cpp_start = add # Control the space after the opening of a C++ comment '// A' vs '//A'
    ## Alignment Span

    # Alignment span for ObjC message colons
    align_oc_msg_colon_span = 1 # number

    #
    # Code alignment (not left column spaces/tabs)
    #
    # Blank Lines
    # -----------

    ## Newline Count After

    # Newline count after try-catch-finally
    nl_after_try_catch_finally = 2 # number

    ## Other

    # Maximum consecutive newlines
    nl_max = 3 # number

    # Code-Modifying
    # --------------

    ## Braces

    # Braces around fully braced case statement
    mod_case_brace = ignore # string (add/force/ignore/remove)

    # Braces on single-line do statement
    mod_full_brace_do = force # string (add/force/ignore/remove)

    # Braces on single-line else statement
    mod_full_brace_if = force # string (add/force/ignore/remove)

    # Braces on single-line for statement
    mod_full_brace_for = force # string (add/force/ignore/remove)

    # Braces on single-line function definition
    mod_full_brace_function = force # string (add/force/ignore/remove)

    # Braces on single-line while statement
    mod_full_brace_while = force # string (add/force/ignore/remove)

    ## Parentheses

    # Add parentheses on while and if statements around bool
    mod_full_paren_if_bool = true # boolean (false/true)

    # General
    # -------

    ## Other

    # Input tab size
    input_tab_size = 4 # number

    # Newline character
    newlines = auto # string (auto/cr/crlf/lf)

    # Output tab size
    output_tab_size = 4 # number

    # Indentation
    # -----------

    ## Indentation

    # Indent ObjC block
    indent_oc_block = true # boolean (false/true)

    # Indent braces
    indent_braces = false # boolean (false/true)

    ## Indentation Size

    # Indentation column size
    indent_columns = 4 # number

    # Indentation size between case and switch
    indent_switch_case = 4 # number

    # Indentation size for ObjC blocks in a message parameter
    indent_oc_block_msg = 0 # number

    # Indentation size for ObjC message subsequent parameters
    indent_oc_msg_colon = 0 # number

    # Indentation size of brace after case
    indent_case_brace = 0 # number

    ## Other

    # Align continued statements at equals
    indent_align_assign = false # boolean (false/true)

    # Brace indent level
    indent_brace = 0 # number

    # Indent else\nif
    indent_else_if = false # boolean (false/true)

    # Indent with tabs
    indent_with_tabs = 0 # number

    # Indentation of close parenthesis after newline
    indent_paren_close = 1 # number

    # Newlines
    # --------

    ## Merging

    # Change unbraced for statements into one-liner
    nl_create_for_one_liner = false # boolean (false/true)

    # Change unbraced if statements into one-liner
    nl_create_if_one_liner = false # boolean (false/true)

    # Change unbraced while statements into one-liner
    nl_create_while_one_liner = false # boolean (false/true)

    ## Newline After

    # Newline after brace close
    nl_after_brace_close = false # boolean (false/true)

    # Newline after brace open
    nl_after_brace_open = false # boolean (false/true)

    # Newline after case statement
    nl_after_case = false # boolean (false/true)

    # Newline after do
    nl_after_do = add # string (add/force/ignore/remove)

    # Newline after for
    nl_after_for = add # string (add/force/ignore/remove)

    # Newline after semicolon
    nl_after_semicolon = true # boolean (false/true)

    # Newline after switch
    nl_after_switch = add # string (add/force/ignore/remove)

    # Newline after while
    nl_after_while = add # string (add/force/ignore/remove)

    ## Newline Before

    # Newline before case statement
    nl_before_case = true # boolean (false/true)

    # Newline before do
    nl_before_do = add # string (add/force/ignore/remove)

    # Newline before for
    nl_before_for = add # string (add/force/ignore/remove)

    # Newline before if
    nl_before_if = ignore # string (add/force/ignore/remove)

    # Newline before return
    nl_before_return = false # boolean (false/true)

    # Newline before switch
    nl_before_switch = add # string (add/force/ignore/remove)

    # Newline before throw
    nl_before_throw = ignore # string (add/force/ignore/remove)

    # Newline before while
    nl_before_while = add # string (add/force/ignore/remove)

    ## Newline Between

    # Newline between case colon and open brace
    nl_case_colon_brace = remove # string (add/force/ignore/remove)

    # Newline between catch and open brace
    nl_catch_brace = remove # string (add/force/ignore/remove)

    # Newline between close brace and catch
    nl_brace_catch = force # string (add/force/ignore/remove)

    # Newline between close brace and else
    nl_brace_else = force # string (add/force/ignore/remove)

    # Newline between close brace and finally
    nl_brace_finally = force # string (add/force/ignore/remove)

    # Newline between close brace and variable in struct/enum/union
    nl_brace_struct_var = remove # string (add/force/ignore/remove)

    # Newline between close brace and while
    nl_brace_while = remove # string (add/force/ignore/remove)

    # Newline between close parenthesis and open brace in multi line conditional
    nl_multi_line_cond = false # boolean (false/true)

    # Newline between do and open brace
    nl_do_brace = remove # string (add/force/ignore/remove)

    # Newline between else and if
    nl_else_if = remove # string (add/force/ignore/remove)

    # Newline between else and open brace
    nl_else_brace = remove # string (add/force/ignore/remove)

    # Newline between else if and open brace
    nl_elseif_brace = remove # string (add/force/ignore/remove)

    # Newline between enum and open brace
    nl_enum_brace = remove # string (add/force/ignore/remove)

    # Newline between finally and open brace
    nl_finally_brace = remove # string (add/force/ignore/remove)

    # Newline between for and open brace
    nl_for_brace = remove # string (add/force/ignore/remove)

    # Newline between function signature and open brace
    nl_fdef_brace = force # string (add/force/ignore/remove)

    # Newline between if and open brace
    nl_if_brace = remove # string (add/force/ignore/remove)

    # Newline between return and expression
    nl_return_expr = remove # string (add/force/ignore/remove)

    # Newline between return type and function name
    nl_func_type_name = remove # string (add/force/ignore/remove)

    # Newline between return type and function name in prototype
    nl_func_proto_type_name = remove # string (add/force/ignore/remove)

    # Newline between struct and open brace
    nl_struct_brace = remove # string (add/force/ignore/remove)

    # Newline between switch and open brace
    nl_switch_brace = remove # string (add/force/ignore/remove)

    # Newline between try and open brace
    nl_try_brace = remove # string (add/force/ignore/remove)

    # Newline between union and open brace
    nl_union_brace = remove # string (add/force/ignore/remove)

    # Newline between while and open brace
    nl_while_brace = remove # string (add/force/ignore/remove)

    ## Other

    # Alter newlines in #define macros
    nl_define_macro = false # boolean (false/true)

    # Newline count at end of file
    nl_end_of_file_min = 1 # number

    # Newlines at end of file
    nl_end_of_file = force # string (add/force/ignore/remove)

    # Newlines at start of file
    nl_start_of_file = remove # string (add/force/ignore/remove)

    # Place ObjC message parameters on new lines
    nl_oc_msg_args = false # boolean (false/true)

    # Other
    # -----

    ## Other

    # Force encoding UTF-8
    utf8_force = false # boolean (false/true)

    # UTF-8 byte order mark
    utf8_bom = remove # string (add/force/ignore/remove)

    # Preprocessor
    # ------------

    ## Indentation

    # Indent preprocessor define
    pp_define_at_level = true # boolean (false/true)

    # Indent preprocessor if block
    pp_indent = force # string (add/force/ignore/remove)

    # Indent preprocessor if/else/endif
    pp_if_indent_code = true # boolean (false/true)

    # Indent preprocessor if/else/endif at level
    pp_indent_at_level = true # boolean (false/true)

    ## Indentation Size

    # Preprocessor if/else/endif indent size
    pp_indent_if = 4 # number

    # Preprocessor indentation columns
    pp_indent_count = 4 # number

    # Spacing
    # -------

    ## Other

    # Balance spaces inside nested parentheses
    sp_balance_nested_parens = false # boolean (false/true)

    ## Space After

    # Space after C++ comment opening
    sp_cmt_cpp_start = add # string (add/force/ignore/remove)

    # Space after ObjC @selector parentheses
    sp_after_oc_at_sel_parens = force # string (add/force/ignore/remove)

    # Space after ObjC block caret
    sp_after_oc_block_caret = remove # string (add/force/ignore/remove)

    # Space after ObjC colon
    sp_after_oc_colon = remove # string (add/force/ignore/remove)

    # Space after ObjC dictionary colon
    sp_after_oc_dict_colon = add # string (add/force/ignore/remove)

    # Space after ObjC message colon
    sp_after_send_oc_colon = remove # string (add/force/ignore/remove)

    # Space after ObjC message receiver
    sp_after_oc_msg_receiver = force # string (add/force/ignore/remove)

    # Space after ObjC property
    sp_after_oc_property = force # string (add/force/ignore/remove)

    # Space after ObjC return type
    sp_after_oc_return_type = remove # string (add/force/ignore/remove)

    # Space after ObjC scope
    sp_after_oc_scope = force # string (add/force/ignore/remove)

    # Space after ObjC type
    sp_after_oc_type = remove # string (add/force/ignore/remove)

    # Space after cast
    sp_after_cast = force # string (add/force/ignore/remove)

    # Space after class colon
    sp_after_class_colon = force # string (add/force/ignore/remove)

    # Space after comma
    sp_after_comma = force # string (add/force/ignore/remove)

    # Space after condition close parenthesis
    sp_after_sparen = force # string (add/force/ignore/remove)

    # Space after pointer star
    sp_after_ptr_star = remove # string (add/force/ignore/remove)

    # Space after pointer star followed by function
    sp_after_ptr_star_func = force # string (add/force/ignore/remove)

    # Space after reference sign
    sp_after_byref = remove # string (add/force/ignore/remove)

    ## Space Around

    # Space around arithmetic operators
    sp_arith = force # string (add/force/ignore/remove)

    # Space around assignment equals in enum
    sp_enum_assign = force # string (add/force/ignore/remove)

    # Space around assignment operator
    sp_assign = add # string (add/force/ignore/remove)

    # Space around assignment operator in prototype
    sp_assign_default = force # string (add/force/ignore/remove)

    # Space around boolean operators
    sp_bool = force # string (add/force/ignore/remove)

    # Space around compare operators
    sp_compare = force # string (add/force/ignore/remove)

    # Space around ternary condition colon
    sp_cond_colon = add # string (add/force/ignore/remove)

    # Space around ternary condition question mark
    sp_cond_question = add # string (add/force/ignore/remove)

    ## Space Before

    # Space before ObjC block caret
    sp_before_oc_block_caret = remove # string (add/force/ignore/remove)

    # Space before ObjC colon
    sp_before_oc_colon = remove # string (add/force/ignore/remove)

    # Space before ObjC dictionary colon
    sp_before_oc_dict_colon = remove # string (add/force/ignore/remove)

    # Space before ObjC message colon
    sp_before_send_oc_colon = remove # string (add/force/ignore/remove)

    # Space before class colon
    sp_before_class_colon = force # string (add/force/ignore/remove)

    # Space before comma
    sp_before_comma = remove # string (add/force/ignore/remove)

    # Space before if/for/switch/while open parenthesis
    sp_before_sparen = force # string (add/force/ignore/remove)

    # Space before pointer star
    sp_before_ptr_star = force # string (add/force/ignore/remove)

    # Space before pointer star followed by function
    sp_before_ptr_star_func = force # string (add/force/ignore/remove)

    # Space before reference sign
    sp_before_byref = force # string (add/force/ignore/remove)

    ## Space Between

    # Space between @selector and open parenthesis
    sp_after_oc_at_sel = remove # string (add/force/ignore/remove)

    # Space between __attribute__ and open parenthesis
    sp_attribute_paren = remove # string (add/force/ignore/remove)

    # Space between case and label
    sp_case_label = force # string (add/force/ignore/remove)

    # Space between catch and open brace
    sp_catch_brace = force # string (add/force/ignore/remove)

    # Space between catch and open parenthesis
    sp_catch_paren = force # string (add/force/ignore/remove)

    # Space between close brace and else
    sp_brace_else = force # string (add/force/ignore/remove)

    # Space between close brace and typedef name
    sp_brace_typedef = force # string (add/force/ignore/remove)

    # Space between close parenthesis and open brace
    sp_paren_brace = force # string (add/force/ignore/remove)

    # Space between closing brace and catch
    sp_brace_catch = force # string (add/force/ignore/remove)

    # Space between closing brace and finally
    sp_brace_finally = force # string (add/force/ignore/remove)

    # Space between else and open brace
    sp_else_brace = force # string (add/force/ignore/remove)

    # Space between finally and open brace
    sp_finally_brace = force # string (add/force/ignore/remove)

    # Space between function name and open parenthesis
    sp_func_call_paren = remove # string (add/force/ignore/remove)

    # Space between function name and open parenthesis in declaration
    sp_func_proto_paren = remove # string (add/force/ignore/remove)

    # Space between function name and open parenthesis in function definition
    sp_func_def_paren = remove # string (add/force/ignore/remove)

    # Space between if/for/switch/while close parenthesis and open brace
    sp_sparen_brace = force # string (add/force/ignore/remove)

    # Space between macro and value
    sp_macro = force # string (add/force/ignore/remove)

    # Space between macro function close parenthesis and value
    sp_macro_func = force # string (add/force/ignore/remove)

    # Space between nested parentheses
    sp_paren_paren = remove # string (add/force/ignore/remove)

    # Space between pointer stars
    sp_between_ptr_star = remove # string (add/force/ignore/remove)

    # Space between return and open parenthesis
    sp_return_paren = force # string (add/force/ignore/remove)

    # Space between sizeof and open parenthesis
    sp_sizeof_paren = remove # string (add/force/ignore/remove)

    # Space between try and open brace
    sp_try_brace = force # string (add/force/ignore/remove)

    ## Space Inside

    # Space inside @selector() parens
    sp_inside_oc_at_sel_parens = remove # string (add/force/ignore/remove)

    # Space inside cast parentheses
    sp_inside_paren_cast = remove # string (add/force/ignore/remove)

    # Space inside empty function parentheses
    sp_inside_fparens = remove # string (add/force/ignore/remove)

    # Space inside function parentheses
    sp_inside_fparen = remove # string (add/force/ignore/remove)

    # Space inside if-condition parentheses
    sp_inside_sparen = remove # string (add/force/ignore/remove)

    # to be continued...
    # Space inside parentheses
    sp_inside_paren = remove # string (add/force/ignore/remove)
  2. Antoine Marcadet created this gist Apr 18, 2014.
    104 changes: 104 additions & 0 deletions uncrustify.cfg
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,104 @@
    # http://uncrustify.sourceforge.net/default.cfg

    #
    # General options
    #

    newlines = auto # The type of line endings (auto/lf/crlf/cr)
    input_tab_size = 4 # The original size of tabs in the input
    output_tab_size = 4 # The size of tabs in the output (only used if align_with_tabs=true)
    utf8_bom = remove # Control what to do with the UTF-8 BOM (ignore/add/remove/force, recommend 'remove')
    utf8_force = true # Force the output encoding to UTF-8 (true/false)

    #
    # Indenting
    #

    indent_columns = 4 # The number of columns to indent per level.
    indent_with_tabs = 0 # How to use tabs when indenting code (0= spaces only)
    indent_brace = 0 # Spaces to indent '{' from level
    indent_braces = false # Whether braces are indented to the body level
    indent_else_if = false # False=treat 'else\nif' as 'else if' for indenting purposes
    indent_switch_case = indent_columns # Spaces to indent 'case' from 'switch'
    indent_case_brace = 0 # Spaces to indent '{' from 'case'.
    indent_paren_close = 1 # Controls the indent of a close paren after a newline. (1= Align under the open paren)
    indent_align_assign = false # Align continued statements at the '='.
    indent_oc_block = true # Indent OC blocks at brace level instead of usual rules.
    indent_oc_block_msg = 0 # Indent OC blocks in a message relative to the parameter name.
    indent_oc_msg_colon = 0 # Minimum indent for subsequent parameters


    #
    # Spacing options
    #

    sp_arith = force # Add or remove space around arithmetic operator '+', '-', '/', '*', etc
    sp_assign = force # Add or remove space around assignment operator '=', '+=', etc
    sp_assign_default = force # Add or remove space around assignment operator '=' in a prototype
    sp_enum_assign = force # Add or remove space around assignment '=' in enum
    sp_bool = force # Add or remove space around boolean operators '&&' and '||'
    sp_compare = force # Add or remove space around compare operator '<', '>', '==', etc
    sp_inside_paren = remove # Add or remove space inside '(' and ')'
    sp_paren_paren = force # Add or remove space between nested parens
    sp_balance_nested_parens = true # Whether to balance spaces inside nested parens
    sp_paren_brace = force # Add or remove space between ')' and '{'
    sp_before_ptr_star = force # Add or remove space before pointer star '*'
    sp_between_ptr_star = remove # Add or remove space between pointer stars '*'
    sp_after_ptr_star = remove # Add or remove space after pointer star '*', if followed by a word.
    sp_after_ptr_star_func = force # Add or remove space after a pointer star '*', if followed by a func proto/def.
    sp_before_ptr_star_func = force # Add or remove space before a pointer star '*', if followed by a func proto/def.
    sp_before_byref = remove # Add or remove space before a reference sign '&'
    sp_before_sparen = force # Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
    sp_inside_sparen = remove # Add or remove space inside if-condition '(' and ')'
    sp_after_sparen = force # Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
    sp_sparen_brace = force # Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
    sp_after_comma = force # Add or remove space after ','
    sp_after_class_colon = force # Add or remove space after class ':'
    sp_before_class_colon = force # Add or remove space before class ':'
    sp_after_cast = 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 # Add or remove spaces inside cast parens
    sp_sizeof_paren = remove # Add or remove space between 'sizeof' and '('
    sp_func_proto_paren = remove # Add or remove space between function name and '(' on function declaration
    sp_func_def_paren = remove # Add or remove space between function name and '(' on function definition
    sp_inside_fparens = remove # Add or remove space inside empty function '()'
    sp_inside_fparen = remove # Add or remove space inside function '(' and ')'
    sp_func_call_paren = remove # Add or remove space between function name and '(' on function calls
    sp_return_paren = force # Add or remove space between 'return' and '('
    sp_attribute_paren = force # Add or remove space between '__attribute__' and '('
    sp_catch_paren = force # Add or remove space between 'catch' and '(' in 'catch (something) { }
    sp_macro = force # Add or remove space between macro and value
    sp_macro_func = force # Add or remove space between macro function ')' and value
    sp_else_brace = force # Add or remove space between 'else' and '{' if on the same line
    sp_brace_else = force # Add or remove space between '}' and 'else' if on the same line
    sp_brace_typedef = force # Add or remove space between '}' and the name of a typedef on the same line
    sp_catch_brace = force # Add or remove space between 'catch' and '{' if on the same line
    sp_brace_catch = force # Add or remove space between '}' and 'catch' if on the same line
    sp_finally_brace = force # Add or remove space between 'finally' and '{' if on the same line
    sp_brace_finally = force # Add or remove space between '}' and 'finally' if on the same line
    sp_try_brace = force # Add or remove space between 'try' and '{' if on the same line
    sp_after_oc_scope = force # Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
    sp_after_oc_colon = remove # Add or remove space after the colon in message specs
    sp_before_oc_colon = remove # Add or remove space before the colon in message specs
    sp_before_oc_dict_colon = remove # Add or remove space before the colon in immutable dictionary expression
    sp_after_send_oc_colon = remove # Add or remove space after the colon in message specs
    sp_before_send_oc_colon = remove # Add or remove space before the colon in message specs
    sp_after_oc_type = remove # Add or remove space after the (type) in message specs
    sp_after_oc_return_type = remove # Add or remove space after the first (type) in message specs
    sp_after_oc_at_sel = remove # Add or remove space between '@selector' and '('
    sp_after_oc_at_sel_parens = force # Add or remove space between '@selector(x)' and the following word
    sp_inside_oc_at_sel_parens = remove # Add or remove space inside '@selector' parens
    sp_before_oc_block_caret = remove # Add or remove space before a block pointer caret
    sp_after_oc_block_caret = remove # Add or remove space after a block pointer caret
    sp_after_oc_msg_receiver = force # Add or remove space between the receiver and selector in a message.
    sp_after_oc_property = force # Add or remove space after @property.
    sp_cond_colon = force # Add or remove space around the ':' in 'b ? t : f'
    sp_cond_question = force # Add or remove space around the '?' in 'b ? t : f'
    sp_case_label = force # Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
    sp_cmt_cpp_start = add # Control the space after the opening of a C++ comment '// A' vs '//A'


    #
    # Code alignment (not left column spaces/tabs)
    #

    # to be continued...