build UPDATE uncrustify version 0.71 -> 0.75
diff --git a/uncrustify.cfg b/uncrustify.cfg
index bc6be9d..6c76edb 100644
--- a/uncrustify.cfg
+++ b/uncrustify.cfg
@@ -60,6 +60,12 @@
 # Enable parsing of digraphs.
 enable_digraphs                 = false    # true/false
 
+# Option to allow both disable_processing_cmt and enable_processing_cmt
+# strings, if specified, to be interpreted as ECMAScript regular expressions.
+# If true, a regex search will be performed within comments according to the
+# specified patterns in order to disable/enable processing.
+processing_cmt_as_regex         = false    # true/false
+
 # Add or remove the UTF-8 BOM (recommend 'remove').
 utf8_bom                        = ignore   # ignore/add/remove/force
 
@@ -108,6 +114,11 @@
 # no argument list is present, as in '[] <here> { ... }'.
 sp_cpp_lambda_square_brace      = ignore   # ignore/add/remove/force
 
+# Add or remove space after the opening parenthesis and before the closing
+# parenthesis of a argument list of a C++11 lambda, as in
+# '[]( <here> int x <here> ){ ... }'.
+sp_cpp_lambda_argument_list     = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space after the argument list of a C++11 lambda, as in
 # '[](int x) <here> { ... }'.
 sp_cpp_lambda_paren_brace       = ignore   # ignore/add/remove/force
@@ -131,6 +142,11 @@
 # Overrides sp_assign.
 sp_after_assign                 = force    # ignore/add/remove/force
 
+# Add or remove space in 'enum {'.
+#
+# Default: add
+sp_enum_brace                   = force    # ignore/add/remove/force/not_defined
+
 # Add or remove space in 'NS_ENUM ('.
 sp_enum_paren                   = force    # ignore/add/remove/force
 
@@ -214,6 +230,18 @@
 # Overrides sp_after_ptr_star and sp_type_func.
 sp_after_ptr_star_func          = ignore   # ignore/add/remove/force
 
+# Add or remove space after a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_after_ptr_star_trailing      = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the variable
+# in a function pointer definition.
+sp_ptr_star_func_var            = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove space between the pointer star '*' and the name of the type
+# in a function pointer type definition.
+sp_ptr_star_func_type           = remove   # ignore/add/remove/force/not_defined
+
 # Add or remove space after a pointer star '*', if followed by an open
 # parenthesis, as in 'void* (*)().
 sp_ptr_star_paren               = remove   # ignore/add/remove/force
@@ -222,6 +250,10 @@
 # prototype or function definition.
 sp_before_ptr_star_func         = force    # ignore/add/remove/force
 
+# Add or remove space before a pointer star '*' in the trailing return of a
+# function prototype or function definition.
+sp_before_ptr_star_trailing     = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space before a reference sign '&'.
 sp_before_byref                 = ignore    # ignore/add/remove/force
 
@@ -244,6 +276,10 @@
 # prototype or function definition.
 sp_before_byref_func            = ignore    # ignore/add/remove/force
 
+# Add or remove space after a reference sign '&', if followed by an open
+# parenthesis, as in 'char& (*)()'.
+sp_byref_paren                  = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space between type and word.
 #
 # Default: force
@@ -311,6 +347,22 @@
 # Overrides sp_inside_sparen.
 sp_inside_sparen_close          = ignore   # ignore/add/remove/force
 
+# Add or remove space inside '(' and ')' of 'for' statements.
+sp_inside_for                   = remove   # ignore/add/remove/force/not_defined
+
+# Add or remove space after '(' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_open              = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space before ')' of 'for' statements.
+#
+# Overrides sp_inside_for.
+sp_inside_for_close             = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space between '((' or '))' of control statements.
+sp_sparen_paren                 = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space after ')' of control statements.
 sp_after_sparen                 = force    # ignore/add/remove/force
 
