Artistic Style - Release Notes

# Artistic Style Release Notes

### Artistic Style 2.06 (Pending)

- Add new Objective‑C options "pad-return-type" (-xq) and "unpad-return-type" (-xr).
- Add new option pad-comma (#100).
- Add removing spaces before a comma (#100).
- Improve align-method-colon to applied to Objective‑C method calls.
- Change align-method-colon short first line to align on the longest line instead of the first line.
- Fix attaching "if" statements to a #else preprocessor directive (#356).
- Fix not clearing global variables for a new file (#364).
- Fix C# to recognize "using" as a header.
- Fix C# to always recognize "forever" as a header.
- Fix end of line comments for "pad-method-prefix" and "unpad-method-prefix".
- Fix end of line comments for "pad-method-colon".
- Refactoring:
  - Consolidate scattered ASFormatter conditional statements into a padParenObjC method.
  - Portability changes for additional compiler support (#352).

### Artistic Style 2.05.1 (December 2014)

- Fix incorrectly reporting files containing disabled formatting as being formatted.
- Fix incorrect handling of quoted arguments in the options file (#321).
- Fix error in identifying an enum return type as an enumeration (#322, 323).
- Fix error in identifying an enum argument as an enumeration (#327).
- Fix recognition of Qt keywords when used as variables in C++ (#329).
- Fix recognition of a pointer in a C++ cast (#316).
- Fix removing trailing whitespace after a changed pointer or reference cast.

### Artistic Style 2.05 (November 2014)

- Add new bracket style option "style=vtk" (#155).
- Add new option "indent-preproc-block" to indent blocks of preprocessor directives (#21, #114, #229, #242, #294).
- Add new option, "dry-run", to run AStyle without updating the files (#184, #285).
- Add new options, "html" (-!") and "html=###", to display the HTML help documentation in the default browser.
- Add tags "*INDENT-OFF*" and "*INDENT_ON*" to disable formatting of source code blocks (#2, #47, #55, #78, #110, #176).
- Add tag *NOPAD* to disable selected formatting on a single line.
- Add '__attribute__ ((visibility ("default")))' to Linux exported functions.
- Remove option "style=ansi" and make it depreciated (#146).
- Remove fix for broken 'case' statements from release 2.02.1, Nov 21, 2011.
- Improve Korean translation (#256).
- Change shared libraries to include the version number as part of the file name (#264)
- Change "help" display to stdout to allow piping and redirection (#63).
- Change "version" display to stdout.
- Change headers to include foreach, forever, Q_FOREACH, and Q_FOREVER (#98, #154).
- Change compiler definition ASTYLE_NO_VCX (no Visual Studio exports) to ASTYLE_NO_EXPORTS.
- Change shared library error handler argument from "char*" to "const char*".
- Fix not recognizing noexcept, interrupt, and autoreleasepool as pre-command headers (#225, #259).
- Fix formatting of C++11 uniform initializer brackets (#253, #257, #260, #284).
- Fix to not automatically space pad C++11 uniform initializer brackets (#275).
- Fix formatting of enums with leading commas (#159, #179, #270).
- Fix formatting of logical && operator in class initializers (#290).
- Fix flagging a 'const' variable as a 'const' method (#275).
- Fix piping and redirection adding an extra character to the output (#245, #252, #305).
- Fix "indent-modifiers" to attach class access modifiers to Horstmann style brackets.
- Fix ASFormatter to correctly recognize the end of a C++ raw string literal (#261).
- Fix to recognize C++11 "enum class" as an enum (#303).
- Fix indent of C++11 "noexecpt" statements within a class (#260, #304).
- Fix not resetting templateDepth when a template was not found (#295).
- Fix formatting of multiplication in a block paren (#144).
- Fix whitespace padding when formatting an rvalue references (#297).
- Fix to recognize an rvalue reference without a name (#265).
- Fix to not identify an operator overload method as a calculation (#296).
- Fix concatenating multiplication with a pointer dereference (#291).
- Fix recognition of a pointer dereference following a question mark (#213).
- Fix extra space after a trailing reference type (#300).
- Fix _asm blocks not being identified as a block opener and the variable not cleared on exit (#163).
- Fix indentation of line comments before a "class" opening bracket.
- Fix indentation of line comments before a "namespace" opening bracket.
- Fix isBracketType() method to correctly process a NULL_TYPE.
- Fix unpad-paren to recognize additional variables (#43, #132, #143).
- Fix indentation of C# "let" statements.
- Fix a few omissions with "fill-empty-lines".
- Fix file read to read 64K blocks of data.
- Refactor to un-obfuscate (clarify) the code, and improve design and decomposition:
  - Extract class Utf8_16 from ASConsole.
  - Replace Linux dependency on iconv with a Utf8_16 class for ASLibrary.
  - Move global "using" statements to the astyle namespace in astyle.h and ASLocalizer.h.
  - Move shared library declarations from astyle.h to astyle_main.h.
  - Move indentable macros from ASEnhancer to ASResource and create static pairs.
  - Simplify ASBeautifier procedure to identify the colon (:) type.
  - Major refactoring in ASBeautifier to create separate variables for an enum, a class statement and a class initializer.
    This was needed to fix the processing of C++11 uniform initializers in a class initializer.
  - Minor changes to ASFormatter and ASBeautifier based on results of the Clang analyzer.
  - Change several methods in astyle_main to "const".

### Artistic Style 2.04 (November 2013)

- Add new programming language Objective‑C.
- Add new bracket style option "style=google" (-A14).
- Add new option "indent-preproc-cond" (xw) to indent preprocessor conditional statements (#118).
- Add new bracket modify options "attach-namespaces", "attach-classes", "attach-inlines", and "attach-extern-c".
- Add new option "indent-modifiers" (-xG) to indent class access modifiers one-half indent (#130).
- Add new option "remove-brackets" (-xj) to remove brackets from single line conditional statements.
- Add new option "remove-comment-prefix" (-xp) to remove the leading '*' from multi-line comments.
- Add new option "align-method-colon" (-xM) to align Objective‑C method colons.
- Add new option "pad-method-colon=#" (-xP#) to space pad Objective‑C method colons.
- Add new options "pad-method-prefix" (-xQ), and "unpad-method-prefix" (-xR) to pad the Objective‑C "-" and "+" method prefix.
- Add new dll entry point AStyleMainUtf16 for processing C# UTF-16 strings.
- Add formatting of C++11 raw string literals (#222).
- Add "style=knf" as an alternative to "style=linux".
- Remove depreciated "bracket=" options.
- Improve recognition and formatting of pointers and references (#174 and other changes).
- Improve the recognition of block-opening brackets.
- Improve code using a static code analyzer (#195).
- Change "max-code-length" to include Objective‑C methods.
- Change "indent-elseifs" and "break-blocks" to look ahead only if in command-type brackets (speed improvement).
- Fix linux bracket styles to break the opening bracket in inline function definitions (#185).
- Fix indentation of switch block comments (#164).
- Fix enums to indent with tabs when requested (#92, #121).
- Fix formatting of rvalue reference without a name in a declaration (#219).
- Fix "pad-first-paren-out" to not pad if the following parens are empty (#232).
- Fix end-of-statement reset when comments follow closing bracket.
- Fix the ASBeautifier active and waiting stacks to delete the ASBeautifier objects before deleting the pointers.
- Fix ASBeautifier "init" to delete the tempStack vectors before deleting the tempStack.
- Fix Linux piping problem by changing "cin" input to build a stringstream before formatting.
- Fix to identify the correct bracket type when 'extern "C"' is part of the enum definition.
- Fix to clear 'extern "C"' variables when the block is closed.
- Fix unindented 'extern "C"' to not indent when in a #else preprocessor directive.
- Fix not always correctly formatting linux type brackets for enum blocks.
- Fix align-pointer in a range-based for statement (#217).
- Fix pointer-reference argument alignment to correctly position a following comment (#235).
- Fix to not attach a bracket to a line ending in a backslash '\' (#186, #214, #220).
- Fix to recognize templates using multiple lines (#85, #87, #136).
- Fix formatting of template continuation lines (#85, #87, #136).
- Fix to allow '^' as an array operator (#233).
- Fix an "enum" argument being mistaken for an enumeration (#211).
- Fix to recognize a non-instatement array after a "},{" sequence.
- Fix "pad-oper" to not pad before a following comma.
- Fix recognition of an operator when the calculation contains a bitwise "not" '~' (#166).
- Fix to allow a preprocessor statement within a preprocessor define (#238).
- Fix preprocessor comparison to check for whole words (#246).
- Fix "add-brackets" when a line contains more than one paren pairs (#181).
- Fix to allow Mac old CR line endings in the options file (#129).
- Refactor to aid debugging and improve design and decomposition:
  - Move ALL preliminary indentation calculations to computePreliminaryIndentation() in ASBeautifier.
  - Move calculation of 'force tab' indents to preLineWS() in ASBeautifier.
  - Combine methods init() and init(ASSourceIterator*) in ASBeautifier.
  - Extract method adjustParsedLineIndentation() in ASBeautifier.
  - Extract method parseCurrentLine() in ASEnhancer.
  - Remove astyle_main.cpp unused functions getFilesUnchanged, getOptionsFileRequired, and setOptionsFileRequired.

### Artistic Style 2.03 (April 2013)

- Add new option "indent=force-tab-x=#" (-xT#) to allow a tab length that different from the indent length (3430662).
- Add new option, "pad-first-paren-out" (xd), to pad only the first paren in a series on the outside (3350356).
- Add new option "max-code-length=#" (-xC#) to limit the length of code on a line.
- Add new option "break-after-logical" (-xL) to modify a "max-code-length" line break for conditionals.
- Add new option "close-templates" (-xy) to close whitespace in the angle brackets ">" of template definitions.
- Add formatting of C++ rvalue references (&&) using the existing "align-pointer" and "align-reference" options.
- Add formatting of C++/CLI managed pointers (the "^" character) to the "align-pointer" option.
- Add translations for Dutch, Finnish, Italian, Japanese, Korean, Polish, Portuguese, Russian, Swedish, and Ukrainian.
- Remove byte-order-mark from ASLocalizer.cpp.
- Change the short option for delete-empty-lines from "xd" to "xe".
- Change the ASTYLE_LIB option to remove __declspec for a Visual C static library when ASTYLE_NO_VCX is also declared.
- Change to remove any space padding in a pointer to pointer (**).
- Fix "break-elseifs" to format one-line "if" and "else" statements the same as when the option is not used.
- Fix "break-elseifs" to break else-if statements when "keep-one-line-statements" also is requested.
- Fix "break-elseifs" to correctly format comments preceding the else-if.
- Fix C# not correctly identifying lambda expressions as a command-type bracket.
- Fix C# preprocessor statements adding extra empty lines when "break-blocks" is used.
- Fix C# padding "get" and "set" statements that are not headers when "break-blocks" is used.
- Fix C# to recognize the "#line" statement.
- Fix C++11 standard for range-based "for" loops (3458402, 3480095).
- Fix C++11 standard for "enum" with a base type (3458402).
- Fix C++11 standard for template closing angle brackets (no space required) (3495192).
- Fix C/C++ keyword 'extern "C"' in a preprocessor causing an extra indent (1514844, 2953388, 2963382, 3093842, 3467479).
- Fix breaking after a switch "default" statement when "break-elseifs" is used without "keep-one-line-statements" (3559365).
- Fix in-statement arrays to indent correctly when they exceed the "max-instatement-indent".
- Fix quote continuation sometimes being processed as a preprocessor directive (3445475).
- Fix formatting of some conditional statements on a continuation-line.
- Fix Java formatting of generics with wildcards (3428140).
- Fix formatting of pointers and references to work with the new "max-code-length" option.
- Fix formatting of pointers and references after a template close.
- Fix formatting of empty attached brackets (3505002).
- Fix C comments beginning a line breaking if they follow a semi-colon (3502700).
- Fix "pad-header" not padding "return" and "throw" statements (3509134).
- Fix recognition problems with templates.
- Fix "struct" return type being mistaken for a struct.
- Fix "pad-oper" in java for-each loop.
- Fix recognition of a macro multi-line comment (3414970).
- Fix bracketTypeStack entries added by #if and #else if the # is separated from the word.
- Fix C++ breaking a line on an access modifier in a one-line block when "keep-one-line-blocks" is used.
- Fix memory leak when "ascii" option is used.
- Fix memory leak when a preprocessor statement is used without a closing #endif.
- Fix preprocessor directive to allow compiling with mingw-x64 compiler.
- Fix redirection on Windows so it does not hang when Linux line ends are used (3514712).
- Fix redirection on Linux to output the correct line ends (3514712).
- Fix non-portable return value on locale name (3452574).
- Fix assert errors caused by not checking the text length on the return from peekNextText().
- Fix spelling of "depreciated" in help message (3454735).
- Refactor to improve design and decomposition:
  - Fix warning messages from Visual Studio static code analysis.
  - Fix warning messages from cppcheck, except for constructor uninitialized variables (false positive).
  - Remove astyle_main.h dependency from ASLocalizer.h
  - Remove appendChar() from the inline functions.
  - Extract methods for pointer or reference alignment in ASFormatter.

Previous releases are available in the Release Notes Archives.