Change highlights in uncrustify-0.64 (October 2016)
-------------------------------------------------------------------------------

New:
 - Support for new C#6 language elements. (Bug #672)
    Expression filter with the keyword 'when' in try/catch is now supported.
    Null conditional operator (?.) is now supported.

New options:
 - align_var_class_span                             Aug 23
 - align_var_class_thresh                           Aug 23
 - align_var_class_gap                              Aug 23
 - pos_enum_comma                                   Aug 14
 - indent_token_after_brace                         Aug  3
 - cmt_multi_first_len_minimum                      Aug  2
 - nl_enum_own_lines                                Aug  1
 - nl_func_class_scope                              Jul 26
 - nl_squeeze_ifdef_top_level                       Jul 24
 - sp_super_paren                                   Jul 21
 - sp_this_paren                                    Jul 21
 - sp_angle_paren_empty                             Jul 21
 - sp_after_operator_sym_empty                      Jul 20
 - sp_skip_vbrace_tokens                            Jul 13
 - indent_cs_delegate_brace                         Jul  9
 - cmt_insert_before_inlines                        Jun 29
 - cmt_insert_before_ctor_dtor                      Jun 29
 - mod_full_brace_if_chain_only                     Jun 28
 - nl_func_decl_start_multi_line                    Jun 28
 - nl_func_def_start_multi_line                     Jun 28
 - nl_func_decl_args_multi_line                     Jun 28
 - nl_func_def_args_multi_line                      Jun 28
 - nl_func_decl_end_multi_line                      Jun 28
 - nl_func_def_end_multi_line                       Jun 28
 - nl_func_call_start_multi_line                    Jun 28
 - nl_func_call_args_multi_line                     Jun 28
 - nl_func_call_end_multi_line                      Jun 28
 - use_options_overriding_for_qt_macros             Jun 16
 - sp_func_def_paren_empty                          Jun 15
 - sp_func_proto_paren_empty                        Jun 15
 - sp_func_class_paren_empty                        Jun 15
 - nl_oc_block_brace                                May 26
 - nl_split_if_one_liner                            May 26
 - nl_split_for_one_line                            May 24
 - nl_split_while_one_liner                         May 24
 - nl_after_func_class_proto                        May 12
 - nl_after_func_class_proto_group                  May 12 2016

Bugfix:
 - Bugs #620, #651, #654, #662, #663, #664, #670, #671, #672, #674 are fixed
 - Issues #322, #323, #359, #405, #408, #412, #478, #481, #495, #503, #509, #512, #513, #514,
    #518, #519, #520, #521, #522, #524, #529, #530, #533, #536, #539, #542,
    #543, #544, #546, #568 are fixed
 - Proposals #409, #477 are implemented
 - Issue #411 is partialy fixed


Change highlights in uncrustify-0.63 (Mar 2016)
-------------------------------------------------------------------------------

New:
 - The branch uncrustify4Qt is now merged.
 - A configuration file for the sources of uncrustify is provided:
     forUncrustifySources.cfg
 - Some considerations about the problem "stable" are described at
     forUncrustifySources.txt
 - Simplify expressions such as:
     if ((cpd.lang_flags & LANG_PAWN) != 0)
   to
     if (cpd.lang_flags & LANG_PAWN)
 - introduce CT_STDCALL to work with typedef void (__stdcall *func)(); Bug # 633
 - introduce some more MS calling conventions: __cdecl, __clrcall, __fastcall, __thiscall, __vectorcall
     https://msdn.microsoft.com/en-us/library/984x0h58.aspx

New options:
 - nl_before_func_class_def                         Apr 16
 - nl_before_func_class_proto                       Apr 16
 - nl_before_func_body_def                          Apr 25
 - nl_before_func_body_proto                        Apr 25
 - use_indent_continue_only_once                    Mar  7 2016

Bugfix:
 - Simplify some more expressions.
 - Bugfix for win32 for the flags.
 - make test c/ 00617 stable
 - make test c/ 02501 stable
 - The issue #467 and the test tests/output/c/02100-i2c-core.c are not yet fixed.
 - uncrustify all the sources with forUncrustifySources.cfg
 - better descriptions for options
 - bug #631 is fixed
 - produce a better dump output
 - DbConfig::configuredDatabase()->apply(db); is NOT a declaration of a variable
 - bug # 657 is fixed: change 'mode' if necessary for 'pos_class_comma'
 - fix 3 calls of unc_add_option for "align_oc_msg_colon_span",
     "indent_oc_block_msg", "indent_oc_msg_colon"
 - bugs #664, #662, #654, #653, #651 and #633 are fixed

Reverse:
 - space: drop vbrace tokens... 2014-09-01 06:33:17
   I cannot anderstand this change.
   It makes some troubles: Bug # 637
   No test file for it found
   Reverse the change until more informations could be found

Change:
 - CT_DC_MEMBER + CT_FOR into CT_DC_MEMBER + CT_FUNC_CALL

Some more Qt-macros:
 - Q_GADGET
 - for_each


Change highlights in uncrustify4Qt-0.62 (Oct 2015)
-------------------------------------------------------------------------------
This is an extention of uncrustify to support Qt-macros
 - Q_OBJECT
 - Q_EMIT
 - SLOT
 - SIGNAL
 - Q_FOREACH
 - Q_FOREVER

Change highlights in uncrustify4Qt-0.62 (Oct 2015)
-------------------------------------------------------------------------------
New options:
 - use_indent_func_call_param


Change highlights in uncrustify-0.62 (2 Feb 2016)
-------------------------------------------------------------------------------
This release is just a roll-up of the past year.
Many bugs were squashed and many options were added.