@@ -337,6 +389,10 @@
 # Add or remove space before a semicolon of an empty part of a for statement.
 sp_before_semi_for_empty        = force    # ignore/add/remove/force
 
+# Add or remove space between the semicolons of an empty middle part of a for
+# statement, as in 'for ( ; <here> ; )'.
+sp_between_semi_for_empty       = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space after ';', except when followed by a comment.
 #
 # Default: add
@@ -371,6 +427,9 @@
 # Add or remove space inside a non-empty '[' and ']'.
 sp_inside_square                = ignore   # ignore/add/remove/force
 
+# Add or remove space inside '[]'.
+sp_inside_square_empty          = remove   # ignore/add/remove/force/not_defined
+
 # (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and
 # ']'. If set to ignore, sp_inside_square is used.
 sp_inside_square_oc_array       = ignore   # ignore/add/remove/force
@@ -401,6 +460,14 @@
 # Default: force
 sp_paren_comma                  = force    # ignore/add/remove/force
 
+# Add or remove space between a type and ':'.
+sp_type_colon                   = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space after the variadic '...' when preceded by a
+# non-punctuator.
+# The value REMOVE will be overriden with FORCE
+sp_after_ellipsis               = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space before the variadic '...' when preceded by a
 # non-punctuator.
 sp_before_ellipsis              = force    # ignore/add/remove/force
@@ -408,12 +475,15 @@
 # Add or remove space between a type and '...'.
 sp_type_ellipsis                = force    # ignore/add/remove/force
 
-# (D) Add or remove space between a type and '?'.
-#sp_type_question                = ignore   # ignore/add/remove/force
+# Add or remove space between a '*' and '...'.
+sp_ptr_type_ellipsis            = ignore   # ignore/add/remove/force/not_defined
 
 # Add or remove space between ')' and '...'.
 sp_paren_ellipsis               = force    # ignore/add/remove/force
 
+# Add or remove space between '&&' and '...'.
+sp_byref_ellipsis               = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space between ')' and a qualifier such as 'const'.
 sp_paren_qualifier              = force    # ignore/add/remove/force
 
@@ -468,6 +538,12 @@
 # Add or remove space between 'sizeof...' and '('.
 sp_sizeof_ellipsis_paren        = remove   # ignore/add/remove/force
 
+# Add or remove space between '...' and a parameter pack.
+sp_ellipsis_parameter_pack      = ignore   # ignore/add/remove/force/not_defined
+
+# Add or remove space between a parameter pack and '...'.
+sp_parameter_pack_ellipsis      = ignore   # ignore/add/remove/force/not_defined
+
 # Add or remove space between 'decltype' and '('.
 sp_decltype_paren               = ignore   # ignore/add/remove/force
 
@@ -586,6 +662,11 @@
 # and '()'.
 sp_func_class_paren_empty       = ignore   # ignore/add/remove/force
 
+# Add or remove space after 'return'.
+#
+# Default: force
+sp_return                       = force    # ignore/add/remove/force/not_defined
+
 # Add or remove space between 'return' and '('.
 sp_return_paren                 = force    # ignore/add/remove/force
 
@@ -705,6 +786,10 @@
 # Default: remove
 sp_not                          = remove   # ignore/add/remove/force
 
+# Add or remove space between two '!' (not) unary operators.
+# If set to ignore, sp_not will be used.
+sp_not_not                      = remove   # ignore/add/remove/force/not_defined
+
 # Add or remove space after the '~' (invert) unary operator.
 #
 # Default: remove
@@ -866,6 +951,14 @@
 # i.e. '// A' vs. '//A'.
 sp_cmt_cpp_start                = force    # ignore/add/remove/force
 
+# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'.
+# A region marker is defined as a comment which is not preceded by other text
+# (i.e. the comment is the first non-whitespace on the line), and which starts
+# with either 'BEGIN' or 'END'.
+#
+# Overrides sp_cmt_cpp_start.
+sp_cmt_cpp_region               = ignore   # ignore/add/remove/force/not_defined
+
 # If true, space is added with sp_cmt_cpp_start will be added after doxygen
 # sequences like '///', '///<', '//!' and '//!<'.
 sp_cmt_cpp_doxygen              = true     # true/false
@@ -902,11 +995,31 @@
 # Overrides sp_inside_newop_paren.
 sp_inside_newop_paren_close     = ignore   # ignore/add/remove/force
 
-# Add or remove space before a trailing or embedded comment.
-sp_before_tr_emb_cmt            = ignore   # ignore/add/remove/force
+# Add or remove space before a trailing comment.
+sp_before_tr_cmt                = ignore   # ignore/add/remove/force/not_defined
 
-# Number of spaces before a trailing or embedded comment.
-sp_num_before_tr_emb_cmt        = 0        # unsigned number
+# Number of spaces before a trailing comment.
+sp_num_before_tr_cmt            = 0        # unsigned number
+
+# Add or remove space before an embedded comment.
+#
+# Default: force
+sp_before_emb_cmt               = force    # ignore/add/remove/force/not_defined
+
+# Number of spaces before an embedded comment.
+#
+# Default: 1
+sp_num_before_emb_cmt           = 1        # unsigned number
+
+# Add or remove space after an embedded comment.
+#
+# Default: force
+sp_after_emb_cmt                = force    # ignore/add/remove/force/not_defined
+
+# Number of spaces after an embedded comment.
+#
+# Default: 1
+sp_num_after_emb_cmt            = 1        # unsigned number
 
 # (Java) Add or remove space between an annotation and the open parenthesis.
 sp_annotation_paren             = ignore   # ignore/add/remove/force
@@ -932,6 +1045,10 @@
 # Default: 8
 indent_columns                  = 4        # unsigned number
 
+# Whether to ignore indent for the first continuation line. Subsequent
+# continuation lines will still be indented to match the first.
+indent_ignore_first_continue    = false    # true/false
+
 # The continuation indent. If non-zero, this overrides the indent of '(', '['
 # and '=' continuation indents. Negative values are OK; negative value is
 # absolute and not increased for each '(' or '[' level.
@@ -1016,12 +1133,25 @@
 # indented. Requires indent_namespace=true. 0 means no limit.
 indent_namespace_limit          = 0        # unsigned number
 
+# Whether to indent only in inner namespaces (nested in other namespaces).
+# Requires indent_namespace=true.
+indent_namespace_inner_only     = false    # true/false
+
 # Whether the 'extern "C"' body is indented.
 indent_extern                   = false    # true/false
 
 # Whether the 'class' body is indented.
 indent_class                    = false    # true/false
 
+# Whether to ignore indent for the leading base class colon.
+indent_ignore_before_class_colon = false    # true/false
+
+# Additional indent before the leading base class colon.
+# Negative values decrease indent down to the first column.
+# Requires a newline break before colon (see pos_class_colon
+# and nl_class_colon)
+indent_before_class_colon       = 0        # number
+
 # Whether to indent the stuff after a leading base class colon.
 indent_class_colon              = false    # true/false
 
@@ -1029,6 +1159,9 @@
 # colon. Requires indent_class_colon=true.
 indent_class_on_colon           = false    # true/false
 
+# Whether to ignore indent for a leading class initializer colon.
+indent_ignore_before_constr_colon = false    # true/false
+
 # Whether to indent the stuff after a leading class initializer colon.
 indent_constr_colon             = false    # true/false
 
@@ -1037,6 +1170,11 @@
 # Default: 2
 indent_ctor_init_leading        = 0        # unsigned number
 
+# Virtual indent from the ':' for following member initializers.
+#
+# Default: 2
+indent_ctor_init_following      = 2        # unsigned number
+
 # Additional indent for constructor initializer list.
 # Negative values decrease indent down to the first column.
 indent_ctor_init                = 0        # number
