1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730
|
<!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</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" />
<!-- the following styles are temporary for the survey -->
<style type="text/css">
h3.survey { color:#FF0000; margin-top:0.4in; margin-left:-0.4in; }
a.survey:link, a.survey:visited { color:#FF0000; text-decoration:underline; }
a.survey:hover { color:#0000A0; text-decoration:underline; }
</style>
<!-- end of survey -->
</head>
<body>
<h1>
Artistic Style News</h1>
<p>
</p>
<h3 class="survey">
Artistic Style Survey</h3>
<p>
This release has a survey that will be used to determine how Artistic Style is used and to set priorities for
future enhancements. It consists of less than 25 questions, most of which are multiple choice. To take the survey
you should have used Artistic Style long enough to be familiar with the options.</p>
<p>
The survey contains general questions about your programming environment and your use of Artistic Style and its
various options. At the end are questions about changes you would like to see and complaints you may have. No
personal information is asked for or collected.</p>
<p>
Please <a class="survey" href="http://astyle.sourceforge.net/redirect.html" target="survey" title="open new window">
take the survey</a> to help determine the priorities for Artistic Style. Survey results will be posted on
this website at the end of the survey.</p>
<h3>
<p>
Artistic Style 2.01 (November 2010)</p>
</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 feature at SourceForge is download maps that show a list of downloads by country. It is available from the
top menu at Develop > Download Stats (Beta), and clicking on the "top country" area. The list of downloads
shows about 75% of Artistic Style downloads are from non English speaking countries. This release is the start of the internationalization of Artistic Style.</p>
<p>
Artistic Style now sets the native local so that characters from the user’s native language will be recognized
in directory names and file names. Artistic Style for Windows has also been changed to use the native locale.
For Linux systems using UTF-8 locales, characters from any language will be recognized and any combination of
languages can be used. For Windows, only languages recognized by the native codepage can be used. For example,
the English locale (codepage 1252) also has French, German, Italian, Portuguese, Spanish, plus several other languages.
Other locals, such as Chinese and Japanese, only support one language. Unicode was not used due to the varying
degree of support by different compilers for console applications.</p>
<p>
The locale setting also affects the way numbers are displayed. Language translations may be provided in a future
release.
</p>
<p>
This is a major release (2.01) because of the internationalization and changes that will occur in the next couple
of releases. Future releases will contain a major change to the bracket options and a rewrite of the file access
method. Some of the requested changes require looking at blocks of code instead of single lines. The current program
has been patched to do this but a rewrite of the file input is needed. These are both major changes but with the
new test framework in place they should be manageable.</p>
<p>
There has been a change to the ‑‑min‑conditional‑indent option. Instead of using the number
of spaces it now uses a code expressed in number of indents. This will allow the option to be set independently
of the spaces per indent. If you are using the default setting of two indents, or a setting of zero indents, there
is no change necessary to the input. Otherwise, check the documentation for the new codes.</p>
<p>
The --style=linux has been changed to ALWAYS use a minimum conditional indent of one-half the indent length. This
is in the style definition and cannot be changed. If you do not want this setting use the K&R style instead.
</p>
<p>
The MFC macros BEGIN_DISPATCH_MAP, BEGIN_EVENT_MAP, and BEGIN_PROPPAGEIDS are now formatted.
</p>
<p>
Checksum verification has been added to source file output that will help assure that no code has been duplicated
or omitted. This is effective only in the debug configuration used for testing.</p>
<p>
The test framework has been changed from UnitTest++ to <a href="http://code.google.com/p/googletest/" target="_blank"
title="open new window">Google Test</a>, which is actively maintained, has a mock object framework (<a href="http://code.google.com/p/googlemock/"
target="_blank" title="open new window">Google Mock</a>), and good documentation. Regression and system
testing have been automated with Python scripts. Python has also been used for class verification checks and other
repetitive procedures.</p>
<p>
If you use Visual Studio C++ Express the 2010 release has the ability to create x64 code. But you must use Vista
or Windows 7 and need to install the .NET Framework SDK. I have created a brief instruction page <a href="vsinstall.html"
target="_blank" title="open new window">here</a>.</p>
<p>
Thanks to Matthew Woehlke, Chris Schwarz, Chang Jiang, and Arseny Solokha for their contributions.</p>
<h4>
Developers</h4>
<p>
On the library build of Artistic Style, the second argument of the fpError typedef and the javaErrorHandler declaration
has been changed from "char*" to "const char*". This could cause a compile error if not changed in the source
statements.</p>
<p>
There has been a change in the ‑‑min‑conditional‑indent option. Instead of using number
of spaces to indent it now uses a code expressed in number of indents. In the past this option was a problem because
it was also affected by changes in indent length. With this release there is only one variable affected. The option
is not affected by changes in indent length. The minimum conditional indent length is computed automatically by
ASFormatter after all the options have been processed. Refer to the code in astyle_main.cpp to see how the option
is processed.</p>
<p>
The --style=linux has been changed to ALWAYS use a minimum conditional indent of one-half the indent length. The
option is set in the function fixOptionVariableConflicts.</p>
<p>
The use of locales affects only the command line build.</p>
<h3>
Artistic Style 1.24 (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, ‑‑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 "Tab and Bracket Options" section in the documentation contains the
details. To accommodate Hostmann brackets the "none mode" 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 "Developer Information" section have been changed to Horstmann brackets.</p>
<p>
Two new options, ‑‑add‑brackets (-j) and ‑‑add‑one‑line‑brackets
(-J), will add brackets to unbracketed one line conditional statements. The ‑‑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 ‑‑add‑one‑line‑brackets
will add the brackets as single line brackets. This option implies ‑‑keep‑one‑line‑blocks
and will not break single line blocks.
</p>
<p>
The above options allow two new predefined styles. Horstmann style, ‑‑style=horstmann (-A9), uses
Horstmann brackets and three spaces per indent. The so called "One True Brace Style", ‑‑style=1tbs
or ‑‑style=otbs (-A10), uses linux brackets and the option ‑‑add‑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 ‑‑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, ‑‑pad‑header (‑H), will insert space padding after headers ('if', 'for',
'while'...). To remove any unwanted current space padding, use the option ‑‑unpad‑paren (‑U).
If both ‑‑pad‑header and ‑‑unpad‑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), ‑‑align‑pointer=middle (-k2), and ‑‑align‑pointer=name
(-k3) will attach a pointer or reference operator (* or &) 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 ‑‑pad‑oper
(-p) option.</p>
<p>
A new option, ‑‑indent‑col1‑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 (-z1), --lineend=linux (-z2), and --lineend=macold (-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 ‑‑max‑in‑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 "Install Information".</p>
<p>
The Intel compiler for Linux, release 11.1, has a new procedure for compiles. Read the new "Install Information"
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 (<<
and >> 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‑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 (-z1), --lineend=linux (-z2), and --lineend=macold (-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 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>
</p>
<h3>
Artistic Style 1.23 (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&R (with an &), Stroustrup, Whitesmith, and Banner. K&R
style uses Linux type brackets where the depreciated KR style uses attached brackets. Notice that K&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 style</th>
<th> </th>
<th>new 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&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>
</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‑brackets,
indent‑classes, and indent‑swiches on a class or switch block to see the results.</p>
<p>
The GNU style and indent‑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‑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
'=' 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 option</th>
<th> </th>
<th>new 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>
</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‑elseifs'
is specified. Most users want the statements joined since breaking them requires an extra indent.</p>
<p>
The convert‑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‑tabs is used when changing the spaces per tab. The tabs are NOT replaced
in quotes.</p>
<p>
The break‑blocks and break‑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‑empty‑lines option will delete empty lines within a function or method. If used with
break‑blocks or break‑blocks=all it will delete all lines EXCEPT the lines added by the break‑blocks
options.</p>
<p>
There is a new 'formatted' (‑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‑colons are now always space padded. All commas are space padded if pad‑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‑brackets and indent‑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‑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‑blocks
or break‑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>
</p>
<h3>
Artistic Style 1.22 (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
‑‑preserve‑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. (‑‑preserve‑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 ‑‑verbose (‑v) option will display optional information, such as release number and statistical
data. A new ‑‑quiet (-q) option will suppress all output except error messages. Some short options
have changed to accommodate the new options. The short option for ‑‑version is now -V (old -v) and
for ‑‑convert‑tabs is ‑c (old ‑V).</p>
<p>
A new ‑‑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 _CRT_glob = 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 (‑‑exclude=file‑or‑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‑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>
</p>
<h3>
Artistic Style 1.21 (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>
</p>
<h3>
Artistic Style 1.20 (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® is now offering it's C++ and Fortran compilers free for non-commercial use. Information is available
at the Intel® 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>
</p>
<h3>
Artistic Style 1.19 (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 (->) 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>
</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>
</center>
<p>
</p>
</body>
</html>
|