New options:
 - string_replace_tab_chars
 - disable_processing_cmt
 - enable_processing_cmt
 - enable_digraphs
 - indent_class_on_colon
 - indent_shift
 - indent_min_vbrace_open
 - indent_vbrace_open_on_tabstop
 - sp_after_mdatype_commas
 - sp_before_mdatype_commas
 - sp_between_mdatype_commas
 - sp_cmt_cpp_doxygen
 - sp_cmt_cpp_qttr
 - sp_between_new_paren
 - nl_while_leave_one_liners
 - nl_synchronized_brace
 - nl_before_synchronized
 - nl_after_synchronized
 - nl_after_label_colon


Change highlights in uncrustify-0.61 (22 Dec 2014)
-------------------------------------------------------------------------------
This release is just a roll-up of the past two years.
Many bugs were squashed and many options were added.

New options:
 - indent_paren_open_brace
 - indent_namespace_single_indent
 - indent_constr_colon
 - indent_oc_msg_prioritize_first_colon
 - indent_oc_block_msg_xcode_style
 - indent_oc_block_msg_from_keyword
 - indent_oc_block_msg_from_colon
 - indent_oc_block_msg_from_caret
 - indent_oc_block_msg_from_brace
 - sp_enum_paren
 - sp_cparen_oparen
 - sp_after_ptr_star_qualifier
 - sp_after_constr_colon
 - sp_before_constr_colon
 - sp_fparen_dbrace
 - sp_word_brace
 - sp_word_brace_ns
 - sp_cond_colon_before
 - sp_cond_colon_after
 - sp_cond_question_before
 - sp_cond_question_after
 - sp_cond_ternary_short
 - align_keep_extra_space
 - nl_cpp_lambda_leave_one_liners
 - nl_brace_square
 - nl_brace_fparen
 - nl_constr_init_args
 - nl_cpp_ldef_brace
 - nl_paren_dbrace_open
 - nl_constr_colon
 - pos_constr_comma
 - pos_constr_colon
 - mod_add_long_namespace_closebrace_comment
 - cmt_convert_tab_to_spaces


Change highlights in uncrustify-0.60 (1 Jan 2013)
-------------------------------------------------------------------------------
Objective C support was greatly enhanced in this release.
Many bugs were squashed and many options were added.

New options:
 - align_oc_msg_colon_first
 - align_pp_define_together
 - indent_ctor_init_leading
 - indent_func_def_force_col1
 - indent_oc_block
 - indent_oc_block_msg
 - indent_oc_msg_colon
 - ls_code_width
 - nl_after_annotation
 - nl_before_return
 - nl_between_annotation
 - nl_brace_struct_var
 - nl_oc_msg_args
 - nl_oc_msg_leave_one_liner
 - nl_remove_extra_newlines
 - nl_scope_brace
 - nl_typedef_blk_end
 - nl_typedef_blk_in
 - nl_typedef_blk_start
 - nl_unittest_brace
 - nl_var_def_blk_end
 - nl_var_def_blk_in
 - nl_var_def_blk_start
 - nl_version_brace
 - sp_after_for_colon
 - sp_after_oc_dict_colon
 - sp_after_oc_msg_receiver
 - sp_after_oc_property
 - sp_after_throw
 - sp_after_tparen_close
 - sp_annotation_paren
 - sp_before_for_colon
 - sp_before_oc_dict_colon
 - sp_before_pp_stringify
 - sp_before_template_paren
 - sp_cpp_lambda_assign
 - sp_cpp_lambda_paren
 - sp_extern_paren
 - sp_inside_sparen_open
 - sp_inside_tparen
 - sp_permit_cpp11_shift
 - sp_ptr_star_paren

Changed default:
 - sp_pp_stringify = ignore (was add)

See commit.log for details.


Change highlights in uncrustify-0.59 (4 Oct 2011)
-------------------------------------------------------------------------------
The biggest change in this release was to rework the string handling to add
proper support for UTF-8 and UTF-16.

New options:
 - nl_case_colon_brace
 - indent_ctor_init
 - sp_before_tr_emb_cmt
 - sp_num_before_tr_emb_cmt
 - utf8_bom
 - utf8_byte
 - utf8_force
 - sp_after_new
 - nl_after_struct
 - nl_after_class
 - nl_property_brace
 - nl_after_func_body_class

See commit.log for details.


Change highlights in uncrustify-0.58 (19 May 2011)
-------------------------------------------------------------------------------
New options:
 - tok_split_gte
 - sp_catch_paren
 - sp_scope_paren
 - sp_version_paren
 - cmt_insert_oc_msg_header

See commit.log for details.


Change highlights in uncrustify-0.57 (25 Nov 2010)
-------------------------------------------------------------------------------
New options:
 - sp_func_call_paren_empty
 - nl_func_def_start
 - nl_func_def_start_single
 - nl_func_def_paren
 - nl_func_def_args
 - nl_func_def_empty
 - nl_func_def_end
 - nl_func_def_end_single

See commit.log for details.


Change highlights in uncrustify-0.56 (27 Mar 2010)
-------------------------------------------------------------------------------
New options:
 - indent_continue
 - indent_cmt_with_tabs
 - indent_first_bool_expr
 - indent_braces_no_class
 - indent_braces_no_struct
 - indent_var_def_cont
 - sp_assign_default
 - sp_after_oc_at_sel_parens
 - sp_inside_oc_at_sel_parens
 - align_oc_decl_colon
 - nl_after_vbrace_close
 - nl_using_brace
 - mod_full_brace_using

See commit.log for details.