@@ -1054,9 +1192,12 @@
 # Whether to indent continued variable declarations instead of aligning.
 indent_var_def_cont             = true     # true/false
 
-# Whether to indent continued shift expressions ('<<' and '>>') instead of
-# aligning. Set align_left_shift=false when enabling this.
-indent_shift                    = true     # true/false
+# How to indent continued shift expressions ('<<' and '>>').
+# Set align_left_shift=false when using this.
+#  0: Align shift operators instead of indenting them (default)
+#  1: Indent by one level
+# -1: Preserve original indentation
+indent_shift                    = 1        # number
 
 # Whether to force indentation of function definitions to start in column 1.
 indent_func_def_force_col1      = false    # true/false
@@ -1122,7 +1263,10 @@
 indent_member_single            = true     # true/false
 
 # Spaces to indent single line ('//') comments on lines before code.
-indent_sing_line_comments       = 0        # unsigned number
+indent_single_line_comments_before = 0        # unsigned number
+
+# Spaces to indent single line ('//') comments on lines after code.
+indent_single_line_comments_after = 0        # unsigned number
 
 # When opening a paren for a control statement (if, for, while, etc), increase
 # the indent level by this value. Negative values decrease the indent level.
@@ -1135,6 +1279,13 @@
 # Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
 indent_switch_case              = 0        # unsigned number
 
+# Spaces to indent the body of a 'switch' before any 'case'.
+# Usually the same as indent_columns or indent_switch_case.
+indent_switch_body              = 0        # unsigned number
+
+# Whether to ignore indent for '{' following 'case'.
+indent_ignore_case_brace        = false    # true/false
+
 # indent 'break' with 'case' from 'switch'.
 indent_switch_break_with_case   = false    # true/false
 
@@ -1151,12 +1302,25 @@
 # the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
 indent_case_brace               = 0        # number
 
+# Whether to indent comments not found in first column.
+#
+# Default: true
+indent_comment                  = true     # true/false
+
 # Whether to indent comments found in first column.
 indent_col1_comment             = false    # true/false
 
 # Whether to indent multi string literal in first column.
 indent_col1_multi_string_literal = false    # true/false
 
+# Align comments on adjacent lines that are this many columns apart or less.
+#
+# Default: 3
+indent_comment_align_thresh     = 3        # unsigned number
+
+# Whether to ignore indent for goto labels.
+indent_ignore_label             = true    # true/false
+
 # How to indent goto labels.
 #
 #  >0: Absolute column where 1 is the leftmost column
@@ -1201,18 +1365,39 @@
 # if the parenthesis is on its own line.
 indent_paren_after_func_call    = false    # true/false
 
-# Whether to indent a comma when inside a parenthesis.
-# If true, aligns under the open parenthesis.
-indent_comma_paren              = false    # true/false
+# How to indent a comma when inside braces.
+#  0: Indent by one level (default)
+#  1: Align under the open brace
+# -1: Preserve original indentation
+indent_comma_brace              = 0        # number
 
-# Whether to indent a Boolean operator when inside a parenthesis.
-# If true, aligns under the open parenthesis.
-indent_bool_paren               = false    # true/false
+# How to indent a comma when inside parentheses.
+#  0: Indent by one level (default)
+#  1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_comma_paren              = 0        # number
+
+# How to indent a Boolean operator when inside parentheses.
+#  0: Indent by one level (default)
+#  1: Align under the open parenthesis
+# -1: Preserve original indentation
+indent_bool_paren               = 0        # number
+
+# Whether to ignore the indentation of a Boolean operator when outside
+# parentheses.
+indent_ignore_bool              = false    # true/false
+
+# Whether to ignore the indentation of an arithmetic operator.
+indent_ignore_arith             = false    # true/false
 
 # Whether to indent a semicolon when inside a for parenthesis.
 # If true, aligns under the open for parenthesis.
 indent_semicolon_for_paren      = false    # true/false
 
