texlive[71532] trunk: latexindent (15jun24)
commits+karl at tug.org
commits+karl at tug.org
Sat Jun 15 21:53:26 CEST 2024
Revision: 71532
https://tug.org/svn/texlive?view=revision&revision=71532
Author: karl
Date: 2024-06-15 21:53:25 +0200 (Sat, 15 Jun 2024)
Log Message:
-----------
latexindent (15jun24)
Modified Paths:
--------------
trunk/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl
trunk/Master/bin/windows/latexindent.exe
trunk/Master/texmf-dist/doc/support/latexindent/README
trunk/Master/texmf-dist/doc/support/latexindent/contributors.bib
trunk/Master/texmf-dist/doc/support/latexindent/latexindent-yaml-schema.json
trunk/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
trunk/Master/texmf-dist/doc/support/latexindent/latexindent.tex
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm
trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
trunk/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
trunk/Master/texmf-dist/scripts/latexindent/latexindent.pl
Modified: trunk/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl
===================================================================
(Binary files differ)
Modified: trunk/Master/bin/windows/latexindent.exe
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/support/latexindent/README
===================================================================
--- trunk/Master/texmf-dist/doc/support/latexindent/README 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/doc/support/latexindent/README 2024-06-15 19:53:25 UTC (rev 71532)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- latexindent.pl, version 3.24.1, 2024-05-12
+ latexindent.pl, version 3.24.2, 2024-06-15
PERL script to indent code within environments, and align delimited
environments in .tex files.
Modified: trunk/Master/texmf-dist/doc/support/latexindent/contributors.bib
===================================================================
--- trunk/Master/texmf-dist/doc/support/latexindent/contributors.bib 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/doc/support/latexindent/contributors.bib 2024-06-15 19:53:25 UTC (rev 71532)
@@ -224,3 +224,14 @@
author = "Jesse Stricker",
urldate = {2023-07-12},
keywords = {contributor},}
+
+%
+% 2024
+%
+ at online{fengzyf,
+ title = "Encoding work",
+ url = "https://github.com/cmhughes/latexindent.pl/pull/548",
+ date = {2024-06-15},
+ author = "fengzyf",
+ urldate = {2024-06-15},
+ keywords = {contributor},}
Modified: trunk/Master/texmf-dist/doc/support/latexindent/latexindent-yaml-schema.json
===================================================================
--- trunk/Master/texmf-dist/doc/support/latexindent/latexindent-yaml-schema.json 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/doc/support/latexindent/latexindent-yaml-schema.json 2024-06-15 19:53:25 UTC (rev 71532)
@@ -2,7 +2,7 @@
"$schema": "http://json-schema.org/schema",
"$id": "latexindent-yaml-schema.json",
"title": "latexindent.pl YAML schema",
- "description": "latexindent.pl YAML schema helper, V3.24.1 2024-05-12",
+ "description": "latexindent.pl YAML schema helper, V3.24.2 2024-06-15",
"type": "object",
"properties": {
"fileExtensionPreference": {
@@ -1496,10 +1496,15 @@
"description": "fine tuning, for trailing comments",
"type": "object",
"properties": {
- "notPreceededBy": {
+ "notPrecededBy": {
"description": "regular expression for what can NOT come before %, for example \\%",
"type": "string"
},
+ "notPreceededBy": {
+ "description": "please use notPrecededBy instead",
+ "type": "string",
+ "deprecated": true
+ },
"afterComment": {
"description": "regular expression for what can come after %",
"type": "string"
Modified: trunk/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/support/latexindent/latexindent.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/latexindent/latexindent.tex 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/doc/support/latexindent/latexindent.tex 2024-06-15 19:53:25 UTC (rev 71532)
@@ -859,6 +859,9 @@
throughout this document for details}.
\subsection{Quick start}\label{sec:quickstart}
+ When \texttt{latexindent.pl} reads and writes files, the files are read and written in UTF-8 format by default.
+ That is to say, the encoding format for tex and yaml files needs to be in UTF-8 format.
+
If you'd like to get started with \texttt{latexindent.pl} then simply type
\begin{commandshell}
@@ -1224,6 +1227,10 @@
written to \texttt{indent.log}, but other additional information will be written
depending on which of the following options are used.
+ When using \texttt{latexindent.pl} in different ways on different systems, the range of
+ characters supported by its switches/flags/options may vary. We discuss these in Section
+ \cref{app:encoding}.
+
\flagbox{-v, --version}
\index{switches!-v, --version definition and details}
\announce{2017-06-25}{version}
@@ -1865,17 +1872,6 @@
\texttt{latexindent.yaml} and friends settings files. This can lead to creative nesting
of configuration files; a demonstration is given in \vref{sec:appendix:paths}.
- If you find that \announce{2021-06-19}{encoding option for indentconfig.yaml}
- \texttt{latexindent.pl} does not read your YAML file, then it might be as a result of
- the default commandline encoding not being UTF-8; normally this will only occur for
- Windows users. In this case, you might like to explore the \texttt{encoding} option for
- \texttt{indentconfig.yaml} as demonstrated in \cref{lst:indentconfig-encoding}.%
-
- \cmhlistingsfromfile[style=yaml-LST]{demonstrations/encoding.yaml}[yaml-TCB]{The \texttt{encoding} option for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding}
-
- Thank you to \cite{qiancy98} for this contribution; please see \vref{app:encoding} and
- details within \cite{encoding} for further information.
-
\subsection{localSettings.yaml and friends}\label{sec:localsettings}
The \texttt{-l} switch tells \texttt{latexindent.pl} to look for
\texttt{localSettings.yaml} and/or friends in the \emph{same directory} as
@@ -8567,8 +8563,8 @@
\begin{commandshell}
sudo apt-get install perlbrew
perlbrew init
-perlbrew install perl-5.34.0
-perlbrew switch perl-5.34.0
+perlbrew install perl-5.39.1
+perlbrew switch perl-5.39.1
sudo apt-get install curl
curl -L http://cpanmin.us | perl - App::cpanminus
cpanm YAML::Tiny
@@ -8614,21 +8610,19 @@
\index{latexindent-linux} \index{linux} \index{TeXLive}
\paragraph{Arch-based distributions}
- First install the dependencies
+ \texttt{latexindent} is included in Arch-packaged TeX Live, and can be installed by:
\begin{commandshell}
-sudo pacman -S perl cpanminus
+sudo pacman -S texlive-binextra perl-yaml-tiny perl-file-homedir
\end{commandshell}
- In addition, install \texttt{perl-file-homedir} from AUR, using your AUR helper of
- choice,
+ To enable optional \texttt{--GCString} switch, install
+ \texttt{perl-unicode-linebreak}:
\begin{commandshell}
-sudo paru -S perl-file-homedir
+sudo pacman -S perl-unicode-linebreak
\end{commandshell}
- then run the latexindent-module-installer.pl file located at helper-scripts/
-
\paragraph{Alpine}
If you are using Alpine, some \texttt{Perl} modules are not build-compatible with
Alpine, but replacements are available through \texttt{apk}. For example, you might
@@ -9427,21 +9421,33 @@
and \lstinline!-----! respectively.
\end{example}
- \section{Encoding indentconfig.yaml}\label{app:encoding}
- In relation to \vref{sec:indentconfig}, Windows users that encounter encoding issues
- with \texttt{indentconfig.yaml}, may wish to run the following command in either
- \texttt{cmd.exe} or \texttt{powershell.exe}:
+ \section{Encoding}\label{app:encoding}
+
+ When using latexindent in different ways on different systems, the range of characters
+ supported by its switches/flags/options (see \vref{sec:commandline}) may vary.
+
+ For the Windows executable file \texttt{latexindent.exe}, its options support UTF-8
+ characters.
+
+ For the Windows Perl script \texttt{latexindent.pl}, its option switch supports the
+ characters supported by the encoding corresponding to the system code page. You can
+ check the system code page by running the following command in either \texttt{cmd.exe}
+ or \texttt{powershell.exe}:
\begin{dosprompt}
-chcp
- \end{dosprompt}
- They may receive the following result
+ chcp
+ \end{dosprompt}
+ which may receive the following result
\begin{dosprompt}
-Active code page: 936
- \end{dosprompt}
- and can then use the settings given in \cref{lst:indentconfig-encoding1} within their
- \texttt{indentconfig.yaml}, where 936 is the result of the \texttt{chcp} command.
+ Active code page: 936
+ \end{dosprompt}
+ and then the characters supported by the code page can be found in \href{Microsoft's
+ code page identifier
+ table}{https://learn.microsoft.com/en-us/windows/win32/intl/code-page-identifiers}. For
+ example, the characters supported by the encoding corresponding to code page 936 are:
+ ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312).
- \cmhlistingsfromfile[style=yaml-LST]{demonstrations/encoding1.yaml}[yaml-TCB]{\texttt{encoding} demonstration for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding1}
+ For Ubuntu Linux and macOS users, whether using the Perl script or the executable file,
+ the options support UTF-8 characters.
\section{dos2unix linebreak adjustment}
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -389,37 +389,9 @@
# 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, $_ );
- }
- }
+ 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, $_ );
- }
- }
}
# if we can read userSettings
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -18,7 +18,7 @@
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/;
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -17,14 +17,14 @@
# 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/;
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -27,12 +27,20 @@
= 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 @@
$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 @@
# 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 ''
)
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -5,22 +5,39 @@
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 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 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 @@
}
}
else {
+ $filename = $encodingObject->encode($filename);
return -z $filename;
}
}
@@ -62,7 +81,7 @@
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 @@
}
}
else {
+ $filename = $encodingObject->encode($filename);
if ( open( $fh, $mode, $filename ) ) {
return $fh;
}
@@ -95,7 +115,7 @@
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));
@@ -102,6 +122,7 @@
return file_type( 'd', $path );
}
else {
+ $path = $encodingObject->encode($path);
return -d $path;
}
}
@@ -109,7 +130,7 @@
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 @@
else {
require File::Path;
File::Path->import(qw(make_path));
-
+ $path = $encodingObject->encode($path);
make_path($path);
}
}
@@ -126,7 +147,7 @@
#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 @@
@ARGV = @{$args};
}
else {
- my $encodingObject = "utf-8";
@ARGV = map { decode( $encodingObject, $_ ) } @ARGV;
our @new_args = @ARGV;
}
Modified: trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm 2024-06-15 19:53:25 UTC (rev 71532)
@@ -20,6 +20,6 @@
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
Modified: trunk/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml 2024-06-15 09:37:10 UTC (rev 71531)
+++ trunk/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml 2024-06-15 19:53:25 UTC (rev 71532)
@@ -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 @@
before: (?:#\d\h*;?,?\/?)+|\<.*?\>
between: _|\^|\*
trailingComments:
- notPreceededBy: (?<!\\)
+ notPrecededBy: (?<!\\)
afterComment: .*?
modifyLineBreaks:
doubleBackSlash: \\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?
Modified: trunk/Master/texmf-dist/scripts/latexindent/latexindent.pl
===================================================================
(Binary files differ)
More information about the tex-live-commits
mailing list.