Change highlights in uncrustify-0.55 (27 Nov 2009)
-------------------------------------------------------------------------------
 - See the GIT history for a full list of changes
 - Fix align_left_shift with array indexes
 - Objective C changes (Andre Berg)
 - Fix a close paren added inside a preprocessor line
 - Fix handling of 'mutable'
 - New options
   - sp_endif_cmt
   - nl_func_decl_start_single
   - nl_func_decl_end_single
   - nl_after_vbrace_open_empty
 - Improved options
   - sp_before_ellipsis
   - nl_struct_brace
   - align_on_tabstop
   - align_with_tabs
   - align_left_shift
   - nl_func_type_name
   - nl_create_if_one_liner
   - pos_assign


Changes in uncrustify-0.54 (16 Oct 2009)
-------------------------------------------------------------------------------
 - Add mod_case_brace
 - Add sp_after_semi_for and sp_after_semi
 - Add align_oc_msg_colon
 - ObjC: Do not set the parent of everything in a message at OC_MSG (was breaking casts)
 - ObjC: sp_before_square does not apply in "if (i < [a count])"
 - Fix crash bug in chunk_get_prev() at the start of the file
 - Fix issue with #if COND followed by a cast on the next line
 - Add nl_func_decl_empty
 - Add nl_func_type_name_class
 - Add cmt_reflow_mode (Ger Hobbelt)
 - A case statement starts an expression. Fixes "case -1:"
 - Improve semicolon removal test
 - fix marking of brace/paren pairs that have a preproc inside
 - fix nl_func_type_name where the return type contains a template
 - Add mod_full_brace_if_chain
 - fix detection of deref in a macro function
 - fix detection of "std::vector<void (*)(void)> functions;"
 - Remove extra semicolons on an 'else if'
 - Add sp_before_ellipsis
 - treat a constructor the same as a function regarding nl_func_decl_*
 - Add nl_brace_brace
 - Allow any number of spaces between multi-line comments when combining them
 - Add pos_compare
 - Add pos_conditional
 - Fix indent_relative_single_line_comments
 - Add sp_after_oc_return_type and sp_after_oc_at_sel (Andre Berg)
 - Add indent_namespace_level (James LewisMoss)
 - Add indent_namespace_limit (Maciej Libera)


Changes in uncrustify-0.53 (16 May 2009)
-------------------------------------------------------------------------------
 - Fix sp_inside_braces* options, which were broken by the fix to issue #2629652
 - Fix sp_after_cast, which was broken by a previous fix
 - Be a little more agressive in removing unecessary semicolons
 - Fix one case where the parser leaves a preprocessor #define
 - Fix indent of line starting with '(' after a function name
 - Add align_var_def_attribute
 - Fix nl_func_type_name for function without a return type (ie, cast operator)
 - Reset up state variables after processing a file
 - Fix a case where a semicolon was incorrectly removed
 - Fix a case where braces were incorrectly removed
 - Fix handling of 'force' setting for many newline options
 - Add func_wrap type for use with 'set func_wrap FSUB'
 - Add type_wrap type for use with 'set type_wrap STACK_OF'
 - Make file replacement more atomic - write to a temp file then rename
 - With the 'replace' option, only replace if the file content changes
 - Handle C# wide literal string prefix S"foo"
 - Handle the ObjC '@protocol' the same as '@interface'
 - Add 'make check' and 'make clean' (Ger Hobbelt)
 - Add align_right_cmt_at_col (Ger Hobbelt)
 - Add sp_pp_concat and sp_pp_stringify (Ger Hobbelt)
 - Add mod_add_long_ifdef_{else,endif}_comment (Ger Hobbelt)
 - Objective C improvements (Etienne Samson)
 - Only mess with escaped newlines in a comment if inside a preprocessor
 - Fix pos_xxx options when a preprocessor is near
 - Apply Debian patch to man file
 - Fix '<<' indenting/aligning (moved from indent.cpp to align.cpp)
 - Rework the sp_before_nl_cont option
 - Fix a few other bugs


Changes in uncrustify-0.52 (28 Feb 2009)
-------------------------------------------------------------------------------
 - Add sp_before_assign and sp_after_assign
 - Add sp_enum_before_assign and sp_enum_after_assign
 - Add indent_var_def_blk
 - Add sp_inside_sparen_close for the 'CGAL' style
 - First pass at supporting ECMAScript (.es) files
 - Add support for the C# '??' operator
 - Fix conflict between nl_after_func_proto_group and nl_squeeze_ifdef
 - Add sp_cmt_cpp_start
 - Add align_on_operator
 - Fix nl_func_type_name for operators
 - Allow '$' to be part of identifiers (global change)
 - Fix detection of the '*' in 'int a = b[0] * c;'
 - Fix and improve the description of nl_multi_line_cond
 - Fix handling of global namespace type such as '::sockaddr'
 - Add nl_after_brace_close
 - Add nl_func_scope_name
 - Add cmt_insert_file_footer


Changes in uncrustify-0.51 (27 Nov 2008)
-------------------------------------------------------------------------------
 - Prefer to split at ',' and then '=' in for() statements if at paren level
 - Fix a NULL deref crash
 - Fix nl_namespace_brace when something trails the open brace
 - Get sp_after_sparen and sp_sparen_brace to play well together
 - Ignore trailing comments when inserting the function header comment
 - Combine two C comments when they have no space between them "/***//***/"
 - Add cmt_insert_before_preproc
 - Add mod_remove_empty_return
 - Add nl_comment_func_def
 - Fix aligning of anonymous bit fields
 - Add indent_align_assign
 - Add sp_before_case_colon
 - Fix D 'invariant' handling
 - Add sp_invariant_after_paren and sp_invariant_paren
 - Fix handling of the C# [assembly: xxx] construct
 - Fix handling of the C# 'base()' construct
 - Add sp_range for the D '..' range operator as in [start .. end]
 - Update $(fclass) and $(function) to handle operators
 - Improve handling of inserted comments
 - Enable 'finally' blocks for C#
 - Add nl_after_try_catch_finally
 - Add nl_between_get_set and nl_around_cs_property


