diff options
author | Karl Berry <karl@freefriends.org> | 2024-06-15 19:53:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-06-15 19:53:25 +0000 |
commit | 5490425d5fc8c99183eba653433a23fa68b46c88 (patch) | |
tree | 4fafdf8f0bc16416cfb1aadf50c0ecf1f52eef22 /Master/texmf-dist/scripts/latexindent | |
parent | efc9844505cf57a0464ef92c0dea772bea1e299b (diff) |
latexindent (15jun24)
git-svn-id: svn://tug.org/texlive/trunk@71532 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/latexindent')
8 files changed, 59 insertions, 61 deletions
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm index 4d4940371d8..6365e0fd93b 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm @@ -389,36 +389,8 @@ sub yaml_read_settings { # output the contents of indentconfig to the log file $logger->info( Dump \%{ $userSettings->[0] } ); - # change the encoding of the paths according to the field `encoding` - if ( $userSettings and ( ref( $userSettings->[0] ) eq 'HASH' ) and $userSettings->[0]->{encoding} ) { - use Encode; - my $encoding = $userSettings->[0]->{encoding}; - my $encodingObject = find_encoding($encoding); - - # Check if the encoding is valid. - if ( ref($encodingObject) ) { - $logger->info("*Encoding of the paths is $encoding"); - foreach ( @{ $userSettings->[0]->{paths} } ) { - my $temp = $encodingObject->encode("$_"); - $logger->info("Transform file encoding: $_ -> $temp"); - push( @absPaths, $temp ); - } - } - else { - $logger->warn("*encoding \"$encoding\" not found"); - $logger->warn("Ignore this setting and will take the default encoding."); - @absPaths = @{ $userSettings->[0]->{paths} }; - foreach ( @{ $userSettings->[0]->{paths} } ) { - push( @absPaths, $_ ); - } - } - } - else # No such setting, and will take the default - { - # $logger->info("*Encoding of the paths takes the default."); - foreach ( @{ $userSettings->[0]->{paths} } ) { - push( @absPaths, $_ ); - } + foreach ( @{ $userSettings->[0]->{paths} } ) { + push( @absPaths, $_ ); } } diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm index 425c8eae07f..7c4352a95fd 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm @@ -18,7 +18,7 @@ package LatexIndent::Logger; use strict; use warnings; -use Exporter; +use Exporter qw/import/; use LatexIndent::Switches qw/%switches/; our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321 our @EXPORT_OK = qw/@logFileLines/; diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm index 096d2935c96..8dac47bfc0a 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm @@ -17,14 +17,14 @@ package LatexIndent::Special; # For all communication, please visit: https://github.com/cmhughes/latexindent.pl use strict; use warnings; +use Exporter qw/import/; use LatexIndent::Tokens qw/%tokens/; use LatexIndent::TrailingComments qw/$trailingCommentRegExp/; use LatexIndent::GetYamlSettings qw/%mainSettings/; use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/; use LatexIndent::LogFile qw/$logger/; -use LatexIndent::IfElseFi qw/$ifElseFiBasicRegExp/; +use LatexIndent::IfElseFi; use Data::Dumper; -use Exporter qw/import/; our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321 our @EXPORT_OK = qw/find_special construct_special_begin $specialBeginAndBracesBracketsBasicRegExp $specialBeginBasicRegExp/; diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm index 9d6532500aa..5e47ae3f3fb 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm @@ -27,12 +27,20 @@ our @EXPORT_OK = qw/remove_trailing_comments put_trailing_comments_back_in $trailingCommentRegExp add_comment_symbol construct_trailing_comment_regexp @trailingComments/; our @trailingComments; our $commentCounter = 0; +our $notPrecededByRegExp; our $trailingCommentRegExp; sub construct_trailing_comment_regexp { - my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/; + $notPrecededByRegExp = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPrecededBy}/; + my $notPreceededBy = ${${mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}; - $trailingCommentRegExp = qr/$notPreceededBy%$tokens{trailingComment}\d+$tokens{endOfToken}/; + if ( $notPreceededBy ) { + $logger->warn( + "*fineTuning:trailingComments:notPreceededBy is ok for now, but in future versions, fineTuning:trailingComments:notPrecededBy will be used" ); + $notPrecededByRegExp = qr/$notPreceededBy/; + } + + $trailingCommentRegExp = qr/$notPrecededByRegExp%$tokens{trailingComment}\d+$tokens{endOfToken}/; } sub add_comment_symbol { @@ -66,17 +74,16 @@ sub remove_trailing_comments { $logger->trace("*Storing trailing comments") if $is_t_switch_active; - my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/; - my $afterComment = qr/${${$mainSettings{fineTuning}}{trailingComments}}{afterComment}/; + my $afterComment = qr/${${$mainSettings{fineTuning}}{trailingComments}}{afterComment}/; # perform the substitution ${$self}{body} =~ s/ - $notPreceededBy # not preceded by a \ - % # % + $notPrecededByRegExp # not preceded by a \ + % # % ( - $afterComment # anything else + $afterComment # anything else ) - $ # up to the end of a line + $ # up to the end of a line / # increment comment counter and store comment $commentCounter++; @@ -134,14 +141,13 @@ sub put_trailing_comments_back_in { # replace the line-broken trailing comment ID with a non-broken trailing comment ID ${$self}{body} =~ s/%\R?$trailingcommentIDwithLineBreaksRegExp/%$trailingcommentID/s; } - my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/; if (${$self}{body} =~ m/%$trailingcommentID ( - (?! # not immediately preceded by - $notPreceededBy # \ - % # % + (?! # not immediately preceded by + $notPrecededByRegExp # \ + % # % ).*? - ) # captured into $1 + ) # captured into $1 (\h*)?$ /mx and $1 ne '' ) diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm index 45a2b6f5385..d6d8b595c02 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm @@ -5,22 +5,39 @@ use warnings; use feature qw( say state ); use utf8; use Config qw( %Config ); -use Encode qw( decode encode ); +use Encode qw(find_encoding decode encode ); use Exporter qw/import/; our @EXPORT_OK = qw/commandlineargs_with_encode @new_args copy_with_encode exist_with_encode open_with_encode zero_with_encode read_yaml_with_encode isdir_with_encode mkdir_with_encode/; +our $encodingObject; + +if ($^O eq 'MSWin32') { + my $encoding_sys = 'cp' . Win32::GetACP(); + $encodingObject = find_encoding( $encoding_sys ); + + # Check if the encoding is valid. + unless ( ref($encodingObject) ) { + $encodingObject = find_encoding( 'utf-8' ); + } +} +else { + $encodingObject = find_encoding( 'utf-8' ); +} + sub copy_with_encode { use File::Copy; my ( $source, $destination ) = @_; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::File; Win32::Unicode::File->import(qw(copyW)); copyW( $source, $destination, 1 ); } else { + $source = $encodingObject->encode($source); + $destination = $encodingObject->encode($destination); copy( $source, $destination ); } } @@ -28,12 +45,13 @@ sub copy_with_encode { sub exist_with_encode { my ($filename) = @_; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::File; Win32::Unicode::File->import(qw(statW)); return statW($filename); } else { + $filename = $encodingObject->encode($filename); return -e $filename; } } @@ -41,7 +59,7 @@ sub exist_with_encode { sub zero_with_encode { my ($filename) = @_; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::File; Win32::Unicode::File->import(qw(file_size)); my $size = file_size($filename); @@ -53,6 +71,7 @@ sub zero_with_encode { } } else { + $filename = $encodingObject->encode($filename); return -z $filename; } } @@ -62,7 +81,7 @@ sub open_with_encode { my $filename = shift; my $fh; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::File; Win32::Unicode::File->import; $fh = Win32::Unicode::File->new; @@ -74,6 +93,7 @@ sub open_with_encode { } } else { + $filename = $encodingObject->encode($filename); if ( open( $fh, $mode, $filename ) ) { return $fh; } @@ -95,13 +115,14 @@ sub read_yaml_with_encode { sub isdir_with_encode { my $path = shift; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::File; Win32::Unicode::File->import(qw(file_type)); return file_type( 'd', $path ); } else { + $path = $encodingObject->encode($path); return -d $path; } } @@ -109,7 +130,7 @@ sub isdir_with_encode { sub mkdir_with_encode { my $path = shift; - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::Unicode::Dir; Win32::Unicode::Dir->import(qw(mkdirW)); @@ -118,7 +139,7 @@ sub mkdir_with_encode { else { require File::Path; File::Path->import(qw(make_path)); - + $path = $encodingObject->encode($path); make_path($path); } } @@ -126,7 +147,7 @@ sub mkdir_with_encode { #https://stackoverflow.com/a/63868721 #https://stackoverflow.com/a/44489228 sub commandlineargs_with_encode { - if ( $FindBin::Script eq 'latexindent.exe' ) { + if ( $FindBin::Script =~ /\.exe$/ ) { require Win32::API; import Win32::API qw( ReadMemory ); @@ -207,7 +228,6 @@ sub commandlineargs_with_encode { @ARGV = @{$args}; } else { - my $encodingObject = "utf-8"; @ARGV = map { decode( $encodingObject, $_ ) } @ARGV; our @new_args = @ARGV; } diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm index 0198585f92b..5232967fb9c 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm @@ -20,6 +20,6 @@ use warnings; use Exporter qw/import/; our @EXPORT_OK = qw/$versionNumber $versionDate/; -our $versionNumber = '3.24.1'; -our $versionDate = '2024-05-12'; +our $versionNumber = '3.24.2'; +our $versionDate = '2024-06-15'; 1 diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml index 80120978ed8..15073c2f982 100755 --- a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml +++ b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml @@ -1,5 +1,5 @@ # -# latexindent.pl, version 3.24.1, 2024-05-12 +# latexindent.pl, version 3.24.2, 2024-06-15 # # defaultSettings.yaml, the default settings for latexindent.pl # @@ -649,7 +649,7 @@ fineTuning: before: (?:#\d\h*;?,?\/?)+|\<.*?\> between: _|\^|\* trailingComments: - notPreceededBy: (?<!\\) + notPrecededBy: (?<!\\) afterComment: .*? modifyLineBreaks: doubleBackSlash: \\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])? diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl index 36855f46e3a..c85bdf2047d 100755 --- a/Master/texmf-dist/scripts/latexindent/latexindent.pl +++ b/Master/texmf-dist/scripts/latexindent/latexindent.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# latexindent.pl, version 3.24.1, 2024-05-12 +# latexindent.pl, version 3.24.2, 2024-06-15 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by |