+# Whether to ignore the indentation of a semicolon outside of a 'for'
+# statement.
+indent_ignore_semicolon         = false    # true/false
+
 # Whether to align the first expression to following ones
 # if indent_bool_paren=true.
 indent_first_bool_expr          = false    # true/false
@@ -1228,6 +1413,9 @@
 # (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies.
 indent_preserve_sql             = false    # true/false
 
+# Whether to ignore the indentation of an assignment operator.
+indent_ignore_assign            = false    # true/false
+
 # Whether to align continued statements at the '='. If false or if the '=' is
 # followed by a newline, the next line is indent one tab.
 #
@@ -1343,6 +1531,10 @@
 # have their own indentation).
 indent_ignore_asm_block         = true     # true/false
 
+# Don't indent the close parenthesis of a function definition,
+# if the parenthesis is on its own line.
+donot_indent_func_def_close_paren = false    # true/false
+
 #
 # Newline adding and removing options
 #
@@ -1378,6 +1570,9 @@
 # Don't split one-line while statements, as in 'while(...) b++;'.
 nl_while_leave_one_liners       = false    # true/false
 
+# Don't split one-line do statements, as in 'do { b++; } while(...);'.
+nl_do_leave_one_liners          = false    # true/false
+
 # Don't split one-line for statements, as in 'for(...) b++;'.
 nl_for_leave_one_liners         = false    # true/false
 
@@ -1437,7 +1632,7 @@
 nl_fcall_brace                  = ignore   # ignore/add/remove/force
 
 # Add or remove newline between 'enum' and '{'.
-nl_enum_brace                   = ignore   # ignore/add/remove/force
+nl_enum_brace                   = remove   # ignore/add/remove/force
 
 # Add or remove newline between 'enum' and 'class'.
 nl_enum_class                   = ignore   # ignore/add/remove/force
@@ -1452,10 +1647,10 @@
 nl_enum_colon_type              = ignore   # ignore/add/remove/force
 
 # Add or remove newline between 'struct and '{'.
-nl_struct_brace                 = ignore   # ignore/add/remove/force
+nl_struct_brace                 = remove   # ignore/add/remove/force
 
 # Add or remove newline between 'union' and '{'.
-nl_union_brace                  = ignore   # ignore/add/remove/force
+nl_union_brace                  = remove   # ignore/add/remove/force
 
 # Add or remove newline between 'if' and '{'.
 nl_if_brace                     = remove   # ignore/add/remove/force
@@ -1831,6 +2026,9 @@
 # direct-list-initialization.
 nl_type_brace_init_lst_close    = ignore   # ignore/add/remove/force
 
+# Whether to add a newline before '{'.
+nl_before_brace_open            = false    # true/false
+
 # Whether to add a newline after '{'. This also adds a newline before the
 # matching '}'.
 nl_after_brace_open             = true     # true/false
@@ -1912,6 +2110,12 @@
 # Add or remove blank line after 'do/while' statement.
 nl_after_do                     = ignore   # ignore/add/remove/force
 
+# Ignore nl_before_{if,for,switch,do,synchronized} if the control
+# statement is immediately after a case statement.
+# if nl_before_{if,for,switch,do} is set to remove, this option
+# does nothing.
+nl_before_ignore_after_case     = false    # true/false
+
 # Whether to put a blank line before 'return' statements, unless after an open
 # brace.
 nl_before_return                = false    # true/false
@@ -1980,6 +2184,10 @@
 # adding a newline, as in 'while (expr) <here> stmt;'.
 nl_split_while_one_liner        = false    # true/false
 
+# Don't add a newline before a cpp-comment in a parameter list of a function
+# call.
+donot_add_nl_before_cpp_comment = false    # true/false
+
 #
 # Blank line options
 #
@@ -1990,6 +2198,12 @@
 # The maximum number of consecutive newlines in a function.
 nl_max_blank_in_func            = 2        # unsigned number
 