Changes in uncrustify-0.50 (25-Oct-2008)
-------------------------------------------------------------------------------
 - Fix sp_before_unnamed_ptr_star in 'char ** n'
 - Fix crash when a open brace is at the end of a file
 - ObjC class definitions do not need { }
 - Fix ObjC msg detection
 - Add sp_after_ptr_star_func, sp_before_ptr_star_func
 - Add sp_after_byref_func, sp_before_byref_func
 - Treat an ObjC msg decl more like a function def
 - Add indent_func_const, indent_func_throw (Thanks, Ron)
 - Fix detection of prototype inside extern or namespace braces
 - Add align_left_shift to handle aligning of '<<'
 - Add sp_cpp_cast_paren
 - Add support for ObjC '@property' statements
 - Add sp_brace_typedef and sp_case_label
 - Merge in the lastest UniversalIndent support (Thanks, Thomas!)
 - Fix extra '\r' in multi-line comments and strings
 - Add sp_throw_paren
 - Assume a '<' in a preprocessor can't be part of a template
 - Don't align a constructor with class variables
 - Fix ending column error when tokenizing strings


Changes in uncrustify-0.49 (22-Aug-2008)
-------------------------------------------------------------------------------
 - Allow the MSVC++ '64' suffix on numbers
 - Initialize align_stack class members for the MSVC++ compiler
 - Indent a line that starts with '='
 - Add pos_arith and pos_assign (Thanks, Ron!)
 - Fix pos_bool & code_width interaction (Thanks, Ron!)
 - Fix cmt_width, which was going one word over the limit. (Thanks, Ron!)
 - Major rework of the aligning code to better handle the gap options
 - Indent comments before 'case' at the same level as 'case'
 - mod_add_long_*_closebrace_comment adds the right comment type. (Thanks, Ron!)
 - Relax number parsing even further to accept stuff like "3A"
 - Add sp_after_oc_colon (Thanks, Kevin!)
 - Add better detection and labeling of Objective C messages
 - Add sp_after_send_oc_colon and sp_before_send_oc_colon (Thanks, Kevin!)
 - Fix detection of '*' in "return n * f();"
 - Add the 'set' config option which lets you create arbitrary keywords
 - Add sp_func_call_user_paren and the 'func_call_user' keyword type


Changes in uncrustify-0.48 (18-Jul-2008)
-------------------------------------------------------------------------------
 - Fix classification of '(' in '#if defined (FOO)'
 - Add sp_defined_paren
 - Fix handling of negative in '#if X < -1'
 - Revert a change that broke indent continuation in an assignment
 - Fix interaction between nl_squeeze_ifdef and nl_after_{if,for,while,switch,do}
 - Preprocessor indents are indents, so indent_with_tabs=1 should do tabs
 - Add pp_indent_count
 - Handle C++ style casts, such as 'int(42.0)' a bit better
 - Another rework of template detection
 - Add sp_before_nl_cont, defaults to 'add'
 - If a statement starts with 'operator', it is a function call
 - Change sp_angle_word to be more generic
 - Add sp_after_operator_sym for "operator ++(" vs "operator ++ ("
 - Add sp_template_angle for "template<" vs "template <"
 - Add support for " *INDENT-OFF* " and " *INDENT-ON* "
 - Shuffle around spacing priorities
 - Add handling for '...' in variadic templates
 - Extend nl_template_class to handle anything after 'template <...>'
 - Treat the template '<' the same as '(' for indenting
 - Add indent_template_param
 - Split internal CT_CAST into CT_C_CAST, CT_CPP_CAST and CT_D_CAST
 - Swap priority of sp_after_angle and sp_before_ptr_star
 - Change cmt_multi_indent=false to disable all reformatting (needs more work)
 - Fix align_var_def_span - it wasn't counting newlines when it recursed
 - Add nl_else_if
 - mod_full_brace_if: Don't remove braces around certain 'else' statements
 - Tweak template detection a bit more
 - Rework and simplify multi-line comment indenting
 - Add indent_else_if
 - Improve right-comment aligning
 - Fix detection of functions with a 'const' return type
 - Add sp_cond_colon and sp_cond_question
 - Fine-tune the right comment align stuff
 - Add cmt_multi_check_last
 - Add align_right_cmt_gap
 - Add nl_return_expr
 - Indent FPAREN_OPEN if after a newline but not before a newline
 - Give sp_after_operator_sym priority over sp_func_call_paren
 - Add align_same_func_call_params


Changes in uncrustify-0.47 (06-Jun-2008)
-------------------------------------------------------------------------------
 - Fix inifinite loop bug in reindent_line
 - Fix prototype detection with template parameter types
 - Fix off-by-1 error on positive values for indent_access_spec and indent_label
 - Add indent_extern to control indent extern-type namespaces
 - Add initial support for Objective C++ (extension '.mm')
 - Add nl_before_throw and indent 'throw' if after a prototype
 - Extend line numbers to 32 bits (used for logging)
 - Remove alternate token support for '<%', '%>', '<:', ':>', '%:', and '%:%:'
 - Fix recently-broken mixing of right-comment aligning (PP_ENDIF/PP_ELSE issue)
 - Indent a 'break' that follows a fully-braced 'case' at the level of the
   close brace
 - Add mod_move_case_break
 - Fix '&' and '*' after 'delete'
 - Escape opening '/*' when converting C++ comments to C comments
 - Add sp_inside_braces_empty
 - Fix cmt_sp_after_star_cont
 - Fix cmt_sp_before_star_cont
 - Explicitly disallow a tab after a space
 - Improve multi-line comment indenting a bit
 - Add sp_before_unnamed_byref and sp_before_unnamed_ptr_star


