]> git.donarmstrong.com Git - perltidy.git/blobdiff - CHANGES
Update upstream source from tag 'upstream/20180220'
[perltidy.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 348c11caaec8b7a2b981325f14cabd15ac809e54..8415f570d11440b2568b62df42e8a18919e84b6a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,396 @@
 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 
+        a signature, if it was in a list.  Thanks to Dmytro Zagashev.
+
+      - Corrected a minor problem in which occasional extra indentation was
+        given to the closing brace of an anonymous sub in a list when the -lp 
+        parameter was set.
+
+  2016 03 01
+      - RT #104427. Added support for signatures.
+
+      - RT #111512.  Changed global warning flag $^W = 1 to use warnings;
+        Thanks to Dmytro Zagashev.
+
+      - RT #110297, added support for new regexp modifier /n
+        Thanks to Dmytro Zagashev.
+
+      - RT #111519.  The -io (--indent-only) and -dac (--delete-all-comments)
+        can now both be used in one pass. Thanks to Dmitry Veltishev.
+
+      - Patch to avoid error message with 'catch' used by TryCatch, as in
+           catch($err){
+              # do something
+           }
+        Thanks to Nick Tonkin.
+
+      - RT #32905, UTF-8 coding is now more robust. Thanks to qsimpleq
+        and Dmytro for patches.
+
+      - RT #106885. Added string bitwise operators ^. &. |. ~. ^.= &.= |.=
+      - Fixed RT #107832 and #106492, lack of vertical alignment of two lines
+        when -boc flag (break at old commas) is set.  This bug was 
+        inadvertantly introduced in previous bug fix RT #98902. 
+
+      - Some common extensions to Perl syntax are handled better.
+        In particular, the following snippet is now foratted cleanly:
+
+          method deposit( Num $amount) {
+              $self->balance( $self->balance + $amount );
+          }
+
+        A new flag -xs (--extended-syntax) was added to enable this, and the default
+        is to use -xs. 
+
+        In previous versions, and now only when -nxs is set, this snippet of code
+        generates the following error message:
+
+        "syntax error at ') {', didn't see one of: case elsif for foreach given if switch unless until when while"
+
+  2015 08 15
+      - Fixed RT# 105484, Invalid warning about 'else' in 'switch' statement.  The
+        warning happened if a 'case' statement did not use parens.
+
+      - Fixed RT# 101547, misparse of // caused error message.  Also..
+
+      - Fixed RT# 102371, misparse of // caused unwated space in //=
+
+      - Fixed RT# 100871, "silent failure of HTML Output on Windows". 
+        Changed calls to tempfile() from:
+          my ( $fh_tmp, $tmpfile ) = tempfile();
+        to have the full path name:
+          my ( $fh_tmp, $tmpfile ) = File::Temp::tempfile()
+        because of problems in the Windows version reported by Dean Pearce.
+
+      - Fixed RT# 99514, calling the perltidy module multiple times with 
+        a .perltidyrc file containing the parameter --output-line-ending 
+        caused a crash.  This was a glitch in the memoization logic. 
+
+      - Fixed RT#99961, multiple lines inside a cast block caused unwanted
+        continuation indentation.  
+
+      - RT# 32905, broken handling of UTF-8 strings. 
+        A new flag -utf8 causes perltidy assume UTF-8 encoding for input and 
+        output of an io stream.  Thanks to Sebastian Podjasek for a patch.  
+        This feature may not work correctly in older versions of Perl. 
+        It worked in a linux version 5.10.1 but not in a Windows version 5.8.3 (but
+        otherwise perltidy ran correctly).
+
+      - Warning files now report perltidy VERSION. Suggested by John Karr.
+      - Fixed long flag --nostack-closing-tokens (-nsct has always worked though). 
+        This was due to a typo.  This also fixed --nostack-opening-tokens to 
+        behave correctly.  Thanks to Rob Dixon.
+
+  2014 07 11
+      - Fixed RT #94902: abbreviation parsing in .perltidyrc files was not
+        working for multi-line abbreviations.  Thanks to Eric Fung for 
+        supplying a patch. 
+  
+      - Fixed RT #95708, misparsing of a hash when the first key was a perl
+        keyword, causing a semicolon to be incorrectly added.
+
+      - Fixed RT #94338 for-loop in a parenthesized block-map.  A code block within
+        parentheses of a map, sort, or grep function was being mistokenized.  In 
+        rare cases this could produce in an incorrect error message.  The fix will
+        produce some minor formatting changes.  Thanks to Daniel Trizen 
+        discovering and documenting this.
+
+      - Fixed RT #94354, excess indentation for stacked tokens.  Thanks to 
+        Colin Williams for supplying a patch.
+
+      - Added support for experimental postfix dereferencing notation introduced in
+        perl 5.20. RT #96021.
+
+      - Updated documentation to clarify the behavior of the -io flag
+        in response to RT #95709.  You can add -noll or -l=0 to prevent 
+        long comments from being outdented when -io is used.
+
+      - Added a check to prevent a problem reported in RT #81866, where large
+        scripts which had been compressed to a single line could not be formatted
+        because of a check for VERSION for MakeMaker. The workaround was to 
+        use -nvpl, but this shouldn't be necessary now.
+
+      - Fixed RT #96101; Closing brace of anonymous sub in a list was being
+        indented.  For example, the closing brace of the anonymous sub below 
+        will now be lined up with the word 'callback'.  This problem 
+        occured if there was no comma after the closing brace of the anonymous sub.  
+        This update may cause minor changes to formatting of code with lists 
+        of anonymous subs, especially TK code.
+    
+        # OLD
+        my @menu_items = (
+
+            #...
+            {
+                path     => '/_Operate/Transcode and split',
+                callback => sub {
+                    return 1 if not $self->project_opened;
+                    $self->comp('project')->transcode( split => 1 );
+                  }
+            }
+        );
+
+        # NEW
+        my @menu_items = (
+
+            #...
+            {
+                path     => '/_Operate/Transcode and split',
+                callback => sub {
+                    return 1 if not $self->project_opened;
+                    $self->comp('project')->transcode( split => 1 );
+                }
+            }
+        );
+
   2014 03 28
       - Fixed RT #94190 and debian Bug #742004: perltidy.LOG file left behind.
         Thanks to George Hartzell for debugging this.  The problem was
@@ -1097,8 +1489,8 @@ Perltidy Change Log
 
      -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.