+# The number of newlines inside an empty function body.
+# This option overrides eat_blanks_after_open_brace and
+# eat_blanks_before_close_brace, but is ignored when
+# nl_collapse_empty_body=true
+nl_inside_empty_func            = 0        # unsigned number
+
 # The number of newlines before a function prototype.
 nl_before_func_body_proto       = 0        # unsigned number
 
@@ -2097,6 +2311,9 @@
 # Whether to force a newline after a label's colon.
 nl_after_label_colon            = true     # true/false
 
+# The number of newlines before a struct definition.
+nl_before_struct                = 1        # unsigned number
+
 # The number of newlines after '}' or ';' of a struct/enum/union definition.
 nl_after_struct                 = 1        # unsigned number
 
@@ -2246,6 +2463,9 @@
 # Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma.
 pos_constr_colon                = ignore   # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
 
+# The position of shift operators in wrapped expressions.
+pos_shift                       = ignore   # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
+
 #
 # Line splitting options
 #
@@ -2371,13 +2591,18 @@
 align_var_def_attribute         = false    # true/false
 
 # Whether to align inline struct/enum/union variable definitions.
-align_var_def_inline            = false    # true/false
+align_var_def_inline            = true    # true/false
 
 # The span for aligning on '=' in assignments.
 #
 # 0: Don't align (default).
 align_assign_span               = 0        # unsigned number
 
+# The span for aligning on '{' in braced init list.
+#
+# 0: Don't align (default).
+align_braced_init_list_span     = 0        # unsigned number
+
 # The span for aligning on '=' in function prototype modifier.
 #
 # 0: Don't align (default).
@@ -2389,6 +2614,17 @@
 # 0: No limit (default).
 align_assign_thresh             = 0        # number
 
+# Whether to align on the left most assignment when multiple
+# definitions are found on the same line.
+# Depends on 'align_assign_span' and 'align_assign_thresh' settings.
+align_assign_on_multi_var_defs  = false    # true/false
+
+# The threshold for aligning on '{' in braced init list.
+# Use a negative number for absolute thresholds.
+#
+# 0: No limit (default).
+align_braced_init_list_thresh   = 0        # number
+
 # How to apply align_assign_span to function declaration "assignments", i.e.
 # 'virtual void foo() = 0' or '~foo() = {default|delete}'.
 #
@@ -2501,6 +2737,22 @@
 # 0: Don't align (default).
 align_func_proto_span           = 0        # unsigned number
 
+# How to consider (or treat) the '*' in the alignment of function prototypes.
+#
+# 0: Part of the type     'void *   foo();' (default)
+# 1: Part of the function 'void     *foo();'
+# 2: Dangling             'void    *foo();'
+# Dangling: the '*' will not be taken into account when aligning.
+align_func_proto_star_style     = 0        # unsigned number
+
+# How to consider (or treat) the '&' in the alignment of function prototypes.
+#
+# 0: Part of the type     'long &   foo();' (default)
+# 1: Part of the function 'long     &foo();'
+# 2: Dangling             'long    &foo();'
+# Dangling: the '&' will not be taken into account when aligning.
+align_func_proto_amp_style      = 0        # unsigned number
+
 # The threshold for aligning function prototypes.
 # Use a negative number for absolute thresholds.
 #
@@ -2555,6 +2807,10 @@
 # Default: true
 align_left_shift                = false    # true/false
 
+# Whether to align comma-separated statements following '<<' (as used to
+# initialize Eigen matrices).
+align_eigen_comma_init          = false    # true/false
+
 # Whether to align text after 'asm volatile ()' colons.
 align_asm_colon                 = false    # true/false
 
@@ -2591,6 +2847,41 @@
 # 2: Full reflow
 cmt_reflow_mode                 = 1        # unsigned number
 