Changes in uncrustify-0.46 (22-Apr-2008)
-------------------------------------------------------------------------------
 - Load the config file, if available, before handling '--universalindent'
 - Add align_var_def_gap, align_var_def_colon_gap, align_var_struct_gap,
   align_func_proto_gap, align_mix_var_proto, align_single_line_brace_gap
 - (internal) Eliminate the 'trailer' stuff, simplify aligning


Changes in uncrustify-0.45 (7-Mar-2008)
-------------------------------------------------------------------------------
 - Fix buffer overflow in logger code
 - Add sp_enum_assign
 - For elipses handling in the GCC extension "case 1 ... 5:"
 - Add sp_after_class_colon, sp_before_class_colon, and sp_after_type
 - Send usage text to stdout instead of stderr
 - Fix mod_add_long_function_closebrace_comment if the file doesn't end in a newline
 - Redo alignments after splitting long lines
 - Add indent_relative_single_line_comments
 - Add indent_access_spec_body
 - Fix indent_func_proto_param to work on constructors
 - Add cmt_indent_multi
 - Add align_single_line_brace and align_single_line_func
 - Fix interaction of virtual braces and #pragma
 - Fix indenting problem with an assignment the last part of a for()
 - Fix the order of opening files so that '-f' and '-o' can be used together
 - Added a man file
 - Many improvements thanks to Stas Grabois
 - Fix a D problem due the lack of semicolons after struct/enum definitions
 - Improve the way aligning is done


Changes in uncrustify-0.44 (12-Feb-2008)
-------------------------------------------------------------------------------
 - Fix issue with #else and unmatched braces (issue 1868493)
 - Update UnivarsalIndentGUI config output
 - Add the version to generated config files
 - Add nl_multi_line_define
 - Minimize distance between code and the backslash-newline in macros
 - Properly handle stuff like '#define MYHEADER <asm/arm.h>'
 - Fix detection of 'int foo(int);' in C++ (func proto, not class variable)
 - Improve handling of multi-line comments in a macro
 - Fix crash bug with some ctype implementations
 - Fix incorrect indenting of nested #endif with pp_if_indent_code
 - Fix problem with nl_after_if and nl_before_if w/ trailing comments


Changes in uncrustify-0.43 (08-Jan-2008)
-------------------------------------------------------------------------------
 - Add align_right_cmt_mix to control aligning of comments after '}' and '#endif'
 - Allow a line split after an assignment
 - Fix infinite loop bug
 - Add sp_sign and sp_incdec
 - Fix vbrace conversion where some are converted and some aren't
 - Add a vbrace before a #pragma instead of after
 - Improve Objective C support
 - Add sp_before_oc_colon, sp_after_oc_scope, and sp_after_oc_type for ObjC
 - Add align_oc_msg_spec_span for ObjC
 - Add sp_member for spacing around '->' and '.'
 - More template handling improvements
 - Fix a NULL dereference related to __attribute__


