#
# My favorite format ("--update-config-with-doc")
#
# $Id: 1liner-split.cfg 803 2007-07-25 00:36:25Z bengardner $
#


#
# General options
#

# The type of line endings
newlines                      = lf       # auto/lf/crlf/cr

# The original size of tabs in the input
input_tab_size                = 8        # number

# The size of tabs in the output (only used if align_with_tabs=true)
output_tab_size               = 3        # number

# The ascii value of the string escape char, usually 92 (\). (Pawn)
string_escape_char            = 92       # number

#
# Indenting
#

# The number of columns to indent per level (usually 2, 3, 4, or 8)
indent_columns                = 3        # number

# How to use tabs when indenting code
# 0=spaces only
# 1=indent with tabs, align with spaces
# 2=indent and align with tabs
indent_with_tabs              = 0        # number

# Whether to indent strings broken by '\' so that they line up
indent_align_string           = true    # false/true

# Spaces to indent '{' from level
indent_brace                  = 0        # number

# Whether braces are indented to the body level
indent_braces                 = false    # false/true

# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
indent_brace_parent           = false    # false/true

# Whether the 'namespace' body is indented
indent_namespace              = false    # false/true

# Whether the 'class' body is indented
indent_class                  = true     # false/true

# Whether to indent the stuff after a leading class colon
indent_class_colon            = true    # false/true

# Whether to indent continued function call parameters one indent level (true) or aligns instead of indent (false)
indent_func_call_param        = false    # false/true

# The number of spaces to indent a continued '->' or '.'
# Usually set to indent_columns.
indent_member                 = 3        # number

# Spaces to indent 'case' from 'switch'
indent_switch_case            = 0        # number

# Spaces to indent '{' from 'case'
indent_case_brace             = 0        # number

# Whether to indent comments found in first column
indent_col1_comment           = false    # false/true

# How to indent goto labels (>0=absolute column where 1 is the leftmost column, <=0=subtract from brace indent)
indent_label                  = 1        # number

# 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_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_square_nl              = false    # false/true

#
# Spacing options
#

# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
sp_arith                      = force    # ignore/add/remove/force

# Add or remove space around assignment operator '=', '+=', etc
sp_assign                     = force    # ignore/add/remove/force

# Add or remove space around boolean operators '&&' and '||'
sp_bool                       = force    # ignore/add/remove/force

# Add or remove space around compare operator '<', '>', '==', etc
sp_compare                    = force    # ignore/add/remove/force

# Add or remove space inside '(' and ')'
sp_inside_paren               = remove   # ignore/add/remove/force

# Add or remove space between nested parens
sp_paren_paren                = remove   # ignore/add/remove/force

# Add or remove space between ')' and '{'
sp_paren_brace                = ignore   # ignore/add/remove/force

# Add or remove space before pointer star '*'
sp_before_ptr_star            = force    # ignore/add/remove/force

# Add or remove space between pointer stars '*'
sp_between_ptr_star           = remove   # ignore/add/remove/force

# Add or remove space after pointer star '*'
sp_after_ptr_star             = remove   # ignore/add/remove/force

# Add or remove space before reference sign '&'
sp_before_byref               = remove   # ignore/add/remove/force

# Add or remove space after reference sign '&'
sp_after_byref                = ignore   # ignore/add/remove/force

# Add or remove space before '<>'
sp_before_angle               = force    # ignore/add/remove/force

# Add or remove space after '<>'
sp_after_angle                = force    # ignore/add/remove/force

# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
sp_before_sparen              = force    # ignore/add/remove/force

# Add or remove space inside if-condition '(' and ')'
sp_inside_sparen              = remove   # ignore/add/remove/force

# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
sp_after_sparen               = force    # ignore/add/remove/force

# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
sp_sparen_brace               = add      # ignore/add/remove/force

# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
sp_special_semi               = ignore   # ignore/add/remove/force

# Add or remove space before ';'
sp_before_semi                = remove   # ignore/add/remove/force

