Index: src/CodeBlocks.cbp
===================================================================
--- src/CodeBlocks.cbp	(revision 7913)
+++ src/CodeBlocks.cbp	(working copy)
@@ -264,6 +264,7 @@
 					<Add option="-DBUILDING_PLUGIN" />
 					<Add option="-DWXMAKINGDLL_PROPGRID" />
 					<Add option="-DwxPG_USE_WXMODULE=0" />
+					<Add option="-DASTYLE_LIB" />
 					<Add directory="include" />
 					<Add directory="plugins\astyle\astyle" />
 				</Compiler>
Index: src/plugins/astyle/astyle/news.html
===================================================================
--- src/plugins/astyle/astyle/news.html	(revision 7913)
+++ src/plugins/astyle/astyle/news.html	(working copy)
@@ -33,27 +33,76 @@
         Artistic Style 2.03&nbsp; (pending)</h3>
 
     <p>
+        A new option, "indent=force-tab-tab=#" or "xT#", will allow force tab indents with a tab length that is different
+        than the indent length. See the documentation for details.</p>
+    <p>
         A new option, "max-code-length=#" or "xC#", will limit the length of code on a line. A new option "break&#8209;after&#8209;logical",
         or "xL", will modify a line break for conditionals. See the documentation for details.</p>
     <p>
+        A new option, "pad-first-paren-out" or "xd", will pad only the first paren in a seies on the outside. See the
+        documentation for details.</p>
+    <p>
+        The short option for delete-empty-lines has changed from "xd" to "xe".
+    </p>
+    <p>
+        Closing the ending angle brackets of templates
+        is now allowed by the C++11 standard.. A new option, &quot;close-templates&quot; or-xy, will close the whitespace in the angle brackets of template definitions. Be 
+        sure your compiler supports this before making the changes.</p>
+    <p>
+        The C/C++ keyword 'extern "C"' in a preprocessor no longer causes an extra indent.
+    </p>
+    <p>
+        Formatting of C++/CLI managed pointers (the &#39;^&#39; character) has been added to the &quot;align-pointer&quot;
+        option.
+    </p>
+    <p>
+        The byte order mark (BOM) has been removed from ASLocalizer.cpp for all distributions. The encoding of the file
+        is UTF-8.
+    </p>
+    <p>
         Translations have been added for Dutch, Finnish, Italian, Japanese, Korean, Polish, Portuguese, Russian, Swedish,
-        and Ukrainian. The translations were done with an automated
-        translation program, Google Translate, so they may not be the best translation possible. The translations are
-        at the end of ASLocalizer.cpp in the form of an English&#8209;Translation pair. If you correct a translation,
-        send the source as a bug report and it will be included in the next release. To add a language, see "Internationalization"
-        in the "General Information" section of the documentation. Send the addition as a bug report and it will be included
-        in the next release.</p>
+        and Ukrainian. The translations were done with an automated translation program, Google Translate, so they may
+        not be the best translation possible. The translations are at the end of ASLocalizer.cpp in the form of an English&#8209;Translation
+        pair. If you correct a translation, send the source as a bug report and it will be included in the next release.
+        To add a language, see "Internationalization" in the "General Information" section of the documentation. Send
+        the addition as a bug report and it will be included in the next release.
+    </p>
     <p>
-        Breaking after a "case" statement when "break-elseifs" is used has been fixed. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-        The crash caused by formatting a pointer to pointer (**) that starts a new line has been fixed.
+        The "Developer Information" page has a new example and download for calling Artistic Style from a Python script.
+        It will run with both Python 2 and Python 3. Using Python 3 shows an example of formatting a Unicode string with
+        Artistis Style. The Unicode strings must be encoded to UTF-8 before formatting and decoded back to Unicode afterward.
+        The example script shows the technique for doing this. It also shows how to set up the function pointers and allocate
+        memory in Python.
     </p>
+    <p>
+        Thanks to Christopher Sean Morrison, Keith OHara, louis6g, and J for their contributions.
+    </p>
 
+    <h4>
+        Python IDE</h4>
+
+    <p>
+        If you use Visual Studio on Windows, it can now be used for Python development. <a href="https://pytools.codeplex.com/"
+            target="_blank" title="open new window">Python Tools for Visual Studio</a> (PTVS) is a free and open source
+        plug-in for Visual Studio 2010 that supports CPython and IronPython. Other interpreters such Jython and PyPy
+        can be added. It can be easily changed between Python versions or different interpreters. But the best thing is
+        the Visual Studio debugging support using the .NET debugger and the normal Visual Studio debugger. It enables
+        you to set break points, step through functions, change the current statement, inspect local variables, and perform
+        other operations while debugging.</p>
+    <p>
+        It is best to use it with a project file, a minor irritation for single page scripts. And there are some minor
+        bugs. But overall it works quite well.</p>
+    <p>
+        PTVS does not install into VS Express Editions (Express editions aren't pluggable). However PTVS plus a free VS
+        Integrated Shell essentially gives you a "VS Python Express". The PTVS installation instructions give the details.</p>
+
     <h3>
         Artistic Style 2.02&nbsp; (May 2011)</h3>
 
     <p>
         With a new Artistic Style release some unchanged source files will be formatted because of changes to Artistic
         Style. You may want to format your source before making program changes in order to bring it up to date.</p>
+
     <h4>
         Release 2.02.1 - November 2011</h4>
 
@@ -63,6 +112,7 @@
         have been fixed. The "case" statements that have been incorrectly broken will be fixed in this release. Pointers
         and references are now processed for C# files. See the "Release Notes" for more information and additional changes.
     </p>
+
     <h4>
         <strong>The following information is for the original 2.02 release.</strong></h4>
 
@@ -74,9 +124,9 @@
         console build and are optional for the library builds. It contains language translations for several of the most
         common users of Artistic Style. The method used was adapted from the Gnu "gettext" method.</p>
     <p>
-        The translation to use is determined from the User Locale for Windows and the LANG environment variable for other systems.
-        The translation will be done automatically from these settings. If no translation is available it will default
-        to English.</p>
+        The translation to use is determined from the User Locale for Windows and the LANG environment variable for other
+        systems. The translation will be done automatically from these settings. If no translation is available it will
+        default to English.</p>
     <p>
         A new option, "ascii" or "I", will display the text in English regardless of your system settings. This option
         must be input from the command line and not an option file. See the documentation for details.</p>
@@ -115,12 +165,13 @@
     </ul>
     <p>
         There is a new "Bracket Style" option "style=pico" or "A11". It uses run-in brackets, like Horstmann style, and
-        attaches the closing bracket to the last line in the block. It sets the options "keep one line blocks" and
-        "keep one line statements". This is a very compact style and is a good style for small monitors.</p>
+        attaches the closing bracket to the last line in the block. It sets the options "keep one line blocks" and "keep
+        one line statements". This is a very compact style and is a good style for small monitors.</p>
     <p>
         Another new "Bracket Style" option is "style=lisp" or "style=python" or "A12". It uses attached brackets, like
-        Java style, and attaches the closing bracket to the last line in the block. It sets the option "keep one line statements". This style makes indentation the only way of distinguishing blocks
-        of code, but has the advantage of containing no uninformative lines. Like Pico, it is also a very compact style.</p>
+        Java style, and attaches the closing bracket to the last line in the block. It sets the option "keep one line
+        statements". This style makes indentation the only way of distinguishing blocks of code, but has the advantage
+        of containing no uninformative lines. Like Pico, it is also a very compact style.</p>
     <p>
         The option "brackets=horstmann" has been removed. Instead use "style=horstmann" or "A9". The short option "g"
         is now equivalent to the new "brackets=run-in". Run-in brackets are used for both Horstmann and Pico styles.</p>
@@ -189,8 +240,7 @@
     <p>
         In the "Enhancements" group there were three items with multiple requests. The most frequent request by far was
         to enforce a maximum line length. This is also the oldest request in the bug reports. Another item with multiple
-        requests
-        was to disable/enable Artistic Style formatting on request within source files. This is the second oldest
+        requests was to disable/enable Artistic Style formatting on request within source files. This is the second oldest
         request in the bug reports. A third item with multiple requests was to customize namespace brackets independent
         of the requested bracket style. I will try to address these in the next release.</p>
     <p>
@@ -202,10 +252,11 @@
         <li>Over 75% of the survey uses Artistic Style to format entire projects.</li>
         <li>About one&#8209;third of the Windows C++ users use Artistic Style for Managed C++.</li>
         <li>The most popular option is add&#8209;brackets (60%), which was just recently added.</li>
-        <li>The attach&#8209;pointer options, in total (70%), are even more popular than add-brackets. They were also recently added.</li>
+        <li>The attach&#8209;pointer options, in total (70%), are even more popular than add-brackets. They were also recently
+            added.</li>
         <li>The preserve-date option is used by nearly one-third of the survey.</li>
-        <li>All of the options are used by someone in the survey, even the ones I thought were outdated. The bracket styles that are not used are probably a result
-            of not having enough response.</li>
+        <li>All of the options are used by someone in the survey, even the ones I thought were outdated. The bracket styles
+            that are not used are probably a result of not having enough response.</li>
     </ul>
 
     <h4>
@@ -301,599 +352,11 @@
         &nbsp;</p>
 
     <h3>
-        Artistic Style 1.24&nbsp; (February 2010)</h3>
+        Previous releases are available in the <a href="http://astyle.sourceforge.net/news.html">News Archives</a>.</h3>
 
     <p>
-        With a new Artistic Style release some unchanged source files will be formatted because of changes to Artistic
-        Style. You may want to format your source before making program changes in order to bring it up to date.</p>
-    <p>
-        A new bracket type option, &#8209;&#8209;brackets=horstmann (-g), uses broken brackets and places run-in statements
-        on the same line as an opening bracket. This bracket type has about the same vertical compression as attached
-        brackets and in addition provides bracket alignment. It is the only style that combines the advantages of saving
-        space and aligning brackets. The &quot;Tab and Bracket Options&quot; section in the documentation contains the
-        details. To accommodate Hostmann brackets the &quot;none mode&quot; brackets will now allow run-in statements.
-        Array formatting has been changed to format run-in statements when required. There have been some general improvements
-        to array formatting. The minimum value for spaces per tab was changed from one to two. The example programs in
-        the &quot;Developer Information&quot; section have been changed to Horstmann brackets.</p>
-    <p>
-        Two new options, &#8209;&#8209;add&#8209;brackets (-j) and &#8209;&#8209;add&#8209;one&#8209;line&#8209;brackets
-        (-J), will add brackets to unbracketed one line conditional statements. The &#8209;&#8209;add-brackets will add
-        the brackets according to the currently requested predefined style or bracket type. If no style or bracket type
-        is requested the brackets will be the attached type. The &#8209;&#8209;add&#8209;one&#8209;line&#8209;brackets
-        will add the brackets as single line brackets. This option implies &#8209;&#8209;keep&#8209;one&#8209;line&#8209;blocks
-        and will not break single line blocks.
-    </p>
-    <p>
-        The above options allow two new predefined styles. Horstmann style, &#8209;&#8209;style=horstmann (-A9), uses
-        Horstmann brackets and three spaces per indent. The so called "One True Brace Style", &#8209;&#8209;style=1tbs
-        or &#8209;&#8209;style=otbs (-A10), uses linux brackets and the option &#8209;&#8209;add&#8209;brackets. The basic
-        criteria for most predefined styles were obtained from the <a href="http://en.wikipedia.org/wiki/Indent_style">Indent
-            Style</a> discussion at Wikipedia. The "Predefined Style Options" section in the documentation contains the
-        details.</p>
-    <p>
-        The spaces per indent can now be changed for any of the predefined styles. In previous releases the option would
-        be ignored. This will allow any of the &#8209;&#8209;indent options to be used with a predefined style. If the
-        spaces per indent is not specified, the default for the style will be used.</p>
-    <p>
-        A new option, &#8209;&#8209;pad&#8209;header (&#8209;H), will insert space padding after headers ('if', 'for',
-        'while'...). To remove any unwanted current space padding, use the option &#8209;&#8209;unpad&#8209;paren (&#8209;U).
-        If both &#8209;&#8209;pad&#8209;header and &#8209;&#8209;unpad&#8209;paren are used, the headers will be padded
-        and the padding will be removed from other parens. This has required a change to the default formatting of paren
-        headers. They will now be left unchanged instead of automatically inserting space padding, unless the new option
-        is requested.</p>
-    <p>
-        New options --align-pointer=type (-k1), &#8209;&#8209;align&#8209;pointer=middle (-k2), and &#8209;&#8209;align&#8209;pointer=name
-        (-k3) will attach a pointer or reference operator (* or &amp;) to either the operator type (left), operator name
-        (right), or align it between the type and name. The spacing between the type and name will be preserved, if possible.
-        The recognition of pointers and references has been improved. This resulted in an improvement of the &#8209;&#8209;pad&#8209;oper
-        (-p) option.</p>
-    <p>
-        A new option, &#8209;&#8209;indent&#8209;col1&#8209;comments (-Y), will indent C++ comments beginning in column
-        one. By default C++ comments beginning in column one are not indented. This option will allow the comments to
-        be indented with the code.</p>
-    <p>
-        New options --lineend=windows&nbsp;(-z1), --lineend=linux&nbsp;(-z2), and --lineend=macold&nbsp;(-z3) will force
-        use of the specified line end style. Valid options are windows (CRLF), linux (LF), and macold (CR). MacOld style
-        is the format for OS 9 and earlier. Mac OS X uses the Linux style. Changes in line ends will cause the file to
-        be updated, even if no other changes occur. If one of these options is not used the line ends will be determined
-        automatically from the input file.</p>
-    <p>
-        Default line end processing has been improved to always output consistent line ends. It will use the line ends
-        that are most frequently used in the input.</p>
-    <p>
-        The Stroustrup predefined style has been changed to use 5 spaces per indent. This is the indentation used in the
-        book "The C++ Programming Language" by Bjarne Stroustrup.</p>
-    <p>
-        The minimum conditional indent for the Linux predefined style has been changed to 4, or one-half the indent-length.
-        The previous minimum conditional indent was 16 (2 indents). The new value corresponds to the soft tab in the style
-        description at Wikipedia and gives a better conformance to the definition of the style. And it gives a better
-        appearance to the continuation lines.</p>
-    <p>
-        Embedded SQL statements are now formatted correctly. The formatting of the SQL statements will be maintained as
-        long as the standard hanging indent format is used. If the "exec sql" statement is indented more than the following
-        statements, the SQL will be aligned in a single column.</p>
-    <p>
-        Assembler statement processing has been improved to include extended assembly and Microsoft specific assembler
-        lines and blocks.</p>
-    <p>
-        The --indent-classes (-C) option has been fixed to indent C++ struct blocks containing access modifiers (public,
-        protected, and private). The struct block is not indented if there are no access modifiers in the block.</p>
-    <p>
-        The formatting for C++ class initializer statements has been changed from two indents to one and an in-statement
-        indent added for continuation lines.</p>
-    <p>
-        The intermediate .tmp file used in formatting has been eliminated and memory is used instead. In most cases this
-        should result in a noticeable speed improvement.</p>
-    <p>
-        Checks for the maximum in-statement indent have been fixed. The indent for some long continuation lines may be
-        decreased. If you want the previous indentation, increase the &#8209;&#8209;max&#8209;in&#8209;statement option.</p>
-    <p>
-        Occasionally, someone will use Artistic Style to format a file encoded with UTF-16 or UTF-32 bit encoding. These
-        files contain many nul bytes are incompatible with the 8 bit encoding assumed by Artistic Style. Since this rarely
-        happens, Artistic Style has been changed to list these files as "unformatted" and display a warning message. The
-        files must have a Byte Order Mark (BOM) for the encoding to be recognized. These files can be changed with the
-        program iconv and with some text editors such as SciTE. For more information see the Wikipedia discussion on <a
-            href="http://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings#Compatibility_issues">Compatibility issues</a>.</p>
-    <p>
-        The Artistic Style documentation has been changed to include a new "Padding Options" section. The padding options
-        were previously in the "Formatting Options" section. This was done to allow space for additional options in GUIs.</p>
-    <p>
-        The Scripts page has a couple of new scripts, including a "clean" script in python.</p>
-    <p>
-        There are new configuration and project files for Visual Studio, and additional files for Visual Studio 2010.
-        There are instructions in the &quot;Install Information&quot;.</p>
-    <p>
-        The Intel compiler for Linux, release 11.1, has a new procedure for compiles. Read the new &quot;Install Information&quot;
-        before using this compiler release.</p>
-    <p>
-        There is now a Subversion repository for Artistic Style. A new Subversion web page describes how to check-out
-        the files. The source code is under development and some changes take several weeks to complete. And the intermediate
-        source files have not been through the extensive system tests that are done before each release. Use reasonable
-        precautions when using source code from the repository.</p>
-    <p>
-        SourceForge recently made changes to their website which caused a few problems. The web page links should be fixed
-        with this release. It seems that some bug reports may have been lost. If you have submitted a report that has
-        not been addressed please check to be sure it is still there. In addition Yahoo closed their GeoCities site which
-        made the AStyleWin programs temporarily unavailable. The new site is <a href="http://jimp03.zxq.net/" target="astyle"
-            title="open new window">jimp03.zxq.net/</a>.</p>
-    <p>
-        The release announcements mailing list was discontinued with the new SourceForge system. There is a new <a href="https://lists.sourceforge.net/lists/listinfo/astyle-announce">
-            astyle-announce</a> mailing list that will be used instead. This is a low volume list that will be used for
-        new release announcements and notification of important repository commits. Member postings will not be accepted.
-        Membership in the old list was not retained so you will need to register for the new list. There is information
-        for subscribing on the "Bug Reports, Change Requests, Notification" section of the Home page.</p>
-    <p>
-        Thanks to J P Nurmi (align-pointer), Mario Gleichmann (pad-header), MrTact (lineend), Christian Stimming (&lt;&lt;
-        and &gt;&gt; operators), Wim Rosseel (Perl script), Colin D Bennett (64-bit code), and Ettl Martin (cppcheck)
-        for their contributions.</p>
-    <p>
-        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
-        website is <a href="http://www.eight-cubed.com/index.html" target="astyle" title="open new window">eight&#8209;cubed.com</a>.</p>
-
-    <h4>
-        Developers</h4>
-
-    <p>
-        The Artistic Style for Windows program has been updated to support the current release and can be used for an
-        example GUI. It will run on Linux under WINE. It is available at <a href="http://jimp03.zxq.net/" target="astyle"
-            title="open new window">jimp03.zxq.net</a></p>
-    <p>
-        The options --lineend=windows&nbsp;(-z1), --lineend=linux&nbsp;(-z2), and --lineend=macold&nbsp;(-z3) apply only
-        to the console build. It was not included in the developer builds because developers usually have their own method
-        for handling line ends.</p>
-    <p>
-        The option --break-closing-brackets has been moved from Bracket Options to Formatting Options. It was being mistaken
-        for a bracket type, which it is not.</p>
-    <p>
-        Rejecting a file for&nbsp; UTF-16 or UTF-32 bit encoding apply only to the console build. Some class libraries,
-        such as wxWidgets (and probably Qt), have the methods to convert the files to UTF-8. The handling for these types
-        of files must be determined by the individual applications.
-    </p>
-    <p>
-        There has been an additional variable, formattingStyle, added to the ASFormatter class. This is now the ONLY option
-        that needs to be set to define the style. Setting the individual options is no longer necessary. The individual
-        options are now set in the fixOptionVariableConflicts function in ASFormatter. The predefined style options will
-        now override all other options. The order of entry does not matter as in previous versions.</p>
-    <p>
         &nbsp;</p>
 
-    <h3>
-        Artistic Style 1.23&nbsp; (February 2009)</h3>
-
-    <p>
-        With a new Artistic Style release some unchanged source files will be formatted because of changes to Artistic
-        Style. You may want to format your source before making program changes in order to bring it up to date.</p>
-    <p>
-        In the last few years the names of indent styles have been somewhat standardized. A typical example is the <a href="http://en.wikipedia.org/wiki/Indent_style">
-            Indent Style</a> discussion at Wikipedia. To keep up to date with the industry, changes have been made to
-        the names of two of the styles. The ANSI style can now also be Allman or BSD, and for the KR or Java style you
-        should now use only Java. The KR style has always been basically the same as the Java style. The KR style is depreciated
-        and will be removed sometime in the future.</p>
-    <p>
-        Four new predefined styles have been added, K&amp;R (with an &amp;), Stroustrup, Whitesmith, and Banner. K&amp;R
-        style uses Linux type brackets where the depreciated KR style uses attached brackets. Notice that K&amp;R and
-        KR are two different styles. Stroustrup style uses the new stroustrup brackets described below. Whitesmith has
-        broken brackets that are indented. Banner has attached brackets that are indented. The following table summarizes
-        the changes:</p>
-
-    <center>
-        <table>
-            <tr><th>old&nbsp;style</th>
-                <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
-                <th>new&nbsp;style</th>
-            </tr>
-            <tr><td>ansi</td>
-                <td></td>
-                <td>allman or ansi or bsd</td>
-            </tr>
-            <tr><td>java or kr</td>
-                <td></td>
-                <td>java</td>
-            </tr>
-            <tr><td>gnu</td>
-                <td></td>
-                <td>gnu</td>
-            </tr>
-            <tr><td>linux</td>
-                <td></td>
-                <td>linux</td>
-            </tr>
-            <tr><td>none</td>
-                <td></td>
-                <td>k&amp;r or k/r</td>
-            </tr>
-            <tr><td>none</td>
-                <td></td>
-                <td>stroustrup</td>
-            </tr>
-            <tr><td>none</td>
-                <td></td>
-                <td>whitesmith</td>
-            </tr>
-            <tr><td>none</td>
-                <td></td>
-                <td>banner</td>
-            </tr>
-        </table>
-    </center>
-
-    <p>
-        &nbsp;</p>
-    <p>
-        There is a new Stroustrup style and bracket type. It is similar to the Linux bracket type except that the brackets
-        are attached to namespaces and classes instead of being broken. It is the style used by Bjarne Stroustrup, the
-        founding father of C++, in his book "The C++ Programming Language".</p>
-    <p>
-        Indenting brackets in the Whitesmith and Banner styles causes a 'hanging indent' with switch statements and C++
-        class modifiers (public, private, protected). Microsoft Visual Studio avoids this by giving class and switch blocks
-        an extra indent when brackets are broken (Whitesmith style). Gnu Emacs gives switch blocks an extra indent but
-        not class blocks. With indented, attached brackets (Banner style), Visual Studio does not use an extra indent
-        and Emacs does not have the style. <strong>Artistic Style uses an extra indent for switch blocks and C++ class blocks
-            for both Whitesmith and Banner styles.</strong> This provides the best appearance in defining the style. If
-        a different format is wanted, use the individual options instead of the predefined style. You can try indent&#8209;brackets,
-        indent&#8209;classes, and indent&#8209;swiches on a class or switch block to see the results.</p>
-    <p>
-        The GNU style and indent&#8209;blocks option have been changed to indent only the blocks within a function body.
-        The opening bracket for namespaces and classes is no longer indented. The opening bracket for functions remains
-        not indented. This is the same formatting used by the Emacs editor and is in compliance with the GNU standard.
-        The GNU style has also been changed to NOT indent namespaces by default. Namespaces can be indented by using the
-        indent&#8209;namespaces option. This is consistent with the other predefined style options.</p>
-    <p>
-        The predefined style options will now override all other options. It does not depend on order of entry as in previous
-        versions. Using a predefined style will give that style regardless of other conflicting entries. The predefined
-        styles options now define only the bracket placement and sometimes the spaces per tab. This will give users the
-        option to define the other details according to their preference. The 'Predefined Style Options' section in the
-        documentation contains the details.</p>
-    <p>
-        Changes have been made to some of the long options. Most configuration files will NOT allow options to have duplicate
-        keys (e.g. the Windows registry and wxWidgets). The key is the value before the first '=' sign. If there is no
-        &#39;=&#39; sign then the entire option is the key. The options were changed to eliminate duplicate keys when
-        more than one option is allowed. The old options are depreciated but will still be valid until at least the next
-        release. The short options remain the same. The following options have changed:</p>
-
-    <center>
-        <table>
-            <tr><th>old&nbsp;option</th>
-                <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
-                <th>new&nbsp;option</th>
-            </tr>
-            <tr><td>force-indent=tab=#</td>
-                <td></td>
-                <td>indent=force-tab=#</td>
-            </tr>
-            <tr><td>brackets=break-closing</td>
-                <td></td>
-                <td>break-closing-brackets</td>
-            </tr>
-            <tr><td>pad=oper</td>
-                <td></td>
-                <td>pad-oper</td>
-            </tr>
-            <tr><td>pad=paren</td>
-                <td></td>
-                <td>pad-paren</td>
-            </tr>
-            <tr><td>pad=paren-out</td>
-                <td></td>
-                <td>pad-paren-out</td>
-            </tr>
-            <tr><td>pad=paren-in</td>
-                <td></td>
-                <td>pad-paren-in</td>
-            </tr>
-            <tr><td>unpad=paren</td>
-                <td></td>
-                <td>unpad-paren</td>
-            </tr>
-            <tr><td>one-line=keep-statements</td>
-                <td></td>
-                <td>keep-one-line-statements</td>
-            </tr>
-            <tr><td>one-line=keep-blocks</td>
-                <td></td>
-                <td>keep-one-line-blocks</td>
-            </tr>
-        </table>
-    </center>
-
-    <p>
-        &nbsp;</p>
-    <p>
-        The "else if" statements will now be placed on a single line by default. This is described as a 'fix' since it
-        was apparently always supposed to do this. The headers will be broken only if the option 'break&#8209;elseifs'
-        is specified. Most users want the statements joined since breaking them requires an extra indent.</p>
-    <p>
-        The convert&#8209;tabs option has been changed to maintain the correct spacing according to the current tab setting.
-        Previously a tab was replaced by a single space. The current option for spaces per tab is used. It may NOT produce
-        the expected results if convert&#8209;tabs is used when changing the spaces per tab. The tabs are NOT replaced
-        in quotes.</p>
-    <p>
-        The break&#8209;blocks and break&#8209;blocks=all options have finally been fixed. They will no longer break statements
-        following the block and will keep preceding comments with the block. Many other fixes were required for the options
-        to work correctly. The "Release Notes" page has the details.</p>
-    <p>
-        A new delete&#8209;empty&#8209;lines option will delete empty lines within a function or method. If used with
-        break&#8209;blocks or break&#8209;blocks=all it will delete all lines EXCEPT the lines added by the break&#8209;blocks
-        options.</p>
-    <p>
-        There is a new 'formatted' (&#8209;Q) option that displays only the files that have been formatted. Files that
-        are unchanged are not displayed.</p>
-    <p>
-        Short options have been added for the predefined styles.</p>
-    <p>
-        Semi&#8209;colons are now always space padded. All commas are space padded if pad&#8209;oper is used.</p>
-    <p>
-        The C/C++ keyword 'extern' no longer causes an extra indent.</p>
-    <p>
-        There have been several important fixes to the indent&#8209;brackets and indent&#8209;blocks options.</p>
-    <p>
-        There have been several important fixes to C# formatting.</p>
-    <p>
-        The scripts page has a new Emacs script containing hooks that will set the Emacs style options to the default
-        options used by Artistic Style. It also defines a Banner style. It can be used to compare output from the two
-        programs. The files will not be exact but it should be reasonably close. If you can improve the Emacs script I
-        would like to have the changes.</p>
-    <p>
-        There are two new projects on the Links page. <a href="http://www.codelite.org/" target="astyle" title="open new window">
-            <strong>CodeLite</strong></a> is a C++ development environment with some useful features, including a template
-        to generate a test program using the excellent tool UnitTest++. <a href="http://translate.google.com/translate?hl=en&sl=de&u=http://www.andre-simon.de/&sa=X&oi=translate&resnum=1&ct=result"
-            target="astyle" title="open new window"><strong>Highlight</strong></a> converts source code to formatted text
-        with syntax highlighting. It was used it for the source code in the Developer Information section.</p>
-    <p>
-        I need a Mac OS X user to do testing on new releases. The test usually take 30 minutes at the most. They may need
-        to be repeated two or three times depending on the results. Programming knowledge is not necessary but will probably
-        be helpful. Reply to the project email address if you would like to volunteer.</p>
-    <p>
-        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
-        website is <a href="http://www.eight-cubed.com/index.html" target="astyle" title="open new window">eight&#8209;cubed.com</a>.</p>
-    <p>
-        Thanks to Eran Ifrah and Max Horn for their contributions. Travis Robinson wrote the original C# interface program.</p>
-
-    <h4>
-        Developers</h4>
-
-    <p>
-        There is a new page in the Developer Information that has an example of calling Artistic Style from a C# program.</p>
-    <p>
-        There was an omission in the peekNextLine function added in the last release which causes it to bypass empty lines.
-        If you copied the function into a program, the change is at the end of peekNextLine in astyle_main. The line containing
-        the change is marked with comments. Not correcting it may cause an infrequent line break if the option break&#8209;blocks
-        or break&#8209;blocks=all is used. The break will occur only if there are empty lines within comment lines that
-        precede a header.</p>
-    <p>
-        There has been an additional variable, formattingStyle, added to the ASFormatter class. This is now the ONLY option
-        that needs to be set to define the style. Setting the individual options is no longer necessary. The individual
-        options are now set in the fixOptionVariableConflicts function in ASFormatter.</p>
-    <p>
-        The predefined style options will now override all other options. The order of entry does not matter as in previous
-        versions. This will be done even if astyle_main is not used by your system. This was done by moving the checks
-        from astyle_main to ASFormatter. The procedure is in the function fixOptionVariableConflicts in ASFormatter.</p>
-    <p>
-        The predefined style options now define only the bracket placement and sometimes the spaces per tab. This will
-        give users the option to define the other details according to their preference. It is best if the other options
-        are NOT disabled when a predefined style is selected. All options should be left available to modify the style.
-        The conflicts will be resolved by the fixOptionVariableConflicts function which is called after all options have
-        been processed. All you need to do is set the options selected by the user.</p>
-    <p>
-        The Artistic Style for Windows program has been updated to support the current release. It is available at <a href="http://jimp03.zxq.net/">
-            jimp03.zxq.net</a></p>
-    <p>
-        I apologize for the unplanned changes this may add to your system. But Artistic Style is starting to mature as
-        an application and the changes are needed to bring it up to date. If you have any questions or problems, email
-        me and I will do my best to help you resolve them.</p>
-    <p>
-        &nbsp;</p>
-
-    <h3>
-        Artistic Style 1.22&nbsp; (April 2008)</h3>
-
-    <p>
-        This release contains many bug fixes. The emphasis was on formatting fixes for C# files. In the last two releases
-        there have been over 80 items removed from the bug report. There have been many more fixes which were not reported
-        but were discovered while testing. The new options in this release exposed many unreported formatting problems.
-        I will try to fix the ones remaining in the next two or three releases. Some of them will be difficult to fix.
-        See the Release Notes for a complete list of changes.</p>
-    <p>
-        Starting with this release, if a file is <b>not</b> changed by Artistic Style a new file and a backup file are
-        not created. A "make" will not recompile the unchanged file and it will not be committed to a revision control
-        system. A console message will indicate that the file is unchanged. Note that this is different from using the
-        &#8209;&#8209;preserve&#8209;date option. This option retains the date on files that <b>have</b> changed. In this
-        case the changed files will still be recompiled and committed to revision control. (&#8209;&#8209;preserve&#8209;date
-        actually changes the time by one unit).</p>
-    <p>
-        In the rare case when Artistic Style aborts, the file being formatted will no longer be deleted. This is done
-        by using a temporary output file (.tmp). It should now be safe to manually abort Artistic Style and restart at
-        any time. The backup of files that were previously formatted will not be replaced.</p>
-    <p>
-        The console display has been changed. The default now displays one line per file. This will be useful if only
-        one file is being formatted, such as when Artistic Style is called from a text editor or development environment.
-        A new &#8209;&#8209;verbose (&#8209;v) option will display optional information, such as release number and statistical
-        data. A new &#8209;&#8209;quiet (-q) option will suppress all output except error messages. Some short options
-        have changed to accommodate the new options. The short option for &#8209;&#8209;version is now -V (old -v) and
-        for &#8209;&#8209;convert&#8209;tabs is &#8209;c (old &#8209;V).</p>
-    <p>
-        A new &#8209;&#8209;recursive (-r, or -R) option will process subdirectories recursively. The filename should
-        contain a wildcard (e.g. "$HOME/astyle/src/*.cpp"). Linux users should place the filename in double quotes so
-        the shell will not resolve the wildcards. Windows users should <strong>not</strong> include wildcard object files,
-        like setargv (Visual C) or wildargs (Borland), in the compiles. Wildcard processing in MinGW was excluded by adding
-        "int&nbsp;_CRT_glob&nbsp;=&nbsp;0" as a global variable. (It could also be excluded by linking to CRT_noglob.o).
-        Artistic Style now does the wildcard processing internally.</p>
-    <p>
-        When processing directories recursively it is sometimes necessary to exclude certain files or directories. This
-        can be done using a new exclude (&#8209;&#8209;exclude=file&#8209;or&#8209;directory) option. There is no short
-        option. Multiple exclude statements are allowed. The Other Options section of the documentation contains the details.</p>
-    <p>
-        It is always a good idea to create a backup for files that have been formatted. This can cause a problem in that
-        it creates a lot of excess files in your source directories. There are now new script files available that will
-        move the files to a backup directory. The original directory structure will be maintained the in the backup. There
-        is a batch file for Windows and a shell script for everyone else. They are available in the <a href="scripts.html">
-            Scripts</a> section of the home page.</p>
-    <p>
-        There is a new Links page that lists programs using Artistic Style. In general, they seem to be good quality software.</p>
-    <p>
-        If you are using a development environment to compile Artistic Style, be sure to read the Compiler Options section
-        in the Install Information. In particular, you should define NDEBUG in the Release compile to remove the assert
-        statements. There are quite a few of these and they will slow down processing if NDEBUG is not used. The assert
-        statements are necessary due to the nature of the program. Also, when reporting bugs it is a good idea to log
-        in first. Occasionally, more information is needed on a problem. If the poster did not log in there is no way
-        to contact them.</p>
-    <p>
-        A Java Native Interface has been added for Java developers. This will allow an Artistic Style shared library (DLL)
-        to be called from a Java program. A shared library (Dll) using the Java interface can still be called from C,
-        C++, or C# programs. There is a sample program in the Developer Information.</p>
-    <p>
-        <strong>Developers using Artistic Style in another project</strong> should be aware that there are two new functions
-        that have been added to the ASStreamIterator class (peekNextLine() and peekReset()). These will have to be coded
-        into source modules which use Artistic Style without astyle_main. In most cases the functions can simply be copied
-        without the template information. The assert statements may also be removed. A variable will need to be added
-        to the class and another may need to be modified. If the shared or static library configuration is being used
-        then no changes are necessary.</p>
-    <p>
-        The file globing function was obtained from <a href="http://www.codeproject.com/string/wildcmp.asp" target="astyle"
-            title="open new window">The Code Project</a> and was written by Jack Handy. It was modified slightly to make
-        the comparisons case insensitive for Windows.</p>
-    <p>
-        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
-        website is <a href="http://www.eight-cubed.com/index.html" target="astyle" title="open new window">eight&#8209;cubed.com</a>.</p>
-    <p>
-        Thanks to Emilio Guijarro and Jens Krinke for their contributions, and to Sam Cooler for testing the Mac OS X
-        version.</p>
-    <p>
-        &nbsp;</p>
-
-    <h3>
-        Artistic Style 1.21&nbsp; (June 2007)</h3>
-
-    <p>
-        This release contains many bug fixes. Array formatting and indentation has been improved. Arrays and enums are
-        now formatted by a different procedure than functions. Brackets will now attach to lines with comments. Brackets
-        will be broken from lines with comments without bringing the comments with them. All comments will remain in their
-        original column, if possible. The formatting of empty blocks was fixed. The BracketType definition was expanded
-        and the bracket types are now correctly identified. There are several formatting fixes for Java files. See the
-        Release Notes for a complete list of changes.</p>
-    <p>
-        A new option, --preserve-date (-Z), has been added. This will retain the date modified of the original file in
-        the new formatted file. Otherwise the new file will contain the current date.</p>
-    <p>
-        The option --errors-to-standard-output has been shortened to --errors-to-stdout. The <b>short</b> options -c (mode=c)
-        and -j (mode=java) have been removed. The options should seldom be needed since the mode is now set automatically
-        from the file extension for <b>each source file</b> instead of for each program execution. A new long option --mode=cs
-        (C#) has been added. Key words are now set for each file depending on the file mode (C, Java, or C#). This will
-        eliminate formatting problems caused by not being able to identify the source code language.</p>
-    <p>
-        There has been a change to the Linux style bracket formatting for C++ header files. In the past brackets have
-        been broken for function definitions within a class. With this release the brackets will be attached. The brackets
-        will also be attached for arrays, structs, enums, and other top level objects that are not classes or functions.
-        The Linux style formatting for Java and C# has not been changed.</p>
-    <p>
-        This release supports only one platform in each distribution package. In the past all platforms were included
-        in every package. If you use Artistic Style on more than one platform you will need to download packages for each
-        platform. The main difference in platforms is the build directory and the line endings. The source code and documentation
-        are the same for all packages.</p>
-    <p>
-        There are new instructions about optimizing compiler options in the Install Instructions. If you are compiling
-        using a development environment you may want to read them.</p>
-    <p>
-        If you have broken brackets with comments attached to the opening bracket instead of the previous line, do the
-        following <b>before formatting</b> again with broken brackets. Use the current Artistic Style release (1.21).
-        Format the source using attached brackets to reattach the brackets and the comments to the previous line. Then
-        format the source again using broken brackets. This will move the brackets to the next line without the comments.
-        The comments will now be on the correct line.</p>
-    <p>
-        There is a new multi-platform GUI program, <b>UniversalIndent</b>, available at <a href="http://sourceforge.net/projects/universalindent">
-            sourceforge.net/projects/universalindent</a>. It allows you to view the effects of the Artistic Style options
-        on your source code without saving the file. You can review the results of the formatting options before updating
-        the file. It can be used with a test file or with your actual source code. It supports several other formatting
-        programs. The <b>Artistic Style for Windows</b> program has been updated to support the current release. It is
-        available at <a href="http://jimp03.zxq.net/">jimp03.zxq.net</a></p>
-    <p>
-        There have been a few inquiries about how to customize Artistic Style for an unsupported format. Changes can be
-        made with Python or another text processing program after formatting the source, or you can modify the Artistic
-        Style source code itself. The best place to modify the code is usually in ASEnhancer.cpp. The ASEnhancer class
-        is called after the main formatting has been done so you are getting a formatted file. If you just need to change
-        the indentation of a few things this is probably the best place to do it.</p>
-    <p>
-        There is now a distribution package for OpenVMS thanks to Jim Duff, an OpenVMS Systems Specialist living in Sydney
-        Australia. His website is at <a href="http://www.eight-cubed.com/index.html">eight-cubed.com</a>.</p>
-    <p>
-        Thanks to Norbert Holzki and Siemens AG, Medical Solutions, Forchheim, Germany for testing the array formatting.</p>
-    <p>
-        Thanks to Sam Cooler for testing the Mac OS X version.</p>
-    <p>
-        &nbsp;</p>
-
-    <h3>
-        Artistic Style 1.20&nbsp; (January 2007)</h3>
-
-    <p>
-        Release 1.20.2 fixed problems with the new stream I/O procedure added in release 1.20.1. Release 1.20.1 improved
-        the processing for Mac OS X platforms. The compatibility with <a href="http://www.barebones.com/products/textwrangler/"
-            target="astyle" title="open new window">TextWrangler</a> was improved. There is now a separate release for
-        Mac.</p>
-    <p>
-        Artistic Style will now indent message maps for Microsoft Foundation Class (MFC) and event tables for wxWidgets.
-        The option --brackets=break-closing-headers has been shortened to --brackets=break-closing and a short option
-        added (-y). There have been short options added for --break-elseifs (-e), --indent-preprocessor (-w), --break-blocks
-        (-f), and --break-blocks=all (-F).</p>
-    <p>
-        With this release the Artistic Style license changes from the GNU General Public License (GPL) to the GNU <em>Lesser</em>
-        General Public License (LGPL). You can use Artistic Style for free or commercial software without charge. Projects
-        that use Artistic Style do not have to make the their source code available. If Artistic Style itself is modified,
-        however, the modified Artistic Style source code must be made available. See the <a href="license.html">GNU Lesser
-            General Public License</a> for more information.</p>
-    <p>
-        There is a new preprocessor option to aid developers in using Artistic Style with a Graphical User Interface (GUI).
-        It is no longer necessary to remove the source module astyle_main.cpp and write embedded code to call the formatter.
-        It can be compiled as a static library or a shared library (DLL), or the entire source code can be included in
-        the project. See the <a href="develop/">Artistic Style Developer Information</a> for the calling procedure and
-        other details.</p>
-    <p>
-        There is a sample GUI program for Windows available at <a href="http://jimp03.zxq.net/" target="astyle" title="open new window">
-            http://jimp03.zxq.net/</a>. It uses the unmodified Artistic Style compiled for a GUI. The source code needs
-        some work so it is not available for now. It should work under Linux using WINE. Future enhancements and platform
-        support will depend on the response to the sample program.</p>
-    <p>
-        To support the new Artistic Style preprocessor option there are new makefiles and project files. Windows users
-        have a project file for Microsoft Visual C++ 2003 (version 7). Linux users have a new makefile that has several
-        new options. The location of both files is in the build directory. Be sure to read the <a href="install.html">Artistic
-            Style Install Information</a> for the details.</p>
-    <p>
-        Intel&reg; is now offering it's C++ and Fortran compilers free for non-commercial use. Information is available
-        at the Intel&reg; Software Development Products website. Click on the <a href="http://www3.intel.com/cd/software/products/asmo-na/eng/download/download/"
-            target="astyle" title="open new window">Free Non-Commercial Download</a> link to see if you qualify. The Intel
-        Compilers on Windows and Linux require that other compilers be installed (Microsoft Visual C++ or GNU gcc respectively).
-        This is because the Intel Compilers require the header files, runtime libraries and linkers distributed as part
-        of these other compilers. If you want to use this compiler there is now a makefile (makeintel) included with the
-        project. See <a href="install.html">Artistic Style Install Information</a> for instructions.</p>
-    <p>
-        &nbsp;</p>
-
-    <h3>
-        Artistic Style 1.19&nbsp; (July 2006)</h3>
-
-    <p>
-        Most changes this release were again concerned with the options pad=oper and pad=paren. The formatting still worked
-        a little different if both options were declared than if only one was used. The problems with distinguishing the
-        multiplication operator from pointers, and of separating an object from the member access pointer (-&gt;) were
-        fixed.</p>
-    <p>
-        A new option, unpad=paren, was added. This will undo the pad=paren, pad=paren-out and pad=paren-in options. It
-        can be used alone or with pad=paren-out or pad=paren-in. If used alone it will unpad all parens that have been
-        previously padded. If used with a paren padding option, the paren padding option will take precedence and only
-        the unnecessary padding will be removed. This will enable the paren padding to be changed in one formatting run.</p>
-    <p>
-        Padding to paren headers (e.g. "if", "for", "while") was reinstated. This was done in previous releases if pad=oper
-        was used. Since most people used this option, the headers were usually padded. The general opinion was that they
-        looked better padded, especially in the case of "else if" statements. Since it is a minor point, it was not made
-        an option.</p>
-    <p>
-        This is the third release of Artistic Style in the last four months. The reason for the frequent releases was
-        the number of pervasive errors in the formatting. In the future there will probably be two or three new releases
-        per year, or one every four to six months. It will take about three years to make all the changes that are planned
-        at this time.; The releases will be a combination of fixes, changes to formatting, and new features.</p>
-    <p>
-        &nbsp;</p>
-
     <center style="margin-left: -0.4in;">
         <a href="http://sourceforge.net/projects/astyle">
             <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" width="150" height="40" alt="[SourceForge.net]" /></a>
Index: src/plugins/astyle/astyle/vsinstall.html
===================================================================
--- src/plugins/astyle/astyle/vsinstall.html	(revision 7913)
+++ src/plugins/astyle/astyle/vsinstall.html	(working copy)
@@ -67,13 +67,13 @@
         Win32 compiles. To correct this the x64 compiles should be placed in an x64 directory using the <strong>$(PlatformName)</strong>
         macro.</p>
     <p>
-        Add the $(Platform) macro to &#8220;Configuration Properties &gt; General &gt; Output directory&#8221; so the
+        Add the $(PlatformName) macro to &#8220;Configuration Properties &gt; General &gt; Output directory&#8221; so the
         entry becomes $(SolutionDir)<strong>$(PlatformName)\</strong>$(Configuration)\.</p>
     <p>
-        Add the $(Platform) macro to &#8220;Configuration Properties&nbsp; &gt; General&gt; Intermediate Directory&#8221;
+        Add the $(PlatformName) macro to &#8220;Configuration Properties&nbsp; &gt; General&gt; Intermediate Directory&#8221;
         so the entry becomes <strong>$(PlatformName)\</strong>$(Configuration)\.</p>
     <p>
-        Check the x64 &#8220;Configuration Properties &gt; Linker &gt; Debugging &gt; Generate Program Database File&#8221;
+        Check the x64 Debug configuration &#8220;Configuration Properties &gt; Linker &gt; Debugging &gt; Generate Program Database File&#8221;
         for $(ProjectDir)<strong>$(PlatformName)\</strong>$(ConfigurationName)\$(TargetName).pdb<strong>.</strong></p>
     <p>
         Compile the project. If there are compile errors you may need to add the <strong>$(PlatformName)</strong> macro
Index: src/plugins/astyle/astyle/links.html
===================================================================
--- src/plugins/astyle/astyle/links.html	(revision 7913)
+++ src/plugins/astyle/astyle/links.html	(working copy)
@@ -97,8 +97,8 @@
     <p>
         <a href="http://translate.google.com/translate?hl=en&sl=de&u=http://www.andre-simon.de/&sa=X&oi=translate&resnum=1&ct=result"
             target="astyle" title="open new window"><b>Highlight</b></a> converts source code to formatted text with syntax
-        highlighting. Output is in several formats including HTML. It supports over 150 programming languages and includes
-        40 color themes. Highlight is used for the examples in the "Developer Information" section.</p>
+        highlighting. Output is in several formats including HTML. It supports over 160 programming languages and includes
+        80 color themes. Highlight is used for the examples in the "Developer Information" section.</p>
     <p>
         <a href="http://scintilla.sourceforge.net/SciTE.html" target="astyle" title="open new window"><strong>SciTE</strong></a>
         is a Scintilla based source code editor. Originally built to demonstrate <a href="http://www.scintilla.org" target="astyle"
Index: src/plugins/astyle/astyle/astyle.h
===================================================================
--- src/plugins/astyle/astyle/astyle.h	(revision 7913)
+++ src/plugins/astyle/astyle/astyle.h	(working copy)
@@ -40,13 +40,17 @@
 #include <vector>
 #include <cctype>
 
-#ifdef _WIN32
+// define STDCALL for a Windows dynamic libraries (DLLs) only
+// MINGW defines STDCALL in Windows.h (actually windef.h)
+//#ifndef STDCALL
+#if defined(_WIN32) && !defined(ASTYLE_STATIC) && ( defined(ASTYLE_LIB) || defined(ASTYLE_JNI) )
 #define STDCALL __stdcall
 #define EXPORT  __declspec(dllexport)
 #else
 #define STDCALL
 #define EXPORT
 #endif
+//#endif	// STDCALL
 
 #ifdef _MSC_VER
 #pragma warning(disable: 4996)  // secure version deprecation warnings
@@ -181,7 +185,7 @@
 		void buildIndentableHeaders(vector<const string*>* indentableHeaders);
 		void buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators);
 		void buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier=false);
-		void buildOperators(vector<const string*>* operators);
+		void buildOperators(vector<const string*>* operators, int fileType);
 		void buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType);
 		void buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType);
 		void buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType);
@@ -237,8 +241,8 @@
 		virtual ~ASBase() {}
 
 		// functions definitions are at the end of ASResource.cpp
-		bool findKeyword(const string& line, int i, const string& keyword) const;
-		string getCurrentWord(const string& line, size_t index) const;
+		bool findKeyword(const string &line, int i, const string &keyword) const;
+		string getCurrentWord(const string &line, size_t index) const;
 
 	protected:
 
@@ -257,14 +261,14 @@
 		bool isLegalNameChar(char ch) const {
 			if (isWhiteSpace(ch)) return false;
 			if ((unsigned) ch > 127) return false;
-			return (isalnum(ch)
+			return (isalnum((unsigned char)ch)
 			        || ch == '.' || ch == '_'
 			        || (isJavaStyle() && ch == '$')
 			        || (isSharpStyle() && ch == '@'));  // may be used as a prefix
 		}
 
 		// check if a specific character can be part of a header
-		bool isCharPotentialHeader(const string& line, size_t i) const {
+		bool isCharPotentialHeader(const string &line, size_t i) const {
 			assert(!isWhiteSpace(line[i]));
 			char prevCh = ' ';
 			if (i > 0) prevCh = line[i-1];
@@ -277,7 +281,7 @@
 		bool isCharPotentialOperator(char ch) const {
 			assert(!isWhiteSpace(ch));
 			if ((unsigned) ch > 127) return false;
-			return (ispunct(ch)
+			return (ispunct((unsigned char)ch)
 			        && ch != '{' && ch != '}'
 			        && ch != '(' && ch != ')'
 			        && ch != '[' && ch != ']'
@@ -290,7 +294,7 @@
 		bool isWhiteSpace(char ch) const { return (ch == ' ' || ch == '\t'); }
 
 		// peek at the next unread character.
-		char peekNextChar(const string& line, int i) const {
+		char peekNextChar(const string &line, int i) const {
 			char ch = ' ';
 			size_t peekNum = line.find_first_not_of(" \t", i + 1);
 			if (peekNum == string::npos)
@@ -311,9 +315,11 @@
 		virtual ~ASBeautifier();
 		virtual void init(ASSourceIterator* iter);
 		void init();
-		virtual string beautify(const string& line);
+		virtual string beautify(const string &line);
+		void setDefaultTabLength();
+		void setForceTabXIndentation(int length);
+		void setSpaceIndentation(int length = 4);
 		void setTabIndentation(int length = 4, bool forceTabs = false);
-		void setSpaceIndentation(int length = 4);
 		void setMaxInStatementIndentLength(int max);
 		void setMinConditionalIndentOption(int min);
 		void setMinConditionalIndentLength();
@@ -329,32 +335,33 @@
 		void setEmptyLineFill(bool state);
 		void setPreprocessorIndent(bool state);
 		int  getBeautifierFileType() const;
-		int  getFileType();
+		int  getFileType() const;
 		int  getIndentLength(void) const;
+		int  getTabLength(void) const;
 		string getIndentString(void) const;
-		string getNextWord(const string& line, size_t currPos) const;
-		bool getBracketIndent(void);
-		bool getBlockIndent(void);
-		bool getCaseIndent(void);
-		bool getClassIndent(void);
-		bool getEmptyLineFill(void);
-		bool getForceTabIndentation(void);
-		bool getModeManuallySet(void);
-		bool getPreprocessorIndent(void);
-		bool getSwitchIndent(void);
+		string getNextWord(const string &line, size_t currPos) const;
+		bool getBracketIndent(void) const;
+		bool getBlockIndent(void) const;
+		bool getCaseIndent(void) const;
+		bool getClassIndent(void) const;
+		bool getEmptyLineFill(void) const;
+		bool getForceTabIndentation(void) const;
+		bool getModeManuallySet(void) const;
+		bool getPreprocessorIndent(void) const;
+		bool getSwitchIndent(void) const;
 
 		void setBlockIndent(bool state);
 		void setBracketIndent(bool state);
 
 	protected:
 		void deleteBeautifierVectors();
-		const string* findHeader(const string& line, int i,
+		const string* findHeader(const string &line, int i,
 		                         const vector<const string*>* possibleHeaders) const;
-		const string* findOperator(const string& line, int i,
+		const string* findOperator(const string &line, int i,
 		                           const vector<const string*>* possibleOperators) const;
-		int getNextProgramCharDistance(const string& line, int i) const;
+		int getNextProgramCharDistance(const string &line, int i) const;
 		int  indexOf(vector<const string*> &container, const string* element);
-		string trim(const string& str);
+		string trim(const string &str);
 
 		// variables set by ASFormatter - must be updated in activeBeautifierStack
 		int  inLineNumber;
@@ -369,27 +376,29 @@
 		bool isInIndentableStruct;
 
 	private:
-		ASBeautifier(const ASBeautifier& copy);
-		ASBeautifier& operator=(ASBeautifier&);        // not to be implemented
+		ASBeautifier(const ASBeautifier &copy);
+		ASBeautifier &operator=(ASBeautifier &);       // not to be implemented
 
 		void computePreliminaryIndentation();
-		void parseCurrentLine(const string& line);
-		void processProcessor(string& line);
-		void registerInStatementIndent(const string& line, int i, int spaceTabCount,
+		void parseCurrentLine(const string &line);
+		void processProcessor(string &line);
+		void registerInStatementIndent(const string &line, int i, int spaceIndentCount,
 		                               int tabIncrementIn, int minIndent, bool updateParenStack);
 		void initVectors();
 		string preLineWS(int spaceTabCount_, int tabCount_);
 		int  convertTabToSpaces(int i, int tabIncrementIn) const;
-		int  getInStatementIndentAssign(const string& line, size_t currPos) const;
-		int  getInStatementIndentComma(const string& line, size_t currPos) const;
-		bool isClassAccessModifier(const string& line) const;
-		bool isIndentedPreprocessor(const string& line, size_t currPos) const;
-		bool isLineEndComment(const string& line, int startPos) const;
-		bool statementEndsWithComma(const string& line, int index) const;
-		vector<vector<const string*>*>* copyTempStacks(const ASBeautifier& other) const;
-		template<typename T> void deleteContainer(T& container);
+		int  getInStatementIndentAssign(const string &line, size_t currPos) const;
+		int  getInStatementIndentComma(const string &line, size_t currPos) const;
+		bool isClassAccessModifier(const string &line) const;
+		bool isIndentedPreprocessor(const string &line, size_t currPos) const;
+		bool isLineEndComment(const string &line, int startPos) const;
+		bool isPreprocessorDefinedCplusplus(const string &line) const;
+		bool isInPreprocessorUnterminatedComment(const string &line);
+		bool statementEndsWithComma(const string &line, int index) const;
+		vector<vector<const string*>*>* copyTempStacks(const ASBeautifier &other) const;
+		template<typename T> void deleteContainer(T &container);
 		void deleteContainer(vector<vector<const string*>*>* &container);
-		template<typename T> void initContainer(T& container, T value);
+		template<typename T> void initContainer(T &container, T value);
 
 	private:  // variables
 
@@ -429,6 +438,7 @@
 		bool isInAsmOneLine;
 		bool isInAsmBlock;
 		bool isInComment;
+		bool isInPreprocessorComment;
 		bool isInHorstmannComment;
 		bool isInCase;
 		bool isInQuestion;
@@ -463,8 +473,8 @@
 		bool isInClass;
 		bool isInSwitch;
 		bool foundPreCommandHeader;
-		int  tabCount;
-		int  spaceTabCount;
+		int  indentCount;
+		int  spaceIndentCount;
 		int  lineOpeningBlocksNum;
 		int  lineClosingBlocksNum;
 		int  fileType;
@@ -472,13 +482,15 @@
 		int  minConditionalIndent;
 		int  parenDepth;
 		int  indentLength;
+		int  tabLength;
 		int  blockTabCount;
 		int  maxInStatementIndent;
-		int  classInitializerTabs;
+		int  classInitializerIndents;
 		int  templateDepth;
-		int  prevFinalLineSpaceTabCount;
-		int  prevFinalLineTabCount;
-		int  defineTabCount;
+		int  preprocessorCppExternCBracket;
+		int  prevFinalLineSpaceIndentCount;
+		int  prevFinalLineIndentCount;
+		int  defineIndentCount;
 		char quoteChar;
 		char prevNonSpaceCh;
 		char currentNonSpaceCh;
@@ -495,13 +507,15 @@
 	public:  // functions
 		ASEnhancer();
 		virtual ~ASEnhancer();
-		void init(int, int, string, bool, bool, bool);
-		void enhance(string& line, bool isInPreprocessor, bool isInSQL);
+		void init(int, int, int, bool, bool, bool, bool, bool);
+		void enhance(string &line, bool isInPreprocessor, bool isInSQL);
 
 	private:
 		// options from command line or options file
 		int  indentLength;
+		int  tabLength;
 		bool useTabs;
+		bool forceTab;
 		bool caseIndent;
 		bool preprocessorIndent;
 		bool emptyLineFill;
@@ -540,13 +554,15 @@
 
 
 	private:  // functions
-		size_t  findCaseColon(string&  line, size_t caseIndex) const;
-		int     indentLine(string&  line, int indent) const;
-		bool    isBeginDeclareSectionSQL(string&  line, size_t index) const;
-		bool    isEndDeclareSectionSQL(string&  line, size_t index) const;
-		bool    isOneLineBlockReached(string& line, int startChar) const;
-		size_t  processSwitchBlock(string&  line, size_t index);
-		int     unindentLine(string&  line, int unindent) const;
+		void    convertForceTabIndentToSpaces(string  &line) const;
+		void    convertSpaceIndentToForceTab(string &line) const;
+		size_t  findCaseColon(string  &line, size_t caseIndex) const;
+		int     indentLine(string  &line, int indent) const;
+		bool    isBeginDeclareSectionSQL(string  &line, size_t index) const;
+		bool    isEndDeclareSectionSQL(string  &line, size_t index) const;
+		bool    isOneLineBlockReached(string &line, int startChar) const;
+		size_t  processSwitchBlock(string  &line, size_t index);
+		int     unindentLine(string  &line, int unindent) const;
 };  // Class ASEnhancer
 
 //-----------------------------------------------------------------------------
@@ -573,12 +589,14 @@
 		void setBreakClosingHeaderBlocksMode(bool state);
 		void setBreakElseIfsMode(bool state);
 		void setBreakOneLineBlocksMode(bool state);
+		void setCloseTemplatesMode(bool state);
 		void setDeleteEmptyLinesMode(bool state);
 		void setIndentCol1CommentsMode(bool state);
 		void setLineEndFormat(LineEndFormat fmt);
 		void setMaxCodeLength(int max);
 		void setOperatorPaddingMode(bool mode);
 		void setParensOutsidePaddingMode(bool mode);
+		void setParensFirstPaddingMode(bool mode);
 		void setParensInsidePaddingMode(bool mode);
 		void setParensHeaderPaddingMode(bool mode);
 		void setParensUnPaddingMode(bool state);
@@ -592,10 +610,10 @@
 		int  getFormatterFileType() const;
 
 	private:  // functions
-		ASFormatter(const ASFormatter& copy);       // copy constructor not to be imlpemented
-		ASFormatter& operator=(ASFormatter&);       // assignment operator not to be implemented
-		template<typename T> void deleteContainer(T& container);
-		template<typename T> void initContainer(T& container, T value);
+		ASFormatter(const ASFormatter &copy);       // copy constructor not to be imlpemented
+		ASFormatter &operator=(ASFormatter &);      // assignment operator not to be implemented
+		template<typename T> void deleteContainer(T &container);
+		template<typename T> void initContainer(T &container, T value);
 		char peekNextChar() const;
 		BracketType getBracketType();
 		bool addBracketsToStatement();
@@ -611,8 +629,8 @@
 		bool isClosingHeader(const string* header) const;
 		bool isCurrentBracketBroken() const;
 		bool isDereferenceOrAddressOf() const;
-		bool isExecSQL(string&  line, size_t index) const;
-		bool isEmptyLine(const string& line) const;
+		bool isExecSQL(string  &line, size_t index) const;
+		bool isEmptyLine(const string &line) const;
 		bool isNextWordSharpNonParenHeader(int startChar) const;
 		bool isNonInStatementArrayBracket() const;
 		bool isOkToSplitFormattedLine();
@@ -620,7 +638,7 @@
 		bool isPointerOrReferenceCentered() const;
 		bool isSharpStyleWithParen(const string* header) const;
 		bool isSplittableOperator(char appendedChar) const;
-		bool isStructAccessModified(string&  firstLine, size_t index) const;
+		bool isStructAccessModified(string  &firstLine, size_t index) const;
 		bool isUnaryOperator() const;
 		bool isImmediatelyPostCast() const;
 		bool isInExponent() const;
@@ -629,18 +647,18 @@
 //		int  findRemainingPadding() const;
 		int  getCurrentLineCommentAdjustment();
 		int  getNextLineCommentAdjustment();
-		int  isOneLineBlockReached(string& line, int startChar) const;
+		int  isOneLineBlockReached(string &line, int startChar) const;
 		void adjustComments();
 		void appendChar(char ch, bool canBreakLine);
 		void appendCharInsideComments();
-		void appendSequence(const string& sequence, bool canBreakLine = true);
+		void appendSequence(const string &sequence, bool canBreakLine = true);
 		void appendSpacePad();
 		void appendSpaceAfter();
 		void breakLine(bool isSplitLine=false);
 		void buildLanguageVectors();
-		void checkForHeaderFollowingComment(const string& firstLine);
+		void checkForHeaderFollowingComment(const string &firstLine);
 		void updateFormattedLineSplitPoints(char appendedChar);
-		void updateFormattedLineSplitPointSequence(const string& sequence);
+		void updateFormattedLineSplitPointSequence(const string &sequence);
 		void checkIfTemplateOpener();
 		void clearFormattedLineSplitPoints();
 		void convertTabToSpaces();
@@ -671,10 +689,10 @@
 		void testForTimeToSplitFormattedLine(int sequenceLength=0);
 		void trimContinuationLine();
 		size_t findFormattedLineSplitPoint(int sequenceLength) const;
-		size_t findNextChar(string& line, char searchChar, int searchStart = 0);
+		size_t findNextChar(string &line, char searchChar, int searchStart = 0);
 		const string* getFollowingOperator() const;
-		string getPreviousWord(const string& line, int currPos) const;
-		string peekNextText(const string& firstLine, bool endOnEmptyLine=false, bool shouldReset=false) const;
+		string getPreviousWord(const string &line, int currPos) const;
+		string peekNextText(const string &firstLine, bool endOnEmptyLine=false, bool shouldReset=false) const;
 
 	private:  // variables
 		int formatterFileType;
@@ -736,16 +754,18 @@
 		PointerAlign pointerAlignment;
 		ReferenceAlign referenceAlignment;
 		LineEndFormat lineEnd;
-		bool computeChecksumIn(const string& currentLine_);
-		bool computeChecksumOut(const string& beautifiedLine);
+		bool computeChecksumIn(const string &currentLine_);
+		bool computeChecksumOut(const string &beautifiedLine);
 		bool isVirgin;
 		bool shouldPadOperators;
 		bool shouldPadParensOutside;
+		bool shouldPadFirstParen;
 		bool shouldPadParensInside;
 		bool shouldPadHeader;
 		bool shouldUnPadParens;
 		bool shouldConvertTabs;
 		bool shouldIndentCol1Comments;
+		bool shouldCloseTemplates;
 		bool isInLineComment;
 		bool isInComment;
 		bool isInCommentStartLine;
@@ -778,6 +798,7 @@
 		bool endOfAsmReached;
 		bool endOfCodeReached;
 		bool lineCommentNoIndent;
+		bool isInEnum;
 		bool isInExecSQL;
 		bool isInAsm;
 		bool isInAsmOneLine;
Index: src/plugins/astyle/astyle/ASEnhancer.cpp
===================================================================
--- src/plugins/astyle/astyle/ASEnhancer.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/ASEnhancer.cpp	(working copy)
@@ -50,22 +50,22 @@
  *
  * init() is called each time an ASFormatter object is initialized.
  */
-void ASEnhancer::init(int fileType,
-                      int _indentLength,
-                      string _indentString,
+void ASEnhancer::init(int  _fileType,
+                      int  _indentLength,
+                      int  _tabLength,
+                      bool _useTabs,
+                      bool _forceTab,
                       bool _caseIndent,
                       bool _preprocessorIndent,
                       bool _emptyLineFill)
 {
 	// formatting variables from ASFormatter and ASBeautifier
-	ASBase::init(fileType);
+	ASBase::init(_fileType);
 	indentLength = _indentLength;
-	if (_indentString == "\t")
-		useTabs = true;
-	else
-		useTabs = false;
-
-	caseIndent    = _caseIndent;
+	tabLength = _tabLength;
+	useTabs = _useTabs;
+	forceTab = _forceTab;
+	caseIndent = _caseIndent;
 	preprocessorIndent = _preprocessorIndent;
 	emptyLineFill = _emptyLineFill;
 	quoteChar = '\'';
@@ -102,7 +102,7 @@
  *
  * @param line       the original formatted line will be updated if necessary.
  */
-void ASEnhancer::enhance(string& line, bool isInPreprocessor, bool isInSQL)
+void ASEnhancer::enhance(string &line, bool isInPreprocessor, bool isInSQL)
 {
 	bool isSpecialChar = false;			// is a backslash escape character
 	shouldIndentLine = true;
@@ -263,7 +263,7 @@
 			continue;
 		}
 
-		// just want unindented switch statements from this point
+		// just want unindented case statements from this point
 
 		if (caseIndent
 		        || switchDepth == 0
@@ -299,7 +299,7 @@
  * @param i             the line index of the case statement.
  * @return              the line index of the colon.
  */
-size_t ASEnhancer::findCaseColon(string&  line, size_t caseIndex) const
+size_t ASEnhancer::findCaseColon(string  &line, size_t caseIndex) const
 {
 	size_t i = caseIndex;
 	bool isInQuote_ = false;
@@ -342,14 +342,51 @@
 }
 
 /**
- * indent a line by a given number of tabsets
+ * convert a force-tab indent to spaces
+ *
+ * @param line          a reference to the line that will be converted.
+ */
+void ASEnhancer::convertForceTabIndentToSpaces(string &line) const
+{
+	// replace tab indents with spaces
+	for (size_t i = 0; i < line.length(); i++)
+	{
+		if (!isWhiteSpace(line[i]))
+			break;
+		if (line[i] == '\t')
+		{
+			line.erase(i, 1);
+			line.insert(i, tabLength, ' ');
+			i += tabLength - 1;
+		}
+	}
+}
+
+/**
+ * convert a space indent to force-tab
+ *
+ * @param line          a reference to the line that will be converted.
+ */
+void ASEnhancer::convertSpaceIndentToForceTab(string &line) const
+{
+	assert(tabLength > 0);
+
+	// replace leading spaces with tab indents
+	size_t newSpaceIndentLength = line.find_first_not_of(" \t");
+	size_t tabCount = newSpaceIndentLength / tabLength;		// truncate extra spaces
+	line.erase(0U, tabCount * tabLength);
+	line.insert(0U, tabCount, '\t');
+}
+
+/**
+* indent a line by a given number of tabsets
  *    by inserting leading whitespace to the line argument.
  *
  * @param line          a reference to the line to indent.
- * @param unindent      the number of tabsets to insert.
+ * @param indent        the number of tabsets to insert.
  * @return              the number of characters inserted.
  */
-int ASEnhancer::indentLine(string&  line, int indent) const
+int ASEnhancer::indentLine(string  &line, int indent) const
 {
 	if (line.length() == 0
 	        && ! emptyLineFill)
@@ -357,12 +394,22 @@
 
 	size_t charsToInsert;
 
-	if (useTabs)
+	if (forceTab && indentLength != tabLength)
 	{
+		// replace tab indents with spaces
+		convertForceTabIndentToSpaces(line);
+		// insert the space indents
+		charsToInsert = indent * indentLength;
+		line.insert(0U, charsToInsert, ' ');
+		// replace leading spaces with tab indents
+		convertSpaceIndentToForceTab(line);
+	}
+	else if (useTabs)
+	{
 		charsToInsert = indent;
 		line.insert(0U, charsToInsert, '\t');
 	}
-	else
+	else // spaces
 	{
 		charsToInsert = indent * indentLength;
 		line.insert(0U, charsToInsert, ' ');
@@ -379,7 +426,7 @@
  * @param index         the current line index.
  * @return              true if a hit.
  */
-bool ASEnhancer::isBeginDeclareSectionSQL(string&  line, size_t index) const
+bool ASEnhancer::isBeginDeclareSectionSQL(string  &line, size_t index) const
 {
 	string word;
 	size_t hits = 0;
@@ -428,7 +475,7 @@
  * @param index         the current line index.
  * @return              true if a hit.
  */
-bool ASEnhancer::isEndDeclareSectionSQL(string&  line, size_t index) const
+bool ASEnhancer::isEndDeclareSectionSQL(string  &line, size_t index) const
 {
 	string word;
 	size_t hits = 0;
@@ -477,7 +524,7 @@
  * @return     false = one-line bracket has not been reached.
  *             true  = one-line bracket has been reached.
  */
-bool ASEnhancer::isOneLineBlockReached(string& line, int startChar) const
+bool ASEnhancer::isOneLineBlockReached(string &line, int startChar) const
 {
 	assert(line[startChar] == '{');
 
@@ -551,7 +598,7 @@
  * @param index         the current line index.
  * @return              the new line index.
  */
-size_t ASEnhancer::processSwitchBlock(string& line, size_t index)
+size_t ASEnhancer::processSwitchBlock(string &line, size_t index)
 {
 	size_t i = index;
 	bool isPotentialKeyword = isCharPotentialHeader(line, i);
@@ -569,7 +616,7 @@
 	}
 	lookingForCaseBracket = false;                      // no opening bracket, don't indent
 
-	if (line[i] == '}')                                 // if close bracket
+	if (line[i] == '}')
 	{
 		sw.switchBracketCount--;
 		assert(sw.switchBracketCount <= bracketCount);
@@ -640,7 +687,7 @@
  * @param unindent      the number of tabsets to erase.
  * @return              the number of characters erased.
  */
-int ASEnhancer::unindentLine(string&  line, int unindent) const
+int ASEnhancer::unindentLine(string  &line, int unindent) const
 {
 	size_t whitespace = line.find_first_not_of(" \t");
 
@@ -650,24 +697,38 @@
 	if (whitespace == 0)
 		return 0;
 
-	size_t charsToErase;                    // number of chars to erase
+	size_t charsToErase = 0;
 
-	if (useTabs)                            // if formatted with tabs
+	if (forceTab && indentLength != tabLength)
 	{
-		charsToErase = unindent;            // tabs to erase
-		if (charsToErase <= whitespace)     // if there is enough whitespace
-			line.erase(0, charsToErase);    // erase the tabs
+		// replace tab indents with spaces
+		convertForceTabIndentToSpaces(line);
+		// remove the space indents
+		size_t spaceIndentLength = line.find_first_not_of(" \t");
+		charsToErase = unindent * indentLength;
+		if (charsToErase <= spaceIndentLength)
+			line.erase(0, charsToErase);
 		else
 			charsToErase = 0;
+		// replace leading spaces with tab indents
+		convertSpaceIndentToForceTab(line);
 	}
-	else
+	else if (useTabs)
 	{
-		charsToErase = unindent * indentLength; // compute chars to erase
-		if (charsToErase <= whitespace)         // if there is enough whitespace
-			line.erase(0, charsToErase);        // erase the spaces
+		charsToErase = unindent;
+		if (charsToErase <= whitespace)
+			line.erase(0, charsToErase);
 		else
 			charsToErase = 0;
 	}
+	else // spaces
+	{
+		charsToErase = unindent * indentLength;
+		if (charsToErase <= whitespace)
+			line.erase(0, charsToErase);
+		else
+			charsToErase = 0;
+	}
 
 	return charsToErase;
 }
Index: src/plugins/astyle/astyle/ASLocalizer.cpp
===================================================================
--- src/plugins/astyle/astyle/ASLocalizer.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/ASLocalizer.cpp	(working copy)
@@ -1,4 +1,8 @@
-&#65279;/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+//
+//  FILE ENCODING IS UTF-8 WITHOUT A BOM.
+//  &#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;    &#20013;&#22269;&#30340;    &#26085;&#26412;&#12398;    &#54620;&#44397;&#51032;
+//
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  *   ASLocalizer.cpp
  *
  *   Copyright (C) 2006-2011 by Jim Pattee <jimp03@email.com>
@@ -23,7 +27,7 @@
  *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.
  *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 
+ *
  *   To add a new language:
  *
  *   Add a new translation class to ASLocalizer.h.
@@ -189,7 +193,7 @@
 }
 
 const Translation* ASLocalizer::getTranslationClass() const
-// Returns the name of the translation class in m_translation.
+// Returns the name of the translation class in m_translation.  Used for testing.
 {
 	assert(m_translation);
 	return m_translation;
@@ -291,14 +295,14 @@
 // Translation base class methods.
 //----------------------------------------------------------------------------
 
-void Translation::addPair(const string& english, const wstring& translated)
+void Translation::addPair(const string &english, const wstring &translated)
 // Add a string pair to the translation vector.
 {
 	pair<string, wstring> entry (english, translated);
 	m_translation.push_back(entry);
 }
 
-string Translation::convertToMultiByte(const wstring& wideStr) const
+string Translation::convertToMultiByte(const wstring &wideStr) const
 // Convert wchar_t to a multibyte string using the currently assigned locale.
 // Return an empty string if an error occurs.
 {
@@ -338,7 +342,7 @@
 	return m_translation.size();
 }
 
-bool Translation::getWideTranslation(const string& stringIn, wstring& wideOut) const
+bool Translation::getWideTranslation(const string &stringIn, wstring &wideOut) const
 // Get the wide translation string. Used for testing.
 {
 	for (size_t i = 0; i < m_translation.size(); i++)
@@ -354,7 +358,7 @@
 	return false;
 }
 
-string& Translation::translate(const string& stringIn) const
+string &Translation::translate(const string &stringIn) const
 // Translate a string.
 // Return a static string instead of a member variable so the method can have a "const" designation.
 // This allows "settext" to be called from a "const" method.
Index: src/plugins/astyle/astyle/notes.html
===================================================================
--- src/plugins/astyle/astyle/notes.html	(revision 7913)
+++ src/plugins/astyle/astyle/notes.html	(working copy)
@@ -21,12 +21,36 @@
         Artistic Style 2.03&nbsp; (pending)</h3>
 
     <ul>
+        <li>Add new option "indent=force-tab-x=#" (-xT#) to allow a tab length that different from the indent length (3430662).</li>
+        <li>Add new option, "pad-first-paren-out" (xd), to pad only the first paren in a seies on the outside (3350356).</li>
         <li>Add new option "max-code-length=#" (-xC#) to limit the length of code on a line. </li>
         <li>Add new option "break-after-logical" (-xL) to modify a "max-code-length" line break for conditionals. </li>
+        <li>Add new option &quot;close-templates&quot; (-xy) to close whitespace in the angle brackets &#39;&gt;&#39; of template definitions.</li>
+        <li>Add formatting of C++/CLI managed pointers (the &#39;^&#39; character) to the &quot;align-pointer&quot; option.</li>
         <li>Add translations for Dutch, Finnish, Italian, Japanese, Korean, Polish, Portuguese, Russian, Swedish, and Ukrainian.
         </li>
-        <li>Refactor to improve the design and decomposition:
+        <li>Remove byte-order-mark from ASLocalizer.cpp.</li>
+        <li>Change the short option for delete-empty-lines from "xd" to "xe".</li>
+        <li>Change the ASTYLE_LIB option to remove __stdcall and __declspec for a Windows static library when 
+            ASTYLE_STATIC is also declared .</li>
+        <li>Fix C++11 standard for range-based "for" statements (3458402, 3480095). </li>
+        <li>Fix C++11 standard for "enum" with a base type (3458402). </li>
+        <li>Fix C++11 standard for template closing angle brackets (no space required) (3495192). </li>
+        <li>Fix C/C++ keyword 'extern "C"' in a preprocessor causing an extra indent (1514844, 2953388, 2963382, 3093842,
+            <span>3467479)</span>. </li>
+        <li>Fix quote continuation sometimes being processed as a preprocessor directive (3445475).</li>
+        <li>Fix Java formatting of generics with wildcards (3428140).</li>
+        <li>Fix formatting of pointers and references after a template close.</li>
+        <li>Fix C comments beginning a line breaking if they follow a semi-colon (3502700).</li>
+        <li>Fix 'struct' return type being mistaken for a struct.</li>
+        <li>Fix "pad-oper" in java for-each loop.</li>
+        <li>Fix recognition of a macro multi-line comment (3414970).</li>
+        <li>Fix bracketTypeStack entries added by #if and #else if the # is separated from the word. </li>
+        <li>Fix non-portable return value on locale name (3452574). </li>
+        <li>Fix spelling of "depreciated" in help message (3454735).</li>
+        <li>Refactor to improve design and decomposition:
             <ul>
+                <li>Fix warning messages from Visual Studio static code analysis.</li>
                 <li>Fix warning messages from cppcheck, except for constructor uninitialized variables (false positive). </li>
                 <li>Remove astyle_main.h dependency from ASLocalizer.h </li>
                 <li>Remove appendChar() from the inline functions.</li>
@@ -36,6 +60,7 @@
 
     <h3 id="_2.02">
         Artistic Style 2.02.1&nbsp; (November 2011)</h3>
+
     <ul>
         <li>Add to C# the recognition of pointers and address-of operators. </li>
         <li>Improve recognition of pointers and references (3,314,499, 3,298,204, and 2,990,608). </li>
@@ -179,1086 +204,12 @@
             </ul>
         </li>
     </ul>
+    <p>
+        &nbsp;</p>
 
-    <h3 id="_1.24">
-        Artistic Style 1.24&nbsp; (February 2010)</h3>
-
-    <ul>
-        <li>Add new option &#8209;&#8209;brackets=horstmann (-g) to place run&#8209;in statements on the same line as an opening
-            bracket. </li>
-        <li>Add new style --style=horstmann (-A9) using horstmann brackets to predefined styles. </li>
-        <li>Add new option &#8209;&#8209;add-brackets (-j) and --add-one-line-brackets (-J) to place brackets around one line
-            statements. </li>
-        <li>Add new style --style=1tbs and --style=otbs (-A10) using linux brackets and the --add-brackets option to predefined
-            styles. </li>
-        <li>Add new option &#8209;&#8209;pad&#8209;header (&#8209;H) from Mario Gleichmann to insert space padding after paren
-            headers. </li>
-        <li>Add new option &#8209;&#8209;align&#8209;pointer=type (-k1), &#8209;&#8209;align&#8209;pointer=middle (-k2) and
-            &#8209;&#8209;align&#8209;pointer=name (-k3) from J P Nurmi. </li>
-        <li>Add new option &#8209;&#8209;lineend=windows (-z1), &#8209;&#8209;lineend=linux (-z2) and &#8209;&#8209;lineend=macold
-            (-z3) from MrTact. </li>
-        <li>Add new option &#8209;&#8209;indent&#8209;col1&#8209;comments (-Y) to indent C++ comments beginning in column
-            one. </li>
-        <li>Add formatting of embedded SQL statements in C/C++.</li>
-        <li>Add rejecting 16 or 32 bit file encoding and display a warning message.</li>
-        <li>Remove .tmp file by using ostringstream instead of ofstream. &nbsp;</li>
-        <li>Remove depreciated option style=kr.</li>
-        <li>Remove trace file from ASFormatter and use 'cout' instead. </li>
-        <li>Improve assembler statement processing to include extended assembly.</li>
-        <li>Improve assembler statement processing to include Microsoft specific lines and blocks.</li>
-        <li>Improve recognition of pointers and references vs. arithmetic operators.</li>
-        <li>Improve recognition of arithmetic operators for --pad-oper (-p) option. </li>
-        <li>Change "class" initializer statement to one indent.</li>
-        <li>Change &quot;class&quot; initializer statement continuation lines to align on the first initializer.</li>
-        <li>Change predefined styles to allow changes to spaces per indent.</li>
-        <li>Change --style=stroustrup to 5 spaces per indent.</li>
-        <li>Change --style=linux default minimum conditional indent to 4.</li>
-        <li>Change default formatting to leave paren headers unchanged instead of inserting space padding. </li>
-        <li>Change &#8209;&#8209;unpad&#8209;paren to unpad headers unless padding is requested. </li>
-        <li>Change NONE_MODE brackets to allow run-in statements from horstmann type brackets.</li>
-        <li>Change array brackets to allow run-in statements from horstmann type brackets.</li>
-        <li>Change --min-conditional-indent to allow for statements preceded by a bracket (horstmann brackets). </li>
-        <li>Change ASBeautifier and ASFormatter to output an entire comment line instead of characters. </li>
-        <li>Change quote formatting in ASFormatter to output the entire string instead of single characters.</li>
-        <li>Change from Ettl Martin for cppcheck compliance. </li>
-        <li>Change space padding of line end comments to one space when the proper alignment cannot be maintained.</li>
-        <li>Change spaces per tab minimum value from 1 to 2.</li>
-        <li>Change the help display of "Formatting Options" to "Formatting Options" and "Padding Options".</li>
-        <li>Fix MinGW file globing by moving the _CRT_glob variable outside the astyle namespace. </li>
-        <li>Fix default line end processing to always output consistent line ends.</li>
-        <li>Fix identification of pointer dereferences and address-of indicators.</li>
-        <li>Fix memory leaks by changing static vectors to static vector pointers so the object can be deleted.</li>
-        <li>Fix console build trying to use Unicode character set.</li>
-        <li>Fix stringEndsWith method when end is longer than the string.</li>
-        <li>Fix --exclude option rejecting a full file path.</li>
-        <li>Fix --verbose option when used with --quiet. </li>
-        <li>Fix --quiet option for excluded files and directories.</li>
-        <li>Fix --indent-classes for C++ structs containing access modifiers.</li>
-        <li>Fix formatting of variable types with multiple names.</li>
-        <li>Fix from Christian Stimming for alignment of &lt;&lt; and &gt;&gt; operators.</li>
-        <li>Fix in-statement indent of "enum class".</li>
-        <li>Fix 'if' statement following an 'else' sometimes attaching to a comment.</li>
-        <li>Fix recognition of non-indent line comments in the first two lines of a source file.</li>
-        <li>Fix non-instatement array to recognize an empty bracket.</li>
-        <li>Fix indenting non-indent line comments in an event table or message map.</li>
-        <li>Fix to move comments when breaking one line blocks and -keep-one-line-statements is used.</li>
-        <li>Fix to recognize parens in template definitions.</li>
-        <li>Fix recognition of class initializer when class description contains multiple lines.</li>
-        <li>Fix from Colin D Bennett for 64-bit comparison. </li>
-        <li>Fix console error procedure to terminate on an error.</li>
-        <li>Fix 'return' statement for padding or not padding arithmetic operators.</li>
-        <li>Fix C# 'delegate' and 'unchecked' not being identified as keywords.</li>
-        <li>Fix occasional array formatting problem with one-line blocks when indent-brackets is used.</li>
-        <li>Fix to check for max-instatement-indent when the previous line ends with an opening paren.</li>
-        <li>Fix predefined style options to allow the use of --indent=tab (-t) and --indent=force-tab (-T) options.</li>
-        <li>Fix --in-statement indent to allow for non-indentation tabs in the line.</li>
-        <li>Fix formatting problems with non in-statement arrays. </li>
-        <li>Fix infinite loop when preprocessor #else is missing #if.</li>
-        <li>Fix Borland string compares to check for comparison past the end of string. </li>
-        <li>Fix &#8209;&#8209;fill&#8209;empty&#8209;lines when &#8209;&#8209;indent=force&#8209;tab is also used.</li>
-        <li>Fix break-blocks formatting with preceding mixed comments and line comments.</li>
-        <li>Fix not breaking a closing bracket following a comment.</li>
-        <li>Fix attached brackets to not change empty brackets when both are on the same line. </li>
-        <li>Fix attached brackets sometimes deleting a previous comment line when the bracket cannot be attached.</li>
-        <li>Fix attached brackets attaching a closing header to a single line block.</li>
-        <li>Fix broken brackets breaking a single line block before a comment.</li>
-        <li>Fix 'extern' keyword using in-statement indents instead of tab indents. </li>
-        <li>Fix errno checking problem on old OpenVMS versions.</li>
-        <li>Fix deleting a space before a line end comment when attaching 'else' to a closing bracket. </li>
-        <li>Fix adding a space before a line end comment when the comment is preceded by a tab.</li>
-        <li>Fix to leave tab indentation on no-indent line comments.</li>
-        <li>Fix comments when a bracket is added or removed from a line.</li>
-        <li>Fix indenting preprocessor statements in a wxWidgets or MFC macro.</li>
-        <li>Fix memory leak reporting of global and static class member vectors. </li>
-        <li>Refactor to implement unit testing and improve design and decomposition:
-            <ul>
-                <li>Replace multiple line conditional statements with a method to eliminate complex "not" (!) logic. </li>
-                <li>Change to call standardizePath when a vector entry is built. </li>
-                <li>Change g_console from an object to an object pointer to allow rebuilding the object.</li>
-                <li>Change ASConsole variables to private with getters and setters.</li>
-                <li>Change processOptions method to return to main instead of exiting.</li>
-                <li>Move formatFile call from getFilePaths to main.</li>
-                <li>Move peekNextChar function from ASBeautifier to ASBase.</li>
-                <li>Move multi-line comment alignment from ASBeautifier to ASFormatter. </li>
-                <li>Encapsulate global variable isModeManuallySet. </li>
-                <li>Extract methods formatOpeningBracket, formatClosingBracket and isCurrentBracketBroken.</li>
-                <li>Extract methods formatCommentOpener and formatCommentBody.</li>
-                <li>Extract methods formatLineCommentOpener and formatLineCommentBody.</li>
-                <li>Extract methods formatQuoteOpener and formatQuoteBody. </li>
-                <li>Extract methods processFiles and writeOutputFile. </li>
-                <li>Extract methods processSwitchBlock and findCaseColon. </li>
-                <li>Extract method updateExcludeVector.</li>
-                <li>Extract method copyTempStacks.</li>
-                <li>Extract method formatCinToCout. </li>
-                <li>Extract method isLineBreakBeforeClosingHeader. </li>
-            </ul>
-        </li>
-    </ul>
-
-    <h3 id="_1.23">
-        Artistic Style 1.23&nbsp; (February 2009)</h3>
-
-    <ul>
-        <li>Add --brackets=stroustrup (-u) to bracket types. </li>
-        <li>Add --style=stroustrup to predefined styles. </li>
-        <li>Add --style=whitesmith to predefined styles.</li>
-        <li>Add --style=banner to predefined styles.</li>
-        <li>Add --style=k&amp;r and --style=k/r to predefined styles. </li>
-        <li>Add --style=allman and --style=bsd to predefined styles. </li>
-        <li>Change --style=kr to --style=java.</li>
-        <li>Add short options -A1 thru -A8 for predefined styles.</li>
-        <li>Change the following long options to eliminate duplicate keys (the short options have not changed).
-            <ul>
-                <li>--force-indent=tab=# changed to --indent=force-tab=#</li>
-                <li>--brackets=break-closing changed to --break-closing-brackets</li>
-                <li>--pad=oper changed to --pad-oper</li>
-                <li>--pad=paren changed to --pad-paren</li>
-                <li>--pad=paren-out changed to --pad-paren-out</li>
-                <li>--pad=paren-out changed to --pad-paren-in</li>
-                <li>--unpad=paren changed to --unpad-paren</li>
-                <li>--one-line=keep-statement changed to --keep-one-line-statements</li>
-                <li>--one-line=keep-blocks changed to --keep-one-line-blocks</li>
-            </ul>
-        </li>
-        <li>Add new option --indent=force-tab (assumes tab setting is 4).</li>
-        <li>Add new option --delete&#8209;empty&#8209;lines to delete the empty lines within a function.</li>
-        <li>Add new option --formatted (-Q) to display only the files that are formatted. </li>
-        <li>Change --convert-tabs to replace tabs with spaces and maintain the correct spacing. </li>
-        <li>Change --indent-blocks to indent only blocks within a function.</li>
-        <li>Change --indent-blocks to NOT indent the opening bracket for namespaces, classes, and interfaces. </li>
-        <li>Change --indent-blocks and --indent-brackets to NOT indent namespaces unless --indent-namespaces is used.</li>
-        <li>Change --indent-blocks and --indent-brackets to always break closing headers so the 'else' aligns with the corresponding
-            'if'.</li>
-        <li>Change --indent-blocks and --indent-brackets to be mutually exclusive (--indent&#8209;blocks will be used). </li>
-        <li>Fix --indent-blocks indenting a java 'interface' statement.&nbsp; </li>
-        <li>Fix --indent-blocks to indenting opening brackets in a java method containing a 'throws' clause. </li>
-        <li>Fix --indent-blocks indenting opening brackets in a java static constructor. </li>
-        <li>Fix --indent-blocks formatting in a C++ const function. </li>
-        <li>Fix --indent&#8209;brackets indenting brackets within comments. </li>
-        <li>Move set-up of predefined styles to ASFormatter so the style options will override all other options.</li>
-        <li>Fix --else-if statements to join by default. </li>
-        <li>Fix to always space pad after semi&#8209;colons.</li>
-        <li>Fix --pad-oper to space pad all commas.</li>
-        <li>Fix --break&#8209;blocks and --break&#8209;blocks=all options.
-            <ul>
-                <li>Fix to recognize a semi&#8209;colon as end of block when brackets are not used.</li>
-                <li>Fix to break comments preceding a block so that comments are kept with the block. </li>
-                <li>Fix 'for' statement semi&#8209;colons being mistaken for the end of a statement.</li>
-                <li>Fix bracketFormatMode of&nbsp; NONE_MODE to break closing headers.</li>
-                <li>Fix incorrect breaking of a block that follows a comment. </li>
-                <li>Fix breaking of opening and closing headers preceded by a comment.</li>
-                <li>Fix breaking of statements when comments follow a header block. </li>
-                <li>Fix incorrectly breaking blocks for namespaces, interfaces, and classes. </li>
-                <li>Fix incorrectly breaking blocks for access modifiers when keep-one-line-statements is used. </li>
-                <li>Fix to NOT break single line blocks. </li>
-                <li>Fix breaking a closing 'while' statement in a do-while block. </li>
-                <li>Fix preprocessor directives not resetting all variables. </li>
-                <li>Fix peekNextText function not correctly identifying an end of file condition.</li>
-            </ul>
-        </li>
-        <li>Add C# lambda expression arrow '=&gt;' to list of operators so pad&#8209;oper will not separate. </li>
-        <li>Add C# '??' to list of operators so pad&#8209;oper will not separate. </li>
-        <li>Fix C# to identify 'add' and 'remove' methods as command type brackets. </li>
-        <li>Fix C# indentation of closing headers 'set' and 'remove'.</li>
-        <li>Fix C# to identify methods containing a 'where' keyword as block headers.&nbsp; </li>
-        <li>Fix C# files to recognize preprocessor statements. </li>
-        <li>Fix C# indentation following a #region statement containing a keyword. </li>
-        <li>Fix C# to recognize nullable types so --pad&#8209;paren will not separate (e.g. 'int?'). </li>
-        <li>Fix C# to recognize non-generic default values (e.g. 'default(int)'). </li>
-        <li>Fix C# indentation when a class declaration contains multiple class statements. </li>
-        <li>Fix C# linux bracket placement for an&nbsp; interface statement. </li>
-        <li>Fix C# --break-elseifs also breaking 'catch' statements. </li>
-        <li>Fix C# --break-blocks breaking of 'set' and 'remove' statements.</li>
-        <li>Fix Java static constructor not being identified as a command type bracket.</li>
-        <li>Fix Java 'new' array not having an in statement indent. </li>
-        <li>Refactor NONE_MODE in ASFormatter to use common procedures with other bracket types.</li>
-        <li>Refactor astyle_main to improve maintainability.
-            <ul>
-                <li>New class ASConsole to encapsulate console variables. </li>
-                <li>New header file astyle_main.h </li>
-                <li>Move console only functions to ASConsole class.</li>
-                <li>New functions processOptions and processFilePath to improve decomposition.</li>
-            </ul>
-        </li>
-        <li>Apply patches from Eran Ifrah to remove memory leaks.</li>
-        <li>Apply patches from Max Horn for the unary plus operator.</li>
-        <li>Fix initialization of vector stack objects to remove memory leaks.</li>
-        <li>Add comma (,) to valid options separators in the options file. </li>
-        <li>Change to display all (instead of one) --exclude errors before abort.</li>
-        <li>Change astyle namespace to include all of astyle_main except the functions called externally. </li>
-        <li>Change licensing comments from LGPL version 2.1 to LGPL version 3.</li>
-        <li>Change JNI function call from GetVersion to AStyleGetVersion.</li>
-        <li>Remove &#39;extern&#39; keyword from headers, nonParenHeaders, PreBlockStatements, and &nbsp;PreCommandHeaders.
-        </li>
-        <li>Fix not always space padding a closing bracket. </li>
-        <li>Fix not space padding a closing header when breaking one line statements. </li>
-        <li>Fix --keep-one-line-blocks breaking closing headers on broken brackets. </li>
-        <li>Fix incorrectly attaching a bracket inside a comment after the end of a statement.</li>
-        <li>Add number of output lines processed to the --verbose option display.</li>
-        <li>Remove trace file from ASEnhancer and use &#39;cout&#39; instead.</li>
-        <li>Replace INIT_CONTAINER and DELETE_CONTAINER macros with template functions.</li>
-        <li>Replace IS_A macro with isBracketType function.</li>
-        <li>Add GCC extended operators '&lt;?' and '&gt;?' (min and max) to list of operators.</li>
-        <li>Fix indentation and breaking of lines in struct and class bit fields.</li>
-        <li>Fix indentation of struct definitions.</li>
-        <li>Add &#39;union&#39; to preDefinitionHeaders.</li>
-        <li>Change preBlockStatements and preDefinitionHeaders to be dependent on file type.</li>
-        <li>Fix a single quote mark used as an apostrophe in preprocessor directives being processed as a quotation.</li>
-        <li>Fix linux bracket formatting in nested namespaces. &nbsp;</li>
-        <li>Fix --pad&#8209;paren&#8209;in not converting a tab to spaces if convert&#8209;tabs is requested.</li>
-        <li>Fix incorrectly breaking a closing bracket when a header is not present.</li>
-        <li>Fix inserting duplicate bracketTypeStack entries when preprocessor directives contain unmatched brackets.</li>
-        <li>Fix bracketFormatMode of&nbsp; NONE_MODE to correctly break single line blocks.&nbsp; </li>
-        <li>Fix --keep&#8209;one&#8209;line&#8209;blocks breaking 'if' statements when --break&#8209;elseifs is used.</li>
-        <li>Remove inefficiencies for speed improvement.
-            <ul>
-                <li>Reduce calls to frequently used functions by first checking for specific requirements.</li>
-                <li>New class ASBase to inline frequently used functions and eliminate duplication between classes.</li>
-                <li>Change ASEnhancer from inherited to embedded to eliminate scope resolution requirements.</li>
-                <li>Change ASFormatter to output words instead of characters. </li>
-                <li>Resequence operator vectors and add new findHeader and findOperator functions. </li>
-            </ul>
-        </li>
-        <li>Fix NONE_MODE brackets to break a statement on the same line as an opening broken bracket.</li>
-        <li>Add 'errno' message for file and directory errors in the Linux build.</li>
-        <li>Add error checking for file remove and rename procedure.</li>
-        <li>Fix Linux abort for file sizes over 2 GB.</li>
-        <li>Fix searching the entire directory when only one file is requested.</li>
-        <li>Change --preserve-date increment to 2 units for Visual Studio 2008. </li>
-    </ul>
-
-    <h3 id="_1.22">
-        Artistic Style 1.22&nbsp; (April 2008)</h3>
-
-    <ul>
-        <li>New --recursive (-r, -R) option to recursively process sub directories.</li>
-        <li>New --exclude option to exclude files and sub directories from processing.</li>
-        <li>New --verbose (-v) option to display optional information, such as release number and statistical data.</li>
-        <li>New --quiet (-q) option to suppress all informational messages.</li>
-        <li>Change --version short option to -V.</li>
-        <li>Change --convert&#8209;tabs short option to -c.</li>
-        <li>Change to NOT write a new or backup file if a file contents has not changed,&nbsp;</li>
-        <li>Change console file input procedure to create a .tmp file and preserve the input file on a crash.</li>
-        <li>Add Java Native Interface (JNI) for developers.</li>
-        <li>New peekNextLine and peekReset functions in ASStreamIterator.</li>
-        <li>Change ASEnhancer static variables to class member variables and reset them in the init() function.</li>
-        <li>Patch from Jens Krinke to fix stack underrun when the number of closing brackets exceed opening brackets.</li>
-        <li>Fix stack underrun when the number of closing parens exceed opening parens.</li>
-        <li>Fix processing of C/C++ string literal continuation lines.</li>
-        <li>Patch from Emilio Guijarro to correct padding and formatting of C# 'foreach' statements.</li>
-        <li>Fix C# to correctly identify accessor calls as not being headers.</li>
-        <li>Fix C# accessors (get and set) to break when breaking single line blocks.</li>
-        <li>Modify template procedure to process C# generics.</li>
-        <li>Fix processing of C# verbatim string literals.</li>
-        <li>Fix indentation of C# methods containing 'base' or 'this' keywords.</li>
-        <li>Fix indentation of C# methods containing generics.</li>
-        <li>Fix indentation of C# enums containing a type.</li>
-        <li>Fix indentation of C# catch blocks when 'catch' is a non-paren header.</li>
-        <li>Fix C# breaking of linux style brackets for methods containing generics and methods containing accessors.</li>
-        <li>Allow @ as a C# identifier prefix.</li>
-        <li>Fix assert error on C# UTF-8 files when the byte-order mark (BOM) is not followed by a space or a comment.</li>
-        <li>Fix nested preprocessor formatting by adding waitingBeautifierStack, activeBeautifierStack, waitingBeautifierStackLengthStack,
-            and activeBeautifierStackLengthStack to the ASBeautifier copy constructor and class destructor.</li>
-        <li>Fix ASStreamIterator end of file procedure for ASTYLE_LIB option.</li>
-        <li>Add pragma statements for Intel compiler to disable specific warning messages.</li>
-        <li>Move line number accumulators from ASSourceIterator class to private in ASStreamIterator class.</li>
-        <li>Fix reset of ASFormatter isInPreprocessor flag when \ is followed by a blank line.</li>
-        <li>Fix cin, cout, and cerr continuation lines to be indented.</li>
-        <li>Fix indentation of inner classes that inherit a base class.</li>
-        <li>Add astyle_main.cpp function declarations to astyle_main.cpp.</li>
-        <li>Change global variable prefix from '_' to 'g_'.</li>
-        <li>Inline selected ASStreamIterator functions.</li>
-        <li>Fix brackets=attach from attaching a bracket to a preprocessor directive.</li>
-        <li>Fix brackets=attach and brackets=linux breaking in an array immediately after a preprocessor directive.</li>
-        <li>Modify Jack Handy's wildcmp() function to make Windows comparisons case insensitive.</li>
-        <li>Fix not indenting a bracket when an attached bracket is broken and the following line is a no-indent comment.</li>
-        <li>Add error message if 'options=' file cannot be opened.</li>
-        <li>Bypass colon enclosed in quotes when processing 'case' statements.</li>
-        <li>Fix brackets=none not always breaking a closing bracket when breaking single line blocks.</li>
-        <li>Fix padding of header words that are in a definition (array).</li>
-        <li>Fix indentation of line immediately after a case statement where the object is enclosed in parens.</li>
-        <li>Fix breaking of multiple case statements when the object is enclosed in parens.</li>
-        <li>Fix indentation when there is more than one case statement on a line.</li>
-        <li>Remove processing for shouldBreakLineAfterComments (no longer used).</li>
-        <li>Fix brackets=break not breaking if before a comment that is not at end of line.</li>
-        <li>Fix brackets=none not space padding before a bracket.</li>
-        <li>Fix brackets=break and brackets=none not breaking comments following a bracket.</li>
-        <li>Fix blank line not being trimmed if inside a comment.</li>
-        <li>Fix brackets=break incorrectly space padding a preceding preprocessor statement line.</li>
-        <li>Fix brackets=attach attaching two consecutive opening brackets before an end-of-line comment.</li>
-        <li>Fix break-blocks not inserting a blank line if a bracket preceding a comment was moved to the following line.</li>
-        <li>Add 'X' to selected ASEnhancer variables to prevent conflict with ASBeautifier.</li>
-        <li>Fix brackets=none not space padding after a closing bracket that precedes a closing header.</li>
-        <li>Change minimum indent edit from 2 spaces to 1 space.</li>
-        <li>Change to check for preprocessor definitions in C/C++ files only.</li>
-        <li>Fix padding of template definitions when pad=oper is used.</li>
-        <li>Fix comment formatting in nested preprocessor definitions.</li>
-        <li>Fix header dependencies and warning messages for Linux GCC 4.3.</li>
-        <li>Use file name from disk for output to maintain correct case in Windows.</li>
-        <li>Fix pad=operator padding a negative value in a case statement.</li>
-        <li>Fix incorrect identification of bracket type following a struct statement.</li>
-        <li>Fix indentation of blank lines outside of brackets when --fill&#8209;empty&#8209;lines is used with --indent&#8209;blocks
-            or --indent&#8209;brackets.</li>
-        <li>Fix ASFormatter not identifying comments in preprocessor directives.</li>
-        <li>Fix brackets=attach deleting a preceding blank line in array type brackets.</li>
-    </ul>
-
-    <h3 id="_1.21">
-        Artistic Style 1.21&nbsp; (June 2007)</h3>
-
-    <ul>
-        <li>New function, formatArrayBrackets, to improve array formatting and indentation.</li>
-        <li>Attach brackets to lines with end-of-line comments.</li>
-        <li>Break brackets from lines with end-of-line comments without bringing the comments with them.</li>
-        <li>Move ASFormatter and ASBeautifier static initialization from constructor to "init" function to allow for changes
-            in the file type.</li>
-        <li>Add --preserve-date (-Z) option.</li>
-        <li>New functions formatBrackets, padOperators and PadParens to improve decomposition.</li>
-        <li>Add identification of file mode (C, C#, or Java) to file open procedure.</li>
-        <li>Keywords in headers now depend on file mode (C, C#, or Java) and object type (formatter or beautifier).</li>
-        <li>Remove short options -c (mode=c) and -j (mode=java) since the mode is now set automatically from the file extension.</li>
-        <li>Change Linux bracket formatting for header files.</li>
-        <li>Fix formatting of empty blocks.</li>
-        <li>Expand BracketType definition.</li>
-        <li>Fix "do not change" bracket mode inconsistencies with other bracket formatting.</li>
-        <li>Remove mode=java from Java predefined style.</li>
-        <li>Change long option --errors-to-standard-output to --errors-to-stdout.</li>
-        <li>Fix breaking of struct variable declaration.</li>
-        <li>Add support for OpenVMS compiler.</li>
-        <li>Inline the ASBeautifier function isLegalNameChar.</li>
-        <li>Fix no-indent of block comments starting in column 1 or 2.</li>
-        <li>Fix formatting of Java anonymous class defined as a method call parameter (bracket within a paren).</li>
-        <li>Fix indentation for Java "for each" statement.</li>
-        <li>Fix bracket being attached to a preprocessor directive.</li>
-        <li>Fix extra indent of single line blocks when a previous line probation header is found.</li>
-        <li>Fix formatting of block comments when continuation lines have different leading whitespace characters.</li>
-        <li>Fix deleting a blank line before a bracket when brackets=attach.</li>
-        <li>Fix segmentation fault on preprocessor continuation line followed by an empty line.</li>
-        <li>Fix bad bracket indent that sometimes occurs when brackets=attach and it cannot be attached.</li>
-        <li>Fix trimming of comment lines.</li>
-        <li>Fix incorrect identification of "new" operator pointers as calculations.</li>
-        <li>Fix incorrect identification of assignments as command type bracket.</li>
-        <li>Fix incorrect indentation of pointers following a dot operator or pointer.</li>
-        <li>Fix attaching "else if" statements to a single line block.</li>
-        <li>Fix header recognition problem when header is proceeded by a tab instead of a space.</li>
-        <li>Fix line break when colon is followed by a comment.</li>
-        <li>Fix ASBeautifier not identifying a template definition.</li>
-        <li>Change indents around the end of line to two indents.</li>
-        <li>Change header includes to fix header dependencies for Linux GCC 4.3.</li>
-        <li>Add output line number for debugging.</li>
-        <li>Add filename to trace output.</li>
-        <li>Add trace for arrays.</li>
-        <li>Add trace for bracketType.</li>
-        <li>Fix no-indent comment in a #else preprocessor directive.</li>
-        <li>Fix block comment continuation line indent when block comments do not start the line.</li>
-        <li>Adjust position of block comments (/*) when padding is added or deleted.</li>
-        <li>Fix incorrect formatting if "return" is included in a function name.</li>
-        <li>Fix incorrect padding if template depth is greater that one and pad=oper is used.</li>
-        <li>Fix incorrect bracket type identification when bracket is followed by a comment.</li>
-        <li>Fix incorrect bracket type identification when a "const" method is declared.</li>
-        <li>Fix incorrect bracket type identification when pre-definition header is inside a paren.</li>
-        <li>Fix deleting a space when attaching a bracket with line comments.</li>
-        <li>Fix indentation when the conditional "?" operator is used in a single line statement.</li>
-        <li>Fix indentation when single line "if" statement is used.</li>
-        <li>Add pointers, multiply operators, and selected variables to do not unpad in paren unpad procedure.</li>
-        <li>Return exit code 0 for --version and --help.</li>
-    </ul>
-
     <h3>
-        Artistic Style 1.20.2&nbsp; (February 2007)</h3>
+        Previous releases are available in the <a href="http://astyle.sourceforge.net/notes.html">Release Notes Archives</a>.</h3>
 
-    <ul>
-        <li>Fix problems with the new stream I/O procedure added in release 1.20.1:
-            <ul>
-                <li>Fix adding an extra blank line at end of document.</li>
-                <li>Fix line ending on last line when cin and cout option is used.</li>
-            </ul>
-        </li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.20.1&nbsp; (January 2007)</h3>
-
-    <ul>
-        <li>The following changes were made to improve processing for Mac OS X platforms:
-            <ul>
-                <li>Remove Makefile linker option -s and add a separate "strip" command.</li>
-                <li>Open console input and output streams as binary to allow Linux line ends on a Windows platform.</li>
-                <li>Change stream I/O procedure to allow for Mac OS 9 line endings.</li>
-                <li>Change output stream end of line from endl so output stream is not flushed with each write.</li>
-                <li>Change information messages from cerr to cout.</li>
-                <li>Removed messages when I/O is to cin and cout to accommodate TextWrangler.</li>
-            </ul>
-        </li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.20&nbsp; (January 2007)</h3>
-
-    <ul>
-        <li>Call importOptions() from function AStyleMain() to allow slop in options parameters.</li>
-        <li>New makefiles for GCC and Intel with new compile options.</li>
-        <li>New project file for Visual C with new compile options.</li>
-        <li>Change comments to reflect the GNU Lesser General Public License.</li>
-        <li>Indent message maps for MFC and event tables for wxWidgets.</li>
-        <li>Fix incorrect formatting for an empty comment.</li>
-        <li>Fix "Unknown option" in default options file when last line does not contain CR or LF.</li>
-        <li>Patch from Dieter Bayer to fix case indent when a scope resolution operator is used.</li>
-        <li>Change long option --brackets=break-closing-headers to --brackets=break-closing.</li>
-        <li>Add short option -y for --brackets=break-closing.</li>
-        <li>Add short option -e for --break-elseifs.</li>
-        <li>Add short option -w for --indent-preprocessor.</li>
-        <li>Add short option -f for --break-blocks.</li>
-        <li>Add short option -F for --break-blocks=all.</li>
-        <li>Remove the backup file after formatting when --suffix=none.</li>
-        <li>Show total time at end of job.</li>
-        <li>Improved error handling for invalid options with ASTYLE_LIB.</li>
-        <li>Add function AStyleGetVersion() to ASTYLE_LIB option.</li>
-        <li>Change preprocessor macro from ASTYLE_GUI to ASTYLE_LIB.</li>
-        <li>Add astyle namespace to ASEnhancer.</li>
-        <li>Add #include &lt;ctype.h&gt; for Red Hat distribution of GCC 3.2 (prior to Jan 2004).</li>
-        <li>Remove commented-out code.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.19&nbsp; (July 2006)</h3>
-
-    <ul>
-        <li>Add unpad=paren option.</li>
-        <li>Always pad paren headers (e.g. 'if', 'for', 'while').</li>
-        <li>Fix problem of pad=oper working different if pad=paren is declared.</li>
-        <li>Add additional tests to distinguish the multiplication operator from pointers.</li>
-        <li>Fix padding parens before a member access pointer (-&gt;).</li>
-        <li>If space padding has changed, move end-of-line comments to the original column, if possible.</li>
-        <li>Move potential calculation decision to outside of operator padding function.</li>
-        <li>Fix duplication of last line of source if a final endline is not present.</li>
-        <li>Fix class initializer not indented on last line if bracket is attached.</li>
-        <li>Fix identification of templates contained in parens.</li>
-        <li>Fix one line block occurring before end of class.</li>
-        <li>Fix line added after one line block with bracketFormatMode = NONE_MODE.</li>
-        <li>Add needed variables to ASBeautifier copy constructor.</li>
-        <li>Trim end of line for multi-line comments.</li>
-        <li>Add a breakLine before paren checks (needed for unpad=paren option).</li>
-        <li>Add trace file to ASFormatter.</li>
-        <li>Move formatting message from end to beginning of formatting.</li>
-        <li>Move the building of vectors to ASResource. Vectors for classes ASBeautifier and ASFormatter should now have the
-            same values.</li>
-        <li>Move debugging variable inLineNumber from ASFormatter to ASBeautifier.</li>
-        <li>Bypass char processing for UTF8 characters in ASBeautifier.</li>
-        <li>Move switchVariables struct from ASEnhancer to the header file.</li>
-        <li>Remove preprocessorHeader vector (not used).</li>
-        <li>Remove variable isInConst (not used).</li>
-        <li>Remove commented-out code.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.18&nbsp; (June 2006)</h3>
-
-    <ul>
-        <li>The following changes were made for the option pad=oper:
-            <ul>
-                <li>Does <strong>not</strong> remove extra spaces from formatted expressions.</li>
-                <li>Does <strong>not</strong> pad opening parens on the outside.</li>
-                <li>Does <strong>not</strong> remove leading spaces from multi-line comments.</li>
-                <li>Does <strong>not</strong> pad negative numbers.</li>
-                <li>Does <strong>not</strong> add a space to the end of preprocessor directives.</li>
-                <li>Will <strong>not</strong> pad operators inside block parens [].</li>
-            </ul>
-        </li>
-        <li>The following changes were made for the option pad=paren:
-            <ul>
-                <li>Formats correctly <strong>with</strong> or <strong>without</strong> pad=oper.</li>
-                <li>Does <strong>not</strong> add a space for each additional run if pad=oper is not used.</li>
-                <li>Outside of opening paren is padded correctly.</li>
-                <li>Inside of closing paren is padded correctly.</li>
-                <li>Does <strong>not</strong> pad block parens [].</li>
-                <li>Added short option P, previously used for pad=all.</li>
-            </ul>
-        </li>
-        <li>Added new options pad=paren-out (d) and pad=paren-in (D).</li>
-        <li>Removed option pad=all.</li>
-        <li>Add short option V for convert-tabs.</li>
-        <li>Added bounds checking to options containing parameters.</li>
-        <li>Display a message when a default options file is used.</li>
-        <li>Replaced IS_PARAM_OPTION(S) macros with overloaded isParamOption. Fixed compare problem with short param options.</li>
-        <li>Fix EOF problem with default options file.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.17&nbsp; (May 2006)</h3>
-
-    <ul>
-        <li>The following changes were made for processing bracketFormatMode = NONE_MODE:
-            <ul>
-                <li>Removed the function isFormattingEnabled() and always performed the formatting.</li>
-                <li>Removed the formatting bypass for NONE_MODE.</li>
-                <li>Fix brackets always being broken in the 2 cases where NONE_MODE formatting was done.</li>
-                <li>Added new functions to support the processing of NONE_MODE brackets.</li>
-                <li>Made other minor changes necessary for correct NONE_MODE processing.</li>
-            </ul>
-        </li>
-        <li>Changed indent cases option to indent the entire case block.</li>
-        <li>Changed to output Windows or Linux line endings.</li>
-        <li>Added ASEnhancer module for case statement indenting.</li>
-        <li>Corrected errors in identifying options indent=tab=, and force-indent=tab=. </li>
-        <li>Corrected errors in identifying options min-conditional-indent=, and max-instatement-indent=.</li>
-        <li>Improved error and information messages.</li>
-        <li>Added capability to compile as a console program, shared library, or static library.</li>
-        <li>Fixed problem with semicolons and parens being put on a line by themselves.</li>
-        <li>Fixed spaces being added before a line comment.</li>
-        <li>Fixed blank line added after some preprocessor statements.</li>
-        <li>Fixed preprocessor statements not being trimmed.</li>
-        <li>Do not indent line comments that begin in column 1 or 2.</li>
-        <li>Fixed indentation problem with ending }; of class statements.</li>
-        <li>Changed nextLine() function to eliminate char buffer limits.</li>
-        <li>Moved Windows default options file to %USERPROFILE%.</li>
-        <li>Removed NEW operators to prevent memory leaks.</li>
-        <li>Fixed space before the semicolon in return ; statement.</li>
-        <li>Fixed extra space that was sometimes added when pad operators was used.</li>
-        <li>Removed string parameter from IS_PARAM_OPTION.</li>
-        <li>Added forward declaration of parseOption() to eliminate compile error.</li>
-        <li>Added input line number counter for debugging.</li>
-        <li>Add statements to check for markers if break-blocks or break-blocks=all is used.</li>
-        <li>Remove warnings for signed/unsigned mismatch.</li>
-        <li>Removed COMPARE macro and used string compare.</li>
-        <li>Removed compiler_defines.h.</li>
-        <li>Removed USES_NAMESPACE declaration.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.16</h3>
-
-    <blockquote>
-        There was no release 1.16.
-    </blockquote>
-
-    <h3>
-        Artistic Style 1.15.3 (7 March 2002)</h3>
-
-    <ul>
-        <li>Bug fix in handling of brackets after line-comments.</li>
-        <li>Bug fix: C# add/remove event property headers now properly formatted.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.15.2 (2 March 2002)</h3>
-
-    <ul>
-        <li>Bug fixes in exception handling phrases, e.g. multiple catches and try..finally.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.15.1 (2 March 2002)</h3>
-
-    <ul>
-        <li>Bug fix: C# properties are now formatted properly.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.15.0 (2 March 2002)</h3>
-
-    <ul>
-        <li>Added support for C#.</li>
-        <li>Artistic Style is now licensed only under the GNU Public License (GPL).</li>
-        <li>Compilation under G++ 3.0 now works properly.</li>
-        <li>Bug fix: Opening brackets that appear at the beginning of a line immediately after an empty line comment are now
-            handled properly, and not appended as part of the line comment.</li>
-        <li>Bug fix: Brackets inside comments are now not mis-indented within the comment.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.14.1 (2 June 2001)</h3>
-
-    <ul>
-        <li>Bug fix: : '&lt;' and '&gt;' symbols within template declarations (e.g. 'foo&lt;bar*, xoo&gt;') are now left unpadded
-            in the padding modes.</li>
-        <li>Bug fix: Fixed false recognizing of headers within larger words (e.g. 'catch' in 'gcatch').</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.14.0 (1 June 2001)</h3>
-
-    <ul>
-        <li>Bug fix: Fixed indentation of statements within preprocessor '#if...' statements.</li>
-        <li>Bug fix: Templates are now not broken from their bodies.</li>
-        <li>Bug fix: '&lt;' and '&gt;' symbols within template definitions (e.g. 'template&lt;class T&gt;') are now left unpadded
-            in the padding modes.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.8 (13 April 2001)</h3>
-
-    <ul>
-        <li>Bug fix: Fixed indentation of multiple nested non-block brackets, such as in multi bracketed static array declarations.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.7 (6 April 2001)</h3>
-
-    <ul>
-        <li>New option:'--force-indent=tab=#' (or 'T#') instructs astyle to indent using tabs in all the pre-statement white
-            space, including areas astyle's '--indent=tab' prefers to indent using spaces, such as white space in multi-line
-            statements.</li>
-        <li>Bug fix: Fixed unwanted empty line insertions between empty blocks (e.g. '{}') and closing brackets that come
-            immediately after them.</li>
-        <li>Bug fix: Fixed unwanted empty line insertions immediately after colons (e.g. 'default:', 'label:', ...)</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.6 (24 January 2001)</h3>
-
-    <ul>
-        <li>Bug fix: Preprocessor lines now remain unpadded in padding modes.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.5 (24 January 2001)</h3>
-
-    <ul>
-        <li>Bug fix: Fixed the insertion of phantom empty lines immediately after {} blocks.</li>
-        <li>Bug fix: Bare open brackets ('{') with no preceding headers are now broken appropriately from their preceding
-            code lines in the 'attach' and 'linux' bracketmodes.</li>
-        <li>Bug fix: Fixed operator recognition for long operators such as '&gt;&gt;=', '&lt;&lt;= '.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.4 (24 January 2001)</h3>
-
-    <ul>
-        <li>Bug fix: L" unicode strings are now handled properly in padding modes.</li>
-        <li>Bug fix: Fixed the padding around '-' operators (which went sour somewhere in the past).</li>
-        <li>Bug fix: Fixed the handling of exponent numbers (e.g. 12.2e+2) in padding modes. The fix enables 'e+' to be regarded
-            as part of the exponent.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.3 (23 January 2001)</h3>
-
-    <ul>
-        <li>Line that contain both headers and their following non-header code (e.g. 'if (isFoo) doBar();') are now broken
-            by default into multiple lines. To keep these lines as single lines, use '--one-line= keep-statements'.</li>
-        <li>Added the new option '--break-elseifs' which breaks 'else if()' statements into multiple lines.</li>
-        <li>The option block breaking options now works properly with the padding options.</li>
-        <li>Various minor bug fixes.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.2 (21 January 2001)</h3>
-
-    <ul>
-        <li>Added the new option '--brackets=break-closing-headers'. When this option is added to either '--brackets=attach'
-            or '--brackets= linux', astyle breaks closing headers (e.g. 'else', 'catch') from their preceding closing brackets.</li>
-        <li>'--break-blocks' and '--break-blocks= all' now correctly handle blocks that appear immediately before closing
-            brackets, and do not append empty lines between them and the closing brackets.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.13.0 (27 September 1999)</h3>
-
-    <ul>
-        <li>Moved back to odd-minor-numbered development versions, and even-minor-numbered stable versions.</li>
-        <li>Added the new option '--break-blocks' which breaks apart unrelated blocks, labels, classes, etc.</li>
-        <li>Added the new option '--break-blocks=all' which also breaks apart blocks of closing headers, such as 'else', 'catch',
-            etc.</li>
-        <li>Fixed indentation handling of labels and class-definition identifiers such as 'public:', 'protected:', ... (thanks
-            to Daryn Adler for his patch)</li>
-        <li>Fixed indentation of nested class definitions. (thanks to Daryn Adler for his patch)</li>
-        <li>Added the new option '--indent-preprocessor' which (surprisingly) tries to reindent C/C++ preprocessor macro lines.
-            Astyle should do an pretty nice indentation job if the macro code is sane, but don't expect miracles for horrid
-            macro definitions...</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.6 (27 September 1999)</h3>
-
-    <ul>
-        <li>Improved indentation of lines containing single-line blocks.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.5 (25 September 1999)</h3>
-
-    <ul>
-        <li>Improved the bug fix for a 'const' keyword bug which resulted in wrong indentation of methods that are declared
-            const.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.4 (18 September 1999)</h3>
-
-    <ul>
-        <li>Improved handling of single colons (':') in class headers, e.g. class Foo : public Bar { ... }</li>
-        <li>Improved handling of single colons (':') in method (constructor) headers, e.g. Foo::Foo(int a) : Bar(a)</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.3 (16 September 1999)</h3>
-
-    <ul>
-        <li>Fixed a serious bug in the formatting of brackets, introduced in 1.11.2.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.2 (10 September 1999)</h3>
-
-    <ul>
-        <li>Fixed an indentation bug in statements that contain the 'const', that resulted in wrong indentation of array blocks
-            that where declared const. (Thanks Daniel!)</li>
-        <li>Fixed an indentation bug that could arise in lines that appear immediately after several preprocessor commands.
-            (Thanks Daniel!).</li>
-        <li>Fixed a bug that inserted an empty line after closing brackets if a comment appeared immediately prior to the
-            closing bracket. (Thanks Ed!)</li>
-        <li>Fixed a bug that eliminated empty lines between closing brackets and immediately following opening brackets. (Thanks
-            Ed!)</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.1 (3 September 1999)</h3>
-
-    <ul>
-        <li>Fixed a bug that inserted an empty line at the begining of source files.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.11.0 (3 September 1999)</h3>
-
-    <ul>
-        <li>Astyle now filters out line-feeds ('\r') before begining to parse lines. This should take care of bizarre formatting
-            that existed when moving source files from Windows (which breaks lines with a linefeed AND newline ("\r\n") to
-            unix (which breaks lines only with newlines).</li>
-        <li>The "struct", "static" and "synchronized" keywords are now finally handled correctly in both the contexts of block
-            headers AND simple keywords.</li>
-        <li>Better treatment of precompiler lines that end with backslashes, and the lines that immediately follow them.</li>
-        <li>The '--indent-classes' (or '-C') option now works correctly (again...).</li>
-        <li>Series of short command-line options (e.g. "-b -s4 -C") are now parsed correctly.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.4&nbsp; (27 July 1999)</h3>
-
-    <ul>
-        <li>Fixed a MAJOR bug (inserted in 1.10.3) that resulted wrong handling of double-colons ('::') in C++.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.3 (24 July 1999)</h3>
-
-    <ul>
-        <li>Fixed a bug (inserted yesterday) that resulted in unwanted line breaks before closing-brackets.</li>
-        <li>Fixed a bug in the handling of 'static' blocks in java.</li>
-        <li>Added the new option '--indent-cases' (or '-K') for indenting 'case XXX:' lines so they are flush with their following
-            code lines.</li>
-        <li>Added the new option '--fill-empty-lines' (or '-E') which fills empty lines with the white-space of their previous
-            line.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.2 (23 July 1999)</h3>
-
-    <ul>
-        <li>Fixed a series of related bugs that resulted in certain cases of lacking line breaks after close-brackets, and
-            colons. Thanks Jeroen!</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.1 (18 July 1999)</h3>
-
-    <ul>
-        <li>Fixed a bug (introduced in astyle 1.10.0) that can result in missing line breaks before closing brackets if they
-            appear immediately after comments. Thanks Larry!</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.0 Release (14 July 1999)</h3>
-
-    <ul>
-        <li>Improved handling of empty bracket blocks ( e.g.{ } ). Thanks Michael!</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.10.0 Prerelease (4 July 1999)</h3>
-
-    <ul>
-        <li>Fixed a bug in the in-statement indentation algorithm which resulted in sub-optimal indentation of multiple-line
-            conditional statements that immediately follow headers such as 'if', 'else if', 'while', etc... As a result, the
-            current in-statement indentation is finally what it should have been long ago - MUCH better then in the last stable
-            versions.</li>
-        <li>The "linux" bracket style (in which definition brackets are broken while code brackets are attached) has been
-            fixed, and should finally work correctly.</li>
-        <li>Artistic Style can now parse both C/C++ and Java files in the same command. Unless a specific language mode is
-            specified (e.g. --style=java or --style=c), astyle will now automatically set the language mode according to each
-            file's suffix (java mode for the '.java' suffix , c mode otherwise).</li>
-        <li>Multiple statements in a single line (e.g. aaa; bbb; fff;) are now broken up by default.</li>
-        <li>Added the option '<strong>--one-line=keep-statement</strong>s' (or '<strong>-o</strong>') that keeps multiple
-            statements in a single line attached, thus countering the default break detailed above.</li>
-        <li>Changed the option previously called '<strong>--keep-one-line-blocks</strong>' to '<strong>--one-line=keep-blocks</strong>',
-            for similarity with the new option above.</li>
-        <li>Changed the short option name of the option '-<strong>-errors-to-standard-output</strong>' from '<strong>-o</strong>'
-            to '<strong>-X</strong>'.</li>
-        <li>Up to now, Artistic Style always inserted a minimal indent of <strong>t</strong>wice the current selected indent
-            size inside multi-line conditional headers ('if', 'while' ...), so that it would be clear where the headers end
-            and the code after them begins. The current version adds the option '<strong>--min-conditional-indent=#</strong>'
-            (or '<strong>-m#</strong>') that sets the absolute minimal indent between conditional headers and their multiple-line
-            conditional statements. If this option is not specified, the default indent remains <strong>twice the current selected
-                indent size</strong>.<br />
-            For example, This option should come very handy in code that already has brackets after EVERY conditional statement
-            (even if just one line is in that bracket...) - in such a case, it would be wise to set <strong>--min-conditional-indent=0</strong>
-            since the brackets already make it clear where the header ends and the code begins...</li>
-        <li>Added the ability to set the assumed tab size when in '<strong>--indent-tab</strong>' mode by using '<strong>--indent-tab=#</strong>'
-            or '<strong>-t#</strong>' and replacing the <strong>#</strong> with the wanted size. If the size is not specified,
-            the size of each tab is assumed to be 4 spaces long.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.8.2 (18 March 1999)</h3>
-
-    <ul>
-        <li>Fixed pointer handling problems in ASBeautifier that led to crashes when parsing preprocessor commands.</li>
-        <li>Fixed the problem in locating the default options file in the directory pointed to by $HOME or %HOMEPATH% when
-            these system variables do not contain an '/' (or '\' ...) at their end.</li>
-        <li>Fixed inverse insertion of spaces vs. tabs when in -t mode. (Thanks Brian!)</li>
-        <li>Got rid of those pesky C4786 warnings when compiling under Visual C++ (Thanks John!)</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.8.1 (9 March 1999)</h3>
-
-    <ul>
-        <li>Changed the '--style=k&amp;r' option to '--style= kr' , so that linux/unix machines don't misinterpret the '&amp;'
-            as a background processing command.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.8.0 (3 March 1999)</h3>
-
-    <ul>
-        <li>Added support for predefined styles. Current supported styles are: <strong>ansi, k&amp;r, linux, gnu, java</strong>.
-            these can be set by using '--style=THESTYLE' (e.g. '--style=linux').</li>
-        <li>Added '--indent-blocks' (or -G) option, which <strong>adds indentation to entire blocks</strong>, including their
-            brackets, in similar fashion to the standard gnu style.</li>
-        <li>Added option '--brackets=linux' (or '-l') which <strong>breaks definition-block brackets, but attaches command-block
-            brackets</strong>.</li>
-        <li>Padding can now be set separately for operators alone('-p' or '--pad=oper'), parentheses alone ('--pad=paren)
-            or both ('-P' or '--pad=all').</li>
-        <li>Artistic Style looks for a default options file in the following order:<br />
-            1. The contents of the <strong>ARTISTIC_STYLE_OPTIONS</strong> environment variable if it exists.<br />
-            2. The file called .astylerc in the directory pointed to by the <strong>HOME</strong> environment variable ( i.e.
-            <strong>$HOME/.astylerc</strong> ).<br />
-            3. The file called .astylerc in the directory pointed to by the <strong>HOMEPATH</strong> environment variable
-            ( i.e. <strong>%HOMEPATH%\.astylerc</strong> ).<br />
-            If a default options file is found, the options in this file will be parsed BEFORE the command-line options. Options
-            within the default option file may be written without the preliminary '-' or '--'. Indentation within #if , #else
-            and #endif precompiler commands now works correctly even if the program lines between these precompiler commands
-            contain non-pared brackets.</li>
-        <li>Improved handling of labels (e.g. 'exit:'). By default, labels are now flushed completely to the left. Labels
-            can also be indented to one indent LESS than current standard indentation by using the new option '--indent-labels'
-            (or '-L') .</li>
-        <li>Fixed handling of the 'operator' keyword when it is preceded by a non space character (such as '&amp;' or '*').</li>
-        <li>Fixed wrong bracket handling after 'throws' statements.</li>
-        <li>Fixed wrong indentation of single-line blocks. These where indented 1 indent to much.</li>
-        <li>Fixed wrong indentation of headers in internal classes (java mode). These where indented 1 indent to little.</li>
-        <li>The option ' --errors-to-standard-output' now has the one-letter option '-o'.</li>
-        <li>Fixed bug which resulted in an unneeded indent in function-declarations in which function-variables are declared
-            before the function declaration and are preceded by the 'static' keyword. Thanks Scott.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.6.0 (5 January 1999)</h3>
-
-    <ul>
-        <li>Fixed zero indentation that resulted when a '-suffix' option was set after a '--indent=spaces' (or '-s') option.</li>
-        <li>Wrong options are now announced.</li>
-        <li>Changed default indentation to NOT automatically indent class blocks and switch blocks. Instead, the new options
-            '--indent-classes' (or '-C') and '--indent-switches' (or '-S') should be used. The option '--indent-switches'
-            replaces the old option '--flush-switches'.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.4.1 (4 January 1999)</h3>
-
-    <ul>
-        <li>Fixed ability to write options without the preceding '--' in the default options file.</li>
-        <li>Added one-letter options to most options that had only long-options in version 1.4.0.</li>
-        <li>Added a '-v' or '--version' option that writes the current Artistic Style version.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.4.0 (3 January 1999)</h3>
-
-    <ul>
-        <li><strong>MAJOR NEW CHANGE IN THE FORMAT OF OPTIONS:</strong><br />
-            Options are now either <strong>short one-letter options</strong> starting with '-', or <strong>long multi-letter options</strong>
-            starting with '--'. The Short one-letter options MAY BE ATTACHED TOGETHER. Thus, writing '-bps4' is the same as
-            writing '-b -p -s4'.<br />
-            Many options that have up to now had a 2 letter format now retain only their long format. I truly believe that
-            the combination of attached-one-letter options PLUS a default option's file containing long-letter-options related
-            to style will be much easier to work with than the previous setup.</li>
-        <li>Added support for <strong>a default options file</strong> (pointed to by the <strong>ARTISTIC_STYLE_OPTIONS environment
-            variable</strong>).</li>
-        <li>Changed downloading method from the server. From now, there will be specific directories containing the latest
-            stable sources, stable binaries, and development sources.</li>
-        <li>Space padding ('-p' or '--pad') now works correctly (1) around semicolons and commas, (2) between headers that
-            require parentheses after them (such as 'if', 'while'...)and those parentheses, and (3) after parentheses (unless
-            immediately followed by a ';' or ',' or '.').</li>
-        <li>From now on, namespace blocks are NOT indented by default. To indent namespace blocks use the new '--indent-namespaces'
-            option.</li>
-        <li>Added options '--errors-to-standard-output' for redirection of standard-error to standard-output from within Artistic
-            Style, and '--suffix=' for specifying a suffix other than '.orig' to append to original filenames.</li>
-        <li>Corrected indentation of 'default' in switch statements. (Up to now, this only worked correctly in java mode...).</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.2.0 (19 December 1998)</h3>
-
-    <ul>
-        <li>Artistic Style 1.2.0 is the first stable result of a new version numbering, in which development versions are
-            numbered with an odd minor number (such as 1.1.x), and stable versions are numbered with an even number (1.2.x).
-            Thus, version 1.2.0 accumulates all the additions/changes of the 1.1.x development versions of Artistic Style.</li>
-        <li>A new '-ol' formatting mode that eliminates breaking of one-line blocks.</li>
-        <li>Fixed a SERIOUS bug, which resulted in wrong formatting of brackets ('{', '}') that came IMMEDIATELY AFTER definition
-            type brackets, (e.g. brackets that come right after 'class', 'interface', 'name-space', etc ...). This bug was
-            mistakenly introduced when I set out to correctly space-pad pointer and reference signs, somewhere in version
-            0.9.x.</li>
-        <li>Fixed unwanted elimination of final empty lines.</li>
-        <li>Fixed broken indentation of virgin opening-brackets that occur immediately after a previous closing-bracket.</li>
-        <li>Fixed space-padding to not insert a space in front of ':' characters unless they are a part of a '? ... : ' statement.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.5&nbsp; (11 December 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">'extern' blocks now handled correctly.</li>
-        <li style="margin-bottom: 0cm;">Fixed handling of ^= in '-p' mode.</li>
-        <li style="margin-bottom: 0cm;">Win32 executables now contain wildcard expansion. *** Look at the README.TXT for info
-            on how to include wildcard expansion abilities when compiling Artistic Style under Win32. (Thanks for the info
-            on wildcard-expansion enabling, Nat!!!)</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.4&nbsp; (2 December 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Fixed unwanted space-padding around urinary minuses and '-' symbols within exponents
-            (e.g. 2.5E-5) when using the '-p' option.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.3&nbsp; (1 December 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Control characters now remain in the indented file.</li>
-        <li style="margin-bottom: 0cm;">Fixed a bug in which long quoted white-space sequences where mistakenly eliminated
-            in the '-p' mode.</li>
-        <li style="margin-bottom: 0cm;">Fixed unwanted line-breaks in '-ab -p' mode, that in some cases occurred between '//'
-            and the rest of a line comment.</li>
-        <li style="margin-bottom: 0cm;">Fixed handling of '&gt;&gt;=', '&lt;&lt;= ' in '-p' mode.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.2 (27 November 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Fixed a SERIOUS bug of missing needed line-breaks in lines immediately after line-comments
-            when in '-ab' mode.</li>
-        <li style="margin-bottom: 0cm;">Support for the 'finally' header.</li>
-        <li style="margin-bottom: 0cm;">lines that contain only white-space now become empty lines.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.1&nbsp; (26 November 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Fixed a SERIOUS bug, which lacked a needed line-break between closing brackets and
-            the headers that follow them (e.g. '} else') when in '-bb' mode. In fixing the bug, I used a variation on a patch
-            sent by Richard Bullington - THANKS!</li>
-        <li style="margin-bottom: 0cm;">Fixed a set of SERIOUS bugs which inserted an empty line into both the start and end
-            of the reindented file.</li>
-        <li style="margin-bottom: 0cm;">Improved documentation of formatting options in the file astyle.html .</li>
-    </ul>
-
-    <h3>
-        Artistic Style 1.0.0 (24 November 1998)</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Indented files now <b>retain the original file name</b>, while the original pre-indented
-            file is saved with a ".orig"at its end. Thus, after the call "<b>astyle -bb foo.cpp</b>", the newly indented file
-            will be called "<b>foo.cpp"</b>, while a file called "<b>foo.cpp.orig</b>" will contain the original pre-indented
-            file.</li>
-        <li style="margin-bottom: 0cm;">Artistic Style may now be used and /or modified and/or distributed under <b>EITHER</b>
-            the <b>"Artistic License"</b>, or the <b>GNU General Public License (GPL).</b></li>
-        <li style="margin-bottom: 0cm;">Methods with headers that end with 'const' are now properly indented.</li>
-        <li style="margin-bottom: 0cm;">Cleaner, more robust, and better documented source code.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 0.9.2</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Fixed a serious bug which led to a maximal supported source code line size of 128
-            characters!!!</li>
-        <li style="margin-bottom: 0cm;">Maximal supported line size is now 1024 characters.</li>
-        <li style="margin-bottom: 0cm;">Fixed a serious bug in the handling of brackets inside '#define' statements.</li>
-        <li>Fixed a serious bug in which '#include' files containing slashes (i.e. #include &lt;foo_dir/foo&gt; ) where space-padded
-            when using option '-p' on C, C++ files.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 0.9.1</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Much improved space-padding around pointers ('*') and references ('&amp;') and the
-            'operator' key-word in C and C++ source files when using the '-p' space padding option.</li>
-        <li style="margin-bottom: 0cm;">Fixed several pointer handling bugs which led to potential core dumps.</li>
-        <li>Version 0.9.1 now includes all the abilities I am planning for the final 1.0 version, and <b>should be looked
-            at as the first pre-release version of Artistic Style</b>.</li>
-    </ul>
-
-    <h3>
-        Artistic Style 0.9.0</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Added a <b>formatting layer</b> (ASFormatter.cpp) around the indentation layer (ASBeautifier.cpp).</li>
-        <li style="margin-bottom: 0cm;">As a result, the following formatting capabilities have been added:
-            <ul>
-                <li style="margin-bottom: 0cm;">Bracket ('{' and '}') placement in either ANSI C style or Java style.</li>
-                <li style="margin-bottom: 0cm;">Space padding around operators, i.e. (1+2)*3-4 becomes ( 1 + 2 ) * 3 - 4.</li>
-            </ul>
-        </li>
-        <li style="margin-bottom: 0cm;">Fixed the 'tab' elimination bug introduced in ASBeautifier 0.8.2.</li>
-        <li>Fixed a bug which under-indented class headers containing inheritance info.</li>
-    </ul>
-
-    <h3>
-        ASBeautifier 0.8.2</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">Fixed indentation problem in brackets around 'struct', and 'union' blocks.</li>
-        <li style="margin-bottom: 0cm;">Added recognition for '\' characters in the end of lines.</li>
-        <li style="margin-bottom: 0cm;">Improved indentation of post-method-declaration variable initializations.</li>
-        <li>Several minor bug fixes.</li>
-    </ul>
-
-    <h3>
-        ASBeautifier 0.8.1</h3>
-
-    <ul>
-        <li>Fixed an important bug in pointer arithmetic which resulted both in phantom indentation errors, and in core-dumps
-            when trying to indent java files.</li>
-    </ul>
-
-    <h3>
-        ASBeautifier 0.8.0</h3>
-
-    <ul>
-        <li style="margin-bottom: 0cm;">This is the first public release of ASBeautifier. It is a direct port to C++ of JSBeautifier
-            1.1.1, PLUS extensions to for C++ indentation.</li>
-        <li style="margin-bottom: 0cm;">So far, very little beta-testing has been done for the C++ extensions. This should
-            change extremely with the open-source release (this was the case with JSBeautifier...), so expect ASBeautifier
-            to become bug-free fast!!!</li>
-        <li>The C++ source code is not yet written in optimal quality. I rushed a little so that I could release this initial
-            release as soon as possible. This will soon change.</li>
-    </ul>
     <p>
         &nbsp;</p>
 
Index: src/plugins/astyle/astyle/astyle_main.h
===================================================================
--- src/plugins/astyle/astyle/astyle_main.h	(revision 7913)
+++ src/plugins/astyle/astyle/astyle_main.h	(working copy)
@@ -100,8 +100,8 @@
 		void saveLastInputLine();
 
 	private:
-		ASStreamIterator(const ASStreamIterator& copy);       // copy constructor not to be imlpemented
-		ASStreamIterator& operator=(ASStreamIterator&);       // assignment operator not to be implemented
+		ASStreamIterator(const ASStreamIterator &copy);       // copy constructor not to be imlpemented
+		ASStreamIterator &operator=(ASStreamIterator &);      // assignment operator not to be implemented
 		T* inStream;           // pointer to the input stream
 		string buffer;         // current input line
 		string prevBuffer;     // previous input line
@@ -113,7 +113,7 @@
 		bool prevLineDeleted;  // the previous input line was deleted
 
 	public:	// inline functions
-		bool compareToInputBuffer(const string& nextLine_) const
+		bool compareToInputBuffer(const string &nextLine_) const
 		{ return (nextLine_ == prevBuffer); }
 		const char* getOutputEOL() const { return outputEOL; }
 		bool hasMoreLines() const { return !inStream->eof(); }
@@ -127,26 +127,26 @@
 class ASOptions
 {
 	public:
-		ASOptions(ASFormatter& formatterArg) : formatter(formatterArg) {}
+		ASOptions(ASFormatter &formatterArg) : formatter(formatterArg) {}
 		string getOptionErrors();
-		void importOptions(istream& in, vector<string> &optionsVector);
-		bool parseOptions(vector<string> &optionsVector, const string& errorInfo);
+		void importOptions(istream &in, vector<string> &optionsVector);
+		bool parseOptions(vector<string> &optionsVector, const string &errorInfo);
 
 	private:
 		// variables
-		ASFormatter& formatter;			// reference to the ASFormatter object
+		ASFormatter &formatter;			// reference to the ASFormatter object
 		stringstream optionErrors;		// option error messages
 
 		// functions
-		ASOptions& operator=(ASOptions&);          // not to be implemented
-		string getParam(const string& arg, const char* op);
-		string getParam(const string& arg, const char* op1, const char* op2);
+		ASOptions &operator=(ASOptions &);         // not to be implemented
+		string getParam(const string &arg, const char* op);
+		string getParam(const string &arg, const char* op1, const char* op2);
 		bool isOption(const string arg, const char* op);
-		bool isOption(const string& arg, const char* op1, const char* op2);
-		void isOptionError(const string& arg, const string& errorInfo);
-		bool isParamOption(const string& arg, const char* option);
-		bool isParamOption(const string& arg, const char* option1, const char* option2);
-		void parseOption(const string& arg, const string& errorInfo);
+		bool isOption(const string &arg, const char* op1, const char* op2);
+		void isOptionError(const string &arg, const string &errorInfo);
+		bool isParamOption(const string &arg, const char* option);
+		bool isParamOption(const string &arg, const char* option1, const char* option2);
+		void parseOption(const string &arg, const string &errorInfo);
 };
 
 #ifndef	ASTYLE_LIB
@@ -158,7 +158,7 @@
 class ASConsole
 {
 	private:	// variables
-		ASFormatter& formatter;				// reference to the ASFormatter object
+		ASFormatter &formatter;				// reference to the ASFormatter object
 		ASLocalizer localizer;				// ASLocalizer object
 		// command line options
 		bool isRecursive;                   // recursive option
@@ -195,7 +195,7 @@
 		vector<string> fileName;            // files to be processed including path
 
 	public:
-		ASConsole(ASFormatter& formatterArg) : formatter(formatterArg) {
+		ASConsole(ASFormatter &formatterArg) : formatter(formatterArg) {
 			// command line options
 			isRecursive = false;
 			origSuffix = ".orig";
@@ -221,7 +221,7 @@
 		}
 
 		// functions
-		void convertLineEnds(ostringstream& out, int lineEnd);
+		void convertLineEnds(ostringstream &out, int lineEnd);
 		FileEncoding detectEncoding(const char* data, size_t dataSize) const;
 		void error() const;
 		void error(const char* why, const char* what) const;
@@ -259,8 +259,8 @@
 		void setOrigSuffix(string suffix);
 		void setPreserveDate(bool state);
 		void setProgramLocale();
-		void standardizePath(string& path, bool removeBeginningSeparator=false) const;
-		bool stringEndsWith(const string& str, const string& suffix) const;
+		void standardizePath(string &path, bool removeBeginningSeparator=false) const;
+		bool stringEndsWith(const string &str, const string &suffix) const;
 		void updateExcludeVector(string suffixParam);
 		size_t Utf8Length(const char* data, size_t len, FileEncoding encoding) const;
 		size_t Utf8ToUtf16(char* utf8In, size_t inLen, FileEncoding encoding, char* utf16Out) const;
@@ -277,24 +277,24 @@
 		vector<string> getFileName();
 
 	private:
-		ASConsole& operator=(ASConsole&);          // not to be implemented
-		void correctMixedLineEnds(ostringstream& out);
-		void formatFile(const string& fileName_);
-		string getCurrentDirectory(const string& fileName_) const;
-		void getFileNames(const string& directory, const string& wildcard);
-		void getFilePaths(string& filePath);
-		string getParam(const string& arg, const char* op);
+		ASConsole &operator=(ASConsole &);         // not to be implemented
+		void correctMixedLineEnds(ostringstream &out);
+		void formatFile(const string &fileName_);
+		string getCurrentDirectory(const string &fileName_) const;
+		void getFileNames(const string &directory, const string &wildcard);
+		void getFilePaths(string &filePath);
+		string getParam(const string &arg, const char* op);
 		void initializeOutputEOL(LineEndFormat lineEndFormat);
-		bool isOption(const string& arg, const char* op);
-		bool isOption(const string& arg, const char* op1, const char* op2);
-		bool isParamOption(const string& arg, const char* option);
-		bool isPathExclued(const string& subPath);
+		bool isOption(const string &arg, const char* op);
+		bool isOption(const string &arg, const char* op1, const char* op2);
+		bool isParamOption(const string &arg, const char* option);
+		bool isPathExclued(const string &subPath);
 		void printHelp() const;
-		void printMsg(const char* msg, const string& data) const;
+		void printMsg(const char* msg, const string &data) const;
 		void printSeparatingLine() const;
 		void printVerboseHeader() const;
 		void printVerboseStats(clock_t startTime) const;
-		FileEncoding readFile(const string& fileName, stringstream& in) const;
+		FileEncoding readFile(const string &fileName, stringstream &in) const;
 		void removeFile(const char* fileName_, const char* errMsg) const;
 		void renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const;
 		void setOutputEOL(LineEndFormat lineEndFormat, const char* currentEOL);
@@ -303,7 +303,7 @@
 		int  swap16bit(int value) const;
 		int  waitForRemove(const char* oldFileName) const;
 		int  wildcmp(const char* wild, const char* data) const;
-		void writeFile(const string& fileName_, FileEncoding encoding, ostringstream& out) const;
+		void writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const;
 #ifdef _WIN32
 		void displayLastError();
 #endif
Index: src/plugins/astyle/astyle/ASResource.cpp
===================================================================
--- src/plugins/astyle/astyle/ASResource.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/ASResource.cpp	(working copy)
@@ -374,7 +374,7 @@
  *
  * @param operators             a reference to the vector to be built.
  */
-void ASResource::buildOperators(vector<const string*>* operators)
+void ASResource::buildOperators(vector<const string*>* operators, int fileType)
 {
 	operators->push_back(&AS_PLUS_ASSIGN);
 	operators->push_back(&AS_MINUS_ASSIGN);
@@ -400,8 +400,6 @@
 	operators->push_back(&AS_LS_LS);
 	operators->push_back(&AS_QUESTION_QUESTION);
 	operators->push_back(&AS_EQUAL_GR);
-	operators->push_back(&AS_GCC_MIN_ASSIGN);
-	operators->push_back(&AS_GCC_MAX_ASSIGN);
 	operators->push_back(&AS_ARROW);
 	operators->push_back(&AS_AND);
 	operators->push_back(&AS_OR);
@@ -421,7 +419,11 @@
 	operators->push_back(&AS_BIT_AND);
 	operators->push_back(&AS_BIT_NOT);
 	operators->push_back(&AS_BIT_XOR);
-
+	if (fileType == C_TYPE)
+	{
+		operators->push_back(&AS_GCC_MIN_ASSIGN);
+		operators->push_back(&AS_GCC_MAX_ASSIGN);
+	}
 	sort(operators->begin(), operators->end(), sortOnLength);
 }
 
@@ -523,7 +525,7 @@
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 // check if a specific line position contains a keyword.
-bool ASBase::findKeyword(const string& line, int i, const string& keyword) const
+bool ASBase::findKeyword(const string &line, int i, const string &keyword) const
 {
 	assert(isCharPotentialHeader(line, i));
 	// check the word
@@ -547,7 +549,7 @@
 
 // get the current word on a line
 // index must point to the beginning of the word
-string ASBase::getCurrentWord(const string& line, size_t index) const
+string ASBase::getCurrentWord(const string &line, size_t index) const
 {
 	assert(isCharPotentialHeader(line, index));
 	size_t lineLength = line.length();
Index: src/plugins/astyle/astyle/newsArchives.html
===================================================================
--- src/plugins/astyle/astyle/newsArchives.html	(revision 0)
+++ src/plugins/astyle/astyle/newsArchives.html	(working copy)
@@ -0,0 +1,605 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <title>Artistic Style - News Archives</title>
+    <meta http-equiv="Content-Language" content="en-us" />
+    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+    <h1>
+        Artistic Style News Archives</h1>
+
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.24&nbsp; (February 2010)</h3>
+
+    <p>
+        With a new Artistic Style release some unchanged source files will be formatted because of changes to Artistic
+        Style. You may want to format your source before making program changes in order to bring it up to date.</p>
+    <p>
+        A new bracket type option, &#8209;&#8209;brackets=horstmann (-g), uses broken brackets and places run-in statements
+        on the same line as an opening bracket. This bracket type has about the same vertical compression as attached
+        brackets and in addition provides bracket alignment. It is the only style that combines the advantages of saving
+        space and aligning brackets. The &quot;Tab and Bracket Options&quot; section in the documentation contains the
+        details. To accommodate Hostmann brackets the &quot;none mode&quot; brackets will now allow run-in statements.
+        Array formatting has been changed to format run-in statements when required. There have been some general improvements
+        to array formatting. The minimum value for spaces per tab was changed from one to two. The example programs in
+        the &quot;Developer Information&quot; section have been changed to Horstmann brackets.</p>
+    <p>
+        Two new options, &#8209;&#8209;add&#8209;brackets (-j) and &#8209;&#8209;add&#8209;one&#8209;line&#8209;brackets
+        (-J), will add brackets to unbracketed one line conditional statements. The &#8209;&#8209;add-brackets will add
+        the brackets according to the currently requested predefined style or bracket type. If no style or bracket type
+        is requested the brackets will be the attached type. The &#8209;&#8209;add&#8209;one&#8209;line&#8209;brackets
+        will add the brackets as single line brackets. This option implies &#8209;&#8209;keep&#8209;one&#8209;line&#8209;blocks
+        and will not break single line blocks.
+    </p>
+    <p>
+        The above options allow two new predefined styles. Horstmann style, &#8209;&#8209;style=horstmann (-A9), uses
+        Horstmann brackets and three spaces per indent. The so called "One True Brace Style", &#8209;&#8209;style=1tbs
+        or &#8209;&#8209;style=otbs (-A10), uses linux brackets and the option &#8209;&#8209;add&#8209;brackets. The basic
+        criteria for most predefined styles were obtained from the Indent Style discussion at Wikipedia. The "Predefined
+        Style Options" section in the documentation contains the details.</p>
+    <p>
+        The spaces per indent can now be changed for any of the predefined styles. In previous releases the option would
+        be ignored. This will allow any of the &#8209;&#8209;indent options to be used with a predefined style. If the
+        spaces per indent is not specified, the default for the style will be used.</p>
+    <p>
+        A new option, &#8209;&#8209;pad&#8209;header (&#8209;H), will insert space padding after headers ('if', 'for',
+        'while'...). To remove any unwanted current space padding, use the option &#8209;&#8209;unpad&#8209;paren (&#8209;U).
+        If both &#8209;&#8209;pad&#8209;header and &#8209;&#8209;unpad&#8209;paren are used, the headers will be padded
+        and the padding will be removed from other parens. This has required a change to the default formatting of paren
+        headers. They will now be left unchanged instead of automatically inserting space padding, unless the new option
+        is requested.</p>
+    <p>
+        New options --align-pointer=type (-k1), &#8209;&#8209;align&#8209;pointer=middle (-k2), and &#8209;&#8209;align&#8209;pointer=name
+        (-k3) will attach a pointer or reference operator (* or &amp;) to either the operator type (left), operator name
+        (right), or align it between the type and name. The spacing between the type and name will be preserved, if possible.
+        The recognition of pointers and references has been improved. This resulted in an improvement of the &#8209;&#8209;pad&#8209;oper
+        (-p) option.</p>
+    <p>
+        A new option, &#8209;&#8209;indent&#8209;col1&#8209;comments (-Y), will indent C++ comments beginning in column
+        one. By default C++ comments beginning in column one are not indented. This option will allow the comments to
+        be indented with the code.</p>
+    <p>
+        New options --lineend=windows&nbsp;(-z1), --lineend=linux&nbsp;(-z2), and --lineend=macold&nbsp;(-z3) will force
+        use of the specified line end style. Valid options are windows (CRLF), linux (LF), and macold (CR). MacOld style
+        is the format for OS 9 and earlier. Mac OS X uses the Linux style. Changes in line ends will cause the file to
+        be updated, even if no other changes occur. If one of these options is not used the line ends will be determined
+        automatically from the input file.</p>
+    <p>
+        Default line end processing has been improved to always output consistent line ends. It will use the line ends
+        that are most frequently used in the input.</p>
+    <p>
+        The Stroustrup predefined style has been changed to use 5 spaces per indent. This is the indentation used in the
+        book "The C++ Programming Language" by Bjarne Stroustrup.</p>
+    <p>
+        The minimum conditional indent for the Linux predefined style has been changed to 4, or one-half the indent-length.
+        The previous minimum conditional indent was 16 (2 indents). The new value corresponds to the soft tab in the style
+        description at Wikipedia and gives a better conformance to the definition of the style. And it gives a better
+        appearance to the continuation lines.</p>
+    <p>
+        Embedded SQL statements are now formatted correctly. The formatting of the SQL statements will be maintained as
+        long as the standard hanging indent format is used. If the "exec sql" statement is indented more than the following
+        statements, the SQL will be aligned in a single column.</p>
+    <p>
+        Assembler statement processing has been improved to include extended assembly and Microsoft specific assembler
+        lines and blocks.</p>
+    <p>
+        The --indent-classes (-C) option has been fixed to indent C++ struct blocks containing access modifiers (public,
+        protected, and private). The struct block is not indented if there are no access modifiers in the block.</p>
+    <p>
+        The formatting for C++ class initializer statements has been changed from two indents to one and an in-statement
+        indent added for continuation lines.</p>
+    <p>
+        The intermediate .tmp file used in formatting has been eliminated and memory is used instead. In most cases this
+        should result in a noticeable speed improvement.</p>
+    <p>
+        Checks for the maximum in-statement indent have been fixed. The indent for some long continuation lines may be
+        decreased. If you want the previous indentation, increase the &#8209;&#8209;max&#8209;in&#8209;statement option.</p>
+    <p>
+        Occasionally, someone will use Artistic Style to format a file encoded with UTF-16 or UTF-32 bit encoding. These
+        files contain many nul bytes are incompatible with the 8 bit encoding assumed by Artistic Style. Since this rarely
+        happens, Artistic Style has been changed to list these files as "unformatted" and display a warning message. The
+        files must have a Byte Order Mark (BOM) for the encoding to be recognized. These files can be changed with the
+        program iconv and with some text editors such as SciTE. For more information see the Wikipedia discussion on "Comparison
+        of Unicode encodings", "Compatibility issues".</p>
+    <p>
+        The Artistic Style documentation has been changed to include a new "Padding Options" section. The padding options
+        were previously in the "Formatting Options" section. This was done to allow space for additional options in GUIs.</p>
+    <p>
+        The Scripts page has a couple of new scripts, including a "clean" script in python.</p>
+    <p>
+        There are new configuration and project files for Visual Studio, and additional files for Visual Studio 2010.
+        There are instructions in the &quot;Install Information&quot;.</p>
+    <p>
+        The Intel compiler for Linux, release 11.1, has a new procedure for compiles. Read the new &quot;Install Information&quot;
+        before using this compiler release.</p>
+    <p>
+        There is now a Subversion repository for Artistic Style. A new Subversion web page describes how to check-out
+        the files. The source code is under development and some changes take several weeks to complete. And the intermediate
+        source files have not been through the extensive system tests that are done before each release. Use reasonable
+        precautions when using source code from the repository.</p>
+    <p>
+        SourceForge recently made changes to their website which caused a few problems. The web page links should be fixed
+        with this release. It seems that some bug reports may have been lost. If you have submitted a report that has
+        not been addressed please check to be sure it is still there. In addition Yahoo closed their GeoCities site which
+        made the AStyleWin programs temporarily unavailable. The new site is jimp03.zxq.net/.</p>
+    <p>
+        The release announcements mailing list was discontinued with the new SourceForge system. There is a new astyle-announce
+        mailing list that will be used instead. This is a low volume list that will be used for new release announcements
+        and notification of important repository commits. Member postings will not be accepted. Membership in the old
+        list was not retained so you will need to register for the new list. There is information for subscribing on the
+        "Bug Reports, Change Requests, Notification" section of the Home page.</p>
+    <p>
+        Thanks to J P Nurmi (align-pointer), Mario Gleichmann (pad-header), MrTact (lineend), Christian Stimming (&lt;&lt;
+        and &gt;&gt; operators), Wim Rosseel (Perl script), Colin D Bennett (64-bit code), and Ettl Martin (cppcheck)
+        for their contributions.</p>
+    <p>
+        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
+        website is eight&#8209;cubed.com.</p>
+
+    <h4>
+        Developers</h4>
+
+    <p>
+        The Artistic Style for Windows program has been updated to support the current release and can be used for an
+        example GUI. It will run on Linux under WINE. It is available at jimp03.zxq.net</p>
+    <p>
+        The options --lineend=windows&nbsp;(-z1), --lineend=linux&nbsp;(-z2), and --lineend=macold&nbsp;(-z3) apply only
+        to the console build. It was not included in the developer builds because developers usually have their own method
+        for handling line ends.</p>
+    <p>
+        The option --break-closing-brackets has been moved from Bracket Options to Formatting Options. It was being mistaken
+        for a bracket type, which it is not.</p>
+    <p>
+        Rejecting a file for&nbsp; UTF-16 or UTF-32 bit encoding apply only to the console build. Some class libraries,
+        such as wxWidgets (and probably Qt), have the methods to convert the files to UTF-8. The handling for these types
+        of files must be determined by the individual applications.
+    </p>
+    <p>
+        There has been an additional variable, formattingStyle, added to the ASFormatter class. This is now the ONLY option
+        that needs to be set to define the style. Setting the individual options is no longer necessary. The individual
+        options are now set in the fixOptionVariableConflicts function in ASFormatter. The predefined style options will
+        now override all other options. The order of entry does not matter as in previous versions.</p>
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.23&nbsp; (February 2009)</h3>
+
+    <p>
+        With a new Artistic Style release some unchanged source files will be formatted because of changes to Artistic
+        Style. You may want to format your source before making program changes in order to bring it up to date.</p>
+    <p>
+        In the last few years the names of indent styles have been somewhat standardized. A typical example is the Indent
+        Style discussion at Wikipedia. To keep up to date with the industry, changes have been made to the names of two
+        of the styles. The ANSI style can now also be Allman or BSD, and for the KR or Java style you should now use only
+        Java. The KR style has always been basically the same as the Java style. The KR style is depreciated and will
+        be removed sometime in the future.</p>
+    <p>
+        Four new predefined styles have been added, K&amp;R (with an &amp;), Stroustrup, Whitesmith, and Banner. K&amp;R
+        style uses Linux type brackets where the depreciated KR style uses attached brackets. Notice that K&amp;R and
+        KR are two different styles. Stroustrup style uses the new stroustrup brackets described below. Whitesmith has
+        broken brackets that are indented. Banner has attached brackets that are indented. The following table summarizes
+        the changes:</p>
+
+    <center>
+        <table>
+            <tr><th>old&nbsp;style</th>
+                <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
+                <th>new&nbsp;style</th>
+            </tr>
+            <tr><td>ansi</td>
+                <td></td>
+                <td>allman or ansi or bsd</td>
+            </tr>
+            <tr><td>java or kr</td>
+                <td></td>
+                <td>java</td>
+            </tr>
+            <tr><td>gnu</td>
+                <td></td>
+                <td>gnu</td>
+            </tr>
+            <tr><td>linux</td>
+                <td></td>
+                <td>linux</td>
+            </tr>
+            <tr><td>none</td>
+                <td></td>
+                <td>k&amp;r or k/r</td>
+            </tr>
+            <tr><td>none</td>
+                <td></td>
+                <td>stroustrup</td>
+            </tr>
+            <tr><td>none</td>
+                <td></td>
+                <td>whitesmith</td>
+            </tr>
+            <tr><td>none</td>
+                <td></td>
+                <td>banner</td>
+            </tr>
+        </table>
+    </center>
+
+    <p>
+        &nbsp;</p>
+    <p>
+        There is a new Stroustrup style and bracket type. It is similar to the Linux bracket type except that the brackets
+        are attached to namespaces and classes instead of being broken. It is the style used by Bjarne Stroustrup, the
+        founding father of C++, in his book "The C++ Programming Language".</p>
+    <p>
+        Indenting brackets in the Whitesmith and Banner styles causes a 'hanging indent' with switch statements and C++
+        class modifiers (public, private, protected). Microsoft Visual Studio avoids this by giving class and switch blocks
+        an extra indent when brackets are broken (Whitesmith style). Gnu Emacs gives switch blocks an extra indent but
+        not class blocks. With indented, attached brackets (Banner style), Visual Studio does not use an extra indent
+        and Emacs does not have the style. <strong>Artistic Style uses an extra indent for switch blocks and C++ class blocks
+            for both Whitesmith and Banner styles.</strong> This provides the best appearance in defining the style. If
+        a different format is wanted, use the individual options instead of the predefined style. You can try indent&#8209;brackets,
+        indent&#8209;classes, and indent&#8209;swiches on a class or switch block to see the results.</p>
+    <p>
+        The GNU style and indent&#8209;blocks option have been changed to indent only the blocks within a function body.
+        The opening bracket for namespaces and classes is no longer indented. The opening bracket for functions remains
+        not indented. This is the same formatting used by the Emacs editor and is in compliance with the GNU standard.
+        The GNU style has also been changed to NOT indent namespaces by default. Namespaces can be indented by using the
+        indent&#8209;namespaces option. This is consistent with the other predefined style options.</p>
+    <p>
+        The predefined style options will now override all other options. It does not depend on order of entry as in previous
+        versions. Using a predefined style will give that style regardless of other conflicting entries. The predefined
+        styles options now define only the bracket placement and sometimes the spaces per tab. This will give users the
+        option to define the other details according to their preference. The 'Predefined Style Options' section in the
+        documentation contains the details.</p>
+    <p>
+        Changes have been made to some of the long options. Most configuration files will NOT allow options to have duplicate
+        keys (e.g. the Windows registry and wxWidgets). The key is the value before the first '=' sign. If there is no
+        &#39;=&#39; sign then the entire option is the key. The options were changed to eliminate duplicate keys when
+        more than one option is allowed. The old options are depreciated but will still be valid until at least the next
+        release. The short options remain the same. The following options have changed:</p>
+
+    <center>
+        <table>
+            <tr><th>old&nbsp;option</th>
+                <th>&nbsp;&nbsp;&nbsp;&nbsp;</th>
+                <th>new&nbsp;option</th>
+            </tr>
+            <tr><td>force-indent=tab=#</td>
+                <td></td>
+                <td>indent=force-tab=#</td>
+            </tr>
+            <tr><td>brackets=break-closing</td>
+                <td></td>
+                <td>break-closing-brackets</td>
+            </tr>
+            <tr><td>pad=oper</td>
+                <td></td>
+                <td>pad-oper</td>
+            </tr>
+            <tr><td>pad=paren</td>
+                <td></td>
+                <td>pad-paren</td>
+            </tr>
+            <tr><td>pad=paren-out</td>
+                <td></td>
+                <td>pad-paren-out</td>
+            </tr>
+            <tr><td>pad=paren-in</td>
+                <td></td>
+                <td>pad-paren-in</td>
+            </tr>
+            <tr><td>unpad=paren</td>
+                <td></td>
+                <td>unpad-paren</td>
+            </tr>
+            <tr><td>one-line=keep-statements</td>
+                <td></td>
+                <td>keep-one-line-statements</td>
+            </tr>
+            <tr><td>one-line=keep-blocks</td>
+                <td></td>
+                <td>keep-one-line-blocks</td>
+            </tr>
+        </table>
+    </center>
+
+    <p>
+        &nbsp;</p>
+    <p>
+        The "else if" statements will now be placed on a single line by default. This is described as a 'fix' since it
+        was apparently always supposed to do this. The headers will be broken only if the option 'break&#8209;elseifs'
+        is specified. Most users want the statements joined since breaking them requires an extra indent.</p>
+    <p>
+        The convert&#8209;tabs option has been changed to maintain the correct spacing according to the current tab setting.
+        Previously a tab was replaced by a single space. The current option for spaces per tab is used. It may NOT produce
+        the expected results if convert&#8209;tabs is used when changing the spaces per tab. The tabs are NOT replaced
+        in quotes.</p>
+    <p>
+        The break&#8209;blocks and break&#8209;blocks=all options have finally been fixed. They will no longer break statements
+        following the block and will keep preceding comments with the block. Many other fixes were required for the options
+        to work correctly. The "Release Notes" page has the details.</p>
+    <p>
+        A new delete&#8209;empty&#8209;lines option will delete empty lines within a function or method. If used with
+        break&#8209;blocks or break&#8209;blocks=all it will delete all lines EXCEPT the lines added by the break&#8209;blocks
+        options.</p>
+    <p>
+        There is a new 'formatted' (&#8209;Q) option that displays only the files that have been formatted. Files that
+        are unchanged are not displayed.</p>
+    <p>
+        Short options have been added for the predefined styles.</p>
+    <p>
+        Semi&#8209;colons are now always space padded. All commas are space padded if pad&#8209;oper is used.</p>
+    <p>
+        The C/C++ keyword 'extern' no longer causes an extra indent.</p>
+    <p>
+        There have been several important fixes to the indent&#8209;brackets and indent&#8209;blocks options.</p>
+    <p>
+        There have been several important fixes to C# formatting.</p>
+    <p>
+        The scripts page has a new Emacs script containing hooks that will set the Emacs style options to the default
+        options used by Artistic Style. It also defines a Banner style. It can be used to compare output from the two
+        programs. The files will not be exact but it should be reasonably close. If you can improve the Emacs script I
+        would like to have the changes.</p>
+    <p>
+        There are two new projects on the Links page. <strong>CodeLite</strong> is a C++ development environment with
+        some useful features, including a template to generate a test program using the excellent tool UnitTest++. target="astyle"
+        title="open new window"><strong>Highlight</strong> converts source code to formatted text with syntax highlighting.
+        It was used it for the source code in the Developer Information section.</p>
+    <p>
+        I need a Mac OS X user to do testing on new releases. The test usually take 30 minutes at the most. They may need
+        to be repeated two or three times depending on the results. Programming knowledge is not necessary but will probably
+        be helpful. Reply to the project email address if you would like to volunteer.</p>
+    <p>
+        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
+        website is eight&#8209;cubed.com.</p>
+    <p>
+        Thanks to Eran Ifrah and Max Horn for their contributions. Travis Robinson wrote the original C# interface program.</p>
+
+    <h4>
+        Developers</h4>
+
+    <p>
+        There is a new page in the Developer Information that has an example of calling Artistic Style from a C# program.</p>
+    <p>
+        There was an omission in the peekNextLine function added in the last release which causes it to bypass empty lines.
+        If you copied the function into a program, the change is at the end of peekNextLine in astyle_main. The line containing
+        the change is marked with comments. Not correcting it may cause an infrequent line break if the option break&#8209;blocks
+        or break&#8209;blocks=all is used. The break will occur only if there are empty lines within comment lines that
+        precede a header.</p>
+    <p>
+        There has been an additional variable, formattingStyle, added to the ASFormatter class. This is now the ONLY option
+        that needs to be set to define the style. Setting the individual options is no longer necessary. The individual
+        options are now set in the fixOptionVariableConflicts function in ASFormatter.</p>
+    <p>
+        The predefined style options will now override all other options. The order of entry does not matter as in previous
+        versions. This will be done even if astyle_main is not used by your system. This was done by moving the checks
+        from astyle_main to ASFormatter. The procedure is in the function fixOptionVariableConflicts in ASFormatter.</p>
+    <p>
+        The predefined style options now define only the bracket placement and sometimes the spaces per tab. This will
+        give users the option to define the other details according to their preference. It is best if the other options
+        are NOT disabled when a predefined style is selected. All options should be left available to modify the style.
+        The conflicts will be resolved by the fixOptionVariableConflicts function which is called after all options have
+        been processed. All you need to do is set the options selected by the user.</p>
+    <p>
+        The Artistic Style for Windows program has been updated to support the current release. It is available at jimp03.zxq.net</p>
+    <p>
+        I apologize for the unplanned changes this may add to your system. But Artistic Style is starting to mature as
+        an application and the changes are needed to bring it up to date. If you have any questions or problems, email
+        me and I will do my best to help you resolve them.</p>
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.22&nbsp; (April 2008)</h3>
+
+    <p>
+        This release contains many bug fixes. The emphasis was on formatting fixes for C# files. In the last two releases
+        there have been over 80 items removed from the bug report. There have been many more fixes which were not reported
+        but were discovered while testing. The new options in this release exposed many unreported formatting problems.
+        I will try to fix the ones remaining in the next two or three releases. Some of them will be difficult to fix.
+        See the Release Notes for a complete list of changes.</p>
+    <p>
+        Starting with this release, if a file is <b>not</b> changed by Artistic Style a new file and a backup file are
+        not created. A "make" will not recompile the unchanged file and it will not be committed to a revision control
+        system. A console message will indicate that the file is unchanged. Note that this is different from using the
+        &#8209;&#8209;preserve&#8209;date option. This option retains the date on files that <b>have</b> changed. In this
+        case the changed files will still be recompiled and committed to revision control. (&#8209;&#8209;preserve&#8209;date
+        actually changes the time by one unit).</p>
+    <p>
+        In the rare case when Artistic Style aborts, the file being formatted will no longer be deleted. This is done
+        by using a temporary output file (.tmp). It should now be safe to manually abort Artistic Style and restart at
+        any time. The backup of files that were previously formatted will not be replaced.</p>
+    <p>
+        The console display has been changed. The default now displays one line per file. This will be useful if only
+        one file is being formatted, such as when Artistic Style is called from a text editor or development environment.
+        A new &#8209;&#8209;verbose (&#8209;v) option will display optional information, such as release number and statistical
+        data. A new &#8209;&#8209;quiet (-q) option will suppress all output except error messages. Some short options
+        have changed to accommodate the new options. The short option for &#8209;&#8209;version is now -V (old -v) and
+        for &#8209;&#8209;convert&#8209;tabs is &#8209;c (old &#8209;V).</p>
+    <p>
+        A new &#8209;&#8209;recursive (-r, or -R) option will process subdirectories recursively. The filename should
+        contain a wildcard (e.g. "$HOME/astyle/src/*.cpp"). Linux users should place the filename in double quotes so
+        the shell will not resolve the wildcards. Windows users should <strong>not</strong> include wildcard object files,
+        like setargv (Visual C) or wildargs (Borland), in the compiles. Wildcard processing in MinGW was excluded by adding
+        "int&nbsp;_CRT_glob&nbsp;=&nbsp;0" as a global variable. (It could also be excluded by linking to CRT_noglob.o).
+        Artistic Style now does the wildcard processing internally.</p>
+    <p>
+        When processing directories recursively it is sometimes necessary to exclude certain files or directories. This
+        can be done using a new exclude (&#8209;&#8209;exclude=file&#8209;or&#8209;directory) option. There is no short
+        option. Multiple exclude statements are allowed. The Other Options section of the documentation contains the details.</p>
+    <p>
+        It is always a good idea to create a backup for files that have been formatted. This can cause a problem in that
+        it creates a lot of excess files in your source directories. There are now new script files available that will
+        move the files to a backup directory. The original directory structure will be maintained the in the backup. There
+        is a batch file for Windows and a shell script for everyone else. They are available in the Scripts section of
+        the home page.</p>
+    <p>
+        There is a new Links page that lists programs using Artistic Style. In general, they seem to be good quality software.</p>
+    <p>
+        If you are using a development environment to compile Artistic Style, be sure to read the Compiler Options section
+        in the Install Information. In particular, you should define NDEBUG in the Release compile to remove the assert
+        statements. There are quite a few of these and they will slow down processing if NDEBUG is not used. The assert
+        statements are necessary due to the nature of the program. Also, when reporting bugs it is a good idea to log
+        in first. Occasionally, more information is needed on a problem. If the poster did not log in there is no way
+        to contact them.</p>
+    <p>
+        A Java Native Interface has been added for Java developers. This will allow an Artistic Style shared library (DLL)
+        to be called from a Java program. A shared library (Dll) using the Java interface can still be called from C,
+        C++, or C# programs. There is a sample program in the Developer Information.</p>
+    <p>
+        <strong>Developers using Artistic Style in another project</strong> should be aware that there are two new functions
+        that have been added to the ASStreamIterator class (peekNextLine() and peekReset()). These will have to be coded
+        into source modules which use Artistic Style without astyle_main. In most cases the functions can simply be copied
+        without the template information. The assert statements may also be removed. A variable will need to be added
+        to the class and another may need to be modified. If the shared or static library configuration is being used
+        then no changes are necessary.</p>
+    <p>
+        The file globing function was obtained from "The Code Project" and was written by Jack Handy. It was modified
+        slightly to make the comparisons case insensitive for Windows.</p>
+    <p>
+        The OpenVMS distribution is prepared by Jim Duff, an OpenVMS Systems Specialist living in Sydney, Australia. His
+        website is eight&#8209;cubed.com.</p>
+    <p>
+        Thanks to Emilio Guijarro and Jens Krinke for their contributions, and to Sam Cooler for testing the Mac OS X
+        version.</p>
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.21&nbsp; (June 2007)</h3>
+
+    <p>
+        This release contains many bug fixes. Array formatting and indentation has been improved. Arrays and enums are
+        now formatted by a different procedure than functions. Brackets will now attach to lines with comments. Brackets
+        will be broken from lines with comments without bringing the comments with them. All comments will remain in their
+        original column, if possible. The formatting of empty blocks was fixed. The BracketType definition was expanded
+        and the bracket types are now correctly identified. There are several formatting fixes for Java files. See the
+        Release Notes for a complete list of changes.</p>
+    <p>
+        A new option, --preserve-date (-Z), has been added. This will retain the date modified of the original file in
+        the new formatted file. Otherwise the new file will contain the current date.</p>
+    <p>
+        The option --errors-to-standard-output has been shortened to --errors-to-stdout. The <b>short</b> options -c (mode=c)
+        and -j (mode=java) have been removed. The options should seldom be needed since the mode is now set automatically
+        from the file extension for <b>each source file</b> instead of for each program execution. A new long option --mode=cs
+        (C#) has been added. Key words are now set for each file depending on the file mode (C, Java, or C#). This will
+        eliminate formatting problems caused by not being able to identify the source code language.</p>
+    <p>
+        There has been a change to the Linux style bracket formatting for C++ header files. In the past brackets have
+        been broken for function definitions within a class. With this release the brackets will be attached. The brackets
+        will also be attached for arrays, structs, enums, and other top level objects that are not classes or functions.
+        The Linux style formatting for Java and C# has not been changed.</p>
+    <p>
+        This release supports only one platform in each distribution package. In the past all platforms were included
+        in every package. If you use Artistic Style on more than one platform you will need to download packages for each
+        platform. The main difference in platforms is the build directory and the line endings. The source code and documentation
+        are the same for all packages.</p>
+    <p>
+        There are new instructions about optimizing compiler options in the Install Instructions. If you are compiling
+        using a development environment you may want to read them.</p>
+    <p>
+        If you have broken brackets with comments attached to the opening bracket instead of the previous line, do the
+        following <b>before formatting</b> again with broken brackets. Use the current Artistic Style release (1.21).
+        Format the source using attached brackets to reattach the brackets and the comments to the previous line. Then
+        format the source again using broken brackets. This will move the brackets to the next line without the comments.
+        The comments will now be on the correct line.</p>
+    <p>
+        There is a new multi-platform GUI program, <b>UniversalIndent</b>, available at sourceforge.net/projects/universalindent.
+        It allows you to view the effects of the Artistic Style options on your source code without saving the file. You
+        can review the results of the formatting options before updating the file. It can be used with a test file or
+        with your actual source code. It supports several other formatting programs. The <b>Artistic Style for Windows</b>
+        program has been updated to support the current release. It is available at jimp03.zxq.net</p>
+    <p>
+        There have been a few inquiries about how to customize Artistic Style for an unsupported format. Changes can be
+        made with Python or another text processing program after formatting the source, or you can modify the Artistic
+        Style source code itself. The best place to modify the code is usually in ASEnhancer.cpp. The ASEnhancer class
+        is called after the main formatting has been done so you are getting a formatted file. If you just need to change
+        the indentation of a few things this is probably the best place to do it.</p>
+    <p>
+        There is now a distribution package for OpenVMS thanks to Jim Duff, an OpenVMS Systems Specialist living in Sydney
+        Australia. His website is at eight-cubed.com.</p>
+    <p>
+        Thanks to Norbert Holzki and Siemens AG, Medical Solutions, Forchheim, Germany for testing the array formatting.</p>
+    <p>
+        Thanks to Sam Cooler for testing the Mac OS X version.</p>
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.20&nbsp; (January 2007)</h3>
+
+    <p>
+        Release 1.20.2 fixed problems with the new stream I/O procedure added in release 1.20.1. Release 1.20.1 improved
+        the processing for Mac OS X platforms. The compatibility with TextWrangler was improved. There is now a separate
+        release for Mac.</p>
+    <p>
+        Artistic Style will now indent message maps for Microsoft Foundation Class (MFC) and event tables for wxWidgets.
+        The option --brackets=break-closing-headers has been shortened to --brackets=break-closing and a short option
+        added (-y). There have been short options added for --break-elseifs (-e), --indent-preprocessor (-w), --break-blocks
+        (-f), and --break-blocks=all (-F).</p>
+    <p>
+        With this release the Artistic Style license changes from the GNU General Public License (GPL) to the GNU <em>Lesser</em>
+        General Public License (LGPL). You can use Artistic Style for free or commercial software without charge. Projects
+        that use Artistic Style do not have to make the their source code available. If Artistic Style itself is modified,
+        however, the modified Artistic Style source code must be made available. See the GNU Lesser General Public License
+        for more information.</p>
+    <p>
+        There is a new preprocessor option to aid developers in using Artistic Style with a Graphical User Interface (GUI).
+        It is no longer necessary to remove the source module astyle_main.cpp and write embedded code to call the formatter.
+        It can be compiled as a static library or a shared library (DLL), or the entire source code can be included in
+        the project. See the Artistic Style Developer Information for the calling procedure and other details.</p>
+    <p>
+        There is a sample GUI program for Windows available at http://jimp03.zxq.net/. It uses the unmodified Artistic
+        Style compiled for a GUI. The source code needs some work so it is not available for now. It should work under
+        Linux using WINE. Future enhancements and platform support will depend on the response to the sample program.</p>
+    <p>
+        To support the new Artistic Style preprocessor option there are new makefiles and project files. Windows users
+        have a project file for Microsoft Visual C++ 2003 (version 7). Linux users have a new makefile that has several
+        new options. The location of both files is in the build directory. Be sure to read the "Artistic Style Install
+        Information" for the details.</p>
+    <p>
+        Intel&reg; is now offering it's C++ and Fortran compilers free for non-commercial use. Information is available
+        at the Intel&reg; Software Development Products website. Click on the "Free Non-Commercial Download" link to see
+        if you qualify. The Intel Compilers on Windows and Linux require that other compilers be installed (Microsoft
+        Visual C++ or GNU gcc respectively). This is because the Intel Compilers require the header files, runtime libraries
+        and linkers distributed as part of these other compilers. If you want to use this compiler there is now a makefile
+        (makeintel) included with the project. See "Artistic Style Install Information" for instructions.</p>
+    <p>
+        &nbsp;</p>
+
+    <h3>
+        Artistic Style 1.19&nbsp; (July 2006)</h3>
+
+    <p>
+        Most changes this release were again concerned with the options pad=oper and pad=paren. The formatting still worked
+        a little different if both options were declared than if only one was used. The problems with distinguishing the
+        multiplication operator from pointers, and of separating an object from the member access pointer (-&gt;) were
+        fixed.</p>
+    <p>
+        A new option, unpad=paren, was added. This will undo the pad=paren, pad=paren-out and pad=paren-in options. It
+        can be used alone or with pad=paren-out or pad=paren-in. If used alone it will unpad all parens that have been
+        previously padded. If used with a paren padding option, the paren padding option will take precedence and only
+        the unnecessary padding will be removed. This will enable the paren padding to be changed in one formatting run.</p>
+    <p>
+        Padding to paren headers (e.g. "if", "for", "while") was reinstated. This was done in previous releases if pad=oper
+        was used. Since most people used this option, the headers were usually padded. The general opinion was that they
+        looked better padded, especially in the case of "else if" statements. Since it is a minor point, it was not made
+        an option.</p>
+    <p>
+        This is the third release of Artistic Style in the last four months. The reason for the frequent releases was
+        the number of pervasive errors in the formatting. In the future there will probably be two or three new releases
+        per year, or one every four to six months. It will take about three years to make all the changes that are planned
+        at this time.; The releases will be a combination of fixes, changes to formatting, and new features.</p>
+    <p>
+        &nbsp;</p>
+</body>
+
+</html>
+
Index: src/plugins/astyle/astyle/install.html
===================================================================
--- src/plugins/astyle/astyle/install.html	(revision 7913)
+++ src/plugins/astyle/astyle/install.html	(working copy)
@@ -223,11 +223,12 @@
         Visual C++ Compiler</h4>
 
     <p>
-        There are configuration and project files for 4 versions of the Visual C compiler; build/vs2005 (Visual Studio
+        There are configuration and project files for 3 versions of the Visual C compiler; build/vs2005 (Visual Studio
         2005), build/vs2008 (Visual Studio 2008) and build/vs2010 (Visual Studio 2010). Open the AStyle configuration
-        file in the appropriate &quot;build&quot; directory. All project files have Release and Debug configurations.
-        Release file output will be in the &quot;bin&quot; directory. Debug file output will be in the &quot;debug&quot;
-        directory. The following solution files are available.</p>
+        file in the appropriate &quot;build&quot; directory. All project files have Debug, Release and Static configurations.
+        Debug file output will be in the &quot;debug&quot;
+        directory. 
+        Release file output will be in the &quot;bin&quot; directory. Static file output will be in the "binstatic" directory. The following solution files are available.</p>
     <ul>
         <li><b>All AStyle</b> will build the release and the debug configurations for all of the following.</li>
         <li><b>AStyle</b> builds the Artistic Style command line program (AStyle.exe). This project has an extra "Static"
Index: src/plugins/astyle/astyle/notesArchives.html
===================================================================
--- src/plugins/astyle/astyle/notesArchives.html	(revision 0)
+++ src/plugins/astyle/astyle/notesArchives.html	(working copy)
@@ -0,0 +1,1104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+    <title>Artistic Style - Release Notes Archives</title>
+    <meta http-equiv="Content-Language" content="en-us" />
+    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+    <h1>
+        Artistic Style Release Notes Archives</h1>
+
+    <p>
+        &nbsp;</p>
+
+    <h3 id="_1.24">
+        Artistic Style 1.24&nbsp; (February 2010)</h3>
+
+    <ul>
+        <li>Add new option &#8209;&#8209;brackets=horstmann (-g) to place run&#8209;in statements on the same line as an opening
+            bracket. </li>
+        <li>Add new style --style=horstmann (-A9) using horstmann brackets to predefined styles. </li>
+        <li>Add new option &#8209;&#8209;add-brackets (-j) and --add-one-line-brackets (-J) to place brackets around one line
+            statements. </li>
+        <li>Add new style --style=1tbs and --style=otbs (-A10) using linux brackets and the --add-brackets option to predefined
+            styles. </li>
+        <li>Add new option &#8209;&#8209;pad&#8209;header (&#8209;H) from Mario Gleichmann to insert space padding after paren
+            headers. </li>
+        <li>Add new option &#8209;&#8209;align&#8209;pointer=type (-k1), &#8209;&#8209;align&#8209;pointer=middle (-k2) and
+            &#8209;&#8209;align&#8209;pointer=name (-k3) from J P Nurmi. </li>
+        <li>Add new option &#8209;&#8209;lineend=windows (-z1), &#8209;&#8209;lineend=linux (-z2) and &#8209;&#8209;lineend=macold
+            (-z3) from MrTact. </li>
+        <li>Add new option &#8209;&#8209;indent&#8209;col1&#8209;comments (-Y) to indent C++ comments beginning in column
+            one. </li>
+        <li>Add formatting of embedded SQL statements in C/C++.</li>
+        <li>Add rejecting 16 or 32 bit file encoding and display a warning message.</li>
+        <li>Remove .tmp file by using ostringstream instead of ofstream. &nbsp;</li>
+        <li>Remove depreciated option style=kr.</li>
+        <li>Remove trace file from ASFormatter and use 'cout' instead. </li>
+        <li>Improve assembler statement processing to include extended assembly.</li>
+        <li>Improve assembler statement processing to include Microsoft specific lines and blocks.</li>
+        <li>Improve recognition of pointers and references vs. arithmetic operators.</li>
+        <li>Improve recognition of arithmetic operators for --pad-oper (-p) option. </li>
+        <li>Change "class" initializer statement to one indent.</li>
+        <li>Change &quot;class&quot; initializer statement continuation lines to align on the first initializer.</li>
+        <li>Change predefined styles to allow changes to spaces per indent.</li>
+        <li>Change --style=stroustrup to 5 spaces per indent.</li>
+        <li>Change --style=linux default minimum conditional indent to 4.</li>
+        <li>Change default formatting to leave paren headers unchanged instead of inserting space padding. </li>
+        <li>Change &#8209;&#8209;unpad&#8209;paren to unpad headers unless padding is requested. </li>
+        <li>Change NONE_MODE brackets to allow run-in statements from horstmann type brackets.</li>
+        <li>Change array brackets to allow run-in statements from horstmann type brackets.</li>
+        <li>Change --min-conditional-indent to allow for statements preceded by a bracket (horstmann brackets). </li>
+        <li>Change ASBeautifier and ASFormatter to output an entire comment line instead of characters. </li>
+        <li>Change quote formatting in ASFormatter to output the entire string instead of single characters.</li>
+        <li>Change from Ettl Martin for cppcheck compliance. </li>
+        <li>Change space padding of line end comments to one space when the proper alignment cannot be maintained.</li>
+        <li>Change spaces per tab minimum value from 1 to 2.</li>
+        <li>Change the help display of "Formatting Options" to "Formatting Options" and "Padding Options".</li>
+        <li>Fix MinGW file globing by moving the _CRT_glob variable outside the astyle namespace. </li>
+        <li>Fix default line end processing to always output consistent line ends.</li>
+        <li>Fix identification of pointer dereferences and address-of indicators.</li>
+        <li>Fix memory leaks by changing static vectors to static vector pointers so the object can be deleted.</li>
+        <li>Fix console build trying to use Unicode character set.</li>
+        <li>Fix stringEndsWith method when end is longer than the string.</li>
+        <li>Fix --exclude option rejecting a full file path.</li>
+        <li>Fix --verbose option when used with --quiet. </li>
+        <li>Fix --quiet option for excluded files and directories.</li>
+        <li>Fix --indent-classes for C++ structs containing access modifiers.</li>
+        <li>Fix formatting of variable types with multiple names.</li>
+        <li>Fix from Christian Stimming for alignment of &lt;&lt; and &gt;&gt; operators.</li>
+        <li>Fix in-statement indent of "enum class".</li>
+        <li>Fix 'if' statement following an 'else' sometimes attaching to a comment.</li>
+        <li>Fix recognition of non-indent line comments in the first two lines of a source file.</li>
+        <li>Fix non-instatement array to recognize an empty bracket.</li>
+        <li>Fix indenting non-indent line comments in an event table or message map.</li>
+        <li>Fix to move comments when breaking one line blocks and -keep-one-line-statements is used.</li>
+        <li>Fix to recognize parens in template definitions.</li>
+        <li>Fix recognition of class initializer when class description contains multiple lines.</li>
+        <li>Fix from Colin D Bennett for 64-bit comparison. </li>
+        <li>Fix console error procedure to terminate on an error.</li>
+        <li>Fix 'return' statement for padding or not padding arithmetic operators.</li>
+        <li>Fix C# 'delegate' and 'unchecked' not being identified as keywords.</li>
+        <li>Fix occasional array formatting problem with one-line blocks when indent-brackets is used.</li>
+        <li>Fix to check for max-instatement-indent when the previous line ends with an opening paren.</li>
+        <li>Fix predefined style options to allow the use of --indent=tab (-t) and --indent=force-tab (-T) options.</li>
+        <li>Fix --in-statement indent to allow for non-indentation tabs in the line.</li>
+        <li>Fix formatting problems with non in-statement arrays. </li>
+        <li>Fix infinite loop when preprocessor #else is missing #if.</li>
+        <li>Fix Borland string compares to check for comparison past the end of string. </li>
+        <li>Fix &#8209;&#8209;fill&#8209;empty&#8209;lines when &#8209;&#8209;indent=force&#8209;tab is also used.</li>
+        <li>Fix break-blocks formatting with preceding mixed comments and line comments.</li>
+        <li>Fix not breaking a closing bracket following a comment.</li>
+        <li>Fix attached brackets to not change empty brackets when both are on the same line. </li>
+        <li>Fix attached brackets sometimes deleting a previous comment line when the bracket cannot be attached.</li>
+        <li>Fix attached brackets attaching a closing header to a single line block.</li>
+        <li>Fix broken brackets breaking a single line block before a comment.</li>
+        <li>Fix 'extern' keyword using in-statement indents instead of tab indents. </li>
+        <li>Fix errno checking problem on old OpenVMS versions.</li>
+        <li>Fix deleting a space before a line end comment when attaching 'else' to a closing bracket. </li>
+        <li>Fix adding a space before a line end comment when the comment is preceded by a tab.</li>
+        <li>Fix to leave tab indentation on no-indent line comments.</li>
+        <li>Fix comments when a bracket is added or removed from a line.</li>
+        <li>Fix indenting preprocessor statements in a wxWidgets or MFC macro.</li>
+        <li>Fix memory leak reporting of global and static class member vectors. </li>
+        <li>Refactor to implement unit testing and improve design and decomposition:
+            <ul>
+                <li>Replace multiple line conditional statements with a method to eliminate complex "not" (!) logic. </li>
+                <li>Change to call standardizePath when a vector entry is built. </li>
+                <li>Change g_console from an object to an object pointer to allow rebuilding the object.</li>
+                <li>Change ASConsole variables to private with getters and setters.</li>
+                <li>Change processOptions method to return to main instead of exiting.</li>
+                <li>Move formatFile call from getFilePaths to main.</li>
+                <li>Move peekNextChar function from ASBeautifier to ASBase.</li>
+                <li>Move multi-line comment alignment from ASBeautifier to ASFormatter. </li>
+                <li>Encapsulate global variable isModeManuallySet. </li>
+                <li>Extract methods formatOpeningBracket, formatClosingBracket and isCurrentBracketBroken.</li>
+                <li>Extract methods formatCommentOpener and formatCommentBody.</li>
+                <li>Extract methods formatLineCommentOpener and formatLineCommentBody.</li>
+                <li>Extract methods formatQuoteOpener and formatQuoteBody. </li>
+                <li>Extract methods processFiles and writeOutputFile. </li>
+                <li>Extract methods processSwitchBlock and findCaseColon. </li>
+                <li>Extract method updateExcludeVector.</li>
+                <li>Extract method copyTempStacks.</li>
+                <li>Extract method formatCinToCout. </li>
+                <li>Extract method isLineBreakBeforeClosingHeader. </li>
+            </ul>
+        </li>
+    </ul>
+
+    <h3 id="_1.23">
+        Artistic Style 1.23&nbsp; (February 2009)</h3>
+
+    <ul>
+        <li>Add --brackets=stroustrup (-u) to bracket types. </li>
+        <li>Add --style=stroustrup to predefined styles. </li>
+        <li>Add --style=whitesmith to predefined styles.</li>
+        <li>Add --style=banner to predefined styles.</li>
+        <li>Add --style=k&amp;r and --style=k/r to predefined styles. </li>
+        <li>Add --style=allman and --style=bsd to predefined styles. </li>
+        <li>Change --style=kr to --style=java.</li>
+        <li>Add short options -A1 thru -A8 for predefined styles.</li>
+        <li>Change the following long options to eliminate duplicate keys (the short options have not changed).
+            <ul>
+                <li>--force-indent=tab=# changed to --indent=force-tab=#</li>
+                <li>--brackets=break-closing changed to --break-closing-brackets</li>
+                <li>--pad=oper changed to --pad-oper</li>
+                <li>--pad=paren changed to --pad-paren</li>
+                <li>--pad=paren-out changed to --pad-paren-out</li>
+                <li>--pad=paren-out changed to --pad-paren-in</li>
+                <li>--unpad=paren changed to --unpad-paren</li>
+                <li>--one-line=keep-statement changed to --keep-one-line-statements</li>
+                <li>--one-line=keep-blocks changed to --keep-one-line-blocks</li>
+            </ul>
+        </li>
+        <li>Add new option --indent=force-tab (assumes tab setting is 4).</li>
+        <li>Add new option --delete&#8209;empty&#8209;lines to delete the empty lines within a function.</li>
+        <li>Add new option --formatted (-Q) to display only the files that are formatted. </li>
+        <li>Change --convert-tabs to replace tabs with spaces and maintain the correct spacing. </li>
+        <li>Change --indent-blocks to indent only blocks within a function.</li>
+        <li>Change --indent-blocks to NOT indent the opening bracket for namespaces, classes, and interfaces. </li>
+        <li>Change --indent-blocks and --indent-brackets to NOT indent namespaces unless --indent-namespaces is used.</li>
+        <li>Change --indent-blocks and --indent-brackets to always break closing headers so the 'else' aligns with the corresponding
+            'if'.</li>
+        <li>Change --indent-blocks and --indent-brackets to be mutually exclusive (--indent&#8209;blocks will be used). </li>
+        <li>Fix --indent-blocks indenting a java 'interface' statement.&nbsp; </li>
+        <li>Fix --indent-blocks to indenting opening brackets in a java method containing a 'throws' clause. </li>
+        <li>Fix --indent-blocks indenting opening brackets in a java static constructor. </li>
+        <li>Fix --indent-blocks formatting in a C++ const function. </li>
+        <li>Fix --indent&#8209;brackets indenting brackets within comments. </li>
+        <li>Move set-up of predefined styles to ASFormatter so the style options will override all other options.</li>
+        <li>Fix --else-if statements to join by default. </li>
+        <li>Fix to always space pad after semi&#8209;colons.</li>
+        <li>Fix --pad-oper to space pad all commas.</li>
+        <li>Fix --break&#8209;blocks and --break&#8209;blocks=all options.
+            <ul>
+                <li>Fix to recognize a semi&#8209;colon as end of block when brackets are not used.</li>
+                <li>Fix to break comments preceding a block so that comments are kept with the block. </li>
+                <li>Fix 'for' statement semi&#8209;colons being mistaken for the end of a statement.</li>
+                <li>Fix bracketFormatMode of&nbsp; NONE_MODE to break closing headers.</li>
+                <li>Fix incorrect breaking of a block that follows a comment. </li>
+                <li>Fix breaking of opening and closing headers preceded by a comment.</li>
+                <li>Fix breaking of statements when comments follow a header block. </li>
+                <li>Fix incorrectly breaking blocks for namespaces, interfaces, and classes. </li>
+                <li>Fix incorrectly breaking blocks for access modifiers when keep-one-line-statements is used. </li>
+                <li>Fix to NOT break single line blocks. </li>
+                <li>Fix breaking a closing 'while' statement in a do-while block. </li>
+                <li>Fix preprocessor directives not resetting all variables. </li>
+                <li>Fix peekNextText function not correctly identifying an end of file condition.</li>
+            </ul>
+        </li>
+        <li>Add C# lambda expression arrow '=&gt;' to list of operators so pad&#8209;oper will not separate. </li>
+        <li>Add C# '??' to list of operators so pad&#8209;oper will not separate. </li>
+        <li>Fix C# to identify 'add' and 'remove' methods as command type brackets. </li>
+        <li>Fix C# indentation of closing headers 'set' and 'remove'.</li>
+        <li>Fix C# to identify methods containing a 'where' keyword as block headers.&nbsp; </li>
+        <li>Fix C# files to recognize preprocessor statements. </li>
+        <li>Fix C# indentation following a #region statement containing a keyword. </li>
+        <li>Fix C# to recognize nullable types so --pad&#8209;paren will not separate (e.g. 'int?'). </li>
+        <li>Fix C# to recognize non-generic default values (e.g. 'default(int)'). </li>
+        <li>Fix C# indentation when a class declaration contains multiple class statements. </li>
+        <li>Fix C# linux bracket placement for an&nbsp; interface statement. </li>
+        <li>Fix C# --break-elseifs also breaking 'catch' statements. </li>
+        <li>Fix C# --break-blocks breaking of 'set' and 'remove' statements.</li>
+        <li>Fix Java static constructor not being identified as a command type bracket.</li>
+        <li>Fix Java 'new' array not having an in statement indent. </li>
+        <li>Refactor NONE_MODE in ASFormatter to use common procedures with other bracket types.</li>
+        <li>Refactor astyle_main to improve maintainability.
+            <ul>
+                <li>New class ASConsole to encapsulate console variables. </li>
+                <li>New header file astyle_main.h </li>
+                <li>Move console only functions to ASConsole class.</li>
+                <li>New functions processOptions and processFilePath to improve decomposition.</li>
+            </ul>
+        </li>
+        <li>Apply patches from Eran Ifrah to remove memory leaks.</li>
+        <li>Apply patches from Max Horn for the unary plus operator.</li>
+        <li>Fix initialization of vector stack objects to remove memory leaks.</li>
+        <li>Add comma (,) to valid options separators in the options file. </li>
+        <li>Change to display all (instead of one) --exclude errors before abort.</li>
+        <li>Change astyle namespace to include all of astyle_main except the functions called externally. </li>
+        <li>Change licensing comments from LGPL version 2.1 to LGPL version 3.</li>
+        <li>Change JNI function call from GetVersion to AStyleGetVersion.</li>
+        <li>Remove &#39;extern&#39; keyword from headers, nonParenHeaders, PreBlockStatements, and &nbsp;PreCommandHeaders.
+        </li>
+        <li>Fix not always space padding a closing bracket. </li>
+        <li>Fix not space padding a closing header when breaking one line statements. </li>
+        <li>Fix --keep-one-line-blocks breaking closing headers on broken brackets. </li>
+        <li>Fix incorrectly attaching a bracket inside a comment after the end of a statement.</li>
+        <li>Add number of output lines processed to the --verbose option display.</li>
+        <li>Remove trace file from ASEnhancer and use &#39;cout&#39; instead.</li>
+        <li>Replace INIT_CONTAINER and DELETE_CONTAINER macros with template functions.</li>
+        <li>Replace IS_A macro with isBracketType function.</li>
+        <li>Add GCC extended operators '&lt;?' and '&gt;?' (min and max) to list of operators.</li>
+        <li>Fix indentation and breaking of lines in struct and class bit fields.</li>
+        <li>Fix indentation of struct definitions.</li>
+        <li>Add &#39;union&#39; to preDefinitionHeaders.</li>
+        <li>Change preBlockStatements and preDefinitionHeaders to be dependent on file type.</li>
+        <li>Fix a single quote mark used as an apostrophe in preprocessor directives being processed as a quotation.</li>
+        <li>Fix linux bracket formatting in nested namespaces. &nbsp;</li>
+        <li>Fix --pad&#8209;paren&#8209;in not converting a tab to spaces if convert&#8209;tabs is requested.</li>
+        <li>Fix incorrectly breaking a closing bracket when a header is not present.</li>
+        <li>Fix inserting duplicate bracketTypeStack entries when preprocessor directives contain unmatched brackets.</li>
+        <li>Fix bracketFormatMode of&nbsp; NONE_MODE to correctly break single line blocks.&nbsp; </li>
+        <li>Fix --keep&#8209;one&#8209;line&#8209;blocks breaking 'if' statements when --break&#8209;elseifs is used.</li>
+        <li>Remove inefficiencies for speed improvement.
+            <ul>
+                <li>Reduce calls to frequently used functions by first checking for specific requirements.</li>
+                <li>New class ASBase to inline frequently used functions and eliminate duplication between classes.</li>
+                <li>Change ASEnhancer from inherited to embedded to eliminate scope resolution requirements.</li>
+                <li>Change ASFormatter to output words instead of characters. </li>
+                <li>Resequence operator vectors and add new findHeader and findOperator functions. </li>
+            </ul>
+        </li>
+        <li>Fix NONE_MODE brackets to break a statement on the same line as an opening broken bracket.</li>
+        <li>Add 'errno' message for file and directory errors in the Linux build.</li>
+        <li>Add error checking for file remove and rename procedure.</li>
+        <li>Fix Linux abort for file sizes over 2 GB.</li>
+        <li>Fix searching the entire directory when only one file is requested.</li>
+        <li>Change --preserve-date increment to 2 units for Visual Studio 2008. </li>
+    </ul>
+
+    <h3 id="_1.22">
+        Artistic Style 1.22&nbsp; (April 2008)</h3>
+
+    <ul>
+        <li>New --recursive (-r, -R) option to recursively process sub directories.</li>
+        <li>New --exclude option to exclude files and sub directories from processing.</li>
+        <li>New --verbose (-v) option to display optional information, such as release number and statistical data.</li>
+        <li>New --quiet (-q) option to suppress all informational messages.</li>
+        <li>Change --version short option to -V.</li>
+        <li>Change --convert&#8209;tabs short option to -c.</li>
+        <li>Change to NOT write a new or backup file if a file contents has not changed,&nbsp;</li>
+        <li>Change console file input procedure to create a .tmp file and preserve the input file on a crash.</li>
+        <li>Add Java Native Interface (JNI) for developers.</li>
+        <li>New peekNextLine and peekReset functions in ASStreamIterator.</li>
+        <li>Change ASEnhancer static variables to class member variables and reset them in the init() function.</li>
+        <li>Patch from Jens Krinke to fix stack underrun when the number of closing brackets exceed opening brackets.</li>
+        <li>Fix stack underrun when the number of closing parens exceed opening parens.</li>
+        <li>Fix processing of C/C++ string literal continuation lines.</li>
+        <li>Patch from Emilio Guijarro to correct padding and formatting of C# 'foreach' statements.</li>
+        <li>Fix C# to correctly identify accessor calls as not being headers.</li>
+        <li>Fix C# accessors (get and set) to break when breaking single line blocks.</li>
+        <li>Modify template procedure to process C# generics.</li>
+        <li>Fix processing of C# verbatim string literals.</li>
+        <li>Fix indentation of C# methods containing 'base' or 'this' keywords.</li>
+        <li>Fix indentation of C# methods containing generics.</li>
+        <li>Fix indentation of C# enums containing a type.</li>
+        <li>Fix indentation of C# catch blocks when 'catch' is a non-paren header.</li>
+        <li>Fix C# breaking of linux style brackets for methods containing generics and methods containing accessors.</li>
+        <li>Allow @ as a C# identifier prefix.</li>
+        <li>Fix assert error on C# UTF-8 files when the byte-order mark (BOM) is not followed by a space or a comment.</li>
+        <li>Fix nested preprocessor formatting by adding waitingBeautifierStack, activeBeautifierStack, waitingBeautifierStackLengthStack,
+            and activeBeautifierStackLengthStack to the ASBeautifier copy constructor and class destructor.</li>
+        <li>Fix ASStreamIterator end of file procedure for ASTYLE_LIB option.</li>
+        <li>Add pragma statements for Intel compiler to disable specific warning messages.</li>
+        <li>Move line number accumulators from ASSourceIterator class to private in ASStreamIterator class.</li>
+        <li>Fix reset of ASFormatter isInPreprocessor flag when \ is followed by a blank line.</li>
+        <li>Fix cin, cout, and cerr continuation lines to be indented.</li>
+        <li>Fix indentation of inner classes that inherit a base class.</li>
+        <li>Add astyle_main.cpp function declarations to astyle_main.cpp.</li>
+        <li>Change global variable prefix from '_' to 'g_'.</li>
+        <li>Inline selected ASStreamIterator functions.</li>
+        <li>Fix brackets=attach from attaching a bracket to a preprocessor directive.</li>
+        <li>Fix brackets=attach and brackets=linux breaking in an array immediately after a preprocessor directive.</li>
+        <li>Modify Jack Handy's wildcmp() function to make Windows comparisons case insensitive.</li>
+        <li>Fix not indenting a bracket when an attached bracket is broken and the following line is a no-indent comment.</li>
+        <li>Add error message if 'options=' file cannot be opened.</li>
+        <li>Bypass colon enclosed in quotes when processing 'case' statements.</li>
+        <li>Fix brackets=none not always breaking a closing bracket when breaking single line blocks.</li>
+        <li>Fix padding of header words that are in a definition (array).</li>
+        <li>Fix indentation of line immediately after a case statement where the object is enclosed in parens.</li>
+        <li>Fix breaking of multiple case statements when the object is enclosed in parens.</li>
+        <li>Fix indentation when there is more than one case statement on a line.</li>
+        <li>Remove processing for shouldBreakLineAfterComments (no longer used).</li>
+        <li>Fix brackets=break not breaking if before a comment that is not at end of line.</li>
+        <li>Fix brackets=none not space padding before a bracket.</li>
+        <li>Fix brackets=break and brackets=none not breaking comments following a bracket.</li>
+        <li>Fix blank line not being trimmed if inside a comment.</li>
+        <li>Fix brackets=break incorrectly space padding a preceding preprocessor statement line.</li>
+        <li>Fix brackets=attach attaching two consecutive opening brackets before an end-of-line comment.</li>
+        <li>Fix break-blocks not inserting a blank line if a bracket preceding a comment was moved to the following line.</li>
+        <li>Add 'X' to selected ASEnhancer variables to prevent conflict with ASBeautifier.</li>
+        <li>Fix brackets=none not space padding after a closing bracket that precedes a closing header.</li>
+        <li>Change minimum indent edit from 2 spaces to 1 space.</li>
+        <li>Change to check for preprocessor definitions in C/C++ files only.</li>
+        <li>Fix padding of template definitions when pad=oper is used.</li>
+        <li>Fix comment formatting in nested preprocessor definitions.</li>
+        <li>Fix header dependencies and warning messages for Linux GCC 4.3.</li>
+        <li>Use file name from disk for output to maintain correct case in Windows.</li>
+        <li>Fix pad=operator padding a negative value in a case statement.</li>
+        <li>Fix incorrect identification of bracket type following a struct statement.</li>
+        <li>Fix indentation of blank lines outside of brackets when --fill&#8209;empty&#8209;lines is used with --indent&#8209;blocks
+            or --indent&#8209;brackets.</li>
+        <li>Fix ASFormatter not identifying comments in preprocessor directives.</li>
+        <li>Fix brackets=attach deleting a preceding blank line in array type brackets.</li>
+    </ul>
+
+    <h3 id="_1.21">
+        Artistic Style 1.21&nbsp; (June 2007)</h3>
+
+    <ul>
+        <li>New function, formatArrayBrackets, to improve array formatting and indentation.</li>
+        <li>Attach brackets to lines with end-of-line comments.</li>
+        <li>Break brackets from lines with end-of-line comments without bringing the comments with them.</li>
+        <li>Move ASFormatter and ASBeautifier static initialization from constructor to "init" function to allow for changes
+            in the file type.</li>
+        <li>Add --preserve-date (-Z) option.</li>
+        <li>New functions formatBrackets, padOperators and PadParens to improve decomposition.</li>
+        <li>Add identification of file mode (C, C#, or Java) to file open procedure.</li>
+        <li>Keywords in headers now depend on file mode (C, C#, or Java) and object type (formatter or beautifier).</li>
+        <li>Remove short options -c (mode=c) and -j (mode=java) since the mode is now set automatically from the file extension.</li>
+        <li>Change Linux bracket formatting for header files.</li>
+        <li>Fix formatting of empty blocks.</li>
+        <li>Expand BracketType definition.</li>
+        <li>Fix "do not change" bracket mode inconsistencies with other bracket formatting.</li>
+        <li>Remove mode=java from Java predefined style.</li>
+        <li>Change long option --errors-to-standard-output to --errors-to-stdout.</li>
+        <li>Fix breaking of struct variable declaration.</li>
+        <li>Add support for OpenVMS compiler.</li>
+        <li>Inline the ASBeautifier function isLegalNameChar.</li>
+        <li>Fix no-indent of block comments starting in column 1 or 2.</li>
+        <li>Fix formatting of Java anonymous class defined as a method call parameter (bracket within a paren).</li>
+        <li>Fix indentation for Java "for each" statement.</li>
+        <li>Fix bracket being attached to a preprocessor directive.</li>
+        <li>Fix extra indent of single line blocks when a previous line probation header is found.</li>
+        <li>Fix formatting of block comments when continuation lines have different leading whitespace characters.</li>
+        <li>Fix deleting a blank line before a bracket when brackets=attach.</li>
+        <li>Fix segmentation fault on preprocessor continuation line followed by an empty line.</li>
+        <li>Fix bad bracket indent that sometimes occurs when brackets=attach and it cannot be attached.</li>
+        <li>Fix trimming of comment lines.</li>
+        <li>Fix incorrect identification of "new" operator pointers as calculations.</li>
+        <li>Fix incorrect identification of assignments as command type bracket.</li>
+        <li>Fix incorrect indentation of pointers following a dot operator or pointer.</li>
+        <li>Fix attaching "else if" statements to a single line block.</li>
+        <li>Fix header recognition problem when header is proceeded by a tab instead of a space.</li>
+        <li>Fix line break when colon is followed by a comment.</li>
+        <li>Fix ASBeautifier not identifying a template definition.</li>
+        <li>Change indents around the end of line to two indents.</li>
+        <li>Change header includes to fix header dependencies for Linux GCC 4.3.</li>
+        <li>Add output line number for debugging.</li>
+        <li>Add filename to trace output.</li>
+        <li>Add trace for arrays.</li>
+        <li>Add trace for bracketType.</li>
+        <li>Fix no-indent comment in a #else preprocessor directive.</li>
+        <li>Fix block comment continuation line indent when block comments do not start the line.</li>
+        <li>Adjust position of block comments (/*) when padding is added or deleted.</li>
+        <li>Fix incorrect formatting if "return" is included in a function name.</li>
+        <li>Fix incorrect padding if template depth is greater that one and pad=oper is used.</li>
+        <li>Fix incorrect bracket type identification when bracket is followed by a comment.</li>
+        <li>Fix incorrect bracket type identification when a "const" method is declared.</li>
+        <li>Fix incorrect bracket type identification when pre-definition header is inside a paren.</li>
+        <li>Fix deleting a space when attaching a bracket with line comments.</li>
+        <li>Fix indentation when the conditional "?" operator is used in a single line statement.</li>
+        <li>Fix indentation when single line "if" statement is used.</li>
+        <li>Add pointers, multiply operators, and selected variables to do not unpad in paren unpad procedure.</li>
+        <li>Return exit code 0 for --version and --help.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.20.2&nbsp; (February 2007)</h3>
+
+    <ul>
+        <li>Fix problems with the new stream I/O procedure added in release 1.20.1:
+            <ul>
+                <li>Fix adding an extra blank line at end of document.</li>
+                <li>Fix line ending on last line when cin and cout option is used.</li>
+            </ul>
+        </li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.20.1&nbsp; (January 2007)</h3>
+
+    <ul>
+        <li>The following changes were made to improve processing for Mac OS X platforms:
+            <ul>
+                <li>Remove Makefile linker option -s and add a separate "strip" command.</li>
+                <li>Open console input and output streams as binary to allow Linux line ends on a Windows platform.</li>
+                <li>Change stream I/O procedure to allow for Mac OS 9 line endings.</li>
+                <li>Change output stream end of line from endl so output stream is not flushed with each write.</li>
+                <li>Change information messages from cerr to cout.</li>
+                <li>Removed messages when I/O is to cin and cout to accommodate TextWrangler.</li>
+            </ul>
+        </li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.20&nbsp; (January 2007)</h3>
+
+    <ul>
+        <li>Call importOptions() from function AStyleMain() to allow slop in options parameters.</li>
+        <li>New makefiles for GCC and Intel with new compile options.</li>
+        <li>New project file for Visual C with new compile options.</li>
+        <li>Change comments to reflect the GNU Lesser General Public License.</li>
+        <li>Indent message maps for MFC and event tables for wxWidgets.</li>
+        <li>Fix incorrect formatting for an empty comment.</li>
+        <li>Fix "Unknown option" in default options file when last line does not contain CR or LF.</li>
+        <li>Patch from Dieter Bayer to fix case indent when a scope resolution operator is used.</li>
+        <li>Change long option --brackets=break-closing-headers to --brackets=break-closing.</li>
+        <li>Add short option -y for --brackets=break-closing.</li>
+        <li>Add short option -e for --break-elseifs.</li>
+        <li>Add short option -w for --indent-preprocessor.</li>
+        <li>Add short option -f for --break-blocks.</li>
+        <li>Add short option -F for --break-blocks=all.</li>
+        <li>Remove the backup file after formatting when --suffix=none.</li>
+        <li>Show total time at end of job.</li>
+        <li>Improved error handling for invalid options with ASTYLE_LIB.</li>
+        <li>Add function AStyleGetVersion() to ASTYLE_LIB option.</li>
+        <li>Change preprocessor macro from ASTYLE_GUI to ASTYLE_LIB.</li>
+        <li>Add astyle namespace to ASEnhancer.</li>
+        <li>Add #include &lt;ctype.h&gt; for Red Hat distribution of GCC 3.2 (prior to Jan 2004).</li>
+        <li>Remove commented-out code.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.19&nbsp; (July 2006)</h3>
+
+    <ul>
+        <li>Add unpad=paren option.</li>
+        <li>Always pad paren headers (e.g. 'if', 'for', 'while').</li>
+        <li>Fix problem of pad=oper working different if pad=paren is declared.</li>
+        <li>Add additional tests to distinguish the multiplication operator from pointers.</li>
+        <li>Fix padding parens before a member access pointer (-&gt;).</li>
+        <li>If space padding has changed, move end-of-line comments to the original column, if possible.</li>
+        <li>Move potential calculation decision to outside of operator padding function.</li>
+        <li>Fix duplication of last line of source if a final endline is not present.</li>
+        <li>Fix class initializer not indented on last line if bracket is attached.</li>
+        <li>Fix identification of templates contained in parens.</li>
+        <li>Fix one line block occurring before end of class.</li>
+        <li>Fix line added after one line block with bracketFormatMode = NONE_MODE.</li>
+        <li>Add needed variables to ASBeautifier copy constructor.</li>
+        <li>Trim end of line for multi-line comments.</li>
+        <li>Add a breakLine before paren checks (needed for unpad=paren option).</li>
+        <li>Add trace file to ASFormatter.</li>
+        <li>Move formatting message from end to beginning of formatting.</li>
+        <li>Move the building of vectors to ASResource. Vectors for classes ASBeautifier and ASFormatter should now have the
+            same values.</li>
+        <li>Move debugging variable inLineNumber from ASFormatter to ASBeautifier.</li>
+        <li>Bypass char processing for UTF8 characters in ASBeautifier.</li>
+        <li>Move switchVariables struct from ASEnhancer to the header file.</li>
+        <li>Remove preprocessorHeader vector (not used).</li>
+        <li>Remove variable isInConst (not used).</li>
+        <li>Remove commented-out code.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.18&nbsp; (June 2006)</h3>
+
+    <ul>
+        <li>The following changes were made for the option pad=oper:
+            <ul>
+                <li>Does <strong>not</strong> remove extra spaces from formatted expressions.</li>
+                <li>Does <strong>not</strong> pad opening parens on the outside.</li>
+                <li>Does <strong>not</strong> remove leading spaces from multi-line comments.</li>
+                <li>Does <strong>not</strong> pad negative numbers.</li>
+                <li>Does <strong>not</strong> add a space to the end of preprocessor directives.</li>
+                <li>Will <strong>not</strong> pad operators inside block parens [].</li>
+            </ul>
+        </li>
+        <li>The following changes were made for the option pad=paren:
+            <ul>
+                <li>Formats correctly <strong>with</strong> or <strong>without</strong> pad=oper.</li>
+                <li>Does <strong>not</strong> add a space for each additional run if pad=oper is not used.</li>
+                <li>Outside of opening paren is padded correctly.</li>
+                <li>Inside of closing paren is padded correctly.</li>
+                <li>Does <strong>not</strong> pad block parens [].</li>
+                <li>Added short option P, previously used for pad=all.</li>
+            </ul>
+        </li>
+        <li>Added new options pad=paren-out (d) and pad=paren-in (D).</li>
+        <li>Removed option pad=all.</li>
+        <li>Add short option V for convert-tabs.</li>
+        <li>Added bounds checking to options containing parameters.</li>
+        <li>Display a message when a default options file is used.</li>
+        <li>Replaced IS_PARAM_OPTION(S) macros with overloaded isParamOption. Fixed compare problem with short param options.</li>
+        <li>Fix EOF problem with default options file.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.17&nbsp; (May 2006)</h3>
+
+    <ul>
+        <li>The following changes were made for processing bracketFormatMode = NONE_MODE:
+            <ul>
+                <li>Removed the function isFormattingEnabled() and always performed the formatting.</li>
+                <li>Removed the formatting bypass for NONE_MODE.</li>
+                <li>Fix brackets always being broken in the 2 cases where NONE_MODE formatting was done.</li>
+                <li>Added new functions to support the processing of NONE_MODE brackets.</li>
+                <li>Made other minor changes necessary for correct NONE_MODE processing.</li>
+            </ul>
+        </li>
+        <li>Changed indent cases option to indent the entire case block.</li>
+        <li>Changed to output Windows or Linux line endings.</li>
+        <li>Added ASEnhancer module for case statement indenting.</li>
+        <li>Corrected errors in identifying options indent=tab=, and force-indent=tab=. </li>
+        <li>Corrected errors in identifying options min-conditional-indent=, and max-instatement-indent=.</li>
+        <li>Improved error and information messages.</li>
+        <li>Added capability to compile as a console program, shared library, or static library.</li>
+        <li>Fixed problem with semicolons and parens being put on a line by themselves.</li>
+        <li>Fixed spaces being added before a line comment.</li>
+        <li>Fixed blank line added after some preprocessor statements.</li>
+        <li>Fixed preprocessor statements not being trimmed.</li>
+        <li>Do not indent line comments that begin in column 1 or 2.</li>
+        <li>Fixed indentation problem with ending }; of class statements.</li>
+        <li>Changed nextLine() function to eliminate char buffer limits.</li>
+        <li>Moved Windows default options file to %USERPROFILE%.</li>
+        <li>Removed NEW operators to prevent memory leaks.</li>
+        <li>Fixed space before the semicolon in return ; statement.</li>
+        <li>Fixed extra space that was sometimes added when pad operators was used.</li>
+        <li>Removed string parameter from IS_PARAM_OPTION.</li>
+        <li>Added forward declaration of parseOption() to eliminate compile error.</li>
+        <li>Added input line number counter for debugging.</li>
+        <li>Add statements to check for markers if break-blocks or break-blocks=all is used.</li>
+        <li>Remove warnings for signed/unsigned mismatch.</li>
+        <li>Removed COMPARE macro and used string compare.</li>
+        <li>Removed compiler_defines.h.</li>
+        <li>Removed USES_NAMESPACE declaration.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.16</h3>
+
+    <blockquote>
+        There was no release 1.16.
+    </blockquote>
+
+    <h3>
+        Artistic Style 1.15.3 (7 March 2002)</h3>
+
+    <ul>
+        <li>Bug fix in handling of brackets after line-comments.</li>
+        <li>Bug fix: C# add/remove event property headers now properly formatted.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.15.2 (2 March 2002)</h3>
+
+    <ul>
+        <li>Bug fixes in exception handling phrases, e.g. multiple catches and try..finally.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.15.1 (2 March 2002)</h3>
+
+    <ul>
+        <li>Bug fix: C# properties are now formatted properly.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.15.0 (2 March 2002)</h3>
+
+    <ul>
+        <li>Added support for C#.</li>
+        <li>Artistic Style is now licensed only under the GNU Public License (GPL).</li>
+        <li>Compilation under G++ 3.0 now works properly.</li>
+        <li>Bug fix: Opening brackets that appear at the beginning of a line immediately after an empty line comment are now
+            handled properly, and not appended as part of the line comment.</li>
+        <li>Bug fix: Brackets inside comments are now not mis-indented within the comment.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.14.1 (2 June 2001)</h3>
+
+    <ul>
+        <li>Bug fix: : '&lt;' and '&gt;' symbols within template declarations (e.g. 'foo&lt;bar*, xoo&gt;') are now left unpadded
+            in the padding modes.</li>
+        <li>Bug fix: Fixed false recognizing of headers within larger words (e.g. 'catch' in 'gcatch').</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.14.0 (1 June 2001)</h3>
+
+    <ul>
+        <li>Bug fix: Fixed indentation of statements within preprocessor '#if...' statements.</li>
+        <li>Bug fix: Templates are now not broken from their bodies.</li>
+        <li>Bug fix: '&lt;' and '&gt;' symbols within template definitions (e.g. 'template&lt;class T&gt;') are now left unpadded
+            in the padding modes.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.8 (13 April 2001)</h3>
+
+    <ul>
+        <li>Bug fix: Fixed indentation of multiple nested non-block brackets, such as in multi bracketed static array declarations.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.7 (6 April 2001)</h3>
+
+    <ul>
+        <li>New option:'--force-indent=tab=#' (or 'T#') instructs astyle to indent using tabs in all the pre-statement white
+            space, including areas astyle's '--indent=tab' prefers to indent using spaces, such as white space in multi-line
+            statements.</li>
+        <li>Bug fix: Fixed unwanted empty line insertions between empty blocks (e.g. '{}') and closing brackets that come
+            immediately after them.</li>
+        <li>Bug fix: Fixed unwanted empty line insertions immediately after colons (e.g. 'default:', 'label:', ...)</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.6 (24 January 2001)</h3>
+
+    <ul>
+        <li>Bug fix: Preprocessor lines now remain unpadded in padding modes.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.5 (24 January 2001)</h3>
+
+    <ul>
+        <li>Bug fix: Fixed the insertion of phantom empty lines immediately after {} blocks.</li>
+        <li>Bug fix: Bare open brackets ('{') with no preceding headers are now broken appropriately from their preceding
+            code lines in the 'attach' and 'linux' bracketmodes.</li>
+        <li>Bug fix: Fixed operator recognition for long operators such as '&gt;&gt;=', '&lt;&lt;= '.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.4 (24 January 2001)</h3>
+
+    <ul>
+        <li>Bug fix: L" unicode strings are now handled properly in padding modes.</li>
+        <li>Bug fix: Fixed the padding around '-' operators (which went sour somewhere in the past).</li>
+        <li>Bug fix: Fixed the handling of exponent numbers (e.g. 12.2e+2) in padding modes. The fix enables 'e+' to be regarded
+            as part of the exponent.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.3 (23 January 2001)</h3>
+
+    <ul>
+        <li>Line that contain both headers and their following non-header code (e.g. 'if (isFoo) doBar();') are now broken
+            by default into multiple lines. To keep these lines as single lines, use '--one-line= keep-statements'.</li>
+        <li>Added the new option '--break-elseifs' which breaks 'else if()' statements into multiple lines.</li>
+        <li>The option block breaking options now works properly with the padding options.</li>
+        <li>Various minor bug fixes.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.2 (21 January 2001)</h3>
+
+    <ul>
+        <li>Added the new option '--brackets=break-closing-headers'. When this option is added to either '--brackets=attach'
+            or '--brackets= linux', astyle breaks closing headers (e.g. 'else', 'catch') from their preceding closing brackets.</li>
+        <li>'--break-blocks' and '--break-blocks= all' now correctly handle blocks that appear immediately before closing
+            brackets, and do not append empty lines between them and the closing brackets.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.13.0 (27 September 1999)</h3>
+
+    <ul>
+        <li>Moved back to odd-minor-numbered development versions, and even-minor-numbered stable versions.</li>
+        <li>Added the new option '--break-blocks' which breaks apart unrelated blocks, labels, classes, etc.</li>
+        <li>Added the new option '--break-blocks=all' which also breaks apart blocks of closing headers, such as 'else', 'catch',
+            etc.</li>
+        <li>Fixed indentation handling of labels and class-definition identifiers such as 'public:', 'protected:', ... (thanks
+            to Daryn Adler for his patch)</li>
+        <li>Fixed indentation of nested class definitions. (thanks to Daryn Adler for his patch)</li>
+        <li>Added the new option '--indent-preprocessor' which (surprisingly) tries to reindent C/C++ preprocessor macro lines.
+            Astyle should do an pretty nice indentation job if the macro code is sane, but don't expect miracles for horrid
+            macro definitions...</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.6 (27 September 1999)</h3>
+
+    <ul>
+        <li>Improved indentation of lines containing single-line blocks.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.5 (25 September 1999)</h3>
+
+    <ul>
+        <li>Improved the bug fix for a 'const' keyword bug which resulted in wrong indentation of methods that are declared
+            const.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.4 (18 September 1999)</h3>
+
+    <ul>
+        <li>Improved handling of single colons (':') in class headers, e.g. class Foo : public Bar { ... }</li>
+        <li>Improved handling of single colons (':') in method (constructor) headers, e.g. Foo::Foo(int a) : Bar(a)</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.3 (16 September 1999)</h3>
+
+    <ul>
+        <li>Fixed a serious bug in the formatting of brackets, introduced in 1.11.2.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.2 (10 September 1999)</h3>
+
+    <ul>
+        <li>Fixed an indentation bug in statements that contain the 'const', that resulted in wrong indentation of array blocks
+            that where declared const. (Thanks Daniel!)</li>
+        <li>Fixed an indentation bug that could arise in lines that appear immediately after several preprocessor commands.
+            (Thanks Daniel!).</li>
+        <li>Fixed a bug that inserted an empty line after closing brackets if a comment appeared immediately prior to the
+            closing bracket. (Thanks Ed!)</li>
+        <li>Fixed a bug that eliminated empty lines between closing brackets and immediately following opening brackets. (Thanks
+            Ed!)</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.1 (3 September 1999)</h3>
+
+    <ul>
+        <li>Fixed a bug that inserted an empty line at the begining of source files.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.11.0 (3 September 1999)</h3>
+
+    <ul>
+        <li>Astyle now filters out line-feeds ('\r') before begining to parse lines. This should take care of bizarre formatting
+            that existed when moving source files from Windows (which breaks lines with a linefeed AND newline ("\r\n") to
+            unix (which breaks lines only with newlines).</li>
+        <li>The "struct", "static" and "synchronized" keywords are now finally handled correctly in both the contexts of block
+            headers AND simple keywords.</li>
+        <li>Better treatment of precompiler lines that end with backslashes, and the lines that immediately follow them.</li>
+        <li>The '--indent-classes' (or '-C') option now works correctly (again...).</li>
+        <li>Series of short command-line options (e.g. "-b -s4 -C") are now parsed correctly.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.4&nbsp; (27 July 1999)</h3>
+
+    <ul>
+        <li>Fixed a MAJOR bug (inserted in 1.10.3) that resulted wrong handling of double-colons ('::') in C++.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.3 (24 July 1999)</h3>
+
+    <ul>
+        <li>Fixed a bug (inserted yesterday) that resulted in unwanted line breaks before closing-brackets.</li>
+        <li>Fixed a bug in the handling of 'static' blocks in java.</li>
+        <li>Added the new option '--indent-cases' (or '-K') for indenting 'case XXX:' lines so they are flush with their following
+            code lines.</li>
+        <li>Added the new option '--fill-empty-lines' (or '-E') which fills empty lines with the white-space of their previous
+            line.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.2 (23 July 1999)</h3>
+
+    <ul>
+        <li>Fixed a series of related bugs that resulted in certain cases of lacking line breaks after close-brackets, and
+            colons. Thanks Jeroen!</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.1 (18 July 1999)</h3>
+
+    <ul>
+        <li>Fixed a bug (introduced in astyle 1.10.0) that can result in missing line breaks before closing brackets if they
+            appear immediately after comments. Thanks Larry!</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.0 Release (14 July 1999)</h3>
+
+    <ul>
+        <li>Improved handling of empty bracket blocks ( e.g.{ } ). Thanks Michael!</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.10.0 Prerelease (4 July 1999)</h3>
+
+    <ul>
+        <li>Fixed a bug in the in-statement indentation algorithm which resulted in sub-optimal indentation of multiple-line
+            conditional statements that immediately follow headers such as 'if', 'else if', 'while', etc... As a result, the
+            current in-statement indentation is finally what it should have been long ago - MUCH better then in the last stable
+            versions.</li>
+        <li>The "linux" bracket style (in which definition brackets are broken while code brackets are attached) has been
+            fixed, and should finally work correctly.</li>
+        <li>Artistic Style can now parse both C/C++ and Java files in the same command. Unless a specific language mode is
+            specified (e.g. --style=java or --style=c), astyle will now automatically set the language mode according to each
+            file's suffix (java mode for the '.java' suffix , c mode otherwise).</li>
+        <li>Multiple statements in a single line (e.g. aaa; bbb; fff;) are now broken up by default.</li>
+        <li>Added the option '<strong>--one-line=keep-statement</strong>s' (or '<strong>-o</strong>') that keeps multiple
+            statements in a single line attached, thus countering the default break detailed above.</li>
+        <li>Changed the option previously called '<strong>--keep-one-line-blocks</strong>' to '<strong>--one-line=keep-blocks</strong>',
+            for similarity with the new option above.</li>
+        <li>Changed the short option name of the option '-<strong>-errors-to-standard-output</strong>' from '<strong>-o</strong>'
+            to '<strong>-X</strong>'.</li>
+        <li>Up to now, Artistic Style always inserted a minimal indent of <strong>t</strong>wice the current selected indent
+            size inside multi-line conditional headers ('if', 'while' ...), so that it would be clear where the headers end
+            and the code after them begins. The current version adds the option '<strong>--min-conditional-indent=#</strong>'
+            (or '<strong>-m#</strong>') that sets the absolute minimal indent between conditional headers and their multiple-line
+            conditional statements. If this option is not specified, the default indent remains <strong>twice the current selected
+                indent size</strong>.<br />
+            For example, This option should come very handy in code that already has brackets after EVERY conditional statement
+            (even if just one line is in that bracket...) - in such a case, it would be wise to set <strong>--min-conditional-indent=0</strong>
+            since the brackets already make it clear where the header ends and the code begins...</li>
+        <li>Added the ability to set the assumed tab size when in '<strong>--indent-tab</strong>' mode by using '<strong>--indent-tab=#</strong>'
+            or '<strong>-t#</strong>' and replacing the <strong>#</strong> with the wanted size. If the size is not specified,
+            the size of each tab is assumed to be 4 spaces long.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.8.2 (18 March 1999)</h3>
+
+    <ul>
+        <li>Fixed pointer handling problems in ASBeautifier that led to crashes when parsing preprocessor commands.</li>
+        <li>Fixed the problem in locating the default options file in the directory pointed to by $HOME or %HOMEPATH% when
+            these system variables do not contain an '/' (or '\' ...) at their end.</li>
+        <li>Fixed inverse insertion of spaces vs. tabs when in -t mode. (Thanks Brian!)</li>
+        <li>Got rid of those pesky C4786 warnings when compiling under Visual C++ (Thanks John!)</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.8.1 (9 March 1999)</h3>
+
+    <ul>
+        <li>Changed the '--style=k&amp;r' option to '--style= kr' , so that linux/unix machines don't misinterpret the '&amp;'
+            as a background processing command.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.8.0 (3 March 1999)</h3>
+
+    <ul>
+        <li>Added support for predefined styles. Current supported styles are: <strong>ansi, k&amp;r, linux, gnu, java</strong>.
+            these can be set by using '--style=THESTYLE' (e.g. '--style=linux').</li>
+        <li>Added '--indent-blocks' (or -G) option, which <strong>adds indentation to entire blocks</strong>, including their
+            brackets, in similar fashion to the standard gnu style.</li>
+        <li>Added option '--brackets=linux' (or '-l') which <strong>breaks definition-block brackets, but attaches command-block
+            brackets</strong>.</li>
+        <li>Padding can now be set separately for operators alone('-p' or '--pad=oper'), parentheses alone ('--pad=paren)
+            or both ('-P' or '--pad=all').</li>
+        <li>Artistic Style looks for a default options file in the following order:<br />
+            1. The contents of the <strong>ARTISTIC_STYLE_OPTIONS</strong> environment variable if it exists.<br />
+            2. The file called .astylerc in the directory pointed to by the <strong>HOME</strong> environment variable ( i.e.
+            <strong>$HOME/.astylerc</strong> ).<br />
+            3. The file called .astylerc in the directory pointed to by the <strong>HOMEPATH</strong> environment variable
+            ( i.e. <strong>%HOMEPATH%\.astylerc</strong> ).<br />
+            If a default options file is found, the options in this file will be parsed BEFORE the command-line options. Options
+            within the default option file may be written without the preliminary '-' or '--'. Indentation within #if , #else
+            and #endif precompiler commands now works correctly even if the program lines between these precompiler commands
+            contain non-pared brackets.</li>
+        <li>Improved handling of labels (e.g. 'exit:'). By default, labels are now flushed completely to the left. Labels
+            can also be indented to one indent LESS than current standard indentation by using the new option '--indent-labels'
+            (or '-L') .</li>
+        <li>Fixed handling of the 'operator' keyword when it is preceded by a non space character (such as '&amp;' or '*').</li>
+        <li>Fixed wrong bracket handling after 'throws' statements.</li>
+        <li>Fixed wrong indentation of single-line blocks. These where indented 1 indent to much.</li>
+        <li>Fixed wrong indentation of headers in internal classes (java mode). These where indented 1 indent to little.</li>
+        <li>The option ' --errors-to-standard-output' now has the one-letter option '-o'.</li>
+        <li>Fixed bug which resulted in an unneeded indent in function-declarations in which function-variables are declared
+            before the function declaration and are preceded by the 'static' keyword. Thanks Scott.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.6.0 (5 January 1999)</h3>
+
+    <ul>
+        <li>Fixed zero indentation that resulted when a '-suffix' option was set after a '--indent=spaces' (or '-s') option.</li>
+        <li>Wrong options are now announced.</li>
+        <li>Changed default indentation to NOT automatically indent class blocks and switch blocks. Instead, the new options
+            '--indent-classes' (or '-C') and '--indent-switches' (or '-S') should be used. The option '--indent-switches'
+            replaces the old option '--flush-switches'.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.4.1 (4 January 1999)</h3>
+
+    <ul>
+        <li>Fixed ability to write options without the preceding '--' in the default options file.</li>
+        <li>Added one-letter options to most options that had only long-options in version 1.4.0.</li>
+        <li>Added a '-v' or '--version' option that writes the current Artistic Style version.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.4.0 (3 January 1999)</h3>
+
+    <ul>
+        <li><strong>MAJOR NEW CHANGE IN THE FORMAT OF OPTIONS:</strong><br />
+            Options are now either <strong>short one-letter options</strong> starting with '-', or <strong>long multi-letter options</strong>
+            starting with '--'. The Short one-letter options MAY BE ATTACHED TOGETHER. Thus, writing '-bps4' is the same as
+            writing '-b -p -s4'.<br />
+            Many options that have up to now had a 2 letter format now retain only their long format. I truly believe that
+            the combination of attached-one-letter options PLUS a default option's file containing long-letter-options related
+            to style will be much easier to work with than the previous setup.</li>
+        <li>Added support for <strong>a default options file</strong> (pointed to by the <strong>ARTISTIC_STYLE_OPTIONS environment
+            variable</strong>).</li>
+        <li>Changed downloading method from the server. From now, there will be specific directories containing the latest
+            stable sources, stable binaries, and development sources.</li>
+        <li>Space padding ('-p' or '--pad') now works correctly (1) around semicolons and commas, (2) between headers that
+            require parentheses after them (such as 'if', 'while'...)and those parentheses, and (3) after parentheses (unless
+            immediately followed by a ';' or ',' or '.').</li>
+        <li>From now on, namespace blocks are NOT indented by default. To indent namespace blocks use the new '--indent-namespaces'
+            option.</li>
+        <li>Added options '--errors-to-standard-output' for redirection of standard-error to standard-output from within Artistic
+            Style, and '--suffix=' for specifying a suffix other than '.orig' to append to original filenames.</li>
+        <li>Corrected indentation of 'default' in switch statements. (Up to now, this only worked correctly in java mode...).</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.2.0 (19 December 1998)</h3>
+
+    <ul>
+        <li>Artistic Style 1.2.0 is the first stable result of a new version numbering, in which development versions are
+            numbered with an odd minor number (such as 1.1.x), and stable versions are numbered with an even number (1.2.x).
+            Thus, version 1.2.0 accumulates all the additions/changes of the 1.1.x development versions of Artistic Style.</li>
+        <li>A new '-ol' formatting mode that eliminates breaking of one-line blocks.</li>
+        <li>Fixed a SERIOUS bug, which resulted in wrong formatting of brackets ('{', '}') that came IMMEDIATELY AFTER definition
+            type brackets, (e.g. brackets that come right after 'class', 'interface', 'name-space', etc ...). This bug was
+            mistakenly introduced when I set out to correctly space-pad pointer and reference signs, somewhere in version
+            0.9.x.</li>
+        <li>Fixed unwanted elimination of final empty lines.</li>
+        <li>Fixed broken indentation of virgin opening-brackets that occur immediately after a previous closing-bracket.</li>
+        <li>Fixed space-padding to not insert a space in front of ':' characters unless they are a part of a '? ... : ' statement.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.5&nbsp; (11 December 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">'extern' blocks now handled correctly.</li>
+        <li style="margin-bottom: 0cm;">Fixed handling of ^= in '-p' mode.</li>
+        <li style="margin-bottom: 0cm;">Win32 executables now contain wildcard expansion. *** Look at the README.TXT for info
+            on how to include wildcard expansion abilities when compiling Artistic Style under Win32. (Thanks for the info
+            on wildcard-expansion enabling, Nat!!!)</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.4&nbsp; (2 December 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Fixed unwanted space-padding around urinary minuses and '-' symbols within exponents
+            (e.g. 2.5E-5) when using the '-p' option.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.3&nbsp; (1 December 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Control characters now remain in the indented file.</li>
+        <li style="margin-bottom: 0cm;">Fixed a bug in which long quoted white-space sequences where mistakenly eliminated
+            in the '-p' mode.</li>
+        <li style="margin-bottom: 0cm;">Fixed unwanted line-breaks in '-ab -p' mode, that in some cases occurred between '//'
+            and the rest of a line comment.</li>
+        <li style="margin-bottom: 0cm;">Fixed handling of '&gt;&gt;=', '&lt;&lt;= ' in '-p' mode.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.2 (27 November 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Fixed a SERIOUS bug of missing needed line-breaks in lines immediately after line-comments
+            when in '-ab' mode.</li>
+        <li style="margin-bottom: 0cm;">Support for the 'finally' header.</li>
+        <li style="margin-bottom: 0cm;">lines that contain only white-space now become empty lines.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.1&nbsp; (26 November 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Fixed a SERIOUS bug, which lacked a needed line-break between closing brackets and
+            the headers that follow them (e.g. '} else') when in '-bb' mode. In fixing the bug, I used a variation on a patch
+            sent by Richard Bullington - THANKS!</li>
+        <li style="margin-bottom: 0cm;">Fixed a set of SERIOUS bugs which inserted an empty line into both the start and end
+            of the reindented file.</li>
+        <li style="margin-bottom: 0cm;">Improved documentation of formatting options in the file astyle.html .</li>
+    </ul>
+
+    <h3>
+        Artistic Style 1.0.0 (24 November 1998)</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Indented files now <b>retain the original file name</b>, while the original pre-indented
+            file is saved with a ".orig"at its end. Thus, after the call "<b>astyle -bb foo.cpp</b>", the newly indented file
+            will be called "<b>foo.cpp"</b>, while a file called "<b>foo.cpp.orig</b>" will contain the original pre-indented
+            file.</li>
+        <li style="margin-bottom: 0cm;">Artistic Style may now be used and /or modified and/or distributed under <b>EITHER</b>
+            the <b>"Artistic License"</b>, or the <b>GNU General Public License (GPL).</b></li>
+        <li style="margin-bottom: 0cm;">Methods with headers that end with 'const' are now properly indented.</li>
+        <li style="margin-bottom: 0cm;">Cleaner, more robust, and better documented source code.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 0.9.2</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Fixed a serious bug which led to a maximal supported source code line size of 128
+            characters!!!</li>
+        <li style="margin-bottom: 0cm;">Maximal supported line size is now 1024 characters.</li>
+        <li style="margin-bottom: 0cm;">Fixed a serious bug in the handling of brackets inside '#define' statements.</li>
+        <li>Fixed a serious bug in which '#include' files containing slashes (i.e. #include &lt;foo_dir/foo&gt; ) where space-padded
+            when using option '-p' on C, C++ files.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 0.9.1</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Much improved space-padding around pointers ('*') and references ('&amp;') and the
+            'operator' key-word in C and C++ source files when using the '-p' space padding option.</li>
+        <li style="margin-bottom: 0cm;">Fixed several pointer handling bugs which led to potential core dumps.</li>
+        <li>Version 0.9.1 now includes all the abilities I am planning for the final 1.0 version, and <b>should be looked
+            at as the first pre-release version of Artistic Style</b>.</li>
+    </ul>
+
+    <h3>
+        Artistic Style 0.9.0</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Added a <b>formatting layer</b> (ASFormatter.cpp) around the indentation layer (ASBeautifier.cpp).</li>
+        <li style="margin-bottom: 0cm;">As a result, the following formatting capabilities have been added:
+            <ul>
+                <li style="margin-bottom: 0cm;">Bracket ('{' and '}') placement in either ANSI C style or Java style.</li>
+                <li style="margin-bottom: 0cm;">Space padding around operators, i.e. (1+2)*3-4 becomes ( 1 + 2 ) * 3 - 4.</li>
+            </ul>
+        </li>
+        <li style="margin-bottom: 0cm;">Fixed the 'tab' elimination bug introduced in ASBeautifier 0.8.2.</li>
+        <li>Fixed a bug which under-indented class headers containing inheritance info.</li>
+    </ul>
+
+    <h3>
+        ASBeautifier 0.8.2</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">Fixed indentation problem in brackets around 'struct', and 'union' blocks.</li>
+        <li style="margin-bottom: 0cm;">Added recognition for '\' characters in the end of lines.</li>
+        <li style="margin-bottom: 0cm;">Improved indentation of post-method-declaration variable initializations.</li>
+        <li>Several minor bug fixes.</li>
+    </ul>
+
+    <h3>
+        ASBeautifier 0.8.1</h3>
+
+    <ul>
+        <li>Fixed an important bug in pointer arithmetic which resulted both in phantom indentation errors, and in core-dumps
+            when trying to indent java files.</li>
+    </ul>
+
+    <h3>
+        ASBeautifier 0.8.0</h3>
+
+    <ul>
+        <li style="margin-bottom: 0cm;">This is the first public release of ASBeautifier. It is a direct port to C++ of JSBeautifier
+            1.1.1, PLUS extensions to for C++ indentation.</li>
+        <li style="margin-bottom: 0cm;">So far, very little beta-testing has been done for the C++ extensions. This should
+            change extremely with the open-source release (this was the case with JSBeautifier...), so expect ASBeautifier
+            to become bug-free fast!!!</li>
+        <li>The C++ source code is not yet written in optimal quality. I rushed a little so that I could release this initial
+            release as soon as possible. This will soon change.</li>
+    </ul>
+    <p>
+        &nbsp;</p>
+</body>
+
+</html>
+
Index: src/plugins/astyle/astyle/ASBeautifier.cpp
===================================================================
--- src/plugins/astyle/astyle/ASBeautifier.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/ASBeautifier.cpp	(working copy)
@@ -60,7 +60,8 @@
 	setSpaceIndentation(4);
 	setMinConditionalIndentOption(MINCOND_TWO);
 	setMaxInStatementIndentLength(40);
-	classInitializerTabs = 1;
+	classInitializerIndents = 1;
+	tabLength = 0;
 	setClassIndent(false);
 	setSwitchIndent(false);
 	setCaseIndent(false);
@@ -87,7 +88,7 @@
  * ASBeautifier's copy constructor
  * must explicitly call the base class copy constructor
  */
-ASBeautifier::ASBeautifier(const ASBeautifier& other) : ASBase(other)
+ASBeautifier::ASBeautifier(const ASBeautifier &other) : ASBase(other)
 {
 	// Copy the vector objects to vectors in the new ASBeautifier
 	// object so the new object can be destroyed without deleting
@@ -168,6 +169,7 @@
 	isInAsmOneLine = other.isInAsmOneLine;
 	isInAsmBlock = other.isInAsmBlock;
 	isInComment = other.isInComment;
+	isInPreprocessorComment = other.isInPreprocessorComment;
 	isInHorstmannComment = other.isInHorstmannComment;
 	isInCase = other.isInCase;
 	isInQuestion = other.isInQuestion;
@@ -202,8 +204,8 @@
 	isInClass = other.isInClass;
 	isInSwitch = other.isInSwitch;
 	foundPreCommandHeader = other.foundPreCommandHeader;
-	tabCount = other.tabCount;
-	spaceTabCount = other.spaceTabCount;
+	indentCount = other.indentCount;
+	spaceIndentCount = other.spaceIndentCount;
 	lineOpeningBlocksNum = other.lineOpeningBlocksNum;
 	lineClosingBlocksNum = other.lineClosingBlocksNum;
 	fileType = other.fileType;
@@ -211,13 +213,15 @@
 	minConditionalIndent = other.minConditionalIndent;
 	parenDepth = other.parenDepth;
 	indentLength = other.indentLength;
+	tabLength = other.tabLength;
 	blockTabCount = other.blockTabCount;
 	maxInStatementIndent = other.maxInStatementIndent;
-	classInitializerTabs = other.classInitializerTabs;
+	classInitializerIndents = other.classInitializerIndents;
 	templateDepth = other.templateDepth;
-	prevFinalLineSpaceTabCount = other.prevFinalLineSpaceTabCount;
-	prevFinalLineTabCount = other.prevFinalLineTabCount;
-	defineTabCount = other.defineTabCount;
+	preprocessorCppExternCBracket = other.preprocessorCppExternCBracket;
+	prevFinalLineSpaceIndentCount = other.prevFinalLineSpaceIndentCount;
+	prevFinalLineIndentCount = other.prevFinalLineIndentCount;
+	defineIndentCount = other.defineIndentCount;
 	quoteChar = other.quoteChar;
 	prevNonSpaceCh = other.prevNonSpaceCh;
 	currentNonSpaceCh = other.currentNonSpaceCh;
@@ -302,6 +306,7 @@
 	isInAsmOneLine = false;
 	isInAsmBlock = false;
 	isInComment = false;
+	isInPreprocessorComment = false;
 	isInHorstmannComment = false;
 	isInStatement = false;
 	isInCase = false;
@@ -313,27 +318,28 @@
 	isInTemplate = false;
 	isInConditional = false;
 
-	tabCount = 0;
-	spaceTabCount = 0;
+	indentCount = 0;
+	spaceIndentCount = 0;
 	lineOpeningBlocksNum = 0;
 	lineClosingBlocksNum = 0;
 	templateDepth = 0;
 	parenDepth = 0;
 	blockTabCount = 0;
+	preprocessorCppExternCBracket = 0;
+	prevFinalLineSpaceIndentCount = 0;
+	prevFinalLineIndentCount = 0;
+	defineIndentCount = 0;
 	prevNonSpaceCh = '{';
 	currentNonSpaceCh = '{';
 	prevNonLegalCh = '{';
 	currentNonLegalCh = '{';
 	quoteChar = ' ';
-	prevFinalLineSpaceTabCount = 0;
-	prevFinalLineTabCount = 0;
 	probationHeader = NULL;
 	lastLineHeader = NULL;
 	backslashEndsPrevLine = false;
 	lineOpensComment = false;
 	isInDefine = false;
 	isInDefineDefinition = false;
-	defineTabCount = 0;
 	lineCommentNoBeautify = false;
 	blockCommentNoIndent = false;
 	blockCommentNoBeautify = false;
@@ -414,6 +420,30 @@
 }
 
 /**
+ * set tabLength equal to indentLength.
+ * This is done when tabLength is not explicitely set by
+ * "indent=force-tab-x"
+ *
+ */
+void ASBeautifier::setDefaultTabLength()
+{
+	tabLength = indentLength;
+}
+
+/**
+ * indent using a different tab setting for indent=force-tab
+ *
+ * @param   length     number of spaces per tab.
+ */
+void ASBeautifier::setForceTabXIndentation(int length)
+{
+	// set tabLength instead of indentLength
+	indentString = "\t";
+	tabLength = length;
+	shouldForceTabIndentation = true;
+}
+
+/**
  * indent using one tab per indentation
  */
 void ASBeautifier::setTabIndentation(int length, bool forceTabs)
@@ -577,7 +607,7 @@
 /**
  * get the file type.
  */
-int ASBeautifier::getFileType()
+int ASBeautifier::getFileType() const
 {
 	return fileType;
 }
@@ -605,7 +635,7 @@
 /**
  * get mode manually set flag
  */
-bool ASBeautifier::getModeManuallySet()
+bool ASBeautifier::getModeManuallySet() const
 {
 	return isModeManuallySet;
 }
@@ -615,7 +645,7 @@
  *
  * @return   state of force tab indentation.
  */
-bool ASBeautifier::getForceTabIndentation(void)
+bool ASBeautifier::getForceTabIndentation(void) const
 {
 	return shouldForceTabIndentation;
 }
@@ -625,7 +655,7 @@
  *
  * @return   state of blockIndent option.
  */
-bool ASBeautifier::getBlockIndent(void)
+bool ASBeautifier::getBlockIndent(void) const
 {
 	return blockIndent;
 }
@@ -635,7 +665,7 @@
  *
  * @return   state of bracketIndent option.
  */
-bool ASBeautifier::getBracketIndent(void)
+bool ASBeautifier::getBracketIndent(void) const
 {
 	return bracketIndent;
 }
@@ -646,7 +676,7 @@
  *
  * @return   state of classIndent option.
  */
-bool ASBeautifier::getClassIndent(void)
+bool ASBeautifier::getClassIndent(void) const
 {
 	return classIndent;
 }
@@ -657,7 +687,7 @@
  *
  * @return   state of switchIndent option.
  */
-bool ASBeautifier::getSwitchIndent(void)
+bool ASBeautifier::getSwitchIndent(void) const
 {
 	return switchIndent;
 }
@@ -668,7 +698,7 @@
  *
  * @return   state of caseIndent option.
  */
-bool ASBeautifier::getCaseIndent(void)
+bool ASBeautifier::getCaseIndent(void) const
 {
 	return caseIndent;
 }
@@ -681,7 +711,7 @@
  *
  * @return   state of emptyLineFill option.
  */
-bool ASBeautifier::getEmptyLineFill(void)
+bool ASBeautifier::getEmptyLineFill(void) const
 {
 	return emptyLineFill;
 }
@@ -693,12 +723,22 @@
  *
  * @return   state of preprocessorIndent option.
  */
-bool ASBeautifier::getPreprocessorIndent(void)
+bool ASBeautifier::getPreprocessorIndent(void) const
 {
 	return preprocessorIndent;
 }
 
 /**
+ * get the length of the tab indentation option.
+ *
+ * @return   length of tab indent option.
+ */
+int ASBeautifier::getTabLength(void) const
+{
+	return tabLength;
+}
+
+/**
  * beautify a line of source code.
  * every line of source code in a source code file should be sent
  * one after the other to the beautify method.
@@ -706,7 +746,7 @@
  * @return      the indented line.
  * @param originalLine       the original unindented line.
  */
-string ASBeautifier::beautify(const string& originalLine)
+string ASBeautifier::beautify(const string &originalLine)
 {
 	string line;
 	bool lineStartsInComment = false;
@@ -725,8 +765,8 @@
 	lineOpensComment = false;
 	previousLineProbationTab = false;
 	haveLineContinuationChar = false;
-	tabCount = 0;
-	spaceTabCount = 0;
+	indentCount = 0;
+	spaceIndentCount = 0;
 	lineOpeningBlocksNum = 0;
 	lineClosingBlocksNum = 0;
 
@@ -775,7 +815,7 @@
 			line = ' ';
 		else if (emptyLineFill && !isInQuoteContinuation
 		         && (!headerStack->empty() || isInEnum))
-			return preLineWS(prevFinalLineSpaceTabCount, prevFinalLineTabCount);
+			return preLineWS(prevFinalLineSpaceIndentCount, prevFinalLineIndentCount);
 		else
 			return line;
 	}
@@ -783,6 +823,7 @@
 	// handle preprocessor commands
 	// except C# region and endregion
 	if (!isInComment
+	        && !isInQuoteContinuation
 	        && line.length() > 0
 	        && ((line[0] == '#' && !isIndentedPreprocessor(line, 0))
 	            || backslashEndsPrevLine))
@@ -793,6 +834,9 @@
 		// check if the last char is a backslash
 		if (line.length() > 0)
 			backslashEndsPrevLine = (line[line.length() - 1] == '\\');
+		// comments within the definition line can be continued without the backslash
+		if (isInPreprocessorUnterminatedComment(line))
+			backslashEndsPrevLine = true;
 
 		// check if this line ends a multi-line #define
 		// if so, use the #define's cloned beautifier for the line's indentation
@@ -838,7 +882,7 @@
 	// calculate preliminary indentation based on data from past lines
 
 	if (!inStatementIndentStack->empty())
-		spaceTabCount = inStatementIndentStack->back();
+		spaceIndentCount = inStatementIndentStack->back();
 
 	computePreliminaryIndentation();
 
@@ -854,7 +898,7 @@
 	        && line.length() > 0
 	        && line[0] == '}'
 	        && bracketBlockStateStack->back() == true)
-		--tabCount;
+		--indentCount;
 
 	else if (!lineStartsInComment
 	         && isInSwitch
@@ -864,29 +908,26 @@
 	         && (*headerStack)[headerStack->size()-1] == &AS_OPEN_BRACKET
 	         && line.length() > 0
 	         && line[0] == '}')
-		--tabCount;
+		--indentCount;
 
 	if (isInClassInitializer)
 	{
 		if (lineStartsInComment || lineOpensComment)
 		{
 			if (!lineBeginsWithBracket)
-				tabCount--;
+				indentCount--;
 		}
 		else if (isCStyle() && !isClassAccessModifier(line))
 		{
 			isInClassHeaderTab = true;
-			tabCount += classInitializerTabs;
+			indentCount += classInitializerIndents;
 		}
 		else if (blockIndent)
 		{
 			if (!lineBeginsWithBracket)
-				tabCount++;
+				indentCount++;
 		}
 	}
-	// handle special case of indented horstmann brackets
-	else if (lineStartsInComment && isInHorstmannComment && bracketIndent)
-		tabCount++;
 
 	// handle special case of horstmann comment in an indented class statement
 	if (isInClass
@@ -895,7 +936,7 @@
 	        && !lineOpensComment
 	        && headerStack->size() > 1
 	        && (*headerStack)[headerStack->size()-2] == &AS_CLASS)
-		--tabCount;
+		--indentCount;
 
 	// Flag an indented header in case this line is a one-line block.
 	// The header in the header stack will be deleted by a one-line block.
@@ -908,12 +949,12 @@
 		isInExtraHeaderIndent = true;
 
 	if (isInConditional)
-	{
-		--tabCount;
-	}
+		--indentCount;
+	if (preprocessorCppExternCBracket >= 3)
+		--indentCount;
 
 	// parse characters in the current line.
-	// increment tabCount and spaceTabCount for the current line
+	// increment indentCount and spaceIndentCount for the current line
 	parseCurrentLine(line);
 
 	// handle special cases of unindentation:
@@ -927,7 +968,7 @@
 	        && isInExtraHeaderIndent
 	        && (lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)
 	        && shouldIndentBrackettedLine)
-		--tabCount;
+		--indentCount;
 
 	/*
 	 * if '{' doesn't follow an immediately previous '{' in the headerStack
@@ -941,7 +982,7 @@
 	         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)
 	         && (headerStack->size() > 1 && (*headerStack)[headerStack->size()-2] != &AS_OPEN_BRACKET)
 	         && shouldIndentBrackettedLine)
-		--tabCount;
+		--indentCount;
 
 	// must check one less in headerStack if more than one header on a line (allow-addins)...
 	else if (!lineStartsInComment
@@ -952,14 +993,14 @@
 	         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)
 	         && (headerStack->size() > 2 && (*headerStack)[headerStack->size()-3] != &AS_OPEN_BRACKET)
 	         && shouldIndentBrackettedLine)
-		--tabCount;
+		--indentCount;
 
 	// unindent a closing bracket...
 	else if (!lineStartsInComment
 	         && line.length() > 0
 	         && line[0] == '}'
 	         && shouldIndentBrackettedLine)
-		--tabCount;
+		--indentCount;
 
 	// correctly indent one-line-blocks...
 	else if (!lineStartsInComment
@@ -967,7 +1008,7 @@
 	         && lineOpeningBlocksNum > 0
 	         && lineOpeningBlocksNum == lineClosingBlocksNum
 	         && previousLineProbationTab)
-		--tabCount;
+		--indentCount;
 
 	// correctly indent class continuation lines...
 	else if (!lineStartsInComment
@@ -978,10 +1019,10 @@
 	         && lineOpeningBlocksNum == 0
 	         && lineOpeningBlocksNum == lineClosingBlocksNum
 	         && (!headerStack->empty() && headerStack->back() == &AS_CLASS))
-		--tabCount;
+		--indentCount;
 
-	if (tabCount < 0)
-		tabCount = 0;
+	if (indentCount < 0)
+		indentCount = 0;
 
 	// take care of extra bracket indentatation option...
 	if (!lineStartsInComment
@@ -989,7 +1030,7 @@
 	        && shouldIndentBrackettedLine
 	        && line.length() > 0
 	        && (line[0] == '{' || line[0] == '}'))
-		tabCount++;
+		indentCount++;
 
 	if (isInDefine)
 	{
@@ -1002,36 +1043,47 @@
 				if (!inStatementIndentStack->empty()
 				        && inStatementIndentStack->back() > 0)
 				{
-					defineTabCount = tabCount;
+					defineIndentCount = indentCount;
 				}
 				else
 				{
-					defineTabCount = tabCount - 1;
-					tabCount--;
+					defineIndentCount = indentCount - 1;
+					indentCount--;
 				}
 			}
 		}
 
-		tabCount -= defineTabCount;
+		indentCount -= defineIndentCount;
 	}
 
-	if (tabCount < 0)
-		tabCount = 0;
+	if (indentCount < 0)
+		indentCount = 0;
 	if (lineCommentNoBeautify || blockCommentNoBeautify || isInQuoteContinuation)
-		tabCount = spaceTabCount = 0;
+		indentCount = spaceIndentCount = 0;
 
 	// finally, insert indentations into begining of line
 
 	if (shouldForceTabIndentation)
 	{
-		tabCount += spaceTabCount / indentLength;
-		spaceTabCount = spaceTabCount % indentLength;
+		if (tabLength != indentLength)
+		{
+			// adjust for different tab length
+			int indentCountOrig = indentCount;
+			int spaceIndentCountOrig = spaceIndentCount;
+			indentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) / tabLength;
+			spaceIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) % tabLength;
+		}
+		else
+		{
+			indentCount += spaceIndentCount / indentLength;
+			spaceIndentCount = spaceIndentCount % indentLength;
+		}
 	}
 
-	string outBuffer = preLineWS(spaceTabCount, tabCount) + line;
+	string outBuffer = preLineWS(spaceIndentCount, indentCount) + line;
 
-	prevFinalLineSpaceTabCount = spaceTabCount;
-	prevFinalLineTabCount = tabCount;
+	prevFinalLineSpaceIndentCount = spaceIndentCount;
+	prevFinalLineIndentCount = indentCount;
 
 	if (lastLineHeader != NULL)
 		previousLastLineHeader = lastLineHeader;
@@ -1054,7 +1106,7 @@
 
 }
 
-bool ASBeautifier::isClassAccessModifier(const string& line) const
+bool ASBeautifier::isClassAccessModifier(const string &line) const
 {
 	size_t firstChar = line.find_first_not_of(" \t");
 	if (firstChar == string::npos)
@@ -1076,8 +1128,8 @@
 /**
  * register an in-statement indent.
  */
-void ASBeautifier::registerInStatementIndent(const string& line, int i, int spaceTabCount_,
-        int tabIncrementIn, int minIndent, bool updateParenStack)
+void ASBeautifier::registerInStatementIndent(const string &line, int i, int spaceTabCount_,
+                                             int tabIncrementIn, int minIndent, bool updateParenStack)
 {
 	int inStatementIndent;
 	int remainingCharNum = line.length() - i;
@@ -1144,7 +1196,7 @@
  * get distance to the next non-white space, non-comment character in the line.
  * if no such character exists, return the length remaining to the end of the line.
  */
-int ASBeautifier::getNextProgramCharDistance(const string& line, int i) const
+int ASBeautifier::getNextProgramCharDistance(const string &line, int i) const
 {
 	bool inComment = false;
 	int  remainingCharNum = line.length() - i;
@@ -1183,7 +1235,7 @@
 }
 
 // check if a specific line position contains a header.
-const string* ASBeautifier::findHeader(const string& line, int i,
+const string* ASBeautifier::findHeader(const string &line, int i,
                                        const vector<const string*>* possibleHeaders) const
 {
 	assert(isCharPotentialHeader(line, i));
@@ -1221,8 +1273,8 @@
 }
 
 // check if a specific line position contains an operator.
-const string* ASBeautifier::findOperator(const string& line, int i,
-        const vector<const string*>* possibleOperators) const
+const string* ASBeautifier::findOperator(const string &line, int i,
+                                         const vector<const string*>* possibleOperators) const
 {
 	assert(isCharPotentialOperator(line[i]));
 	// find the operator in the vector
@@ -1276,7 +1328,7 @@
  * @return          the trimmed line.
  * @param str       the line to trim.
  */
-string ASBeautifier::trim(const string& str)
+string ASBeautifier::trim(const string &str)
 {
 
 	int start = 0;
@@ -1288,6 +1340,10 @@
 	while (start <= end && isWhiteSpace(str[end]))
 		end--;
 
+	// don't trim if it ends in a continuation
+	if (end > -1 && str[end] == '\\')
+		end = str.length() - 1;
+
 	string returnStr(str, start, end + 1 - start);
 	return returnStr;
 }
@@ -1296,7 +1352,7 @@
  * Copy tempStacks for the copy constructor.
  * The value of the vectors must also be copied.
  */
-vector<vector<const string*>*>* ASBeautifier::copyTempStacks(const ASBeautifier& other) const
+vector<vector<const string*>*>* ASBeautifier::copyTempStacks(const ASBeautifier &other) const
 {
 	vector<vector<const string*>*> *tempStacksNew = new vector<vector<const string*>*>;
 	vector<vector<const string*>*>::iterator iter;
@@ -1332,7 +1388,7 @@
  * used for all vectors except tempStacks
  */
 template<typename T>
-void ASBeautifier::deleteContainer(T& container)
+void ASBeautifier::deleteContainer(T &container)
 {
 	if (container != NULL)
 	{
@@ -1371,7 +1427,7 @@
  * used for all vectors
  */
 template<typename T>
-void ASBeautifier::initContainer(T& container, T value)
+void ASBeautifier::initContainer(T &container, T value)
 {
 	// since the ASFormatter object is never deleted,
 	// the existing vectors must be deleted before creating new ones
@@ -1387,7 +1443,7 @@
  *
  * @return  true if line ends with a comma, otherwise false.
  */
-bool ASBeautifier::statementEndsWithComma(const string& line, int index) const
+bool ASBeautifier::statementEndsWithComma(const string &line, int index) const
 {
 	assert(line[index] == '=');
 
@@ -1470,7 +1526,7 @@
  *
  * @return     is before a line-end comment.
  */
-bool ASBeautifier::isLineEndComment(const string& line, int startPos) const
+bool ASBeautifier::isLineEndComment(const string &line, int startPos) const
 {
 	assert(line.compare(startPos, 2, "/*") == 0);
 
@@ -1490,7 +1546,7 @@
  *
  * @return is the index to the previous word (the in statement indent).
  */
-int ASBeautifier::getInStatementIndentAssign(const string& line, size_t currPos) const
+int ASBeautifier::getInStatementIndentAssign(const string &line, size_t currPos) const
 {
 	assert(line[currPos] == '=');
 
@@ -1518,7 +1574,7 @@
  *
  * @return is the indent to the second word on the line (the in statement indent).
  */
-int ASBeautifier::getInStatementIndentComma(const string& line, size_t currPos) const
+int ASBeautifier::getInStatementIndentComma(const string &line, size_t currPos) const
 {
 	assert(line[currPos] == ',');
 
@@ -1551,7 +1607,7 @@
  *
  * @return is the previous word or an empty string if none found.
  */
-string ASBeautifier::getNextWord(const string& line, size_t currPos) const
+string ASBeautifier::getNextWord(const string &line, size_t currPos) const
 {
 	size_t lineLength = line.length();
 	// get the last legal word (may be a number)
@@ -1579,7 +1635,7 @@
  *
  * @return is true or false.
  */
-bool ASBeautifier::isIndentedPreprocessor(const string& line, size_t currPos) const
+bool ASBeautifier::isIndentedPreprocessor(const string &line, size_t currPos) const
 {
 	assert(line[0] == '#');
 	string nextWord = getNextWord(line, currPos);
@@ -1620,6 +1676,60 @@
 	return false;
 }
 
+/**
+ * Check if a preprocessor directive is checking for __cplusplus defined.
+ *
+ * @return is true or false.
+ */
+bool ASBeautifier::isPreprocessorDefinedCplusplus(const string &preproc) const
+{
+	if (preproc.compare(0, 5, "ifdef") == 0 && getNextWord(preproc, 4) == "__cplusplus")
+		return true;
+	if (preproc.compare(0, 2, "if") == 0)
+	{
+		// check for " #if defined(__cplusplus)"
+		size_t charNum = 2;
+		charNum = preproc.find_first_not_of(" \t", charNum);
+		if (preproc.compare(charNum, 7, "defined") == 0)
+		{
+			charNum += 7;
+			charNum = preproc.find_first_not_of(" \t", charNum);
+			if (preproc.compare(charNum, 1, "(") == 0)
+			{
+				++charNum;
+				charNum = preproc.find_first_not_of(" \t", charNum);
+				if (preproc.compare(charNum, 11, "__cplusplus") == 0)
+					return true;
+			}
+		}
+	}
+	return false;
+}
+
+/**
+ * Check if a preprocessor definition contains an unterminated comment.
+ * Comments within a preprocessor definition can be continued without the backslash.
+ *
+ * @return is true or false.
+ */
+bool ASBeautifier::isInPreprocessorUnterminatedComment(const string &line)
+{
+	if (!isInPreprocessorComment)
+	{
+		size_t startPos = line.find("/*");
+		if (startPos == string::npos)
+			return false;
+	}
+	size_t endNum = line.find("*/");
+	if (endNum != string::npos)
+	{
+		isInPreprocessorComment = false;
+		return false;
+	}
+	isInPreprocessorComment = true;
+	return true;
+}
+
 // for unit testing
 int ASBeautifier::getBeautifierFileType() const
 { return beautifierFileType; }
@@ -1627,7 +1737,7 @@
 /**
  * Process preprocessor statements and update the beautifier stacks.
  */
-void ASBeautifier::processProcessor(string& line)
+void ASBeautifier::processProcessor(string &line)
 {
 	string preproc = trim(string(line.c_str() + 1));
 
@@ -1660,6 +1770,8 @@
 	}
 	else if (preproc.compare(0, 2, "if") == 0)
 	{
+		if (isPreprocessorDefinedCplusplus(preproc))
+			preprocessorCppExternCBracket = 1;
 		// push a new beautifier into the stack
 		waitingBeautifierStackLengthStack->push_back(waitingBeautifierStack->size());
 		activeBeautifierStackLengthStack->push_back(activeBeautifierStack->size());
@@ -1716,6 +1828,8 @@
 	}
 }
 
+// Compute the preliminary indentation based on data in the headerStack.
+// Update the class variable indentCount.
 void ASBeautifier::computePreliminaryIndentation()
 {
 	for (size_t i = 0; i < headerStack->size(); i++)
@@ -1732,23 +1846,23 @@
 			        || (*headerStack)[i] == &AS_INTERFACE
 			        || (*headerStack)[i] == &AS_THROWS
 			        || (*headerStack)[i] == &AS_STATIC))
-				++tabCount;
+				++indentCount;
 		}
 		else if (!(i > 0 && (*headerStack)[i-1] != &AS_OPEN_BRACKET
 		           && (*headerStack)[i] == &AS_OPEN_BRACKET))
-			++tabCount;
+			++indentCount;
 
 		if (!isJavaStyle() && !namespaceIndent && i >= 1
 		        && (*headerStack)[i-1] == &AS_NAMESPACE
 		        && (*headerStack)[i] == &AS_OPEN_BRACKET)
-			--tabCount;
+			--indentCount;
 
 		if (isCStyle() && i >= 1
 		        && (*headerStack)[i-1] == &AS_CLASS
 		        && (*headerStack)[i] == &AS_OPEN_BRACKET)
 		{
 			if (classIndent)
-				++tabCount;
+				++indentCount;
 			isInClass = true;
 		}
 
@@ -1757,17 +1871,17 @@
 		         && (*headerStack)[i-1] == &AS_SWITCH
 		         && (*headerStack)[i] == &AS_OPEN_BRACKET)
 		{
-			++tabCount;
+			++indentCount;
 			isInSwitch = true;
 		}
 
-	}	// end of for loop * end of for loop * end of for loop * end of for loop * end of for loop *
+	}	// end of for loop
 }
 
 /**
- * Parse the current line to update tabCount and spaceTabCount.
+ * Parse the current line to update indentCount and spaceIndentCount.
  */
-void ASBeautifier::parseCurrentLine(const string& line)
+void ASBeautifier::parseCurrentLine(const string &line)
 {
 	bool isInLineComment = false;
 	bool isInOperator = false;
@@ -1911,7 +2025,7 @@
 				        && ch == '{'
 				        && !(blockIndent && probationHeader == &AS_STATIC))
 				{
-					tabCount++;
+					indentCount++;
 					previousLineProbationTab = true;
 				}
 				previousLineProbation = false;
@@ -1939,7 +2053,7 @@
 
 		if (isCStyle() && isInTemplate
 		        && (ch == '<' || ch == '>')
-		        &&  findOperator(line, i, nonAssignmentOperators) == NULL)
+		        && !(line.length() > i+1 && line.compare(i, 2, ">=") == 0))
 		{
 			if (ch == '<')
 			{
@@ -1973,11 +2087,11 @@
 					// -1 for isInClassInitializer, -2 for isInClassHeaderTab
 					if (isInClassHeaderTab)
 					{
-						tabCount -= (1 + classInitializerTabs);
+						indentCount -= (1 + classInitializerIndents);
 						isInClassHeaderTab = false;
 					}
-					if (tabCount < 0)
-						tabCount = 0;
+					if (indentCount < 0)
+						indentCount = 0;
 				}
 
 				if (parenDepth == 0)
@@ -1990,9 +2104,9 @@
 				inStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());
 
 				if (currentHeader != NULL)
-					registerInStatementIndent(line, i, spaceTabCount, tabIncrementIn, minConditionalIndent/*indentLength*2*/, true);
+					registerInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, minConditionalIndent/*indentLength*2*/, true);
 				else
-					registerInStatementIndent(line, i, spaceTabCount, tabIncrementIn, 0, true);
+					registerInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);
 			}
 			else if (ch == ')' || ch == ']')
 			{
@@ -2023,7 +2137,7 @@
 						parenIndentStack->pop_back();
 
 						if (i == 0)
-							spaceTabCount = poppedIndent;
+							spaceIndentCount = poppedIndent;
 					}
 				}
 			}
@@ -2058,9 +2172,12 @@
 					inStatementIndentStack->pop_back();
 				isInStatement = false;
 				if (lineBeginsWithBracket)
-					spaceTabCount = 0;
+					spaceIndentCount = 0;
 				isInClassInitializer = false;
 			}
+			// remove indent for preprocessor 'extern "C"' bracket
+			if (isCStyle() && preprocessorCppExternCBracket == 2)
+				++preprocessorCppExternCBracket;
 
 			if (!isBlockOpener && currentHeader != NULL)
 			{
@@ -2077,7 +2194,7 @@
 			if (!isBlockOpener)
 			{
 				inStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());
-				registerInStatementIndent(line, i, spaceTabCount, tabIncrementIn, 0, true);
+				registerInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);
 				parenDepth++;
 				if (i == 0)
 					shouldIndentBrackettedLine = false;
@@ -2098,14 +2215,14 @@
 				        && line[firstChar] == '{'
 				        && firstChar == i)
 				{
-					tabCount -= classInitializerTabs;
+					indentCount -= classInitializerIndents;
 					// decrease one more if an empty class
 					if (!headerStack->empty()
 					        && (*headerStack).back() == &AS_CLASS)
 					{
 						int nextChar = getNextProgramCharDistance(line, i);
 						if ((int)line.length() > nextChar && line[nextChar] == '}')
-							tabCount--;
+							indentCount--;
 					}
 				}
 			}
@@ -2114,7 +2231,7 @@
 			        && (*headerStack).back() == &AS_NAMESPACE)
 			{
 				shouldIndentBrackettedLine = false;
-				tabCount--;
+				indentCount--;
 			}
 
 			// an indentable struct is treated like a class in the header stack
@@ -2129,7 +2246,7 @@
 			inStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());
 			if (!inStatementIndentStack->empty())
 			{
-				spaceTabCount = 0;
+				spaceIndentCount = 0;
 				inStatementIndentStack->back() = 0;
 			}
 
@@ -2191,7 +2308,7 @@
 								lastTempStack->pop_back();
 							}
 							if (!closingBracketReached)
-								tabCount += restackSize;
+								indentCount += restackSize;
 						}
 						/*
 						 * If the above if is not true, i.e. no 'if' before the 'else',
@@ -2218,7 +2335,7 @@
 								lastTempStack->pop_back();
 							}
 							if (!closingBracketReached)
-								tabCount += restackSize;
+								indentCount += restackSize;
 						}
 					}
 				}
@@ -2242,7 +2359,7 @@
 							}
 
 							if (!closingBracketReached)
-								tabCount += restackSize;
+								indentCount += restackSize;
 						}
 					}
 				}
@@ -2253,13 +2370,13 @@
 					{
 						haveCaseIndent = true;
 						if (!lineBeginsWithBracket)
-							--tabCount;
+							--indentCount;
 					}
 				}
 				else if (newHeader == &AS_DEFAULT)
 				{
 					isInCase = true;
-					--tabCount;
+					--indentCount;
 				}
 				else if (newHeader == &AS_STATIC
 				         || newHeader == &AS_SYNCHRONIZED)
@@ -2331,6 +2448,20 @@
 				isInQuestion = false;
 			}
 
+			else if (isCStyle() && isInEnum)
+			{
+				// found an enum with a base-type
+				// so do nothing special
+			}
+			else if (isCStyle()
+			         && !headerStack->empty()
+			         && headerStack->back() == &AS_FOR
+			         && parenDepth > 0)
+			{
+				// found a range-based 'for' loop 'for (auto i : container)'
+				// so do nothing special
+			}
+
 			else if (isCStyle() && isInClassInitializer)
 			{
 				// found a 'class A : public B' definition
@@ -2352,7 +2483,7 @@
 			else if (isCStyle() && isInClass && prevNonSpaceCh != ')')
 			{
 				// found a 'private:' or 'public:' inside a class definition
-				--tabCount;
+				--indentCount;
 			}
 
 			else if (isCStyle() && !isInClass
@@ -2370,7 +2501,7 @@
 				isInClassInitializer = true;
 				isInStatement = false;			// so an inStatement indent will register
 				if (i == 0)
-					tabCount += classInitializerTabs;
+					indentCount += classInitializerIndents;
 			}
 
 			else if (isJavaStyle() && lastLineHeader == &AS_FOR)
@@ -2390,9 +2521,9 @@
 				else if (isCStyle() || (isSharpStyle() && peekNextChar(line, i) == ';'))    // is in a label (e.g. 'label1:')
 				{
 					if (labelIndent)
-						--tabCount; // unindent label by one indent
+						--indentCount; // unindent label by one indent
 					else if (!lineBeginsWithBracket)
-						tabCount = 0; // completely flush indent to left
+						indentCount = 0; // completely flush indent to left
 				}
 			}
 		}
@@ -2426,7 +2557,7 @@
 						size_t firstWord = line.find_first_not_of(" \t", firstChar + 1);
 						if (firstChar != string::npos)
 						{
-							int inStatementIndent = firstWord + spaceTabCount + tabIncrementIn;
+							int inStatementIndent = firstWord + spaceIndentCount + tabIncrementIn;
 							inStatementIndentStack->push_back(inStatementIndent);
 							isInStatement = true;
 						}
@@ -2436,7 +2567,7 @@
 				else
 				{
 					int prevWord = getInStatementIndentComma(line, i);
-					int inStatementIndent = prevWord + spaceTabCount + tabIncrementIn;
+					int inStatementIndent = prevWord + spaceIndentCount + tabIncrementIn;
 					inStatementIndentStack->push_back(inStatementIndent);
 					isInStatement = true;
 				}
@@ -2472,7 +2603,7 @@
 								int poppedIndent = parenIndentStack->back();
 								parenIndentStack->pop_back();
 								if (i == 0)
-									spaceTabCount = poppedIndent;
+									spaceIndentCount = poppedIndent;
 							}
 						}
 						continue;
@@ -2500,7 +2631,7 @@
 				closingBracketReached = true;
 				isInAsmOneLine = false;
 				if (i == 0)
-					spaceTabCount = 0;
+					spaceIndentCount = 0;
 
 				// added for release 1.24
 				// TODO: remove at the appropriate time
@@ -2602,7 +2733,7 @@
 				i += foundIndentableHeader->length() - 1;
 				if (!isInOperator && !isInTemplate && !isNonInStatementArray)
 				{
-					registerInStatementIndent(line, i, spaceTabCount, tabIncrementIn, 0, false);
+					registerInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);
 					isInStatement = true;
 				}
 				continue;
@@ -2611,6 +2742,9 @@
 			if (isCStyle() && findKeyword(line, i, AS_OPERATOR))
 				isInOperator = true;
 
+			if (isCStyle() && preprocessorCppExternCBracket == 1 && findKeyword(line, i, AS_EXTERN))
+				++preprocessorCppExternCBracket;
+
 			// "new" operator is a pointer, not a calculation
 			if (findKeyword(line, i, AS_NEW))
 			{
@@ -2659,6 +2793,9 @@
 			const string* foundAssignmentOp = findOperator(line, i, assignmentOperators);
 			const string* foundNonAssignmentOp = findOperator(line, i, nonAssignmentOperators);
 
+			if (isInTemplate && foundNonAssignmentOp == &AS_GR_GR)
+				foundNonAssignmentOp = NULL;
+
 			// Since findHeader's boundry checking was not used above, it is possible
 			// that both an assignment op and a non-assignment op where found,
 			// e.g. '>>' and '>>='. If this is the case, treat the LONGER one as the
@@ -2686,10 +2823,10 @@
 				            foundNonAssignmentOp == &AS_LS_LS))
 				{
 					// this will be true if the line begins with the operator
-					if (i < 2 && spaceTabCount == 0)
-						spaceTabCount += 2 * indentLength;
+					if (i < 2 && spaceIndentCount == 0)
+						spaceIndentCount += 2 * indentLength;
 					// align to the beginning column of the operator
-					registerInStatementIndent(line, i - foundNonAssignmentOp->length(), spaceTabCount, tabIncrementIn, 0, false);
+					registerInStatementIndent(line, i - foundNonAssignmentOp->length(), spaceIndentCount, tabIncrementIn, 0, false);
 				}
 			}
 
@@ -2712,15 +2849,15 @@
 							// register indent at previous word
 							haveAssignmentThisLine = true;
 							int prevWordIndex = getInStatementIndentAssign(line, i);
-							int inStatementIndent = prevWordIndex + spaceTabCount + tabIncrementIn;
+							int inStatementIndent = prevWordIndex + spaceIndentCount + tabIncrementIn;
 							inStatementIndentStack->push_back(inStatementIndent);
 						}
 					}
 					else
 					{
-						if (i == 0 && spaceTabCount == 0)
-							spaceTabCount += indentLength;
-						registerInStatementIndent(line, i, spaceTabCount, tabIncrementIn, 0, false);
+						if (i == 0 && spaceIndentCount == 0)
+							spaceIndentCount += indentLength;
+						registerInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);
 					}
 					isInStatement = true;
 				}
Index: src/plugins/astyle/astyle/astyle_main.cpp
===================================================================
--- src/plugins/astyle/astyle/astyle_main.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/astyle_main.cpp	(working copy)
@@ -290,10 +290,10 @@
 //-----------------------------------------------------------------------------
 
 // rewrite a stringstream converting the line ends
-void ASConsole::convertLineEnds(ostringstream& out, int lineEnd)
+void ASConsole::convertLineEnds(ostringstream &out, int lineEnd)
 {
 	assert(lineEnd == LINEEND_WINDOWS || lineEnd == LINEEND_LINUX || lineEnd == LINEEND_MACOLD);
-	const string& inStr = out.str();	// avoids strange looking syntax
+	const string &inStr = out.str();	// avoids strange looking syntax
 	string outStr;						// the converted ouput
 	int inLength = inStr.length();
 	for (int pos = 0; pos < inLength; pos++)
@@ -373,7 +373,7 @@
 	out.str(outStr);
 }
 
-void ASConsole::correctMixedLineEnds(ostringstream& out)
+void ASConsole::correctMixedLineEnds(ostringstream &out)
 {
 	LineEndFormat lineEndFormat = LINEEND_DEFAULT;
 	if (strcmp(outputEOL, "\r\n") == 0)
@@ -468,7 +468,7 @@
  *
  * @param fileName_     The path and name of the file to be processed.
  */
-void ASConsole::formatFile(const string& fileName_)
+void ASConsole::formatFile(const string &fileName_)
 {
 	stringstream in;
 	ostringstream out;
@@ -644,7 +644,7 @@
 string ASConsole::getOrigSuffix()
 { return origSuffix; }
 
-string ASConsole::getParam(const string& arg, const char* op)
+string ASConsole::getParam(const string &arg, const char* op)
 {
 	return arg.substr(strlen(op));
 }
@@ -675,13 +675,15 @@
 }
 
 
-FileEncoding ASConsole::readFile(const string& fileName_, stringstream& in) const
+FileEncoding ASConsole::readFile(const string &fileName_, stringstream &in) const
 {
-	const int blockSize = 131072;	// 128 KB
+	const int blockSize = 65536;	// 64 KB
 	ifstream fin(fileName_.c_str(), ios::binary);
 	if (!fin)
 		error("Cannot open input file", fileName_.c_str());
-	char data[blockSize];
+	char* data = new(nothrow) char[blockSize];
+	if (!data)
+		error("Cannot allocate memory for input file", fileName_.c_str());
 	fin.read(data, sizeof(data));
 	if (fin.bad())
 		error("Cannot read input file", fileName_.c_str());
@@ -696,7 +698,9 @@
 		{
 			// convert utf-16 to utf-8
 			size_t utf8Size = Utf8Length(data, dataSize, encoding);
-			char* utf8Out = new char[utf8Size];
+			char* utf8Out = new(nothrow) char[utf8Size];
+			if (!utf8Out)
+				error("Cannot allocate memory for utf-8 conversion", fileName_.c_str());
 			size_t utf8Len = Utf16ToUtf8(data, dataSize, encoding, firstBlock, utf8Out);
 			assert(utf8Len == utf8Size);
 			in << string(utf8Out, utf8Len);
@@ -711,6 +715,7 @@
 		firstBlock = false;
 	}
 	fin.close();
+	delete [] data;
 	return encoding;
 }
 
@@ -801,7 +806,7 @@
  *
  * @return              The path of the current directory
  */
-string ASConsole::getCurrentDirectory(const string& fileName_) const
+string ASConsole::getCurrentDirectory(const string &fileName_) const
 {
 	char currdir[MAX_PATH];
 	currdir[0] = '\0';
@@ -817,7 +822,7 @@
  * @param directory     The path of the directory to be processed.
  * @param wildcard      The wildcard to be processed (e.g. *.cpp).
  */
-void ASConsole::getFileNames(const string& directory, const string& wildcard)
+void ASConsole::getFileNames(const string &directory, const string &wildcard)
 {
 	vector<string> subDirectory;    // sub directories of directory
 	WIN32_FIND_DATA findFileData;   // for FindFirstFile and FindNextFile
@@ -898,10 +903,13 @@
  */
 string ASConsole::getNumberFormat(int num, size_t lcid) const
 {
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)
 	// Compilers that don't support C++ locales should still support this assert.
 	// The C locale should be set but not the C++.
 	// This function is not necessary if the C++ locale is set.
+	// The locale().name() return value is not portable to all compilers.
 	assert(locale().name() == "C");
+#endif
 	// convert num to a string
 	stringstream alphaNum;
 	alphaNum << num;
@@ -917,22 +925,20 @@
 	if (outBuf == NULL)
 		return number;
 	::GetNumberFormat(lcid, 0, number.c_str(), NULL, outBuf, outSize);
-
+	string formattedNum(outBuf);
+	delete [] outBuf;
 	// remove the decimal
-	string formattedNum(outBuf);
 	int decSize = ::GetLocaleInfo(lcid, LOCALE_SDECIMAL, NULL, 0);
 	char* decBuf = new(nothrow) char[decSize];
 	if (decBuf == NULL)
 		return number;
 	::GetLocaleInfo(lcid, LOCALE_SDECIMAL, decBuf, decSize);
 	size_t i = formattedNum.rfind(decBuf);
+	delete [] decBuf;
 	if (i != string::npos)
 		formattedNum.erase(i);
 	if (!formattedNum.length())
 		formattedNum = "0";
-
-	delete [] outBuf;
-	delete [] decBuf;
 	return formattedNum;
 }
 
@@ -946,7 +952,7 @@
  * @param fileName_     The filename is used only for  the error message.
  * @return              The path of the current directory
  */
-string ASConsole::getCurrentDirectory(const string& fileName_) const
+string ASConsole::getCurrentDirectory(const string &fileName_) const
 {
 	char* currdir = getenv("PWD");
 	if (currdir == NULL)
@@ -961,7 +967,7 @@
  * @param directory     The path of the directory to be processed.
  * @param wildcard      The wildcard to be processed (e.g. *.cpp).
  */
-void ASConsole::getFileNames(const string& directory, const string& wildcard)
+void ASConsole::getFileNames(const string &directory, const string &wildcard)
 {
 	struct dirent* entry;           // entry from readdir()
 	struct stat statbuf;            // entry from stat()
@@ -1053,10 +1059,13 @@
  */
 string ASConsole::getNumberFormat(int num, size_t) const
 {
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)
 	// Compilers that don't support C++ locales should still support this assert.
 	// The C locale should be set but not the C++.
 	// This function is not necessary if the C++ locale is set.
+	// The locale().name() return value is not portable to all compilers.
 	assert(locale().name() == "C");
+#endif
 
 	// get the locale info
 	struct lconv* lc;
@@ -1094,7 +1103,7 @@
 		// extract a group of numbers
 		string group;
 		if (i < grouping)
-			group = number.substr(0);
+			group = number;
 		else
 			group = number.substr(i - grouping);
 		// update formatted number
@@ -1116,7 +1125,7 @@
 #endif  // _WIN32
 
 // get individual file names from the command-line file path
-void ASConsole::getFilePaths(string& filePath)
+void ASConsole::getFilePaths(string &filePath)
 {
 	fileName.clear();
 	targetDirectory = string();
@@ -1230,22 +1239,22 @@
 	return fileNameVector.empty();
 }
 
-bool ASConsole::isOption(const string& arg, const char* op)
+bool ASConsole::isOption(const string &arg, const char* op)
 {
 	return arg.compare(op) == 0;
 }
 
-bool ASConsole::isOption(const string& arg, const char* a, const char* b)
+bool ASConsole::isOption(const string &arg, const char* a, const char* b)
 {
 	return (isOption(arg, a) || isOption(arg, b));
 }
 
-bool ASConsole::isParamOption(const string& arg, const char* option)
+bool ASConsole::isParamOption(const string &arg, const char* option)
 {
 	bool retVal = arg.compare(0, strlen(option), option) == 0;
 	// if comparing for short option, 2nd char of arg must be numeric
 	if (retVal && strlen(option) == 1 && arg.length() > 1)
-		if (!isdigit(arg[1]))
+		if (!isdigit((unsigned char)arg[1]))
 			retVal = false;
 	return retVal;
 }
@@ -1254,7 +1263,7 @@
 // used for both directories and filenames
 // updates the g_excludeHitsVector
 // return true if a match
-bool ASConsole::isPathExclued(const string& subPath)
+bool ASConsole::isPathExclued(const string &subPath)
 {
 	bool retVal = false;
 
@@ -1396,8 +1405,8 @@
 	(*_err) << "Tab Options:\n";
 	(*_err) << "------------\n";
 	(*_err) << "    default indent option\n";
-	(*_err) << "    If no indentation option is set,\n";
-	(*_err) << "    the default option of 4 spaces will be used.\n";
+	(*_err) << "    If no indentation option is set, the default\n";
+	(*_err) << "    option of 4 spaces per indent will be used.\n";
 	(*_err) << endl;
 	(*_err) << "    --indent=spaces=#  OR  -s#\n";
 	(*_err) << "    Indent using # spaces per indent. Not specifying #\n";
@@ -1405,34 +1414,39 @@
 	(*_err) << endl;
 	(*_err) << "    --indent=tab  OR  --indent=tab=#  OR  -t  OR  -t#\n";
 	(*_err) << "    Indent using tab characters, assuming that each\n";
-	(*_err) << "    tab is # spaces long. Not specifying # will result\n";
-	(*_err) << "    in a default assumption of 4 spaces per tab.\n";
+	(*_err) << "    indent is # spaces long. Not specifying # will result\n";
+	(*_err) << "    in a default assumption of 4 spaces per indent.\n";
 	(*_err) << endl;
 	(*_err) << "    --indent=force-tab=#  OR  -T#\n";
 	(*_err) << "    Indent using tab characters, assuming that each\n";
-	(*_err) << "    tab is # spaces long. Force tabs to be used in areas\n";
-	(*_err) << "    Astyle would prefer to use spaces.\n";
+	(*_err) << "    indent is # spaces long. Force tabs to be used in areas\n";
+	(*_err) << "    AStyle would prefer to use spaces.\n";
 	(*_err) << endl;
-	(*_err) << "Old Bracket Options (deprectaied):\n";
+	(*_err) << "    --indent=force-tab-x=#  OR  -xT#\n";
+	(*_err) << "    Allows the tab length to be set to a length that is different\n";
+	(*_err) << "    from the indent length. This may cause the indentation to be\n";
+	(*_err) << "    a mix of both spaces and tabs. This option sets the tab length.\n";
+	(*_err) << endl;
+	(*_err) << "Old Bracket Options (depreciated):\n";
 	(*_err) << "----------------------------------\n";
 	(*_err) << "The following bracket options have been depreciated and\n";
 	(*_err) << "will be removed in a future release.\n";
 	(*_err) << "Use the above Bracket Style Options instead.\n";
 	(*_err) << endl;
-	(*_err) << "    --brackets=break  OR  -b  (deprectaied)\n";
+	(*_err) << "    --brackets=break  OR  -b  (depreciated)\n";
 	(*_err) << "    Break brackets from pre-block code (i.e. ANSI C/C++ style).\n";
 	(*_err) << endl;
-	(*_err) << "    --brackets=attach  OR  -a  (deprectaied)\n";
+	(*_err) << "    --brackets=attach  OR  -a  (depreciated)\n";
 	(*_err) << "    Attach brackets to pre-block code (i.e. Java/K&R style).\n";
 	(*_err) << endl;
-	(*_err) << "    --brackets=linux  OR  -l  (deprectaied)\n";
+	(*_err) << "    --brackets=linux  OR  -l  (depreciated)\n";
 	(*_err) << "    Break definition-block brackets and attach command-block\n";
 	(*_err) << "    brackets.\n";
 	(*_err) << endl;
-	(*_err) << "    --brackets=stroustrup  OR  -u  (deprectaied)\n";
+	(*_err) << "    --brackets=stroustrup  OR  -u  (depreciated)\n";
 	(*_err) << "    Attach all brackets except function definition brackets.\n";
 	(*_err) << endl;
-	(*_err) << "    --brackets=run-in  OR  -g  (deprectaied)\n";
+	(*_err) << "    --brackets=run-in  OR  -g  (depreciated)\n";
 	(*_err) << "    Break brackets from pre-block code, but allow following\n";
 	(*_err) << "    run-in statements on the same line as an opening bracket.\n";
 	(*_err) << endl;
@@ -1503,7 +1517,7 @@
 	(*_err) << "    around closing headers (e.g. 'else', 'catch', ...).\n";
 	(*_err) << endl;
 	(*_err) << "    --pad-oper  OR  -p\n";
-	(*_err) << "    Insert space paddings around operators.\n";
+	(*_err) << "    Insert space padding around operators.\n";
 	(*_err) << endl;
 	(*_err) << "    --pad-paren  OR  -P\n";
 	(*_err) << "    Insert space padding around parenthesis on both the outside\n";
@@ -1519,7 +1533,7 @@
 	(*_err) << "    Insert space padding after paren headers (e.g. 'if', 'for'...).\n";
 	(*_err) << endl;
 	(*_err) << "    --unpad-paren  OR  -U\n";
-	(*_err) << "    Remove unnecessary space padding around parenthesis.  This\n";
+	(*_err) << "    Remove unnecessary space padding around parenthesis. This\n";
 	(*_err) << "    can be used in combination with the 'pad' options above.\n";
 	(*_err) << endl;
 	(*_err) << "    --delete-empty-lines  OR  -xd\n";
@@ -1572,6 +1586,9 @@
 	(*_err) << "    --convert-tabs  OR  -c\n";
 	(*_err) << "    Convert tabs to the appropriate number of spaces.\n";
 	(*_err) << endl;
+	(*_err) << "    --close-templates  OR  -xy\n";
+	(*_err) << "    Close ending angle brackets on template definitions.\n";
+	(*_err) << endl;
 	(*_err) << "    --max-code-length=#    OR  -xC#\n";
 	(*_err) << "    --break-after-logical  OR  -xL\n";
 	(*_err) << "    max-code-length=# will break the line if it exceeds more than\n";
@@ -1831,7 +1848,7 @@
 // make sure file separators are correct type (Windows or Linux)
 // remove ending file separator
 // remove beginning file separator if requested and NOT a complete file path
-void ASConsole::standardizePath(string& path, bool removeBeginningSeparator /*false*/) const
+void ASConsole::standardizePath(string &path, bool removeBeginningSeparator /*false*/) const
 {
 #ifdef __VMS
 	struct FAB fab;
@@ -1896,7 +1913,7 @@
 		path.erase(0, 1);
 }
 
-void ASConsole::printMsg(const char* msg, const string& data) const
+void ASConsole::printMsg(const char* msg, const string &data) const
 {
 	if (isQuiet)
 		return;
@@ -1974,7 +1991,7 @@
 	while (clock() < endwait) {}
 }
 
-bool ASConsole::stringEndsWith(const string& str, const string& suffix) const
+bool ASConsole::stringEndsWith(const string &str, const string &suffix) const
 {
 	int strIndex = (int) str.length() - 1;
 	int suffixIndex = (int) suffix.length() - 1;
@@ -2216,7 +2233,7 @@
 			else
 			{
 				nCur16 = static_cast<utf16>(*pRead++ << 8);
-				nCur16 |= *pRead;
+				nCur16 |= static_cast<utf16>(*pRead);
 			}
 			if (nCur16 >= SURROGATE_LEAD_FIRST && nCur16 <= SURROGATE_LEAD_LAST)
 			{
@@ -2230,7 +2247,7 @@
 				else
 				{
 					trail = static_cast<utf16>(*pRead++ << 8);
-					trail |= *pRead;
+					trail |= static_cast<utf16>(*pRead);
 				}
 				nCur16 = (((nCur16 & 0x3ff) << 10) | (trail & 0x3ff)) + SURROGATE_FIRST_VALUE;
 			}
@@ -2353,7 +2370,7 @@
 	return !*wild;
 }
 
-void ASConsole::writeFile(const string& fileName_, FileEncoding encoding, ostringstream& out) const
+void ASConsole::writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const
 {
 	// save date accessed and date modified of original file
 	struct stat stBuf;
@@ -2423,7 +2440,7 @@
  *
  * @return        true if no errors, false if errors
  */
-bool ASOptions::parseOptions(vector<string> &optionsVector, const string& errorInfo)
+bool ASOptions::parseOptions(vector<string> &optionsVector, const string &errorInfo)
 {
 	vector<string>::iterator option;
 	string arg, subArg;
@@ -2442,7 +2459,7 @@
 			for (i = 1; i < arg.length(); ++i)
 			{
 				if (i > 1
-				        && isalpha(arg[i])
+				        && isalpha((unsigned char)arg[i])
 				        && arg[i-1] != 'x')
 				{
 					// parse the previous option in subArg
@@ -2467,7 +2484,7 @@
 	return true;
 }
 
-void ASOptions::parseOption(const string& arg, const string& errorInfo)
+void ASOptions::parseOption(const string &arg, const string &errorInfo)
 {
 	if ( isOption(arg, "style=allman") || isOption(arg, "style=ansi")
 	        || isOption(arg, "style=bsd") || isOption(arg, "style=break") )
@@ -2600,6 +2617,23 @@
 	{
 		formatter.setTabIndentation(4, true);
 	}
+	else if ( isParamOption(arg, "xT", "indent=force-tab-x=") )
+	{
+		int tabNum = 8;
+		string tabNumParam = getParam(arg, "xT", "indent=force-tab-x=");
+		if (tabNumParam.length() > 0)
+			tabNum = atoi(tabNumParam.c_str());
+		if (tabNum < 2 || tabNum > 20)
+			isOptionError(arg, errorInfo);
+		else
+		{
+			formatter.setForceTabXIndentation(tabNum);
+		}
+	}
+	else if ( isOption(arg, "indent=force-tab-x") )
+	{
+		formatter.setForceTabXIndentation(8);
+	}
 	else if ( isParamOption(arg, "s", "indent=spaces=") )
 	{
 		int spaceNum = 4;
@@ -2702,6 +2736,10 @@
 	{
 		formatter.setParensOutsidePaddingMode(true);
 	}
+	else if ( isOption(arg, "xd", "pad-first-paren-out") )
+	{
+		formatter.setParensFirstPaddingMode(true);
+	}
 	else if ( isOption(arg, "D", "pad-paren-in") )
 	{
 		formatter.setParensInsidePaddingMode(true);
@@ -2718,7 +2756,7 @@
 	{
 		formatter.setOperatorPaddingMode(true);
 	}
-	else if ( isOption(arg, "xd", "delete-empty-lines") )
+	else if ( isOption(arg, "xe", "delete-empty-lines") )
 	{
 		formatter.setDeleteEmptyLinesMode(true);
 	}
@@ -2734,6 +2772,10 @@
 	{
 		formatter.setTabSpaceConversionMode(true);
 	}
+	else if ( isOption(arg, "xy", "close-templates") )
+	{
+		formatter.setCloseTemplatesMode(true);
+	}
 	else if ( isOption(arg, "F", "break-blocks=all") )
 	{
 		formatter.setBreakBlocksMode(true);
@@ -2949,7 +2991,7 @@
 #endif
 }	// End of parseOption function
 
-void ASOptions::importOptions(istream& in, vector<string> &optionsVector)
+void ASOptions::importOptions(istream &in, vector<string> &optionsVector)
 {
 	char ch;
 	string currentToken;
@@ -2990,12 +3032,12 @@
 	return optionErrors.str();
 }
 
-string ASOptions::getParam(const string& arg, const char* op)
+string ASOptions::getParam(const string &arg, const char* op)
 {
 	return arg.substr(strlen(op));
 }
 
-string ASOptions::getParam(const string& arg, const char* op1, const char* op2)
+string ASOptions::getParam(const string &arg, const char* op1, const char* op2)
 {
 	return isParamOption(arg, op1) ? getParam(arg, op1) : getParam(arg, op2);
 }
@@ -3005,29 +3047,29 @@
 	return arg.compare(op) == 0;
 }
 
-bool ASOptions::isOption(const string& arg, const char* op1, const char* op2)
+bool ASOptions::isOption(const string &arg, const char* op1, const char* op2)
 {
 	return (isOption(arg, op1) || isOption(arg, op2));
 }
 
-void ASOptions::isOptionError(const string& arg, const string& errorInfo)
+void ASOptions::isOptionError(const string &arg, const string &errorInfo)
 {
 	if (optionErrors.str().length() == 0)
 		optionErrors << errorInfo << endl;   // need main error message
 	optionErrors << arg << endl;
 }
 
-bool ASOptions::isParamOption(const string& arg, const char* option)
+bool ASOptions::isParamOption(const string &arg, const char* option)
 {
 	bool retVal = arg.compare(0, strlen(option), option) == 0;
 	// if comparing for short option, 2nd char of arg must be numeric
 	if (retVal && strlen(option) == 1 && arg.length() > 1)
-		if (!isdigit(arg[1]))
+		if (!isdigit((unsigned char)arg[1]))
 			retVal = false;
 	return retVal;
 }
 
-bool ASOptions::isParamOption(const string& arg, const char* option1, const char* option2)
+bool ASOptions::isParamOption(const string &arg, const char* option1, const char* option2)
 {
 	return isParamOption(arg, option1) || isParamOption(arg, option2);
 }
@@ -3055,9 +3097,9 @@
 // the function name is constructed from method names in the calling java program
 extern "C"  EXPORT
 jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,
-        jobject obj,
-        jstring textInJava,
-        jstring optionsJava)
+                                                jobject obj,
+                                                jstring textInJava,
+                                                jstring optionsJava)
 {
 	g_env = env;                                // make object available globally
 	g_obj = obj;                                // make object available globally
@@ -3192,8 +3234,7 @@
 	if (formatter.getChecksumDiff() != 0)
 		fpErrorHandler(220,
 		               "Checksum error.\n"
-		               "The incorrectly formatted file\n"
-		               "will been returned for debugging.");
+		               "The incorrectly formatted file will be returned for debugging.");
 #endif
 	return pTextOut;
 }
Index: src/plugins/astyle/astyle/ASLocalizer.h
===================================================================
--- src/plugins/astyle/astyle/ASLocalizer.h	(revision 7913)
+++ src/plugins/astyle/astyle/ASLocalizer.h	(working copy)
@@ -84,13 +84,13 @@
 	public:
 		Translation() {}
 		virtual ~Translation() {}
-		string convertToMultiByte(const wstring& wideStr) const;
+		string convertToMultiByte(const wstring &wideStr) const;
 		size_t getTranslationVectorSize() const;
-		bool getWideTranslation(const string& stringIn, wstring& wideOut) const;
-		string& translate(const string& stringIn) const;
+		bool getWideTranslation(const string &stringIn, wstring &wideOut) const;
+		string &translate(const string &stringIn) const;
 
 	protected:
-		void addPair(const string& english, const wstring& translated);
+		void addPair(const string &english, const wstring &translated);
 		// variables
 		vector<pair<string, wstring> > m_translation;		// translation vector
 };
Index: src/plugins/astyle/astyle/astyle.html
===================================================================
--- src/plugins/astyle/astyle/astyle.html	(revision 7913)
+++ src/plugins/astyle/astyle/astyle.html	(working copy)
@@ -66,9 +66,11 @@
         <a class="contents" href="#_Tab_Options">Tab&nbsp;Options</a>
     </p>
     <p class="contents2">
-        <a class="contents" href="#_default_indent">default&nbsp;indent</a>&nbsp;&nbsp;&nbsp; <a class="contents" href="#_indent=spaces">
-            indent=spaces</a>&nbsp;&nbsp;&nbsp; <a class="contents" href="#_indent=tab">indent=tab</a>&nbsp;&nbsp;&nbsp;
+        <a class="contents" href="#_default_indent">default&nbsp;indent</a>&nbsp;&nbsp;&nbsp; 
+        <a class="contents" href="#_indent=spaces">indent=spaces</a>&nbsp;&nbsp;&nbsp; 
+        <a class="contents" href="#_indent=tab">indent=tab</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_indent=force-tab">indent=force&#8209;tab</a>&nbsp;&nbsp;&nbsp;
+        <a class="contents" href="#_indent=force-tab-x">--indent=force&#8209;tab&#8209;x&nbsp;&nbsp;&nbsp;
     </p>
     <p class="contents1">
         <a class="contents" href="#_Indentation_Options">Indentation&nbsp;Options</a></p>
@@ -90,7 +92,8 @@
         <a class="contents" href="#_break-blocks=all">break&#8209;blocks=all</a>&nbsp;&nbsp;&nbsp; 
         <a class="contents" href="#_pad-oper">pad&#8209;oper</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_pad-paren">pad&#8209;paren</a>&nbsp;&nbsp;&nbsp; 
-        <a class="contents" href="#_pad-paren-out">pad&#8209;paren&#8209;out</a>&nbsp;&nbsp;&nbsp; 
+        <a class="contents" href="#_pad-paren-out">pad&#8209;paren&#8209;out</a>&nbsp;&nbsp;&nbsp;
+        <a class="contents" href="#_pad-first-paren-out">pad&#8209;first&#8209;paren&#8209;out</a>&nbsp;&nbsp;&nbsp; 
         <a class="contents" href="#_pad-paren-in">pad&#8209;paren&#8209;in</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_pad-header">pad&#8209;header</a>&nbsp;&nbsp;&nbsp; 
         <a class="contents" href="#_unpad-paren">unpad&#8209;paren</a>&nbsp;&nbsp;&nbsp; 
@@ -109,8 +112,9 @@
         <a class="contents" href="#_keep-one-line-blocks">keep&#8209;one&#8209;line&#8209;blocks</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_keep-one-line-statements">keep&#8209;one&#8209;line&#8209;statements</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_convert-tabs">convert&#8209;tabs</a>&nbsp;&nbsp;&nbsp;
+        <a class="contents" href="#_close-templates">close&#8209;templates</a>&nbsp;&nbsp;&nbsp; 
         <a class="contents" href="#_max-code-length">max&#8209;code&#8209;length</a>&nbsp;&nbsp;&nbsp; 
-        <a class="contents" href="#_max-code-length">break&#8209;after&#8209;logical</a>&nbsp;&nbsp;&nbsp; 
+        <a class="contents" href="#_max-code-length">break&#8209;after&#8209;logical</a>&nbsp;&nbsp;&nbsp;
         <a class="contents" href="#_mode">mode</a>&nbsp;&nbsp;&nbsp;
     </p>
     <p class="contents1">
@@ -643,10 +647,10 @@
         &nbsp;</p>
     <p id="_indent=tab">
         <code class="title">--indent=tab / --indent=tab=<span class="option">#</span> / -t / -t<span class="option">#</span></code><br />
-        Indent using <strong>tabs for indentation, spaces for continuation line alignment</strong>. This ensures that
-        the code is displayed correctly everywhere, regardless of the viewer&#8217;s tab size. Treat each tab as # spaces
+        Indent using <strong>tabs for indentation, and spaces for continuation line alignment</strong>. This ensures that
+        the code is displayed correctly&nbsp; regardless of the viewer&#8217;s tab size. Treat each indent as # spaces
         (e.g. <code>-t<span class="option">6</span></code> / <code>--indent=tab=<span class="option">6</span></code>).
-        # must be between 2 and 20. If no # is set, treats tabs as 4 spaces.
+        # must be between 2 and 20. If no # is set, treats indents as 4 spaces.
     </p>
     <div class="code">
         <p class="code">
@@ -671,7 +675,7 @@
         &nbsp;</p>
     <p id="_indent=force-tab">
         <code class="title">--indent=force-tab / --indent=force-tab=<span class="option">#</span> / -T / -T<span class="option">#</span></code><br />
-        Indent using <strong>all tab</strong> characters, if possible. If the continuation line is not an even number
+        Indent using <strong>all tab</strong> characters, if possible. If a continuation line is not an even number
         of tabs, spaces will be added at the end. Treat each tab as # spaces (e.g. <code>-T<span class="option">6</span></code>
         / <code>--indent=<span lang="en-us">force-</span>tab=<span class="option">6</span></code>). # must be between
         2 and 20. If no # is set, treats tabs as 4 spaces.</p>
@@ -687,6 +691,29 @@
     </div>
     <p>
         &nbsp;</p>
+    <p id="_indent=force-tab-x">
+        <code class="title">--indent=force-tab-x / --indent=force-tab-x=<span class="option">#</span> / -xT / -xT<span class="option">#</span></code><br />
+        This force-tab option allows the tab length to be set to a length that is different than the indent length. This
+        may cause the indentation to be <strong>a mix of both tabs and spaces.</strong> Tabs will be used to indent, if
+        possible. If a tab indent cannot be used, spaces will be used instead.
+    </p>
+    <p>
+        This option sets the <strong>tab length.</strong> Treat each tab as # spaces (e.g. <code>-xT<span class="option">6</span></code>
+        / <code>--indent=<span lang="en-us">force-</span>tab-x=<span class="option">6</span></code>). # must be between
+        2 and 20. If no # is set, treats tabs as 8 spaces. To change the indent length "indent=force-tab" must also be
+        used.</p>
+    <div class="code">
+        <p class="code">
+            with indent=force-tab-x (default tab length of 8 and default indent length of 4):</p>
+        <pre>void Foo() <span class="brace">{</span>
+....if (isBar1
+&gt;       ....&amp;&amp; isBar2)    <span class="comment">// indent of this line can be changed with min-conditional-indent</span>
+>       bar();
+<span class="brace">}</span>
+</pre>
+    </div>
+    <p>
+        &nbsp;</p>
     <hr />
 
     <!--  * * * * * * * * * * * * *   Indentation Options  * * * * * * * * * * * * *  -->
@@ -1060,12 +1087,12 @@
         Insert space padding around parenthesis on both the <strong>outside</strong> and the <strong>inside</strong>.
         Any end of line comments will remain in the original column, if possible.</p>
     <div class="code">
-        <pre>if (isFoo(a, b))
+        <pre>if (isFoo((a+2), b))
     bar(a, b);
 </pre>
         <p class="code">
             becomes:</p>
-        <pre>if ( isFoo ( a, b ) )
+        <pre>if ( isFoo ( ( a+2 ), b ) )
     bar ( a, b );
 </pre>
     </div>
@@ -1074,30 +1101,48 @@
     <p id="_pad-paren-out">
         <code class="title">--pad-paren-out / -d </code><br />
         Insert space padding around parenthesis on the <strong>outside</strong> only. Any end of line comments will remain
-        in the original column, if possible. This can be used with <code>unpad-paren</code> below to remove unwanted spaces.</p>
+        in the original column, if possible. This can be used with unpad-paren below to remove unwanted spaces.</p>
     <div class="code">
-        <pre>if (isFoo(a, b))
+        <pre>if (isFoo((a+2), b))
     bar(a, b);
 </pre>
         <p class="code">
             becomes:</p>
-        <pre>if (isFoo (a, b) )
+        <pre>if (isFoo ( (a+2), b) )
     bar (a, b);
 </pre>
     </div>
     <p>
         &nbsp;</p>
+    <p id="_pad-first-paren-out">
+        <code class="title">--pad-first-paren-out / -xd </code><br />
+        Insert space padding around the <strong>first</strong> parenthesis in a series on the <strong>outside</strong>
+        only. Any end of line comments will remain in the original column, if possible. This can be used with unpad-paren
+        below to remove unwanted spaces. If used with pad-paren or pad-paren-out, this option will be ignored. If used
+        with pad-paren-in, the result will be the same as pad-paren.</p>
+    <div class="code">
+        <pre>if (isFoo((a+2), b))
+    bar(a, b);
+</pre>
+        <p class="code">
+            becomes:</p>
+        <pre>if (isFoo ((a+2), b))
+    bar (a, b);
+</pre>
+    </div>
+    <p>
+        &nbsp;</p>
     <p id="_pad-paren-in">
         <code class="title">--pad-paren-in / -D </code><br />
         Insert space padding around parenthesis on the <strong>inside</strong> only. Any end of line comments will remain
-        in the original column, if possible. This can be used with <code>unpad-paren</code> below to remove unwanted spaces.</p>
+        in the original column, if possible. This can be used with unpad-paren below to remove unwanted spaces.</p>
     <div class="code">
-        <pre>if (isFoo(a, b))
+        <pre>if (isFoo((a+2), b))
     bar(a, b);
 </pre>
         <p class="code">
             becomes:</p>
-        <pre>if ( isFoo( a, b ) )
+        <pre>if ( isFoo( ( a+2 ), b ) )
     bar( a, b );
 </pre>
     </div>
@@ -1106,14 +1151,14 @@
     <p id="_pad-header">
         <code class="title">--pad-header / -H </code><br />
         Insert space padding after paren headers only (e.g. '<code>if</code>', '<code>for</code>', '<code>while</code>'...).
-        Any end of line comments will remain in the original column, if possible. This can be used with <code>unpad-paren</code>
-        to remove unwanted spaces.</p>
+        Any end of line comments will remain in the original column, if possible. This can be used with unpad-paren to
+        remove unwanted spaces.</p>
     <div class="code">
-        <pre>if(isFoo(a, b))
+        <pre>if(isFoo((a+2), b))
     bar(a, b);</pre>
         <p class="code">
             becomes:</p>
-        <pre>if (isFoo(a, b))
+        <pre>if (isFoo((a+2), b))
     bar(a, b);
 </pre>
     </div>
@@ -1130,19 +1175,19 @@
         to use <code>unpad-paren</code> to remove the outside padding, and <code>pad&#8209;paren&#8209;in</code> to retain
         the inside padding. Using only <code>pad&#8209;paren&#8209;in</code> would not remove the outside padding.</p>
     <div class="code">
-        <pre>if ( isFoo( a, b ) )
+        <pre>if ( isFoo( ( a+2 ), b ) )
     bar ( a, b );
 </pre>
         <p class="code">
             becomes (with no padding option requested):</p>
-        <pre>if(isFoo(a, b))
+        <pre>if(isFoo((a+2), b))
     bar(a, b);
 </pre>
     </div>
     <p>
         &nbsp;</p>
     <p id="_delete-empty-lines">
-        <code class="title">--delete-empty-lines / -xd</code><br />
+        <code class="title">--delete-empty-lines / -xe</code><br />
         Delete empty lines within a function or method. Empty lines outside of functions or methods are NOT deleted. If
         used with break-blocks or break-blocks=all it will delete all lines EXCEPT the lines added by the break-blocks
         options.</p>
@@ -1178,31 +1223,37 @@
             --align-pointer=name&nbsp;&nbsp; / -k3</code><br />
         Attach a pointer or reference operator (* or &amp;) to either the variable type (left) or variable name (right),
         or place it between the type and name (middle). The spacing between the type and name will be preserved, if possible.
-        This option is effective for C/C++ files only. To format references separately use the following align-reference
+        This option is for C/C++, C++/CLI, and C# files. To format references separately use the following align-reference
         option.</p>
     <div class="code">
-        <pre>char *foo1;
-char &amp;foo2;</pre>
+        <pre>char* foo1;
+char &amp; foo2;
+String ^s1;</pre>
         <p class="code">
             becomes (with align-pointer=type):</p>
         <pre>char* foo1;
-char&amp; foo2;</pre>
+char&amp; foo2;
+String^ s1;</pre>
     </div>
     <div class="code">
         <pre>char* foo1;
-char&amp; foo2;</pre>
+char &amp; foo2;
+String ^s1;</pre>
         <p class="code">
             becomes (with align-pointer=middle):</p>
         <pre>char * foo1;
-char &amp; foo2;</pre>
+char &amp; foo2;
+String ^ s1;</pre>
     </div>
     <div class="code">
         <pre>char* foo1;
-char&amp; foo2;</pre>
+char &amp; foo2;
+String ^s1;</pre>
         <p class="code">
             becomes (with align-pointer=name):</p>
         <pre>char *foo1;
-char &amp;foo2;</pre>
+char &amp;foo2;
+String ^s1;</pre>
     </div>
     <p>
         &nbsp;</p>
@@ -1213,8 +1264,8 @@
             --align-reference=name&nbsp;&nbsp; / -W3</code><br />
         This option will align references separate from pointers. Pointers are not changes by this option. If pointers
         and references are to be aligned the same, use the previous align-pointer option. The option align-reference=none
-        will not change the reference alignment. The other options are the same as for align-pointer. This option is effective
-        for C/C++ files only.
+        will not change the reference alignment. The other options are the same as for align-pointer. This option is for
+        C/C++, C++/CLI, and C# files.
     </p>
     <div class="code">
         <pre>char &amp;foo1;</pre>
@@ -1372,15 +1423,32 @@
     <p>
         &nbsp;</p>
     <p id="_convert-tabs">
-        <code class="title">--convert-tabs / -c</code><br />
-        Converts tabs into spaces in the non-indentation part of the line. The number of spaces inserted will maintain
-        the spacing of the tab. The current setting for spaces per tab is used. It may not produce the expected results
-        if convert-tabs is used when changing spaces per tab. Tabs are not replaced in quotes.</p>
+        <code class="title">--convert-tabs / -c</code><br />Converts tabs into spaces in the non-indentation part of the
+        line. The number of spaces inserted will maintain the spacing of the tab. The current setting for spaces per tab
+        is used. It may not produce the expected results if convert-tabs is used when changing spaces per tab. Tabs are
+        not replaced in quotes.
+    </p>
     <p>
-        &nbsp;</p>
+        &nbsp;
+    </p>
+    <p id="_close-templates">
+        <code class="title">--close-templates / -xy</code><br />Closes whitespace in the angle brackets of template definitions. 
+        Closing the ending angle brackets
+        is now allowed by the C++11 standard. Be sure your compiler supports this before making the changes.
+    </p>
+    <div class="code">
+        <pre>Stack&lt; int,List&lt; int &gt; &gt; stack1;</pre>
+        <p class="code">
+            becomes:
+        </p>
+        <pre>Stack&lt;int,List&lt;int&gt;&gt; stack1;</pre>
+    </div>
+    <p>
+        &nbsp;
+    </p>
     <p id="_max-code-length">
-        <code class="title">--max-code-length=<span class="option">#</span>&nbsp;&nbsp; / -xC<span class="option">#</span><br />
-            --break-after-logical / -xL</code><br />
+        <code class="title">--max-code-length=<span class="option">#</span>&nbsp;&nbsp; / -xC<span class="option">#</span>
+            <br />--break-after-logical / -xL</code><br />
         The option max&#8209;code&#8209;length will break a line if the code exceeds <span class="option"><strong>#</strong></span>
         characters. The valid values are 50 thru 200. Lines without logical conditionals will break on a logical conditional
         (||, &amp;&amp;, ...), comma, paren, semicolon, or space.
@@ -1396,26 +1464,26 @@
         will cause the logical conditionals to be placed last on the previous line. This option has no effect without
         max&#8209;code&#8209;length.</p>
     <div class="code">
-        <pre>   if (thisVariable1 == thatVariable1 || thisVariable2 == thatVariable2 || thisVariable3 == thatVariable3)
-        bar();</pre>
+        <pre>if (thisVariable1 == thatVariable1 || thisVariable2 == thatVariable2 || thisVariable3 == thatVariable3)
+    bar();</pre>
         <p class="code">
             becomes:</p>
-        <pre>    if (thisVariable1 == thatVariable1
-            || thisVariable2 == thatVariable2
-            || thisVariable3 == thatVariable3)
-        bar();</pre>
+        <pre>if (thisVariable1 == thatVariable1
+        || thisVariable2 == thatVariable2
+        || thisVariable3 == thatVariable3)
+    bar();</pre>
         <p class="code">
             becomes (with break&#8209;after&#8209;logical):</p>
-        <pre>    if (thisVariable1 == thatVariable1 ||
-            thisVariable2 == thatVariable2 ||
-            thisVariable3 == thatVariable3)
-        bar();</pre>
+        <pre>if (thisVariable1 == thatVariable1 ||
+        thisVariable2 == thatVariable2 ||
+        thisVariable3 == thatVariable3)
+    bar();</pre>
     </div>
     <p>
-        &nbsp;</p>
+        &nbsp;
+    </p>
     <p id="_mode">
-        <code class="title">--mode=c</code><br />
-        <code class="title">--mode=cs</code><br />
+        <code class="title">--mode=c</code><br /><code class="title">--mode=cs</code><br />
         <code class="title">--mode=java</code><br />
         Indent a C/C++, C#, or Java file. The option is usually set from the file extension for each file. You can override
         the setting with this entry. It will be used for all files regardless of the file extension. It allows the formatter
Index: src/plugins/astyle/astyle/ASFormatter.cpp
===================================================================
--- src/plugins/astyle/astyle/ASFormatter.cpp	(revision 7913)
+++ src/plugins/astyle/astyle/ASFormatter.cpp	(working copy)
@@ -54,6 +54,7 @@
 	maxCodeLength = string::npos;
 	shouldPadOperators = false;
 	shouldPadParensOutside = false;
+	shouldPadFirstParen = false;
 	shouldPadParensInside = false;
 	shouldPadHeader = false;
 	shouldUnPadParens = false;
@@ -62,6 +63,7 @@
 	shouldBreakOneLineStatements = true;
 	shouldConvertTabs = false;
 	shouldIndentCol1Comments = false;
+	shouldCloseTemplates = false;
 	shouldBreakBlocks = false;
 	shouldBreakClosingHeaderBlocks = false;
 	shouldBreakClosingHeaderBrackets = false;
@@ -128,7 +130,9 @@
 	ASBeautifier::init(si);
 	enhancer->init(getFileType(),
 	               getIndentLength(),
-	               getIndentString(),
+	               getTabLength(),
+	               getIndentString() == "\t" ? true : false,
+	               getForceTabIndentation(),
 	               getCaseIndent(),
 	               getPreprocessorIndent(),
 	               getEmptyLineFill());
@@ -199,6 +203,7 @@
 	isInLineBreak = false;
 	endOfAsmReached = false;
 	endOfCodeReached = false;
+	isInEnum = false;
 	isInExecSQL = false;
 	isInAsm = false;
 	isInAsmOneLine = false;
@@ -270,7 +275,7 @@
 	ASResource::buildPreDefinitionHeaders(preDefinitionHeaders, getFileType());
 	ASResource::buildPreCommandHeaders(preCommandHeaders, getFileType());
 	if (operators->empty())
-		ASResource::buildOperators(operators);
+		ASResource::buildOperators(operators, getFileType());
 	if (assignmentOperators->empty())
 		ASResource::buildAssignmentOperators(assignmentOperators);
 	if (castOperators->empty())
@@ -360,6 +365,9 @@
 		}
 	}
 	setMinConditionalIndentLength();
+	// if not set by indent=force-tab-x set equal to indentLength
+	if (!getTabLength())
+		setDefaultTabLength();
 	// add-one-line-brackets implies keep-one-line-blocks
 	if (shouldAddOneLineBrackets)
 		setBreakOneLineBlocksMode(false);
@@ -412,9 +420,6 @@
 			isCharImmediatelyPostCloseBlock = false;
 		}
 
-//		if (inLineNumber >= 7)
-//			int x = 1;
-
 		if (shouldBreakLineAtNextChar)
 		{
 			if (isWhiteSpace(currentChar) && !lineIsEmpty)
@@ -495,6 +500,14 @@
 			continue;
 		}
 
+		if (isInTemplate && shouldCloseTemplates)
+		{
+			if (previousCommandChar == '<' && isWhiteSpace(currentChar))
+				continue;
+			if (isWhiteSpace(currentChar) && peekNextChar() == '>')
+				continue;
+		}
+
 		// handle white space - needed to simplify the rest.
 		if (isWhiteSpace(currentChar))
 		{
@@ -594,7 +607,7 @@
 		if (passedSemicolon)    // need to break the formattedLine
 		{
 			passedSemicolon = false;
-			if (parenStack->back() == 0 && currentChar != ';') // allow ;;
+			if (parenStack->back() == 0 && !isCharImmediatelyPostComment && currentChar != ';') // allow ;;
 			{
 				// does a one-line statement have ending comments?
 				if (isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))
@@ -696,6 +709,7 @@
 				foundPreDefinitionHeader = false;
 				foundPreCommandHeader = false;
 				isInPotentialCalculation = false;
+				isInEnum = false;
 				isJavaStaticConstructor = false;
 				isCharImmediatelyPostNonInStmt = false;
 				needHeaderOpeningBracket = false;
@@ -914,7 +928,7 @@
 				//     as if it were NOT a header since a closing while()
 				//     should never have a block after it!
 				if (currentHeader != &AS_CASE
-					&& !(foundClosingHeader && currentHeader == &AS_WHILE))
+				        && !(foundClosingHeader && currentHeader == &AS_WHILE))
 				{
 					isInHeader = true;
 
@@ -1042,6 +1056,7 @@
 			isInPotentialCalculation = false;
 			isSharpAccessor = false;
 			isSharpDelegate = false;
+			isInEnum = false;
 			isInExtern = false;
 			nonInStatementBracket = 0;
 		}
@@ -1064,6 +1079,7 @@
 			         && previousChar != ':'         // not part of '::'
 			         && peekNextChar() != ':'       // not part of '::'
 			         && !isDigit(peekNextChar())    // not a bit field
+			         && !isInEnum                   // not an enum with a base type
 			         && !isInAsm                    // not in extended assembler
 			         && !isInAsmOneLine             // not in extended assembler
 			         && !isInAsmBlock)              // not in extended assembler
@@ -1089,6 +1105,9 @@
 			if (findKeyword(currentLine, charNum, AS_OPERATOR))
 				isImmediatelyPostOperator = true;
 
+			if (isCStyle() && findKeyword(currentLine, charNum, AS_ENUM))
+				isInEnum = true;
+
 			if (isCStyle() && findKeyword(currentLine, charNum, AS_EXTERN))
 				isInExtern = true;
 
@@ -1185,7 +1204,7 @@
 		// process pointers and references
 		// check newHeader to elimnate things like '&&' sequence
 		if (!isJavaStyle()
-		        && (newHeader == &AS_MULT || newHeader == &AS_BIT_AND)
+		        && (newHeader == &AS_MULT || newHeader == &AS_BIT_AND || newHeader == &AS_BIT_XOR)
 		        && isPointerOrReference()
 		        && !isDereferenceOrAddressOf())
 		{
@@ -1224,7 +1243,7 @@
 		}
 
 		if ((currentChar == '(' || currentChar == ')')
-		        && (shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens))
+		        && (shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen))
 		{
 			padParens();
 			continue;
@@ -1437,6 +1456,19 @@
 }
 
 /**
+ * set padding mode before one or more open parentheses.
+ * options:
+ *    true     first open parenthesis will be padded with a space before.
+ *    false    first open parenthesis will not be padded.
+ *
+ * @param state         the padding mode.
+ */
+void ASFormatter::setParensFirstPaddingMode(bool state)
+{
+	shouldPadFirstParen = state;
+}
+
+/**
  * set header padding mode.
  * options:
  *    true     headers will be padded with spaces around them.
@@ -1482,6 +1514,11 @@
 	shouldBreakOneLineBlocks = state;
 }
 
+void ASFormatter::setCloseTemplatesMode(bool state)
+{
+	shouldCloseTemplates = state;
+}
+
 /**
  * set option to break/not break lines consisting of multiple statements.
  *
@@ -1800,8 +1837,9 @@
 		// check if is in preprocessor before line trimming
 		// a blank line after a \ will remove the flag
 		isImmediatelyPostPreprocessor = isInPreprocessor;
-		if (previousNonWSChar != '\\'
-		        || isEmptyLine(currentLine))
+		if (!isInComment
+		        && (previousNonWSChar != '\\'
+		            || isEmptyLine(currentLine)))
 			isInPreprocessor = false;
 
 		if (passedSemicolon)
@@ -1845,11 +1883,15 @@
  */
 void ASFormatter::initNewLine()
 {
+	assert(getTabLength() > 0);
+
 	size_t len = currentLine.length();
-	size_t indent = getIndentLength();
+	size_t tabSize = getTabLength();
 	charNum = 0;
 
-	if (isInPreprocessor || isInQuoteContinuation)
+	// don't trim these
+	if (isInQuoteContinuation
+	        || (isInPreprocessor && !getPreprocessorIndent()))
 		return;
 
 	// SQL continuation lines must be adjusted so the leading spaces
@@ -1866,10 +1908,10 @@
 				break;
 			if (currentLine[i] == '\t')
 			{
-				size_t numSpaces = indent - ((tabCount_ + i) % indent);
+				size_t numSpaces = tabSize - ((tabCount_ + i) % tabSize);
 				currentLine.replace(i, 1, numSpaces, ' ');
 				tabCount_++;
-				i += indent - 1;
+				i += tabSize - 1;
 			}
 		}
 		// this will correct the format if EXEC SQL is not a hanging indent
@@ -1897,10 +1939,12 @@
 	currentLineFirstBracketNum = string::npos;
 	tabIncrementIn = 0;
 
+	// bypass whitespace at the start of a line
+	// preprocessor tabs are replaced later in the program
 	for (charNum = 0; isWhiteSpace(currentLine[charNum]) && charNum + 1 < (int) len; charNum++)
 	{
-		if (currentLine[charNum] == '\t')
-			tabIncrementIn += indent - 1 - ((tabIncrementIn + charNum) % indent);
+		if (currentLine[charNum] == '\t' && !isInPreprocessor)
+			tabIncrementIn += tabSize - 1 - ((tabIncrementIn + charNum) % tabSize);
 	}
 	leadingSpaces = charNum + tabIncrementIn;
 
@@ -1929,7 +1973,7 @@
 				for (j = charNum + 1; isWhiteSpace(currentLine[j]) && j < firstText; j++)
 				{
 					if (currentLine[j] == '\t')
-						tabIncrementIn += indent - 1 - ((tabIncrementIn + j) % indent);
+						tabIncrementIn += tabSize - 1 - ((tabIncrementIn + j) % tabSize);
 				}
 				leadingSpaces = j + tabIncrementIn;
 				if (currentLine.compare(firstText, 2, "/*") == 0)
@@ -1941,6 +1985,14 @@
 	{
 		lineIsEmpty = true;
 	}
+
+	// do not trim indented preprocessor define (except for comment continuation lines)
+	if (isInPreprocessor)
+	{
+		if (!doesLineStartComment)
+			leadingSpaces = 0;
+		charNum = 0;
+	}
 }
 
 /**
@@ -1969,7 +2021,7 @@
  * @param sequence         the sequence to append.
  * @param canBreakLine     if true, a registered line-break
  */
-void ASFormatter::appendSequence(const string& sequence, bool canBreakLine)
+void ASFormatter::appendSequence(const string &sequence, bool canBreakLine)
 {
 	if (canBreakLine && isInLineBreak)
 		breakLine();
@@ -2069,7 +2121,7 @@
 	        || isBracketType(bracketTypeStack->back(),  ARRAY_TYPE))
 	        && previousCommandChar != ')')
 		returnVal = ARRAY_TYPE;
-	else if (foundPreDefinitionHeader)
+	else if (foundPreDefinitionHeader && previousCommandChar != ')')
 	{
 		returnVal = DEFINITION_TYPE;
 		if (foundNamespaceHeader)
@@ -2130,13 +2182,13 @@
  *
  * @return        whether line is empty
  */
-bool ASFormatter::isEmptyLine(const string& line) const
+bool ASFormatter::isEmptyLine(const string &line) const
 {
 	return line.find_first_not_of(" \t") == string::npos;
 }
 
 /**
- * Check if the currently reached  '*' or '&' character is
+ * Check if the currently reached '*', '&' or '^' character is
  * a pointer-or-reference symbol, or another operator.
  * A pointer dereference (*) or an "address of" character (&)
  * counts as a pointer or reference because it is not an
@@ -2146,7 +2198,7 @@
  */
 bool ASFormatter::isPointerOrReference() const
 {
-	assert(currentChar == '*' || currentChar == '&');
+	assert(currentChar == '*' || currentChar == '&' || currentChar == '^');
 
 	if (isJavaStyle())
 		return false;
@@ -2261,7 +2313,7 @@
  */
 bool ASFormatter::isDereferenceOrAddressOf() const
 {
-	assert(currentChar == '*' || currentChar == '&');
+	assert(currentChar == '*' || currentChar == '&' || currentChar == '^');
 
 	if (isCharImmediatelyPostTemplate)
 		return false;
@@ -2312,7 +2364,7 @@
 
 	bool isDA = (!(isLegalNameChar(previousNonWSChar) || previousNonWSChar == '>')
 	             || (!isLegalNameChar(nextChar) && nextChar != '/')
-	             || (ispunct(previousNonWSChar) && previousNonWSChar != '.')
+	             || (ispunct((unsigned char)previousNonWSChar) && previousNonWSChar != '.')
 	             || isCharImmediatelyPostReturn);
 
 	return isDA;
@@ -2328,7 +2380,7 @@
  */
 bool ASFormatter::isPointerOrReferenceCentered() const
 {
-	assert(currentLine[charNum] == '*' || currentLine[charNum] == '&');
+	assert(currentLine[charNum] == '*' || currentLine[charNum] == '&' || currentLine[charNum] == '^');
 
 	int prNum = charNum;
 	int lineLength = (int) currentLine.length();
@@ -2453,7 +2505,7 @@
  *             1 = one-line bracket has been reached.
  *             2 = one-line bracket has been reached and is followed by a comma.
  */
-int ASFormatter::isOneLineBlockReached(string& line, int startChar) const
+int ASFormatter::isOneLineBlockReached(string &line, int startChar) const
 {
 	assert(line[startChar] == '{');
 
@@ -2578,7 +2630,7 @@
  * @param   the first line to check
  * @return  the next non-whitespace substring.
  */
-string ASFormatter::peekNextText(const string& firstLine, bool endOnEmptyLine /*false*/, bool shouldReset /*false*/) const
+string ASFormatter::peekNextText(const string &firstLine, bool endOnEmptyLine /*false*/, bool shouldReset /*false*/) const
 {
 	bool isFirstLine = true;
 	bool needReset = shouldReset;
@@ -2763,6 +2815,10 @@
 	                  && !(newOperator == &AS_GCC_MIN_ASSIGN
 	                       && ASBase::peekNextChar(currentLine, charNum+1) == '>')
 	                  && !(newOperator == &AS_GR && previousNonWSChar == '?')
+	                  && !(newOperator == &AS_QUESTION			// check for Java wildcard
+	                       && (previousNonWSChar == '<'
+	                           || ASBase::peekNextChar(currentLine, charNum) == '>'
+	                           || ASBase::peekNextChar(currentLine, charNum) == '.'))
 	                  && !isInCase
 	                  && !isInAsm
 	                  && !isInAsmOneLine
@@ -2771,7 +2827,8 @@
 
 	// pad before operator
 	if (shouldPad
-	        && !(newOperator == &AS_COLON && !foundQuestionMark)
+	        && !(newOperator == &AS_COLON
+	             && (!foundQuestionMark && !isInEnum) && currentHeader != &AS_FOR)
 	        && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?)
 	             && currentLine.find(':', charNum+1) == string::npos)
 	   )
@@ -2808,12 +2865,12 @@
  */
 void ASFormatter::formatPointerOrReference(void)
 {
-	assert(currentChar == '*' || currentChar == '&');
+	assert(currentChar == '*' || currentChar == '&' || currentChar == '^');
 	assert(!isJavaStyle());
 
 	int pa = pointerAlignment;
 	int ra = referenceAlignment;
-	int itemAlignment = (currentChar == '*') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);
+	int itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);
 
 	// check for cast
 	char peekedChar = peekNextChar();
@@ -2887,8 +2944,7 @@
 			wsBefore = 0;
 		else
 			wsBefore = charNum - wsBefore - 1;
-		// adjust for **
-		string sequenceToInsert = currentChar == '*' ? "*" : "&";
+		string sequenceToInsert(1, currentChar);
 		if (isSequenceReached("**"))
 		{
 			sequenceToInsert = "**";
@@ -2959,7 +3015,7 @@
 	else if (itemAlignment == PTR_ALIGN_NAME)
 	{
 		size_t startNum = formattedLine.find_last_not_of(" \t");
-		string sequenceToInsert = currentChar == '*' ? "*" : "&";
+		string sequenceToInsert(1, currentChar);
 		if (isSequenceReached("**"))
 		{
 			sequenceToInsert = "**";
@@ -3031,14 +3087,14 @@
  */
 void ASFormatter::formatPointerOrReferenceCast(void)
 {
-	assert(currentChar == '*' || currentChar == '&');
+	assert(currentChar == '*' || currentChar == '&' || currentChar == '^');
 	assert(!isJavaStyle());
 
 	int pa = pointerAlignment;
 	int ra = referenceAlignment;
-	int itemAlignment = (currentChar == '*') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);
+	int itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);
 
-	string sequenceToInsert = currentChar == '*' ? "*" : "&";
+	string sequenceToInsert(1, currentChar);
 	if (isSequenceReached("**"))
 	{
 		sequenceToInsert = "**";
@@ -3169,10 +3225,14 @@
 		}
 
 		// pad open paren outside
-		char peekedCharOutside = peekNextChar();
-		if (shouldPadParensOutside)
+		if (shouldPadFirstParen && previousChar != '(')
+			appendSpacePad();
+		else if (shouldPadParensOutside)
+		{
+			char peekedCharOutside = peekNextChar();
 			if (!(currentChar == '(' && peekedCharOutside == ')'))
 				appendSpacePad();
+		}
 
 		appendCurrentChar();
 
@@ -3703,8 +3763,26 @@
 	        && formattedLine.find_first_not_of(" \t", lastText+1) == string::npos)
 		formattedLine.erase(lastText+1);
 
-	if (getIndentString() == "\t")
+	if (getForceTabIndentation() && getIndentLength() != getTabLength())
 	{
+		// insert the space indents
+		string indent;
+		int indentLength_ = getIndentLength();
+		int tabLength_ = getTabLength();
+		indent.append(indentLength_, ' ');
+		if (extraIndent)
+			indent.append(indentLength_, ' ');
+		// replace spaces indents with tab indents
+		size_t tabCount = indent.length() / tabLength_;		// truncate extra spaces
+		indent.erase(0U, tabCount * tabLength_);
+		indent.insert(0U, tabCount, '\t');
+		horstmannIndentChars = indentLength_;
+		if (indent[0] == ' ')			// allow for bracket
+			indent.erase(0, 1);
+		formattedLine.append(indent);
+	}
+	else if (getIndentString() == "\t")
+	{
 		appendChar('\t', false);
 		horstmannIndentChars = 2;	// one for { and one for tab
 		if (extraIndent)
@@ -3713,15 +3791,15 @@
 			horstmannIndentChars++;
 		}
 	}
-	else
+	else // spaces
 	{
-		int indent = getIndentLength();
-		formattedLine.append(indent-1, ' ');
-		horstmannIndentChars = indent;
+		int indentLength_ = getIndentLength();
+		formattedLine.append(indentLength_ - 1, ' ');
+		horstmannIndentChars = indentLength_;
 		if (extraIndent)
 		{
-			formattedLine.append(indent, ' ');
-			horstmannIndentChars += indent;
+			formattedLine.append(indentLength_, ' ');
+			horstmannIndentChars += indentLength_;
 		}
 	}
 	isInHorstmannRunIn = true;
@@ -3782,7 +3860,7 @@
  * used for all vectors except bracketTypeStack
  */
 template<typename T>
-void ASFormatter::deleteContainer(T& container)
+void ASFormatter::deleteContainer(T &container)
 {
 	if (container != NULL)
 	{
@@ -3809,7 +3887,7 @@
  * used for all vectors except bracketTypeStack
  */
 template<typename T>
-void ASFormatter::initContainer(T& container, T value)
+void ASFormatter::initContainer(T &container, T value)
 {
 	// since the ASFormatter object is never deleted,
 	// the existing vectors must be deleted before creating new ones
@@ -3829,13 +3907,14 @@
 void ASFormatter::convertTabToSpaces()
 {
 	assert(currentLine[charNum] == '\t');
+	assert(getTabLength() > 0);
 
 	// do NOT replace if in quotes
 	if (isInQuote || isInQuoteContinuation)
 		return;
 
-	size_t indent = getIndentLength();
-	size_t numSpaces = indent - ((tabIncrementIn + charNum) % indent);
+	size_t tabSize = getTabLength();
+	size_t numSpaces = tabSize - ((tabIncrementIn + charNum) % tabSize);
 	currentLine.replace(charNum, 1, numSpaces, ' ');
 	currentChar = currentLine[charNum];
 }
@@ -3875,7 +3954,7 @@
  * if a header follows, the comments are kept as part of the header block.
  * firstLine must contain the start of the comment.
  */
-void ASFormatter::checkForHeaderFollowingComment(const string& firstLine)
+void ASFormatter::checkForHeaderFollowingComment(const string &firstLine)
 {
 	assert(isInComment || isInLineComment);
 	// this is called ONLY IF shouldBreakBlocks is TRUE.
@@ -3907,7 +3986,7 @@
 
 /**
  * process preprocessor statements.
- * charNum should be the index of the preprocessor directive.
+ * charNum should be the index of the #.
  *
  * delete bracketTypeStack entries added by #if if a #else is found.
  * prevents double entries in the bracketTypeStack.
@@ -3916,8 +3995,11 @@
 {
 	assert(currentChar == '#');
 
-	const int preproc = charNum + 1;
+	const size_t preproc = currentLine.find_first_not_of(" \t", charNum + 1);
 
+	if (preproc == string::npos)
+		return;
+
 	if (currentLine.compare(preproc, 2, "if") == 0)
 	{
 		preprocBracketTypeStackSize = bracketTypeStack->size();
@@ -4441,7 +4523,7 @@
  *
  * @return is the previous word or an empty string if none found.
  */
-string ASFormatter::getPreviousWord(const string& line, int currPos) const
+string ASFormatter::getPreviousWord(const string &line, int currPos) const
 {
 	// get the last legal word (may be a number)
 	if (currPos == 0)
@@ -4589,7 +4671,7 @@
  * @param searchStart  the start position on the line (default is 0).
  * @return the position on the line or string::npos if not found.
  */
-size_t ASFormatter::findNextChar(string& line, char searchChar, int searchStart /*0*/)
+size_t ASFormatter::findNextChar(string &line, char searchChar, int searchStart /*0*/)
 {
 	// find the next searchChar
 	size_t i;
@@ -4643,7 +4725,7 @@
  * @param index         the current line index.
  * @return              true if the struct has access modifiers.
  */
-bool ASFormatter::isStructAccessModified(string&  firstLine, size_t index) const
+bool ASFormatter::isStructAccessModified(string  &firstLine, size_t index) const
 {
 	assert(firstLine[index] == '{');
 	assert(isCStyle());
@@ -4746,7 +4828,7 @@
  * @param index         the current line index.
  * @return              true if the statement is EXEC SQL.
  */
-bool ASFormatter::isExecSQL(string&  line, size_t index) const
+bool ASFormatter::isExecSQL(string  &line, size_t index) const
 {
 	if (line[index] != 'e' && line[index] != 'E')	// quick check to reject most
 		return false;
@@ -4779,8 +4861,10 @@
  */
 void ASFormatter::trimContinuationLine()
 {
+	assert(getTabLength() > 0);
+
 	size_t len = currentLine.length();
-	size_t indent = getIndentLength();
+	size_t tabSize = getTabLength();
 	charNum = 0;
 
 	if (leadingSpaces > 0 && len > 0)
@@ -4797,7 +4881,7 @@
 				break;
 			}
 			if (currentLine[i] == '\t')
-				continuationIncrementIn += indent - 1 - ((continuationIncrementIn + i) % indent);
+				continuationIncrementIn += tabSize - 1 - ((continuationIncrementIn + i) % tabSize);
 		}
 
 		if ((int) continuationIncrementIn == tabIncrementIn)
@@ -4911,6 +4995,7 @@
 		else if (currentChar_ == ','       // comma,     e.g. A<int, char>
 		         || currentChar_ == '&'    // reference, e.g. A<int&>
 		         || currentChar_ == '*'    // pointer,   e.g. A<int*>
+		         || currentChar_ == '^'    // C++/CLI managed pointer, e.g. A<int^>
 		         || currentChar_ == ':'    // ::,        e.g. std::string
 		         || currentChar_ == '='    // assign     e.g. default parameter
 		         || currentChar_ == '['    // []         e.g. string[]
@@ -4920,7 +5005,7 @@
 		{
 			continue;
 		}
-		else if (!isLegalNameChar(currentChar_))
+		else if (!isLegalNameChar(currentChar_) && currentChar_ != '?')
 		{
 			// this is not a template -> leave...
 			isInTemplate = false;
@@ -5053,7 +5138,7 @@
 	}
 }
 
-void ASFormatter::updateFormattedLineSplitPointSequence(const string& sequence)
+void ASFormatter::updateFormattedLineSplitPointSequence(const string &sequence)
 {
 	assert(formattedLine.length() > 0);
 
@@ -5305,7 +5390,7 @@
  * Compute the input checksum.
  * This is called as an assert so it for is debug config only
  */
-bool ASFormatter::computeChecksumIn(const string& currentLine_)
+bool ASFormatter::computeChecksumIn(const string &currentLine_)
 {
 	for (size_t i = 0; i < currentLine_.length(); i++)
 		if (!isWhiteSpace(currentLine_[i]))
@@ -5327,7 +5412,7 @@
  * Compute the output checksum.
  * This is called as an assert so it is for debug config only
  */
-bool ASFormatter::computeChecksumOut(const string& beautifiedLine)
+bool ASFormatter::computeChecksumOut(const string &beautifiedLine)
 {
 	for (size_t i = 0; i < beautifiedLine.length(); i++)
 		if (!isWhiteSpace(beautifiedLine[i]))
Index: src/plugins/astyle/astyle/index.html
===================================================================
--- src/plugins/astyle/astyle/index.html	(revision 7913)
+++ src/plugins/astyle/astyle/index.html	(working copy)
@@ -129,7 +129,7 @@
         Artistic Style has compile options for creating a shared library (DLL) or static library for use with a Graphical
         User Interface (GUI). With the Java Development Kit (JDK) installed it can be compiled as a Java Native Interface
         (JNI) and called from a Java program. The Developer Information documents the calling procedure and has example
-        programs for C++, Java, and C#.</p>
+        programs for C++, Java, C#, and Python.</p>
 
     <h3>
         Bug Reports, Change Requests, Notification</h3>
@@ -166,7 +166,7 @@
         Emilio&nbsp;Guijarro, Jens&nbsp;Krinke, Eran&nbsp;Ifrah, Travis&nbsp;Robinson, Max&nbsp;Horn, Ettl&nbsp;Martin,
         Mario&nbsp;Gleichmann, J&nbsp;P&nbsp;Nurmi, Colin&nbsp;D&nbsp;Bennett, Christian&nbsp;Stimming, MrTact, Wim&nbsp;Rosseel,
         Matthew&nbsp;Woehlke, Chris&nbsp;Schwarz, Chang&nbsp;Jiang, Arseny&nbsp;Solokha, Milian Wolff, Johannes Martin,
-        Arne F?rlie, Marvin Humphrey, J, &nbsp;for their patches and contributions
+        Arne F?rlie, Marvin Humphrey, J, Christopher Sean Morrison, &nbsp;&nbsp;Keith OHara,&nbsp;louis6g,&nbsp; for their patches and contributions
         to Artistic Style.</p>
     <p>
         Thanks to <strong><a href="http://sourceforge.net">SourceForge</a></strong> for giving Artistic Style its home.</p>