Changes in uncrustify-0.42 (30-Nov-2007)
-------------------------------------------------------------------------------
 - Fix bug that would remove a newline after a C++ comment
 - Add "--mtime" command line option to preserve the mtime
 - Remove extra semicolons before inserting newlines after semicolons
 - Fix broken struct initializer alignment
 - Fix problem with pos_class_comma in a #define
 - Fix problem with an incomplete statement in a #define and virtual braces
 - Add indent_func_proto_param and indent_func_def_param
 - Add nl_func_proto_type_name, split from nl_func_type_name
 - Add mod_add_long_switch_closebrace_comment, mod_add_long_function_closebrace_comment
 - Add mod_sort_import to sort import statements (Java/D)
 - Add mod_sort_using to sort using statements (C#)
 - Add mod_sort_include to sort #include (C/C++) and #import (ObjC) statements
 - Add indent_func_class_param, indent_func_ctor_var_param, and
   indent_func_param_double
 - Fix inserting a newline before a preprocessor
 - Don't split empty function parens for code_width stuff


Changes in uncrustify-0.41 (07-Nov-2007)
-------------------------------------------------------------------------------
 - Add cmt_insert_func_header, cmt_insert_file_header, and cmt_insert_class_header
 - Fix detection of prototypes without named parameters
 - sp_after_byref and sp_after_ptr_star only are applied if before a word
 - internal rework
 - Add pp_define_at_level
 - Fix detection of deref in "sizeof *x"
 - Fix broken output of backslash-newline in certain situations
 - Fix pp_indent_if stuff
 - Add nl_after_brace_open_cmt
 - Properly handle anonymous namespaces
 - Add pp_space_count


Changes in uncrustify-0.40 (12-Oct-2007)
-------------------------------------------------------------------------------
 - Simplify preprocessor indenting
 - Add pp_indent_region and pp_region_indent_code
 - Add pp_indent_at_level
 - Add pp_indent_if and pp_if_indent_code
 - Add initial VALA support
 - Fix a problem with mod_full_paren_if_bool and functions
 - Add nl_func_paren
 - Fix function type parameter marking (broken in the last few releases)
 - Don't remove newline chunks before/after a preprocessor


Changes in uncrustify-0.39 (25-Sep-2007)
-------------------------------------------------------------------------------
 - Improve conversion operators
 - Prevent undesired chunk combining ("~ ~" vs "~~" in D)
 - Add nl_after_multiline_comment
 - Fix handling of try/catch/finally blocks in virtual braces
 - Add sp_inv, sp_not, sp_addr, sp_deref (default to remove)
 - Fix nl_class_brace
 - Fix indent_func_call_param
 - Add nl_create_if_one_liner, nl_create_for_one_liner, nl_create_while_one_liner
 - Add indent_preserve_sql
 - Fix one-liner detection with multiple statements on one line
 - Add nl_func_leave_one_liners and nl_if_leave_one_liners
 - More template improvements


Changes in uncrustify-0.38 (04-Sep-2007)
-------------------------------------------------------------------------------
 - Fix line splitting WRT the CT_SPACE token
 - Improve function call/prototype/definition detection
 - Fix some spacing issues
 - More template improvements
 - Allow for a C++ struct constructor
 - Add nl_before_access_spec and nl_after_access_spec
 - Add cmt_width, cmt_c_group, cmt_c_nl_start, cmt_c_nl_end
 - Handle conversion operators


Changes in uncrustify-0.37 (16-Aug-2007)
-------------------------------------------------------------------------------
 - A bunch of D language improvements
 - Add sp_d_array_colon, nl_assign_square, nl_after_square_assign
 - Fix static keyword sort order
 - Improve typedef detection and aligning
 - Split nl_ds_struct_enum_close_brace out of nl_ds_struct_enum_cmt
 - Add indent_paren_close
 - Add indent_comma_paren and indent_bool_paren


Changes in uncrustify-0.36 (04-Aug-2007)
-------------------------------------------------------------------------------
 - Add nl_after_vbrace_open
 - Improve option descriptions
 - Fix seg faults (check for NULL)
 - Fix spacing for operators () and []
 - Add sp_before_dc and sp_after_dc to control spacing around '::'
 - Split pos_class_comma from pos_comma
 - Improve line splitting a little - no longer break at '::' or '->' or '.'
 - Add nl_enum_leave_one_liners and nl_getset_leave_one_liners
 - Add mod_remove_extra_semicolon
 - Fix handling of macro-open and macro-close
 - Add align_var_struct_thresh
 - Improve handling of comments after braces
 - Add support for Qt slots and signals
 - Add align_typedef_amp_style and align_var_def_amp_style
 - Add sp_attribute_paren and handling of the '__attribute__' macro
 - Add align_typedef_func, improve aligning of typedefs
 - Add sp_after_semi_for_empty


Changes in uncrustify-0.35 (14-Jul-2007)
-------------------------------------------------------------------------------
 - Fix bug with nl_func_type_name and empty param list: int foo() { ... }
 - Don't parse pragma bodies
 - Properly indent multiline #error and #warning
 - Change nl_after_func_body to force the newline count (was a minimum)
 - Fix handling of CT_PTR_STAR when all options are AV_IGNORE
 - Fix problem when the first token in the file isn't in column 1
 - Properly mark catch clauses that contain parameters, ie catch (Exception *e)
 - Add a newline after the open brace for nl_catch_brace, nl_do_brace,
   nl_else_brace, nl_try_brace, nl_getset_brace, nl_finally_brace
 - Add nl_multi_line_cond
 - Fix a bug with mod_full_paren_if_bool
 - Fix handling of templated variables: Buffer<T>* buf
 - Fix handling of dynamic_cast<T*>(obj) stuff
 - Fix detection of templates in for() statements:
   for (std::map<Key, Value*>::iterator it = map.begin(); ...
 - Add --no-backup command-line option to replace w/o a backup file
 - Fix nl_class_leave_one_liners when set to false
 - Add nl_class_colon, which split the functionality of nl_class_init_args
 - Improve detection of reference variable declarations (A& B)


Changes in uncrustify-0.34 (11-May-2007)
-------------------------------------------------------------------------------
 - Add sp_angle_paren and sp_angle_word
 - Properly handle multi-line CPP comments
 - Add sp_inside_paren_cast
 - improve indent_class_colon
 - fix indenting on open parens
 - Add sp_before_semi_for_empty
 - Fix detection of while if the do is in a preprocessor chunk (1675673)
 - (pawn) Don't add vsemi after case/switch brace close (1684840)
 - Add nl_assign_leave_one_liners to allow "foo_t foo = { 0, 1 };"
 - Change handling of #region stuff so that it is indented at brace level
 - Fix handling of missing semicolon after while-of-do.
 - Fix crash-bug in handling bad code: "if (a && );"
 - Add pos_comma


Changes in uncrustify-0.33 (05-Mar-2007)
-------------------------------------------------------------------------------
 - Fix converting C++ comments with embedded C comments
 - Fix nl_func_var_def_blk with class variables
 - Fix some output issues with the 1st line and C++ comments
 - Eliminate indent_case_body, which wasn't used
 - Change rules for indenting case braces and the use of indent_case_brace
 - Fix variable declaration detection at the start of a code block
 - Add support for custom open/close indenting macros
   MACRO_OPEN, MACRO_ELSE, MACRO_CLOSE
 - Fix the config updating routines to NOT lose custom types and stuff
 - Add nl_after_func_body_one_liner
 - Fix nl_class_init_args
 - Add --universalindent option to output an ini file for UniversalIndentGUI


Changes in uncrustify-0.32 (20-Feb-2007)
-------------------------------------------------------------------------------
 - Enable align_proto_var_def for constructors
 - Fix while-of-do handling inside virtual braces
 - Fix problem with comments between a close brace and else
 - Add sp_before_comma
 - Change align_var_def_star to align_var_def_star_style
 - Change align_proto_var_def to align_func_params
 - Add ls_func_split_full and ls_for_split_full
 - Rework code width code a bit
 - Start Objective C support
 - Add cmt_sp_before_star_cont and cmt_sp_after_star_cont
 - Fix spacing between (( and ))
 - Add nl_try_brace, nl_catch_brace, nl_finally_brace, nl_brace_catch,
   nl_brace_finally, sp_catch_brace, sp_brace_catch, sp_finally_brace,
   sp_brace_finally, sp_try_brace
 - Treat typedef functions the same as other function for param aligning
 - Turn any word after a enum/struct/union into a type
 - Add sp_getset_brace and nl_getset_brace
 - Add mod_full_paren_if_bool
 - Add nl_before_c_comment and nl_before_cpp_comment
 - Fix nl_class_leave_one_liners
 - Add nl_ds_struct_enum_cmt
 - Add sp_balance_nested_parens


Changes in uncrustify-0.31 (24-Jan-2007)
-------------------------------------------------------------------------------
 - Improve mixed tab indent / space align
 - Try to fix spacing around embedded comments
 - Add indent_access_spec
 - Add __func__ and __FUNCTION__ detection for non-C99 compilers
 - General code cleanup (Thanks Tom!)
 - Add indent_xml_string
 - Add align_proto_var_def to align variables in prototypes


Changes in uncrustify-0.30 (24-Nov-2006)
-------------------------------------------------------------------------------
 - Use environment variable UNCRUSTIFY_CONFIG if no '-c' option (non-WIN32)
 - Default to ~/.uncrustify.cfg if no '-c' option and no env var (non-WIN32)
 - Add '-q' option to the usage info
 - Added initial embedded SQL support
 - Many bug fixes
 - New options: indent_braces_no_func, indent_sing_line_comments, nl_before_if,
   nl_before_for, nl_after_for, nl_before_while, nl_after_while,
   nl_before_switch, nl_after_switch, nl_before_do, nl_after_do


Changes in uncrustify-0.29 (26-Oct-2006)
-------------------------------------------------------------------------------
 - Add support for the 'Klaus' style
 - Fix a bunch of c++ template bugs
 - Add option nl_class_leave_one_liners


Changes in uncrustify-0.28 (06-Oct-2006)
-------------------------------------------------------------------------------
 - Fix D range array detection a[1..4] => a[1 .. 4]
 - Fix D delegate variable aligning
 - More documentation updates (thanks Dirk!)
 - New options: nl_after_semicolon and nl_after_open_brace


Changes in uncrustify-0.27 (23-Sep-2006)
-------------------------------------------------------------------------------
 - Improve template detection again (allow CT_TYPE in a template)
 - Fix bad formatting in "[ABC * 123]" and "[0xf & *val]"
 - Add --replace option to convert files in-place
 - Use a map for the options
 - Major configuration/option cleanup
 - add -o option to write to a file instead of stdout


Changes in uncrustify-0.26 (09-Sep-2006) (removed a number from the version)
-------------------------------------------------------------------------------
 - Fix preprocessor labeling WRT comments
 - Fix an indenting problem
 - Add sp_after_byref
 - Fix alignment of global variable definitions
 - Fix detection of deref inside squares: a[*p]
 - Fix a weird indenting bug
 - Fix D template ! spacing
 - Add sp_after_operator
 - Add nl_template_class
 - Add start to detailed docs inside the program
 - Add --prefix and --suffix command line args
 - Add align_enum_equ_thresh and fix align_enum_equ_span
 - Fix formatting of function typedefs
 - Add indent_member
 - Simplify the indenting code a bit
 - Improve type_cast stuff (ie, dynamic_cast<> or static_cast<>) and templates


Changes in uncrustify-0.0.25 (26-Aug-2006)
-------------------------------------------------------------------------------
 - Add sp_after_ptr_star, sp_before_ptr_star, sp_between_ptr_star
 - Fix D tokenizing for numbers and strings
 - Fix a bug with cast detection and with nl_after_func_proto
 - Improve template detection
 - Rename nl_bool_pos to pos_bool
 - Add pos_class_colon
 - Add indent_class_colon
 - Add nl_class_init_args
 - Add nl_collapse_empty_body
 - Add indent_square_nl


Changes in uncrustify-0.0.24 (05-Aug-2006)
-------------------------------------------------------------------------------
 - Add initial PAWN support (thanks to Derek Evan Mart for testing and motivation!)
 - Fix parsing of numbers like 10.0
 - Fix double negative (- -x) vs (--x)
 - Add ability to convert C++ (//) comments into C (/* */) comments
 - Fix usage of indent_columns; output_tab_size is only needed if using tabs
 - Add first small step in code width handling
 - New options: sp_fparen_brace, sp_macro, sp_marco_func,
   nl_elseif_brace, mod_pawn_semicolon, cmt_cpp_to_c, cmt_cpp_group,
   cmt_cpp_nl_start, cmt_cpp_nl_end, sp_after_tag


Changes in uncrustify-0.0.23 (22-Jul-2006)
-------------------------------------------------------------------------------
 - Fix some crash bugs and some formatting problems
 - Fix Windows CRLF issues (binary vs text mode)
 - Add indent_class and indent_namespace
 - Add nl_class_brace and nl_namespace_brace
 - Add handling of operator stuff in CPP
 - Improve the test script a bit
 - Add sp_inside_fparens
 - Add ability to define types in the config file
 - Started work on improving #ifdef handling by evaluating the preprocessor


Changes in uncrustify-0.0.22 (15-Jul-2006)
-------------------------------------------------------------------------------
 - Implement nl_max, nl_before_block_comment, nl_after_func_body,
    nl_after_func_proto, nl_after_func_proto_group
 - Improve detection of function prototypes
 - Improve marking of function prototype-related tokens
 - Improve variable definition aligning
 - fix align_var_def threshold
 - Improve handling of "private:" style stuff
 - Handle types with "::" in them
 - Add preprocessor spacing and indenting
 - Fix tab indenting style 1 (tab indent, space align)
 - Improve multi-line comment formatting


Changes in uncrustify-0.0.21 (01-Jul-2006)
-------------------------------------------------------------------------------
 - Clean up some memory leaks & uninitialized variables
 - Add option to process multiple files at once
 - Change the newlines values from [UNIX, DOS, MAC] to [LF, CRLF, CR]
 - Properly mark the parens for functions
 - Implement control over the format of the function prototypes and definitions
 - Update configuration.txt


Changes in uncrustify-0.0.20 (10-Jun-2006)
-------------------------------------------------------------------------------
 - Fix cast on a sizeof: (INT32)sizeof(x)
 - Fix this: "#define SOME_JUNK /*lint -e123 */(const mytype_t *)-1"
 - Don't align function typedefs (fixed again)
 - Finally fix the DOS and MAC line-ending support
 - Add line-ending autodetection
 - Add Windows build support


Changes in uncrustify-0.0.19 (27-May-2006)
-------------------------------------------------------------------------------
 - Fix C/C++/C# casts
 - Improve D casts


Changes in uncrustify-0.0.18 (12-May-2006)
-------------------------------------------------------------------------------
 - Add nl_bool_pos to move boolean ops between eol and sol
 - Improve C99 array initializer aligning/formatting
 - Replace nl_eat_start, nl_eat_end, and nl_eof_min with nl_start_of_file,
   nl_start_of_file_min, nl_end_of_file, and nl_end_of_file_min


Changes in uncrustify-0.0.17 (03-May-2006)
-------------------------------------------------------------------------------
 - Add nl_eat_start to remove newlines at the start of the file
 - Add nl_eat_end to remove newlines at the end of the file
 - Add nl_eof_min to set the minimum number of newlines at the end of file
 - Add newlines setting to configure the newline output
 - Add '-q' command line option to turn off logging
 - Fix bug in nl_func_var_def_blk handling


Changes in uncrustify-0.0.16 (21-Apr-2006)
-------------------------------------------------------------------------------
 - Add a stack alignment helper class
 - Improve typedef formatting
 - Add aligning thresholds for typedefs and assignments
 - update the automake/autoconf stuff


Changes in uncrustify-0.0.15 (14-Apr-2006)
-------------------------------------------------------------------------------
 - Switch to C++
 - Improve C++ template formatting
 - Improve C++ class handling


Changes in uncrustify-0.0.14 (09-Apr-2006)
-------------------------------------------------------------------------------
 - Read from stdin if no file is specified
 - Build on OS X


Changes in uncrustify-0.0.13 (07-Apr-2006)
-------------------------------------------------------------------------------
 - Rewrite the indent code
 - Fix a bunch of small problems with C casts
 - Rename a few files
 - Add more tests


Changes in uncrustify-0.0.12 (30-Mar-2006)
-------------------------------------------------------------------------------
 - Add support for D template format "Foo!(int,char)"
 - Fix a format bug in a log
 - Fix elipsis spacing (remove space before elipsis)
 - Don't use getopt as it isn't all that portable (at least for QNX)
 - Rename some files
 - Bugfix: don't add virtual braces on the same line as a preprocessor
 - Bugfix: clean up indexed array aligning


Changes in uncrustify-0.0.11 (27-Mar-2006)
-------------------------------------------------------------------------------
 - fix brace analysis on else statement
 - allow options to depend on other options
 - set the parent for case braces
 - handle/indent the C++ class colon thingy
 - handle C++ constructors and function defs
 - special handling for '::' operator
 - implement case indenting
 - handle cout '<<' indenting
 - handle DOS and MAC line endings in multiline comments
 - rename some indent options
 - fix ifndef handling
 - fix volatile handling
 - fix private/public/protected 'label' handling
 - alternate punctuators are also part of C++
 - handle C++ wide L"strings"
 - improve C# get/set handling
 - fix spacing bug "a++;" vs "a ++;" due to statement start misdetect
 - add nl_assign_brace
 - fix parent of vbrace close
 - more test enhancements


Changes in uncrustify-0.0.10 (22-Mar-2006)
-------------------------------------------------------------------------------
 - Complete rewrite of tokenizer and brace parser
 - Added support for D nested comments
 - Fixed some virtual brace bugs
 - Added some documentation for the brace parsing stuff
 - Add more tests to improve coverage (still lacking)


Changes in uncrustify-0.0.9 (18-Mar-2006)
-------------------------------------------------------------------------------
 - Major enhancements for D
 - Add handling for special "[]" sequence for C#/D
 - add some more tests


Changes in uncrustify-0.0.8 (13-Mar-2006)
-------------------------------------------------------------------------------
 - update TODO list
 - add a threshold for brace removal
 - improve brace removal
 - keep track of whether a token follows a tab
 - add option to preserve non-indenting tabs
 - major keyword and operator cleanup for C++, C#, D, and Java
 - add 'string' variants for ARITH, COMPARE, etc
 - add C# get/set detection
 - add template <type> detection
 - add colon handling for class stuff and anonymous bitfields
 - pop the whole indent stack when leaving a preprocessor
 - fix embedded return handling in C#, ie: [ this should return negative ]
 - fix a problem with the ifdef frame stack (still a problem lurking...)
 - handle literal strings (C#)
 - handle non-keyword words (C#) -- example: @if @switch
 - set the parent on 'do' braces
 - handle C# #region preprocessor stuff
 - partially implement align on tabstop
 - fix virtual brace spacing (no more "else return;" => "elsereturn;")
 - add some more tests