# Add or remove space before '[' (except '[]')
sp_before_square              = ignore   # ignore/add/remove/force

# Add or remove space before '[]'
sp_before_squares             = ignore   # ignore/add/remove/force

# Add or remove space inside '[' and ']'
sp_inside_square              = remove   # ignore/add/remove/force

# Add or remove space after ','
sp_after_comma                = force    # ignore/add/remove/force

# Add or remove space between 'operator' and operator sign
sp_after_operator             = ignore   # ignore/add/remove/force

# Add or remove space after cast
sp_after_cast                 = remove   # ignore/add/remove/force

# Add or remove space between 'sizeof' and '('
sp_sizeof_paren               = remove   # ignore/add/remove/force

# Add or remove space after the tag keyword (Pawn)
sp_after_tag                  = ignore   # ignore/add/remove/force

# Add or remove space inside enum '{' and '}'
sp_inside_braces_enum         = force    # ignore/add/remove/force

# Add or remove space inside struct/union '{' and '}'
sp_inside_braces_struct       = force    # ignore/add/remove/force

# Add or remove space inside '{' and '}'
sp_inside_braces              = force    # ignore/add/remove/force

# Add or remove space inside '<' and '>'
sp_inside_angle               = remove   # 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_type_func                  = ignore   # ignore/add/remove/force

# Add or remove space between function name and '(' on function declaration
sp_func_proto_paren           = remove   # ignore/add/remove/force

# Add or remove space between function name and '(' on function definition
sp_func_def_paren             = remove   # ignore/add/remove/force

# Add or remove space inside empty function '()'
sp_inside_fparens             = ignore   # ignore/add/remove/force

# Add or remove space inside function '(' and ')'
sp_inside_fparen              = remove   # ignore/add/remove/force

# Add or remove space between ']' and '(' when part of a function call.
sp_square_fparen              = ignore   # ignore/add/remove/force

# Add or remove space between ')' and '{' of function
sp_fparen_brace               = add      # ignore/add/remove/force

# Add or remove space between function name and '(' on function calls
sp_func_call_paren            = remove   # ignore/add/remove/force

# Add or remove space between a constructor/destructor and the open paren
sp_func_class_paren           = remove   # ignore/add/remove/force

# Add or remove space between 'return' and '('
sp_return_paren               = remove   # ignore/add/remove/force

# Add or remove space between macro and value
sp_macro                      = ignore   # ignore/add/remove/force

# Add or remove space between macro function ')' and value
sp_macro_func                 = ignore   # ignore/add/remove/force

# Add or remove space between 'else' and '{' if on the same line
sp_else_brace                 = force    # ignore/add/remove/force

# Add or remove space between '}' and 'else' if on the same line
sp_brace_else                 = force    # ignore/add/remove/force

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

# Whether to keep non-indenting tabs
align_keep_tabs               = false    # false/true

# Whether to use tabs for alinging
align_with_tabs               = false    # false/true

# Whether to bump out to the next tab when aligning
align_on_tabstop              = false    # false/true

# Whether to left-align numbers
align_number_left             = true     # false/true

align_func_params = true

# The span for aligning variable definitions (0=don't align)
align_var_def_span            = 1        # number

# Whether the pointer star is part of the variable name or not
align_var_def_star_style      = 1        # number

# The threshold for aligning variable definitions (0=no limit)
align_var_def_thresh          = 12       # number

# Whether to align the colon in struct bit fields
align_var_def_colon           = true     # false/true

# Whether to align inline struct/enum/union variable definitions
align_var_def_inline          = true     # false/true

# The span for aligning on '=' in assignments (0=don't align)
align_assign_span             = 1        # number

# The threshold for aligning on '=' in assignments (0=no limit)
align_assign_thresh           = 12       # number

# The span for aligning on '=' in enums (0=don't align)
align_enum_equ_span           = 16       # number

# The threshold for aligning on '=' in enums (0=no limit)
align_enum_equ_thresh         = 0        # number

