Perltidy Change Log
+ 2018 02 20
+ - RT #124469, #124494, perltidy often making empty files. The previous had
+ an index error causing it to fail, particularly in version 5.18 of Perl.
+
+ Please avoid version 20180219.
+
+ 2018 02 19
+ - RT #79947, cuddled-else generalization. A new flag -cb provides
+ 'cuddled-else' type formatting for an arbitrary type of block chain. The
+ default is try-catch-finally, but this can be modified with the
+ parameter -cbl.
+
+ - Fixed RT #124298: add space after ! operator without breaking !! secret
+ operator
+
+ - RT #123749: numerous minor improvements to the -wn flag were made.
+
+ - Fixed a problem with convergence tests in which iterations were stopping
+ prematurely.
+
+ - Here doc targets for <<~ type here-docs may now have leading whitespace.
+
+ - Fixed RT #124354. The '-indent-only' flag was not working correctly in the
+ previous release. A bug in version 20180101 caused extra blank lines
+ to be output.
+
+ - Issue RT #124114. Some improvements were made in vertical alignment
+ involving 'fat commas'.
+
+ 2018 01 01
+ - Added new flag -wn (--weld-nested-containers) which addresses these issues:
+ RT #123749: Problem with promises;
+ RT #119970: opening token stacking strange behavior;
+ RT #81853: Can't stack block braces
+
+ This option causes closely nested pairs of opening and closing containers
+ to be "welded" together and essentially be formatted as a single unit,
+ with just one level of indentation.
+
+ Since this is a new flag it is set to be "off" by default but it has given
+ excellent results in testing.
+
+ EXAMPLE 1, multiple blocks, default formatting:
+ do {
+ {
+ next if $x == $y; # do something here
+ }
+ } until $x++ > $z;
+
+ perltidy -wn
+ do { {
+ next if $x == $y;
+ } } until $x++ > $z;
+
+ EXAMPLE 2, three levels of wrapped function calls, default formatting:
+ p(
+ em(
+ conjug(
+ translate( param('verb') ), param('tense'),
+ param('person')
+ )
+ )
+ );
+
+ # perltidy -wn
+ p( em( conjug(
+ translate( param('verb') ),
+ param('tense'), param('person')
+ ) ) );
+
+ # EXAMPLE 3, chained method calls, default formatting:
+ get('http://mojolicious.org')->then(
+ sub {
+ my $mojo = shift;
+ say $mojo->res->code;
+ return get('http://metacpan.org');
+ }
+ )->then(
+ sub {
+ my $cpan = shift;
+ say $cpan->res->code;
+ }
+ )->catch(
+ sub {
+ my $err = shift;
+ warn "Something went wrong: $err";
+ }
+ )->wait;
+
+ # perltidy -wn
+ get('http://mojolicious.org')->then( sub {
+ my $mojo = shift;
+ say $mojo->res->code;
+ return get('http://metacpan.org');
+ } )->then( sub {
+ my $cpan = shift;
+ say $cpan->res->code;
+ } )->catch( sub {
+ my $err = shift;
+ warn "Something went wrong: $err";
+ } )->wait;
+
+
+ - Fixed RT #114359: Missparsing of "print $x ** 0.5;
+
+ - Deactivated the --check-syntax flag for better security. It will be
+ ignored if set.
+
+ - Corrected minimum perl version from 5.004 to 5.008 based on perlver
+ report. The change is required for coding involving wide characters.
+
+ - For certain severe errors, the source file will be copied directly to the
+ output without formatting. These include ending in a quote, ending in a
+ here doc, and encountering an unidentified character.
+
+ 2017 12 14
+ - RT #123749, partial fix. "Continuation indentation" is removed from lines
+ with leading closing parens which are part of a call chain.
+ For example, the call to pack() is is now outdented to the starting
+ indentation in the following experession:
+
+ # OLD
+ $mw->Button(
+ -text => "New Document",
+ -command => \&new_document
+ )->pack(
+ -side => 'bottom',
+ -anchor => 'e'
+ );
+
+ # NEW
+ $mw->Button(
+ -text => "New Document",
+ -command => \&new_document
+ )->pack(
+ -side => 'bottom',
+ -anchor => 'e'
+ );
+
+ This modification improves readability of complex expressions, especially
+ when the user uses the same value for continuation indentation (-ci=n) and
+ normal indentation (-i=n). Perltidy was already programmed to
+ do this but a minor bug was preventing it.
+
+ - RT #123774, added flag to control space between a backslash and a single or
+ double quote, requested by Robert Rothenberg. The issue is that lines like
+
+ $str1=\"string1";
+ $str2=\'string2';
+
+ confuse syntax highlighters unless a space is left between the backslash and
+ the quote.
+
+ The new flag to control this is -sbq=n (--space-backslash-quote=n),
+ where n=0 means no space, n=1 means follow existing code, n=2 means always
+ space. The default is n=1, meaning that a space will be retained if there
+ is one in the source code.
+
+ - Fixed RT #123492, support added for indented here doc operator <<~ added
+ in v5.26. Thanks to Chris Weyl for the report.
+
+ - Fixed docs; --closing-side-comment-list-string should have been just
+ --closing-side-comment-list. Thanks to F.Li.
+
+ - Added patch RT #122030] Perl::Tidy sometimes does not call binmode.
+ Thanks to Irilis Aelae.
+
+ - Fixed RT #121959, PERLTIDY doesn't honor the 'three dot' notation for
+ locating a config file using environment variables. Thanks to John
+ Wittkowski.
+
+ - Minor improvements to formatting, in which some additional vertical
+ aligmnemt is done. Thanks to Keith Neargarder.
+
+ - RT #119588. Vertical alignment is no longer done for // operator.
+
+ 2017 05 21
+ - Fixed debian #862667: failure to check for perltidy.ERR deletion can lead
+ to overwriting abritrary files by symlink attack. Perltidy was continuing
+ to write files after an unlink failure. Thanks to Don Armstrong
+ for a patch.
+
+ - Fixed RT #116344, perltidy fails on certain anonymous hash references:
+ in the following code snippet the '?' was misparsed as a pattern
+ delimiter rather than a ternary operator.
+ return ref {} ? 1 : 0;
+
+ - Fixed RT #113792: misparsing of a fat comma (=>) right after
+ the __END__ or __DATA__ tokens. These keywords were getting
+ incorrectly quoted by the following => operator.
+
+ - Fixed RT #118558. Custom Getopt::Long configuration breaks parsing
+ of perltidyrc. Perltidy was resetting the users configuration too soon.
+
+ - Fixed RT #119140, failure to parse double diamond operator. Code to
+ handle this new operator has been added.
+
+ - Fixed RT #120968. Fixed problem where -enc=utf8 didn't work
+ with --backup-and-modify-in-place. Thanks to Heinz Knutzen for this patch.
+
+ - Fixed minor formatting issue where one-line blocks for subs with signatures
+ were unnecesarily broken
+
+ - RT #32905, patch to fix utf-8 error when output was STDOUT.
+
+ - RT #79947, improved spacing of try/catch/finally blocks. Thanks to qsimpleq
+ for a patch.
+
+ - Fixed #114909, Anonymous subs with signatures and prototypes misparsed as
+ broken ternaries, in which a statement such as this was not being parsed
+ correctly:
+ return sub ( $fh, $out ) : prototype(*$) { ... }
+
+ - Implemented RT #113689, option to introduces spaces after an opening block
+ brace and before a closing block brace. Four new optional controls are
+ added. The first two define the minimum number of blank lines to be
+ inserted
+
+ -blao=i or --blank-lines-after-opening-block=i
+ -blbc=i or --blank-lines-before-closing-block=i
+
+ where i is an integer, the number of lines (the default is 0).
+
+ The second two define the types of blocks to which the first two apply
+
+ -blaol=s or --blank-lines-after-opening-block-list=s
+ -blbcl=s or --blank-lines-before-closing-block-list=s
+
+ where s is a string of possible block keywords (default is just 'sub',
+ meaning a named subroutine).
+
+ For more information please see the documentation.
+
+ - The method for specifying block types for certain input parameters has
+ been generalized to distinguish between normal named subroutines and
+ anonymous subs. The keyword for normal subroutines remains 'sub', and
+ the new keyword for anonymous subs is 'asub'.
+
+ - Minor documentation changes. The BUGS sections now have a link
+ to CPAN where most open bugs and issues can be reviewed and bug reports
+ can be submitted. The information in the AUTHOR and CREDITS sections of
+ the man pages have been removed from the man pages to streamline the
+ documentation. This information is still in the source code.
+
2016 03 02
- RT #112534. Corrected a minor problem in which an unwanted newline
was placed before the closing brace of an anonymous sub with
-improved breakpoint choices involving '->'
- -Corrected tokenization of things like ${#} or ${©}. For example,
- ${©} is valid, but ${© } is a syntax error.
+ -Corrected tokenization of things like ${#}. For example,
+ ${#} is valid, but ${# } is a syntax error.
-Corrected minor tokenization errors with indirect object notation.
For example, 'new A::()' works now.