+# Path to a file that contains regular expressions describing patterns for
+# which the end of one line and the beginning of the next will be folded into
+# the same sentence or paragraph during full comment reflow. The regular
+# expressions are described using ECMAScript syntax. The syntax for this
+# specification is as follows, where "..." indicates the custom regular
+# expression and "n" indicates the nth end_of_prev_line_regex and
+# beg_of_next_line_regex regular expression pair:
+#
+# end_of_prev_line_regex[1] = "...$"
+# beg_of_next_line_regex[1] = "^..."
+# end_of_prev_line_regex[2] = "...$"
+# beg_of_next_line_regex[2] = "^..."
+#             .
+#             .
+#             .
+# end_of_prev_line_regex[n] = "...$"
+# beg_of_next_line_regex[n] = "^..."
+#
+# Note that use of this option overrides the default reflow fold regular
+# expressions, which are internally defined as follows:
+#
+# end_of_prev_line_regex[1] = "[\w,\]\)]$"
+# beg_of_next_line_regex[1] = "^[\w,\[\(]"
+# end_of_prev_line_regex[2] = "\.$"
+# beg_of_next_line_regex[2] = "^[A-Z]"
+cmt_reflow_fold_regex_file      = ""         # string
+
+# Whether to indent wrapped lines to the start of the encompassing paragraph
+# during full comment reflow (cmt_reflow_mode = 2). Overrides the value
+# specified by cmt_sp_after_star_cont.
+#
+# Note that cmt_align_doxygen_javadoc_tags overrides this option for
+# paragraphs associated with javadoc tags
+cmt_reflow_indent_to_paragraph_start = false    # true/false
+
 # Whether to convert all tabs to spaces in comments. If false, tabs in
 # comments are left alone, unless used for indenting.
 cmt_convert_tab_to_spaces       = false    # true/false
@@ -2601,6 +2892,25 @@
 # Default: true
 cmt_indent_multi                = false    # true/false
 
+# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
+# and corresponding fields such that groups of consecutive block tags,
+# parameter names, and descriptions align with one another. Overrides that
+# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may
+# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2
+# in order to achieve the desired alignment for line-wrapping.
+cmt_align_doxygen_javadoc_tags  = false    # true/false
+
+# The number of spaces to insert after the star and before doxygen
+# javadoc-style tags (@param, @return, etc). Requires enabling
+# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the
+# cmt_sp_after_star_cont.
+#
+# Default: 1
+cmt_sp_before_doxygen_javadoc_tags = 1        # unsigned number
+
+# Whether to change trailing, single-line c-comments into cpp-comments.
+cmt_trailing_single_line_c_to_cpp = false    # true/false
+
 # Whether to group c-comments that look like they are in a block.
 cmt_c_group                     = false    # true/false
 
@@ -2720,12 +3030,17 @@
 mod_full_brace_if               = force     # ignore/add/remove/force
 
 # Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either
-# have, or do not have, braces. If true, braces will be added if any block
-# needs braces, and will only be removed if they can be removed from all
-# blocks.
+# have, or do not have, braces. Overrides mod_full_brace_if.
 #
-# Overrides mod_full_brace_if.
-mod_full_brace_if_chain         = false    # true/false
+# 0: Don't override mod_full_brace_if
+# 1: Add braces to all blocks if any block needs braces and remove braces if
+#    they can be removed from all blocks
+# 2: Add braces to all blocks if any block already has braces, regardless of
+#    whether it needs them
+# 3: Add braces to all blocks if any block needs braces and remove braces if
+#    they can be removed from all blocks, except if all blocks have braces
+#    despite none needing them
+mod_full_brace_if_chain         = 0        # unsigned number
 
 # Whether to add braces to all blocks of an 'if'/'else if'/'else' chain.
 # If true, mod_full_brace_if_chain will only remove braces from an 'if' that