# The span for aligning struct/union (0=don't align)
align_var_struct_span         = 99       # number

# The span for aligning struct initializer values (0=don't align)
align_struct_init_span        = 3        # number

# The minimum space between the type and the synonym of a typedef
align_typedef_gap             = 3        # number

# The span for aligning single-line typedefs (0=don't align)
align_typedef_span            = 5        # number

# Controls the positioning of the '*' in typedefs. Just try it.
# 0: Align on typdef type, ignore '*'
# 1: The '*' is part of type name: typedef int  *pint;
# 2: The '*' is part of the type: typedef int *  pint;
align_typedef_star_style      = 0        # number

# The span for aligning comments that end lines (0=don't align)
align_right_cmt_span          = 3        # number

# The span for aligning function prototypes (0=don't align)
align_func_proto_span         = 0        # number

# Whether to align macros wrapped with a backslash and a newline
align_nl_cont                 = true     # false/true

# The minimum space between label and value of a preprocessor define
align_pp_define_gap           = 4        # number

# The span for aligning on '#define' bodies (0=don't align)
align_pp_define_span          = 3        # number

#
# Newline adding and removing options
#

# Try to limit code width to N number of columns
code_width                    = 0        # number

# Whether to collapse empty blocks between '{' and '}'
nl_collapse_empty_body        = false    # false/true

# Don't touch one-line function bodies inside a class xx { } body
nl_class_leave_one_liners     = true     # false/true
nl_assign_leave_one_liners    = true
nl_enum_leave_one_liners      = true
nl_func_leave_one_liners      = true
nl_if_leave_one_liners        = true

# Add or remove newlines at the start of the file
nl_start_of_file              = remove   # ignore/add/remove/force

# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
nl_start_of_file_min          = 0        # number

# Add or remove newline at the end of the file
nl_end_of_file                = force    # ignore/add/remove/force

# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
nl_end_of_file_min            = 1        # number

# Add or remove newline between '=' and '{'
nl_assign_brace               = add      # ignore/add/remove/force

# The number of newlines after a block of variable definitions
nl_func_var_def_blk           = 1        # number

# Add or remove newline between function call and '('
nl_fcall_brace                = add      # ignore/add/remove/force

# Add or remove newline between 'enum' and '{'
nl_enum_brace                 = add      # ignore/add/remove/force

# Add or remove newline between 'struct and '{'
nl_struct_brace               = add      # ignore/add/remove/force

# Add or remove newline between 'union' and '{'
nl_union_brace                = add      # ignore/add/remove/force

# Add or remove newline between 'if' and '{'
nl_if_brace                   = add      # ignore/add/remove/force

# Add or remove newline between '}' and 'else'
nl_brace_else                 = add      # ignore/add/remove/force

# Add or remove newline between 'else if' and '{'
# If set to ignore, nl_if_brace is used instead
nl_elseif_brace               = ignore   # ignore/add/remove/force

# Add or remove newline between 'else' and '{'
nl_else_brace                 = add      # ignore/add/remove/force

# Add or remove newline between 'for' and '{'
nl_for_brace                  = add      # ignore/add/remove/force

# Add or remove newline between 'while' and '{'
nl_while_brace                = add      # ignore/add/remove/force

# Add or remove newline between 'do' and '{'
nl_do_brace                   = add      # ignore/add/remove/force

# Add or remove newline between '}' and 'while' of 'do' statement
nl_brace_while                = remove   # ignore/add/remove/force

# Add or remove newline between 'switch' and '{'
nl_switch_brace               = add      # ignore/add/remove/force

# Whether to put a newline before 'case' statement
nl_before_case                = true     # false/true

# Whether to put a newline after 'case' statement
nl_after_case                 = true     # false/true

# Newline between namespace and {
nl_namespace_brace            = ignore   # ignore/add/remove/force

# Add or remove newline between 'template<>' and 'class'
nl_template_class             = ignore   # ignore/add/remove/force

