uncrustify package from uncrustify repo

uncrustify

Package Summary

Tags No category tags.
Version 0.61.20150413
License GNU GENERAL PUBLIC LICENSE Version 3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ament/uncrustify.git
VCS Type git
VCS Version ardent
Last Updated 2017-09-29
Dev Status MAINTAINED
Released RELEASED

Package Description

Package a newer version of uncrustify (0.61+, b6593c1, April 14th 2015).

Additional Links

Maintainers

  • Dirk Thomas

Authors

No additional authors.

Travis CI AppVeyor Coverity


Uncrustify

A source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA

Features

  • highly configurable - 590 configurable options as of version 0.65
  • add/remove spaces

    • sp_before_sparen: Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc.
    • sp_compare: Add or remove space around compare operator '<', '>', '==', etc
  • add/remove newlines

    • nl_if_brace: Add or remove newline between 'if' and '{'
    • nl_brace_while: Add or remove newline between '}' and 'while' of 'do' statement
  • add/remove blanklines

    • eat_blanks_before_close_brace: Whether to remove blank lines before '}'
    • nl_max: The maximum consecutive newlines (3 = 2 blank lines)
  • indent code

    • indent_switch_case: indent_switch_case: Spaces to indent 'case' from 'switch'
    • indent_class_colon: Whether to indent the stuff after a leading base class colon
  • align code

    • align_func_params: Align variable definitions in prototypes and functions
    • align_struct_init_span: The span for aligning struct initializer values (0=don't align)
  • modify code

    • mod_full_brace_for: Add or remove braces on single-line 'for' statement
    • mod_paren_on_return: Add or remove unnecessary paren on 'return' statement

Here is an example configuration file, and here is a before and after C source example. That should give you a pretty good idea of what Uncrustify can do.


Binaries

Pre compiled binaries for Windows can be downloaded here.

Build

CMake is a tool that generates build systems (Makefiles, Visual Studio project files, Xcode project files and others).

To generate a build system for Uncrustify using CMake, create a build folder and run CMake from it:

$ mkdir build
$ cd build
$ cmake ..

(Use cmake -G Xcode .. for Xcode)

Then use the build tools of your build system (in many cases this will simply be make, but on Windows it could be MSBuild or Visual Studio). Or use CMake to invoke it:

$ cmake --build .

If testing is enabled, CMake generates a test target, which you can build using your build system tools (usually make test). This can also be invoked using CTest:

$ ctest -V -C Debug

There is also an install target, which can be used to install the Uncrustify executable (typically make install).

A note on CMake configurations

Some build systems are single-configuration, which means you specify the build type when running CMake (by setting the CMAKE_BUILD_TYPE variable), and the generated files then build that configuration.

An example of a single-configuration build system are Makefiles. You can build the Release configuration of Uncrustify (from the build folder) with:

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

Other build systems are multi-configuration, which means you specify the build type when building.

An example of a multi-configuration build system are Visual Studios project files. When you open the project in Visual Studio, you can select which configuration to build. You can also do this while building from the command line with cmake --build . --config Release.

Bugs

Post any bugs to the issue tracker found on the projects GitHub page: https://github.com/uncrustify/uncrustify/issues

Please include the following with your issue: - a description of what is not working right - input code sufficient to demonstrate the issue - expected output code - configuration options used to generate the output

More about this is in the ISSUE_TEMPLATE

Known problems

Look at the Wiki

Contribute

If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome! Here are some areas that need attention:

  • Patches for Objective-C support. We really need someone who knows this language as it has more than plenty open issues. A good starting point would be to integrate changes made in the Unity fork
  • Test Java support and provide feedback (or patches!)
  • Test Embedded SQL to see what works
  • A logo of some sort
  • Anything else that you want to do to make it better?

A note about pull requests

Firstly take a look at the CONTRIBUTING.md

Currently we have two continuous integration systems that test your PRs, TravisCI and Appveyor. Tested are the test cases, the formatting of the code base and the output of the command line options.

Test cases can be found in the tests/ directory. Every file ending with .test is a test set. Inside each line with these components is a single test: testNr[!] testConfigFileName testInputFileName [lang]

The configuration file testConfigFileName has to be located inside tests/config, the input file testInputFileName inside tests/input/<testSetName>/, and expected results file inside the tests/output/<testSetName>/ directory. Expected results have the following naming convention: testNr-testConfigFileName.

Optionally a ! can follow the testNr to enable a custom rerun configuration. Rerun configurations need to be named like this: testConfigFileName(without extension)+.rerun+.exension

Also, optionally a language for the input can be provided with lang.

The codebase has to be formatted by the options set up in forUncrustifySources.cfg. Failing to format the sources correctly will cause TravisCI build failures.

The Command line interface (CLI) output is tested by the scripts/Test_more_Options.sh script. It operates on the files inside this directories: - scripts/Config/ - scripts/Output/ - scripts/Input/ - scripts/More_Options_to_Test/

If a PR is altering the CLI output, files inside those directories might need to be manually updated. This often happens when options are added, removed or altered. Keep in mind that the version string line (example: # Uncrustify-0.65_f) of outputs from commands like --show-config should be replaced with a blank line.

Portability

We are pretty sure that nothing OS-specific is used in the code base. The software has been previously tested on the following operating systems: - Linux - QNX - OS X - FreeBSD, NetBSD, OpenBSD - Sun Solaris 9 - Windows XP (binary available)


Running the program

NOTE This application works reasonably well but it has bugs. Do not apply it on your whole codebase without checking the results!

Here are ways to run it:

$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
$ uncrustify -c mystyle.cfg somefile.c
$ uncrustify -c mystyle.cfg --no-backup somefile.c
$ uncrustify -c mystyle.cfg *.c
$ uncrustify -c mystyle.cfg --no-backup *.c

The -c flag selects the configuration file. The -f flag specifies the input file. The -o flag specifies the output file. If flag -f is used without flag -o the output will be send to stdout.

Alternatively multiple or single files that should be processed can be specified at the command end without flags. If the flag --no-backup is missing, every file saved with the initial name and an additional suffix (can be changed with --suffix).

For more options descriptions call:

$ uncrustify -h

Configuring the program

Uncrustify usually reads configuration files that are passed via the -c flag. If the flag is not provided Uncrustify will try to find a configuration file via the UNCRUSTIFY_CONFIG environment variable or a file with the name uncrustify or .uncrustify in your home folder.

To get a list of: - all available options use:

  uncrustify --show-config

  • all available options in a usable configuration file format use:
  uncrustify --update-config

or

  uncrustify --update-config-with-doc

As the names suggest both options can produce output that adds newly introduced options to your old configuration file. For this your old configuration file has to be passed via the -c flag:

  uncrustify --update-config-with-doc -c path/to/your.cfg

Example configuration files that can be used as a starting point can be found in the etc/ directory (such as ben.cfg).

Modify to your liking. Use a quality side-by-side diff tool to determine if the program did what you wanted. Repeat until your style is refined.

To ease the process a bit, some 3rd party tools are available: - Universal Indent GUI - A cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify. - uncrustify_config - A web configuration tool based on Uncrustifys emscripten interface. - UncrustifyX - Uncrustify utility and documentation browser for Mac OS X

CHANGELOG
Change highlights in uncrustify-0.65 (May 2017)
-------------------------------------------------------------------------------

New options:
  - nl_before_if_closing_paren                     May 12
  - sp_after_type_brace_init_lst_open              May 09
  - sp_before_type_brace_init_lst_close            May 09
  - sp_inside_type_brace_init_lst                  May 09
  - sp_type_brace_init_lst                         May 09
  - nl_type_brace_init_lst                         May 09
  - nl_type_brace_init_lst_open                    May 09
  - nl_type_brace_init_lst_close                   May 09
  - mod_sort_oc_property_class_weight              May 05
  - mod_full_brace_nl_block_rem_mlcond             Mar 17
  - sp_inside_newop_paren_open                     Mar 13
  - sp_inside_newop_paren                          Mar 13
  - sp_after_newop_paren                           Mar 13
  - sp_inside_newop_paren_close                    Mar 13
  - pp_ignore_define_body                          Feb 18
  - sp_enum_colon                                  Feb 13
  - nl_enum_class                                  Feb 13
  - nl_enum_class_identifier                       Feb 13
  - nl_enum_identifier_colon                       Feb 13
  - nl_enum_colon_type                             Feb 13
  - indent_param                                   Feb 01
  - include_category_0                             Jan 24
  - include_category_1                             Jan 24
  - include_category_2                       2017  Jan 24
  - force_tab_after_define                   2016  Dec 29
  - nl_max_blank_in_func                           Nov 26
  - indent_ternary_operator                        Nov 24
  - indent_using_block                             Oct 20

New:
  - emscripten interface
  - removal of autogen / configure build
  - list options that are now AT_UNUM type

Removed option:
  - dont_protect_xcode_code_placeholders

Removed MS calling convention keywords:
  - __cdecl, __clrcall, __fastcall, __stdcall, __thiscall, __vectorcall

Bugfix:
 - Issue # 324, 398, 404, 497, 525, 575, 633, 638, 643, 646, 663, 666,
     679, 682, 687, 726, 752, 753, 793, 815, 825, 842, 857, 859, 869, 870,
     889, 902, 916, 917, 928, 935, 938, 940, 972, 1002, 1005, 1020, 1030,
     1032, 1041, 1068, 1117, 1139 are fixed
 - Proposal #381, 876 are adopted.

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



Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged uncrustify at answers.ros.org