@@ -2767,9 +3082,20 @@
 # statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.
 mod_full_paren_if_bool          = true     # true/false
 
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'.
+mod_full_paren_assign_bool      = false    # true/false
+
+# Whether to fully parenthesize Boolean expressions after '='
+# statement, as in 'return  a && b > c;' => 'return (a && (b > c));'.
+mod_full_paren_return_bool      = false    # true/false
+
 # Whether to remove superfluous semicolons.
 mod_remove_extra_semicolon      = true     # true/false
 
+# Whether to remove duplicate include.
+mod_remove_duplicate_include    = true    # true/false
+
 # 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_function_closebrace_comment = 0        # unsigned number
@@ -2831,6 +3157,10 @@
 # the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'.
 mod_move_case_break             = true     # true/false
 
+# Whether to move a 'return' that appears after a fully braced 'case' before
+# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'.
+mod_move_case_return            = true    # true/false
+
 # Add or remove braces around a fully braced case statement. Will only remove
 # braces if there are no variable declarations in the block.
 mod_case_brace                  = remove   # ignore/add/remove/force
@@ -2881,6 +3211,10 @@
 # indented from column 1.
 pp_indent_at_level              = false    # true/false
 
+# Whether to indent #if/#else/#endif at the parenthesis level if the brace
+# level is 0. If false, these are indented from column 1.
+pp_indent_at_level0             = false    # true/false
+
 # Specifies the number of columns to indent preprocessors per level
 # at brace level 0 (file-level). If pp_indent_at_level=false, also specifies
 # the number of columns to indent preprocessors per level
@@ -2912,10 +3246,16 @@
 # Whether to indent the code between #if, #else and #endif.
 pp_if_indent_code               = false    # true/false
 
+# Whether to indent the body of an #if that encompasses all the code in the file.
+pp_indent_in_guard              = false    # true/false
+
 # Whether to indent '#define' at the brace level. If false, these are
 # indented from column 1.
 pp_define_at_level              = false    # true/false
 
+# Whether to indent '#include' at the brace level.
+pp_include_at_level             = false    # true/false
+
 # Whether to ignore the '#define' body while formatting.
 pp_ignore_define_body           = true     # true/false
 
@@ -2940,12 +3280,37 @@
 # Default: true
 pp_indent_extern                = false    # true/false
 
-# Whether to indent braces directly inside #if, #else, and #endif.
-# Only applies to the indent of the preprocesser that the braces are directly
-# inside of.
+# How to indent braces directly inside #if, #else, and #endif.
+# Requires pp_if_indent_code=true and only applies to the indent of the
+# preprocesser that the braces are directly inside of.
+#  0: No extra indent
+#  1: Indent by one level
+# -1: Preserve original indentation
 #
-# Default: true
-pp_indent_brace                 = false    # true/false
+# Default: 1
+pp_indent_brace                 = 0        # number
+
+# Whether to print warning messages for unbalanced #if and #else blocks.
+# This will print a message in the following cases:
+# - if an #ifdef block ends on a different indent level than
+#   where it started from. Example:
+#
+#    #ifdef TEST
+#      int i;
+#      {
+#        int j;
+#    #endif
+#
+# - an #elif/#else block ends on a different indent level than
+#   the corresponding #ifdef block. Example:
+#
+#    #ifdef TEST
+#        int i;
+#    #else
+#        }
+#      int j;
+#    #endif
+pp_warn_unbalanced_if           = true     # true/false
 
 #
 # Sort includes options
@@ -3038,6 +3403,15 @@
 # 0: nothing protocol.
 debug_line_number_to_protocol   = 0        # number
 
+# Set the number of second(s) before terminating formatting the current file,
+# 0: no timeout.
+# only for linux
+debug_timeout                   = 0        # number
+
+# Set the number of characters to be printed if the text is too long,
+# 0: do not truncate.
+debug_truncate                  = 0        # unsigned number
+
 # Meaning of the settings:
 #   Ignore - do not do any changes
 #   Add    - makes sure there is 1 or more space/brace/newline/etc