# Add or remove newline between 'class' and '{'
nl_class_brace                = ignore   # ignore/add/remove/force

# Add or remove newline after each ',' in the constructor member initialization
nl_class_init_args            = ignore   # ignore/add/remove/force

# Add or remove newline between return type and function name in definition
nl_func_type_name             = ignore   # ignore/add/remove/force

# Add or remove newline after '(' in a function declaration
nl_func_decl_start            = ignore   # ignore/add/remove/force

# Add or remove newline after each ',' in a function declaration
nl_func_decl_args             = ignore   # ignore/add/remove/force

# Add or remove newline before the ')' in a function declaration
nl_func_decl_end              = ignore   # ignore/add/remove/force

# Add or remove newline between function signature and '{'
nl_fdef_brace                 = add      # ignore/add/remove/force

# Whether to put a newline after 'return' statement
nl_after_return               = true     # false/true

# Whether to put a newline after semicolons, except in 'for' statements
nl_after_semicolon            = true     # false/true

# Whether to put a newline after brace open
nl_after_brace_open           = true     # false/true

# Whether to alter newlines in '#define' macros
nl_define_macro               = false    # false/true

# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'
nl_squeeze_ifdef              = true     # false/true

#
# Positioning options
#

# The position of boolean operators in wrapped expressions
pos_bool                      = trail    # ignore/lead/trail

# The position of colons between constructor and member initialization
pos_class_colon               = ignore   # ignore/lead/trail

#
# Blank line options
#

# The maximum consecutive newlines
nl_max                        = 4        # number

# The number of newlines after a function prototype, if followed by another function prototype
nl_after_func_proto           = 0        # number

# The number of newlines after a function prototype, if not followed by another function prototype
nl_after_func_proto_group     = 2        # number

# The number of newlines after '}' of the function body
nl_after_func_body            = 2        # number

# The minimum number of newlines before a multi-line comment (doesn't apply if after a brace open)
nl_before_block_comment       = 2        # number

# Whether to remove blank lines after '{'
eat_blanks_after_open_brace   = true     # false/true

# Whether to remove blank lines before '}'
eat_blanks_before_close_brace = true     # false/true

#
# Code modifying options (non-whitespace)
#

# Add or remove braces on single-line 'do' statement
mod_full_brace_do             = add      # ignore/add/remove/force

# Add or remove braces on single-line 'for' statement
mod_full_brace_for            = add      # ignore/add/remove/force

# Add or remove braces on single-line function defintions. (Pawn)
mod_full_brace_function       = ignore   # ignore/add/remove/force

# Add or remove braces on single-line 'if' statement
mod_full_brace_if             = add      # ignore/add/remove/force

# Don't remove braces around statements that span N newlines
mod_full_brace_nl             = 0        # number

# Add or remove braces on single-line 'while' statement
mod_full_brace_while          = add      # ignore/add/remove/force

# Add or remove unnecessary paren on 'return' statement
mod_paren_on_return           = add      # ignore/add/remove/force

# Whether to change optional semicolons to real semicolons
mod_pawn_semicolon            = false    # false/true

#
# Comment modifications
#

# Whether to group cpp-comments that look like they are in a block
cmt_cpp_group                 = false    # false/true

# Whether to put an empty '/*' on the first line of the combined cpp-comment
cmt_cpp_nl_start              = false    # false/true

# Whether to put a newline before the closing '*/' of the combined cpp-comment
cmt_cpp_nl_end                = false    # false/true

# Whether to change cpp-comments into c-comments
cmt_cpp_to_c                  = false    # false/true

# Whether to put a star on subsequent comment lines
cmt_star_cont                 = true     # false/true

#
# Preprocessor options
#

# Add or remove indent of preprocessor directives
pp_indent                     = ignore   # ignore/add/remove/force

# Add or remove space between # and, say, define
pp_space                      = ignore   # ignore/add/remove/force

nl_getset_brace = force

mod_full_paren_if_bool = true

sp_before_semi_for_empty = force

