
#
# 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               = 8        # 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                = 4        # 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

# Disabled indenting function braces if indent_braces is true
indent_braces_no_func         = 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                 = 0        # number

# Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments     = 0        # number

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

# Spaces to indent 'case' body from 'case'
indent_case_body              = 4        # 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               = force    # 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               = remove   # 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               = add      # 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                 = ignore   # ignore/add/remove/force

# Add or remove space between '}' and 'else' if on the same line
sp_brace_else                 = ignore   # 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

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

# 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           = 4        # 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             = 1        # 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      = 1        # 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                    = 79        # number

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

# Don't touch one-line function bodies inside a class xx { } body
nl_class_leave_one_liners     = true     # false/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               = remove   # 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                 = remove   # ignore/add/remove/force

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

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

# Add or remove newline between 'if' and '{'
nl_if_brace                   = remove   # 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               = remove   # ignore/add/remove/force

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

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

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

# Add or remove newline between 'do' and '{'
nl_do_brace                   = remove   # 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               = remove   # 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                 = false    # 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             = add      # ignore/add/remove/force

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

# Add or remove newline after each ',' in the constructor member initialization
nl_class_init_args            = add      # 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            = false    # false/true

# Whether to put a newline after brace open
nl_after_brace_open           = false    # 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

# Add or remove newline before 'if'
nl_before_if                  = ignore   # ignore/add/remove/force

# Add or remove newline after 'if'
nl_after_if                   = ignore   # ignore/add/remove/force

# Add or remove newline before 'for'
nl_before_for                 = ignore   # ignore/add/remove/force

# Add or remove newline after 'for'
nl_after_for                  = ignore   # ignore/add/remove/force

# Add or remove newline before 'while'
nl_before_while               = ignore   # ignore/add/remove/force

# Add or remove newline after 'while'
nl_after_while                = ignore   # ignore/add/remove/force

# Add or remove newline before 'switch'
nl_before_switch              = ignore   # ignore/add/remove/force

# Add or remove newline after 'switch'
nl_after_switch               = ignore   # ignore/add/remove/force

# Add or remove newline before 'do'
nl_before_do                  = ignore   # ignore/add/remove/force

# Add or remove newline after 'do'
nl_after_do                   = ignore   # ignore/add/remove/force

#
# 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               = lead     # 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           = remove   # 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                  = true     # 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
