summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-09-16 20:17:39 +0000
committerKarl Berry <karl@freefriends.org>2021-09-16 20:17:39 +0000
commitfd4d90b5caf562a8d951bb4a3b78a1aa74930017 (patch)
tree0149dcc8db072610a3563e4de0d64059b7d3a4e1
parentd1b9b9a5605416852eda15bb968ab490d42b47cf (diff)
latexindent (16sep21)
git-svn-id: svn://tug.org/texlive/trunk@60522 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/latexindent/latexindent.pl7
-rwxr-xr-xMaster/bin/win32/latexindent.exebin9803909 -> 9809944 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/README2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/appendices.tex46
-rw-r--r--Master/texmf-dist/doc/support/latexindent/cmhlistings.tex9
-rw-r--r--Master/texmf-dist/doc/support/latexindent/latexindent.pdfbin949988 -> 1001116 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/latexindent.tex29
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex29
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex77
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-the-line-switch.tex187
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex5
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-combine-text-wrap-para-line-breaks.tex16
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-remove-para-line-breaks.tex9
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-text-wrap-summary.tex2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-text-wrap.tex23
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex16
-rw-r--r--Master/texmf-dist/doc/support/latexindent/title.tex4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm8
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm16
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/BackUpFileProcedure.pm30
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/BlankLines.pm17
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Check.pm130
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/Command.pm14
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm61
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm6
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/FileContents.pm45
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm40
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm287
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Heading.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/HorizontalWhiteSpace.pm16
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm10
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Item.pm6
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm6
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Lines.pm266
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm24
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm2
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm42
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm14
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Preamble.pm35
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm40
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm24
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm7
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm12
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm6
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm54
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm4
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/defaultSettings.yaml6
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/latexindent.pl7
50 files changed, 1311 insertions, 397 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl b/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl
index 696fb2b7b8d..e27a8be07b7 100755
--- a/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl
+++ b/Build/source/texk/texlive/linked_scripts/latexindent/latexindent.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# latexindent.pl, version 3.11, 2021-07-31
+# latexindent.pl, version 3.12, 2021-09-16
#
# 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
@@ -47,6 +47,9 @@ GetOptions (
"replacement|r"=>\$switches{replacement},
"onlyreplacement|rr"=>\$switches{onlyreplacement},
"replacementrespectverb|rv"=>\$switches{replacementRespectVerb},
+ "check|k"=>\$switches{check},
+ "checkv|kv"=>\$switches{checkverbose},
+ "lines|n=s"=>\$switches{lines},
);
# check local settings doesn't interfer with reading the file;
@@ -67,6 +70,6 @@ if($switches{readLocalSettings} and scalar(@ARGV) < 1) {
# allow STDIN as input, if a filename is not present
unshift( @ARGV, '-' ) unless @ARGV;
-my $document = bless ({name=>"masterDocument",modifyLineBreaksYamlName=>"masterDocument",fileName=>$ARGV[0],switches=>\%switches},"LatexIndent::Document");
+my $document = bless ({name=>"mainDocument",modifyLineBreaksYamlName=>"mainDocument",fileName=>$ARGV[0],switches=>\%switches},"LatexIndent::Document");
$document->latexindent;
exit(0);
diff --git a/Master/bin/win32/latexindent.exe b/Master/bin/win32/latexindent.exe
index 8e5fa723032..135dcf5051e 100755
--- a/Master/bin/win32/latexindent.exe
+++ b/Master/bin/win32/latexindent.exe
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latexindent/README b/Master/texmf-dist/doc/support/latexindent/README
index 04fd1c5b5fc..85200ba048b 100644
--- a/Master/texmf-dist/doc/support/latexindent/README
+++ b/Master/texmf-dist/doc/support/latexindent/README
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- latexindent.pl, version 3.11, 2021-07-31
+ latexindent.pl, version 3.12, 2021-09-16
PERL script to indent code within environments, and align delimited
environments in .tex files.
diff --git a/Master/texmf-dist/doc/support/latexindent/appendices.tex b/Master/texmf-dist/doc/support/latexindent/appendices.tex
index bbeefb5fd13..617abe1bdc4 100644
--- a/Master/texmf-dist/doc/support/latexindent/appendices.tex
+++ b/Master/texmf-dist/doc/support/latexindent/appendices.tex
@@ -46,14 +46,15 @@ perl latexindent-module-installer.pl
then, once you have answered \texttt{Y}, the appropriate modules will be installed onto
your distribution.
- \subsection{Manually installed modules}\label{sec:manual-module-instal}
+ \subsection{Manually installing modules}\label{sec:manual-module-instal}
Manually installing the modules given in \cref{lst:helloworld} will vary depending on
your operating system and \texttt{Perl} distribution.
\subsubsection{Linux}
- Linux users may be interested in exploring Perlbrew \cite{perlbrew}; an example
- installation would be:
- \begin{commandshell}
+ \paragraph{perlbrew}
+ Linux users may be interested in exploring Perlbrew \cite{perlbrew}; an example
+ installation would be:
+ \begin{commandshell}
sudo apt-get install perlbrew
perlbrew init
perlbrew install perl-5.28.1
@@ -65,25 +66,38 @@ cpanm File::HomeDir
cpanm Unicode::GCString
\end{commandshell}
- For other distributions, the Ubuntu/Debian approach may work as follows
- \begin{commandshell}
+ \paragraph{Ubuntu/Debian}
+ For other distributions, the Ubuntu/Debian approach may work as follows
+ \begin{commandshell}
sudo apt install perl
sudo cpan -i App::cpanminus
sudo cpanm YAML::Tiny
sudo cpanm File::HomeDir
sudo cpanm Unicode::GCString
\end{commandshell}
- or else by running, for example,
- \begin{commandshell}
+ or else by running, for example,
+ \begin{commandshell}
sudo perl -MCPAN -e'install "File::HomeDir"'
\end{commandshell}
- 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 use the
- commands given in \cref{lst:alpine-install}; thanks to \cite{jun-sheaf} for providing
- these details.
+ \paragraph{Ubuntu: using the texlive from apt-get}
+ Ubuntu users that install texlive using \texttt{apt-get} as in the following
+ \begin{commandshell}
+sudo apt install texlive
+sudo apt install texlive-latex-recommended
+\end{commandshell}
+ may need the following additional command to work with \texttt{latexindent.pl}
+ \begin{commandshell}
+sudo apt install texlive-extra-utils
+\end{commandshell}
+
+ \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 use the
+ commands given in \cref{lst:alpine-install}; thanks to \cite{jun-sheaf} for providing
+ these details.
- \begin{cmhlistings}[style=tcblatex,language=Bash]{\texttt{alpine-install.sh}}{lst:alpine-install}
+ \begin{cmhlistings}[style=tcblatex,language=Bash]{\texttt{alpine-install.sh}}{lst:alpine-install}
# Installing perl
apk --no-cache add miniperl perl-utils
@@ -107,9 +121,9 @@ cpanm -n YAML::Tiny
cpanm -n Unicode::GCString
\end{cmhlistings}
- Users of NixOS might like to see
- \href{https://github.com/cmhughes/latexindent.pl/issues/222}{https://github.com/cmhughes/latexindent.pl/issues/222}
- for tips.
+ Users of NixOS might like to see
+ \href{https://github.com/cmhughes/latexindent.pl/issues/222}{https://github.com/cmhughes/latexindent.pl/issues/222}
+ for tips.
\subsubsection{Mac}
Users of the Macintosh operating system might like to explore the following commands, for
example:
diff --git a/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex b/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
index 1f058616d6d..6b8506c3447 100644
--- a/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
+++ b/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
@@ -4,6 +4,13 @@
^^I:caption: #2^^J
^^I:name: #3^^J
}
+\newcommand{\cmhlistingsfromfilelines}[4]{
+.. literalinclude:: #1^^J
+^^I:class: .#4^^J
+^^I:caption: #2^^J
+^^I:name: #3^^J
+^^I:linenos:^^J
+}
\newcommand{\cmhlistingsfromfilefour}[6]{
.. literalinclude:: #3^^J
^^I:class: .#6^^J
@@ -14,7 +21,7 @@
^^I:lineno-start: #1^^J
}
\newcommand{\cmhlabel}[1]{
-.. _#1:^^J
+.. \_#1:^^J
}
\newcommand{\warning}[1]{
.. warning::^^J
diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
index dfb37e0b765..12ad2f551c1 100644
--- a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
+++ b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.tex b/Master/texmf-dist/doc/support/latexindent/latexindent.tex
index 9379dddcb06..a97d778742c 100644
--- a/Master/texmf-dist/doc/support/latexindent/latexindent.tex
+++ b/Master/texmf-dist/doc/support/latexindent/latexindent.tex
@@ -27,7 +27,6 @@
\usepackage{multicol}
\usepackage{changepage} % adjust width of page
\usepackage{fancyhdr} % headers & footers
-\usepackage{wrapfig}
\usepackage{fontawesome}
\usepackage[sc,format=hang,font=small]{caption} % captions
\usepackage[backend=bibtex]{biblatex} % bibliography
@@ -42,7 +41,7 @@
\usepackage{totalcount}
\usepackage{standalone}
% setup gitinfo2, as in the manual, details just above begin{document}
-\usepackage[mark,grumpy]{gitinfo2}
+\usepackage[mark]{gitinfo2}
% tikz, tcolorbox libraries
\usetikzlibrary{positioning}
\usetikzlibrary{decorations.pathmorphing}
@@ -163,6 +162,21 @@
sharp corners,
colbacktitle=white!75!black
},
+ tex-TCB/.style={
+ listing only,
+ listing engine=listings,
+ left=0cm,
+ boxrule=0pt,
+ sharp corners,
+ center title,
+ colframe=white!40!black,
+ colback=white,
+ sharp corners,
+ colbacktitle=white!75!black,
+ toprule=1pt,
+ bottomrule=1pt,
+ titlerule=1pt,
+ },
yaml-TCB/.style={
listing only,
listing engine=listings,
@@ -326,6 +340,11 @@
columns=fullflexible,
}
+\lstdefinestyle{lineNumbersTeX}{
+ numbers=left,
+ numberstyle=\color{blue},
+}
+
\lstdefinestyle{fileExtensionPreference}{
style=yaml-LST,
firstnumber=44,linerange={44-48},
@@ -767,9 +786,14 @@
{}% <numberless-entry-format>
{\titlerule*[0.5em]{$\cdot$}\contentspage}
+% to explore in the future:
+% partial toc customisation
+% https://tex.stackexchange.com/questions/66345/how-to-remove-section-indentation-in-partial-toc-using-titletoc
+
\setcounter{secnumdepth}{6}
\setcounter{tocdepth}{4}
\makeindex
+
\begin{document}
\renewcommand*{\thefootnote}{\arabic{footnote}}
\input{title.tex}
@@ -801,6 +825,7 @@
\input{subsec-poly-switches}
\stopcontents[the-m-switch]
\input{sec-replacements}
+ \input{sec-the-line-switch}
\input{sec-fine-tuning}
\input{sec-conclusions-know-limitations}
\input{references}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex b/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
index 85738608b9f..b649f54f9cc 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
@@ -375,7 +375,7 @@ lookForAlignDelims:
0);
\item \announce{2020-03-21}{delimiter RegEx feature}{delimiterRegEx} optionally specifies the
pattern matching to be used for the alignment delimeter (default:
- \lstinline3 '(?<!\\)(&)'3);
+ \lstinline* '(?<!\\)(&)'*);
\item \announce{2020-03-21}{delimiter justification}{delimiterJustification} optionally
specifies the justification for the alignment delimeters (default: left); note that this
feature is only useful if you have delimiters of different lengths in the same column,
@@ -749,7 +749,7 @@ latexindent.pl tabular-DM.tex -l=dontMeasure6.yaml
\announce{2020-03-21}{delimiterRegEx feature} will, by default, align code blocks at the
ampersand character. The behaviour is controlled by the \texttt{delimiterRegEx} field
within \texttt{lookForAlignDelims}; the default value is
- \lstinline3'(?<!\\)(&)'3, which can be read as: \emph{an ampersand, as long as it is not
+ \lstinline*'(?<!\\)(&)'*, which can be read as: \emph{an ampersand, as long as it is not
immediately preceeded by a backslash}.
\index{warning!capturing parenthesis for lookForAlignDelims}
\index{capturing parenthesis (regex)}
@@ -1098,7 +1098,7 @@ latexindent.pl special-align.tex -l edge-node2.yaml -o=+-mod2
\texttt{indentRules} (see \vref{sec:noadd-indent-rules}); you will find the default
\texttt{indentRules} contains
\lstinline!chapter: " "! which tells \texttt{latexindent.pl} simply to use a space
- character after \texttt{\chapter} headings (once \texttt{indent} is set to \texttt{1} for
+ character after \texttt{chapter} headings (once \texttt{indent} is set to \texttt{1} for
\texttt{chapter}).
For example, assuming that you have the code in \cref{lst:headings1yaml} saved into
@@ -1185,10 +1185,11 @@ latexindent.pl mult-nested.tex -l=max-indentation1
\begin{table}[!htp]
\begin{widepage}
\centering
- \caption{Code blocks known to \texttt{latexindent.pl}}\label{tab:code-blocks}
+ \caption{Code blocks known to \texttt{latexindent.pl}}
+ \label{tab:code-blocks}
\begin{tabular}{m{.3\linewidth}@{\hspace{.25cm}}m{.4\linewidth}@{\hspace{.25cm}}m{.2\linewidth}}
\toprule
- Code block & characters allowed in name & example \\
+ Code block & characters allowed in name & example \\
\midrule
environments & \lstinline!a-zA-Z@\*0-9_\\! &
\begin{lstlisting}[,nolol=true,]
@@ -1211,10 +1212,10 @@ mand arg text
}
\end{lstlisting}
\\\cmidrule{2-3}
- commands & \lstinline!+a-zA-Z@\*0-9_\:! & \lstinline!\mycommand!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
- keyEqualsValuesBracesBrackets & \lstinline!a-zA-Z@\*0-9_\/.\h\{\}:\#-! & \lstinline!my key/.style=!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
- namedGroupingBracesBrackets & \lstinline!0-9\.a-zA-Z@\*><! & \lstinline!in!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
- UnNamedGroupingBracesBrackets & \centering\emph{No name!} & \lstinline!{! or \lstinline![! or \lstinline!,! or \lstinline!&! or \lstinline!)! or \lstinline!(! or \lstinline!$! followed by $\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
+ commands & \lstinline!+a-zA-Z@\*0-9_\:! & \lstinline!\mycommand!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
+ keyEqualsValuesBracesBrackets & \lstinline!a-zA-Z@\*0-9_\/.\h\{\}:\#-! & \lstinline!my key/.style=!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
+ namedGroupingBracesBrackets & \lstinline!0-9\.a-zA-Z@\*><! & \lstinline!in!$\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
+ UnNamedGroupingBracesBrackets & \centering\emph{No name!} & \lstinline!{! or \lstinline![! or \lstinline!,! or \lstinline!\&! or \lstinline!)! or \lstinline!(! or \lstinline!$! followed by $\langle$\itshape{arguments}$\rangle$ \\\cmidrule{2-3}
ifElseFi & \lstinline!@a-zA-Z! but must begin with either \newline \lstinline!\if! of \lstinline!\@if! &
\begin{lstlisting}[,nolol=true,]
\ifnum...
@@ -1222,31 +1223,31 @@ mand arg text
\else
...
\fi
- \end{lstlisting} \\\cmidrule{2-3}
+ \end{lstlisting} \\\cmidrule{2-3}
items & User specified, see \vref{lst:indentafteritems,lst:itemNames} &
\begin{lstlisting}[,nolol=true,]
\begin{enumerate}
\item ...
\end{enumerate}
- \end{lstlisting} \\\cmidrule{2-3}
+ \end{lstlisting} \\\cmidrule{2-3}
specialBeginEnd & User specified, see \vref{lst:specialBeginEnd} &
\begin{lstlisting}[,nolol=true,]
\[
...
\]
- \end{lstlisting} \\\cmidrule{2-3}
+ \end{lstlisting} \\\cmidrule{2-3}
afterHeading & User specified, see \vref{lst:indentAfterHeadings} &
\begin{lstlisting}[,morekeywords={chapter},nolol=true,]
\chapter{title}
...
\section{title}
- \end{lstlisting} \\\cmidrule{2-3}
+ \end{lstlisting} \\\cmidrule{2-3}
filecontents & User specified, see \vref{lst:fileContentsEnvironments} &
\begin{lstlisting}[,nolol=true,]
\begin{filecontents}
...
\end{filecontents}
- \end{lstlisting} \\
+ \end{lstlisting} \\
\bottomrule
\end{tabular}
\end{widepage}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex b/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
index 42553e037a4..c2974189284 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
@@ -415,7 +415,84 @@ latexindent.pl -onlyreplacement myfile.tex
and \emph{only} perform replacements/substitutions by using the \texttt{-rr} switch; full
details and examples are given in \vref{sec:replacements}.
+\flagbox{-k, --check}
+ \index{switches!-k, --check definition and details}
+ \begin{commandshell}
+latexindent.pl -k myfile.tex
+latexindent.pl -check myfile.tex
+\end{commandshell}
+ You can%
+ \announce*{2021-09-16}{-k,-check switch} instruct
+ \texttt{latexindent.pl} to check if the text after indentation matches that given in the
+ original file.
+
+ The \texttt{exit} code
+ \index{exit code} of \texttt{latexindent.pl} is 0 by default. If
+ you use the \texttt{-k} switch then
+ \begin{itemize}
+ \item if the text after indentation matches that given in the original file, then the exit code
+ is 0;
+ \item if the text after indentation does \emph{not} match that given in the original file, then
+ the exit code is 1.
+ \end{itemize}
+
+ The value of the exit code may be important to those wishing to, for example, check the
+ status of the indentation in continuous integration tools such as GitHub Actions. Full
+ details of the exit codes of \texttt{latexindent.pl} are given in \cref{tab:exit-codes}.
+
+ A simple \texttt{diff} will be given in \texttt{indent.log}.
+
+\flagbox{-kv, --checkv}
+ \index{switches!-kv, --checkv definition and details}
+ \begin{commandshell}
+latexindent.pl -kv myfile.tex
+latexindent.pl -checkv myfile.tex
+\end{commandshell}
+ \announce*{2021-09-16}{-kv, -checkv: check verbose switch} The \texttt{check verbose} switch is
+ exactly the same as the \texttt{-k} switch, except that it is \emph{verbose}, and it will
+ output the (simple) diff to the terminal, as well as to \texttt{indent.log}.
+
+\flagbox{-n, --lines=MIN-MAX}
+ \index{switches!-n, --lines definition and details}
+ \begin{commandshell}
+latexindent.pl -n 5-8 myfile.tex
+latexindent.pl -lines 5-8 myfile.tex
+\end{commandshell}
+ \announce*{2021-09-16}{-n, -lines switch} The \texttt{lines} switch instructs
+ \texttt{latexindent.pl} to operate only on specific line ranges within
+ \texttt{myfile.tex}.
+
+ Complete demonstrations are given in \cref{sec:line-switch}.
+
\subsection{From arara}\label{sec:arara}
Using \texttt{latexindent.pl} from the command line is fine for some folks, but others
may find it easier to use from \texttt{arara}; you can find the arara rule for
\texttt{latexindent.pl} and its associated documentation at \cite{paulo}.
+
+\subsection{Summary of exit codes}
+ \index{exit code!summary}
+ Assuming that you call \texttt{latexindent.pl} on \texttt{myfile.tex}
+ \begin{commandshell}
+latexindent.pl myfile.tex
+\end{commandshell}
+ then \texttt{latexindent.pl} can exit with the exit codes given in \cref{tab:exit-codes}.
+
+ \begin{table}[!htb]
+ \caption{Exit codes for \texttt{latexindent.pl}}
+ \label{tab:exit-codes}
+ \begin{tabular}{ccl}
+ \toprule
+ exit code & indentation & status \\
+ \midrule
+ 0 & \faCheck & success; if \texttt{-k} or \texttt{-kv} active, indented text matches original \\
+ 0 & \faClose & success; if \texttt{-version} or \texttt{-help}, no indentation performed \\
+ 1 & \faCheck & success, and \texttt{-k} or \texttt{-kv} active; indented text \emph{different} from original \\
+ \midrule
+ 2 & \faClose & failure, \texttt{defaultSettings.yaml} could not be read \\
+ 3 & \faClose & failure, myfile.tex not found \\
+ 4 & \faClose & failure, myfile.tex exists but cannot be read \\
+ 5 & \faClose & failure, \texttt{-w} active, and back-up file cannot be written \\
+ 6 & \faClose & failure, \texttt{-c} active, and cruft directory does not exist \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-the-line-switch.tex b/Master/texmf-dist/doc/support/latexindent/sec-the-line-switch.tex
new file mode 100644
index 00000000000..0c06daec2d0
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latexindent/sec-the-line-switch.tex
@@ -0,0 +1,187 @@
+% arara: pdflatex: {shell: yes, files: [latexindent]}
+\section{The --lines switch}\label{sec:line-switch}
+ \texttt{latexindent.pl}
+ \announce*{2021-09-16}{line switch demonstration} can
+ operate on a \emph{selection} of lines of the file using the \texttt{--lines} or
+ \texttt{-n} switch.
+
+ \index{switches!-lines demonstration}
+
+ The basic syntax is \texttt{--lines MIN-MAX}, so for example
+ \begin{commandshell}
+latexindent.pl --lines 3-7 myfile.tex
+latexindent.pl -n 3-7 myfile.tex
+\end{commandshell}
+ will only operate upon lines 3 to 7 in \texttt{myfile.tex}. All of the other lines will
+ \emph{not} be operated upon by \texttt{latexindent.pl}.
+
+ The options for the \texttt{lines} switch are:
+ \begin{itemize}
+ \item line range, as in \texttt{--lines 3-7}
+ \item single line, as in \texttt{--lines 5}
+ \item multiple line ranges separated by commas, as in \texttt{--lines 3-5,8-10}
+ \item negated line ranges, as in \texttt{--lines !3-5} which translates to \texttt{--lines
+ 1-2,6-N}, where N is the number of lines in your file.
+ \end{itemize}
+
+ We demonstrate this feature, and the available variations in what follows. We will use
+ the file in \cref{lst:myfile}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile.tex}[tex-TCB]{\texttt{myfile.tex}}{lst:myfile}
+
+ \begin{example}
+ We demonstrate the basic usage using the command
+ \begin{commandshell}
+latexindent.pl --lines 3-7 myfile.tex -o=+-mod1
+\end{commandshell}
+ which instructs \texttt{latexindent.pl} to only operate on lines 3 to 7; the output is given in \cref{lst:myfile-mod1}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod1.tex}[tex-TCB]{\texttt{myfile-mod1.tex}}{lst:myfile-mod1}
+
+ The following two calls to \texttt{latexindent.pl} are equivalent
+ \begin{commandshell}
+latexindent.pl --lines 3-7 myfile.tex -o=+-mod1
+latexindent.pl --lines 7-3 myfile.tex -o=+-mod1
+\end{commandshell}
+ as \texttt{latexindent.pl} performs a check to put the lowest number first.
+ \end{example}
+
+ \begin{example}
+ You can call the \texttt{lines} switch with only \emph{one number} and
+ in which case only that line will be operated upon. For example
+ \begin{commandshell}
+latexindent.pl --lines 5 myfile.tex -o=+-mod2
+\end{commandshell}
+ instructs \texttt{latexindent.pl} to only operate on line 5; the output is given in \cref{lst:myfile-mod2}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod2.tex}[tex-TCB]{\texttt{myfile-mod2.tex}}{lst:myfile-mod2}
+
+ The following two calls are equivalent:
+ \begin{commandshell}
+latexindent.pl --lines 5 myfile.tex
+latexindent.pl --lines 5-5 myfile.tex
+\end{commandshell}
+ \end{example}
+
+ \begin{example}
+ If you specify a value outside of the line range of the file then \texttt{latexindent.pl} will ignore the
+ \texttt{lines} argument, detail as such in the log file, and proceed to operate on the entire file.
+
+ For example, in the following call
+ \begin{commandshell}
+latexindent.pl --lines 11-13 myfile.tex
+ \end{commandshell}
+ \texttt{latexindent.pl} will ignore the \texttt{lines} argument, and \emph{operate on the entire file} because \cref{lst:myfile} only has 12 lines.
+
+ Similarly, in the call
+ \begin{commandshell}
+latexindent.pl --lines -1-3 myfile.tex
+ \end{commandshell}
+ \texttt{latexindent.pl} will ignore the \texttt{lines} argument, and \emph{operate on the entire file} because we assume that negatively numbered
+ lines in a file do not exist.
+ \end{example}
+
+ \begin{example}
+ You can specify \emph{multiple line ranges} as in the following
+ \begin{commandshell}
+latexindent.pl --lines 3-5,8-10 myfile.tex -o=+-mod3
+\end{commandshell}
+ which instructs \texttt{latexindent.pl} to operate upon lines 3 to 5 and lines 8 to 10; the output is given in \cref{lst:myfile-mod3}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod3.tex}[tex-TCB]{\texttt{myfile-mod3.tex}}{lst:myfile-mod3}
+
+ The following calls to \texttt{latexindent.pl} are all equivalent
+ \begin{commandshell}
+latexindent.pl --lines 3-5,8-10 myfile.tex
+latexindent.pl --lines 8-10,3-5 myfile.tex
+latexindent.pl --lines 10-8,3-5 myfile.tex
+latexindent.pl --lines 10-8,5-3 myfile.tex
+\end{commandshell}
+ as \texttt{latexindent.pl} performs a check to put the lowest line ranges first, and within each line range, it puts
+ the lowest number first.
+ \end{example}
+
+ \begin{example}
+ There's no limit to the number of line ranges that you can specify, they just need to be separated by commas. For example
+ \begin{commandshell}
+latexindent.pl --lines 1-2,4-5,9-10,12 myfile.tex -o=+-mod4
+\end{commandshell}
+ has four line ranges: lines 1 to 2, lines 4 to 5, lines 9 to 10 and line 12. The output is given in \cref{lst:myfile-mod4}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod4.tex}[tex-TCB]{\texttt{myfile-mod4.tex}}{lst:myfile-mod4}
+
+ As previously, the ordering does not matter, and the following calls to \texttt{latexindent.pl} are all equivalent
+ \begin{commandshell}
+latexindent.pl --lines 1-2,4-5,9-10,12 myfile.tex
+latexindent.pl --lines 2-1,4-5,9-10,12 myfile.tex
+latexindent.pl --lines 4-5,1-2,9-10,12 myfile.tex
+latexindent.pl --lines 12,4-5,1-2,9-10 myfile.tex
+\end{commandshell}
+ as \texttt{latexindent.pl} performs a check to put the lowest line ranges first, and within each line range, it puts
+ the lowest number first.
+ \end{example}
+
+ \begin{example}
+ \index{switches!-lines demonstration, negation}
+ You can specify \emph{negated line ranges} by using \texttt{!} as in
+ \begin{commandshell}
+latexindent.pl --lines !5-7 myfile.tex -o=+-mod5
+\end{commandshell}
+ which instructs \texttt{latexindent.pl} to operate upon all of the lines \emph{except} lines 5 to 7.
+
+ In other words, \texttt{latexindent.pl} \emph{will} operate on lines 1 to 4, and 8 to 12, so the following
+ two calls are equivalent:
+ \begin{commandshell}
+latexindent.pl --lines !5-7 myfile.tex
+latexindent.pl --lines 1-4,8-12 myfile.tex
+\end{commandshell}
+ The output is given in \cref{lst:myfile-mod5}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod5.tex}[tex-TCB]{\texttt{myfile-mod5.tex}}{lst:myfile-mod5}
+
+ \end{example}
+
+ \begin{example}
+ \index{switches!-lines demonstration, negation}
+ You can specify \emph{multiple negated line ranges} such as
+ \begin{commandshell}
+latexindent.pl --lines !5-7,!9-10 myfile.tex -o=+-mod6
+ \end{commandshell}
+ which is equivalent to:
+ \begin{commandshell}
+latexindent.pl --lines 1-4,8,11-12 myfile.tex -o=+-mod6
+ \end{commandshell}
+ The output is given in \cref{lst:myfile-mod6}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile-mod6.tex}[tex-TCB]{\texttt{myfile-mod6.tex}}{lst:myfile-mod6}
+ \end{example}
+
+ \begin{example}
+ If you specify a line range with anything other than an integer, then
+ \texttt{latexindent.pl} will ignore the \texttt{lines} argument, and \emph{operate on the entire file}.
+
+ Sample calls that result in the \texttt{lines} argument being ignored include the following:
+ \begin{commandshell}
+latexindent.pl --lines 1-x myfile.tex
+latexindent.pl --lines !y-3 myfile.tex
+ \end{commandshell}
+ \end{example}
+
+ \begin{example}
+ We can, of course, use the \texttt{lines} switch in combination with other switches.
+
+ For example, let's use with the file in \cref{lst:myfile1}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile1.tex}[tex-TCB]{\texttt{myfile1.tex}}{lst:myfile1}
+
+ We can demonstrate interaction with the \texttt{-m} switch (see \vref{sec:modifylinebreaks}); in particular,
+ if we use \vref{lst:mlb2}, \vref{lst:env-mlb7} and \vref{lst:env-mlb8} and run
+ \begin{widepage}
+ \begin{commandshell}
+latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8 -o=+-mod1
+ \end{commandshell}
+ \end{widepage}
+ then we receive the output in \cref{lst:myfile1-mod1}.
+
+ \cmhlistingsfromfile*[style=lineNumbersTeX]*{demonstrations/myfile1-mod1.tex}[tex-TCB]{\texttt{myfile1-mod1.tex}}{lst:myfile1-mod1}
+ \end{example}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex b/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
index 8a824987f6f..1388a84932c 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
@@ -12,9 +12,6 @@
\printcontents[the-m-switch]{}{0}{}
\yamltitle{modifylinebreaks}*{fields}
- \begin{wrapfigure}[7]{r}[0pt]{8cm}
- \cmhlistingsfromfile[style=modifylinebreaks]*{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks}
- \end{wrapfigure}
\makebox[0pt][r]{%
\raisebox{-\totalheight}[0pt][0pt]{%
\tikz\node[opacity=1] at (0,0)
@@ -25,6 +22,8 @@
if the \texttt{-m} switch has been used}. A snippet of the default settings of this field
is shown in \cref{lst:modifylinebreaks}.
+ \cmhlistingsfromfile[style=modifylinebreaks]*{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks}
+
Having read the previous paragraph, it should sound reasonable that, if you call
\texttt{latexindent.pl} using the \texttt{-m} switch, then you give it permission to
modify line breaks in your file, but let's be clear:
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-combine-text-wrap-para-line-breaks.tex b/Master/texmf-dist/doc/support/latexindent/subsec-combine-text-wrap-para-line-breaks.tex
index 2c05d60dda6..80ec2b42e1e 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-combine-text-wrap-para-line-breaks.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-combine-text-wrap-para-line-breaks.tex
@@ -42,12 +42,12 @@ latexindent.pl -m textwrap7.tex -l=textwrap12.yaml -o=+-mod12
\index{text wrap!recommended starting point}
I%
- \announce*{2021-07-31}{textWrapOptions new feature: beforeFindingChildCodeBlocks} think it likely that most users will wish to employ the
+ \announce{2021-07-31}{textWrapOptions new feature: beforeFindingChildCodeBlocks} think it likely that most users will wish to employ the
\texttt{beforeFindingChildCodeBlocks} option for the text wrap routine.
To motivate its use, we begin with the file in \cref{lst:textwrap-bfccb}.
- \cmhlistingsfromfile*{demonstrations/textwrap-bfccb.tex}{\texttt{textwrap-bfccb.tex}}{lst:textwrap-bfccb}
+ \cmhlistingsfromfile{demonstrations/textwrap-bfccb.tex}{\texttt{textwrap-bfccb.tex}}{lst:textwrap-bfccb}
Using the settings in \cref{lst:textwrap12-yaml} and running
\begin{commandshell}
@@ -55,7 +55,7 @@ latexindent.pl -m textwrap-bfccb.tex -l=textwrap12.yaml -o=+-mod12
\end{commandshell}
gives the output in \cref{lst:textwrap-bfccb-mod12}
- \cmhlistingsfromfile*{demonstrations/textwrap-bfccb-mod12.tex}{\texttt{textwrap-bfccb-mod12.tex}}{lst:textwrap-bfccb-mod12}
+ \cmhlistingsfromfile{demonstrations/textwrap-bfccb-mod12.tex}{\texttt{textwrap-bfccb-mod12.tex}}{lst:textwrap-bfccb-mod12}
Note that we have added a `ruler' to \cref{lst:textwrap-bfccb-mod12} to assist with
measuring.
@@ -83,9 +83,9 @@ latexindent.pl -m textwrap-bfccb.tex -l=textwrap13.yaml -o=+-mod13
\end{commandshell}
we receive the output in \cref{lst:textwrap-bfccb-mod13}.
- \cmhlistingsfromfile*{demonstrations/textwrap13.yaml}[MLB-TCB,width=\linewidth]{\texttt{textwrap13.yaml} (tweaked quick start)}{lst:textwrap13-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap13.yaml}[MLB-TCB,width=\linewidth]{\texttt{textwrap13.yaml} (tweaked quick start)}{lst:textwrap13-yaml}
- \cmhlistingsfromfile*{demonstrations/textwrap-bfccb-mod13.tex}{\texttt{textwrap-bfccb-mod13.tex}}{lst:textwrap-bfccb-mod13}
+ \cmhlistingsfromfile{demonstrations/textwrap-bfccb-mod13.tex}{\texttt{textwrap-bfccb-mod13.tex}}{lst:textwrap-bfccb-mod13}
This output is different from \cref{lst:textwrap-bfccb-mod12}, but is still not ideal, as
the \texttt{test} command has indented its mandatory argument. We can employ
@@ -98,8 +98,8 @@ latexindent.pl -m textwrap-bfccb.tex -l=textwrap14.yaml -o=+-mod14
\begin{widepage}
\begin{cmhtcbraster}
- \cmhlistingsfromfile*{demonstrations/textwrap-bfccb-mod14.tex}{\texttt{textwrap-bfccb-mod14.tex}}{lst:textwrap-bfccb-mod14}
- \cmhlistingsfromfile*{demonstrations/textwrap14.yaml}[MLB-TCB]{\texttt{textwrap14.yaml}}{lst:textwrap14-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap-bfccb-mod14.tex}{\texttt{textwrap-bfccb-mod14.tex}}{lst:textwrap-bfccb-mod14}
+ \cmhlistingsfromfile{demonstrations/textwrap14.yaml}[MLB-TCB]{\texttt{textwrap14.yaml}}{lst:textwrap14-yaml}
\end{cmhtcbraster}
\end{widepage}
@@ -109,4 +109,4 @@ latexindent.pl -m textwrap-bfccb.tex -l=textwrap14.yaml -o=+-mod14
output in \cref{lst:textwrap-bfccb-mod14}, then we would need to employ an exception,
which we demonstrate in \cref{lst:textwrap15-yaml}.
- \cmhlistingsfromfile*{demonstrations/textwrap15.yaml}[MLB-TCB]{\texttt{textwrap15.yaml}}{lst:textwrap15-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap15.yaml}[MLB-TCB]{\texttt{textwrap15.yaml}}{lst:textwrap15-yaml}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-remove-para-line-breaks.tex b/Master/texmf-dist/doc/support/latexindent/subsec-remove-para-line-breaks.tex
index f5531cbba48..2b9de853b14 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-remove-para-line-breaks.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-remove-para-line-breaks.tex
@@ -127,11 +127,18 @@ latexindent.pl -m shortlines-envs.tex -o shortlines-envs3.tex -l remove-para3.ya
\texttt{namedGroupingBracesBrackets}, \texttt{UnNamedGroupingBracesBrackets} are
controlled by the \texttt{optionalArguments} and the \texttt{mandatoryArguments}.
- The only special case is the \texttt{masterDocument} field; this is designed for
+ The only special case is the \texttt{mainDocument} field; this is designed for
`chapter'-type files that may contain paragraphs that are not within any other
code-blocks. For example, consider the file in \cref{lst:shortlines-md}, with the YAML
settings in \cref{lst:remove-para4-yaml}.
+ Note:
+ \announce*{2021-09-16}*{removeParagraphLineBreaks: masterDocument now mainDocument}
+ \texttt{mainDocument} replaces \texttt{masterDocument} which was used in previous verions
+ of \texttt{latexindent.pl}. The field \texttt{masterDocument} is still supported, but it
+ is anticipated to be removed in a future version, so I recommend using
+ \texttt{mainDocument} instead.
+
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/shortlines-md.tex}{\texttt{shortlines-md.tex}}{lst:shortlines-md}
\cmhlistingsfromfile{demonstrations/remove-para4.yaml}[MLB-TCB]{\texttt{remove-para4.yaml}}{lst:remove-para4-yaml}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap-summary.tex b/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap-summary.tex
index 89379eabbc2..b6066e2cc91 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap-summary.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap-summary.tex
@@ -1,7 +1,7 @@
% arara: pdflatex: {shell: yes, files: [latexindent]}
\subsection{Summary of text wrapping}
I consider%
- \announce*{2021-07-31}{text wrap quick start}
+ \announce{2021-07-31}{text wrap quick start}
the most useful starting point for text wrapping to be given in
\cref{subsec:textwrapping-quick-start} and \cref{subsubsec:text-wrap-remove-para-bfccb}.
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap.tex b/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap.tex
index 2e721cae1a5..781aeccf73c 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-text-wrap.tex
@@ -10,7 +10,7 @@
Of all the available text wrapping options, I consider \cref{lst:textwrap-qs-yaml} to be
among the most helpful starting points.
- \cmhlistingsfromfile*{demonstrations/textwrap-qs.yaml}[MLB-TCB,width=1\linewidth]{\texttt{textwrap-qs.yaml}}{lst:textwrap-qs-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap-qs.yaml}[MLB-TCB,width=1\linewidth]{\texttt{textwrap-qs.yaml}}{lst:textwrap-qs-yaml}
\index{text wrap!quick start}
@@ -182,15 +182,22 @@ latexindent.pl -m textwrap-ts.tex -o=+-mod1 -l tabstop.yaml
The code blocks detailed in \cref{lst:textWrapOptionsAll} are with direct reference to
those detailed in \vref{tab:code-blocks}.
- The only special case is the \texttt{masterDocument} field; this is designed for
+ The only special case is the \texttt{mainDocument} field; this is designed for
`chapter'-type files that may contain paragraphs that are not within any other
code-blocks. The same notation is used between this feature and the
\texttt{removeParagraphLineBreaks} described in \vref{lst:removeParagraphLineBreaks}; in
fact, the two features can even be combined (this is detailed in
\vref{subsec:removeparagraphlinebreaks:and:textwrap}).
+ Note:
+ \announce*{2021-09-16}*{textWrapOptions: masterDocument now mainDocument}
+ \texttt{mainDocument} replaces \texttt{masterDocument} which was used in previous verions
+ of \texttt{latexindent.pl}. The field \texttt{masterDocument} is still supported, but it
+ is anticipated to be removed in a future version, so I recommend using
+ \texttt{mainDocument} instead.
+
Let's explore these switches with reference to the code given in \cref{lst:textwrap5};
- the text outside of the environment is considered part of the \texttt{masterDocument}.
+ the text outside of the environment is considered part of the \texttt{mainDocument}.
\begin{widepage}
\cmhlistingsfromfile{demonstrations/textwrap5.tex}{\texttt{textwrap5.tex}}{lst:textwrap5}
@@ -221,8 +228,8 @@ latexindent.pl -m textwrap-ts.tex -o=+-mod1 -l tabstop.yaml
will operate upon \emph{all} code blocks;
\item in \cref{lst:textwrap4-yaml} we have \emph{not} specified \texttt{all}, and instead, have
specified that text wrapping should be applied to each of \texttt{environments} and
- \texttt{masterDocument};
- \item in \cref{lst:textwrap5-yaml} we have specified text wrapping for \texttt{masterDocument}
+ \texttt{mainDocument};
+ \item in \cref{lst:textwrap5-yaml} we have specified text wrapping for \texttt{mainDocument}
and on a \emph{per-name} basis for \texttt{environments} code blocks.
\end{itemize}
@@ -303,7 +310,7 @@ latexindent.pl -s textwrap6.tex -l=textwrap8.yaml -m
\item in \cref{lst:textwrap6-mod7} the text wrapping routine has not been applied to
\texttt{myenv} because it has been switched off (per-name) in \cref{lst:textwrap7-yaml};
\item in \cref{lst:textwrap6-mod8} the text wrapping routine has not been applied to
- \texttt{masterDocument} because of the settings in \cref{lst:textwrap8-yaml}.
+ \texttt{mainDocument} because of the settings in \cref{lst:textwrap8-yaml}.
\end{itemize}
The \texttt{columns} field has a variety of different ways that it can be specified;
@@ -338,12 +345,12 @@ latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
Notice that:
\begin{itemize}
- \item in \cref{lst:textwrap6-mod9} the text for the \texttt{masterDocument} has been wrapped
+ \item in \cref{lst:textwrap6-mod9} the text for the \texttt{mainDocument} has been wrapped
using \texttt{30} columns, while \texttt{environments} has been wrapped using \texttt{50}
columns;
\item in \cref{lst:textwrap6-mod11} the text for \texttt{myenv} has been wrapped using
\texttt{50} columns, the text for \texttt{another} has been wrapped using \texttt{15}
- columns, and \texttt{masterDocument} has been wrapped using \texttt{30} columns.
+ columns, and \texttt{mainDocument} has been wrapped using \texttt{30} columns.
\end{itemize}
If you don't specify a \texttt{default} value on per-code-block basis, then the
\texttt{default} value from \texttt{columns} will be inherited; if you don't specify a
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
index ebd37ac4f03..262ffe878a5 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
@@ -172,13 +172,13 @@ latexindent.pl myenv-args.tex -l myenv-rules4.yaml
has received three spaces of indentation.
\yamltitle{noAdditionalIndentGlobal}*{fields}
- \begin{wrapfigure}[6]{r}[0pt]{7cm}
- \cmhlistingsfromfile[style=noAdditionalIndentGlobalEnv]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal:environments}
- \end{wrapfigure}
Assuming that your environment name is not found within neither
\texttt{noAdditionalIndent} nor \texttt{indentRules}, the next place that
\texttt{latexindent.pl} will look is \texttt{noAdditionalIndentGlobal}, and in particular
\emph{for the environments} key (see \cref{lst:noAdditionalIndentGlobal:environments}).
+
+ \cmhlistingsfromfile[style=noAdditionalIndentGlobalEnv]*{../defaultSettings.yaml}[width=.5\linewidth,before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal:environments}
+
Let's say that you change the value of \texttt{environments} to \texttt{1} in
\cref{lst:noAdditionalIndentGlobal:environments}, and that you run
\index{switches!-l demonstration}
@@ -240,12 +240,12 @@ latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml
\end{minipage}
\yamltitle{indentRulesGlobal}*{fields}
- \begin{wrapfigure}[4]{r}[0pt]{7cm}
- \cmhlistingsfromfile[style=indentRulesGlobalEnv]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal:environments}
- \end{wrapfigure}
The final check that \texttt{latexindent.pl} will make is to look for
- \texttt{indentRulesGlobal} as detailed in \cref{lst:indentRulesGlobal:environments}; if
- you change the \texttt{environments} field to anything involving horizontal space, say
+ \texttt{indentRulesGlobal} as detailed in \cref{lst:indentRulesGlobal:environments}.
+
+ \cmhlistingsfromfile[style=indentRulesGlobalEnv]*{../defaultSettings.yaml}[width=.5\linewidth,before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal:environments}
+
+ If you change the \texttt{environments} field to anything involving horizontal space, say
\lstinline!" "!, and then run the following commands
\index{switches!-l demonstration}
diff --git a/Master/texmf-dist/doc/support/latexindent/title.tex b/Master/texmf-dist/doc/support/latexindent/title.tex
index 39b50dc0443..66f334fcb5a 100644
--- a/Master/texmf-dist/doc/support/latexindent/title.tex
+++ b/Master/texmf-dist/doc/support/latexindent/title.tex
@@ -8,14 +8,14 @@
sharp corners,
enhanced,
overlay={\node[anchor=north east,outer sep=2pt] at ([xshift=3cm,yshift=4mm]frame.north east) {\includegraphics[width=3cm]{logo}}; }]
- \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.11
+ \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.12
\end{tcolorbox}
}
\author{Chris Hughes \thanks{and contributors!
See \vref{sec:contributors}.
For
all communication, please visit \cite{latexindent-home}.}}
-\date{2021-07-31}
+\date{2021-09-16}
\maketitle
\begin{adjustwidth}{1cm}{1cm}
\small
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
index 479fb14a469..c015e08a871 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
@@ -23,7 +23,7 @@ use Exporter qw/import/;
use List::Util qw/max min sum/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::HiddenChildren qw/%familyTree/;
@@ -48,8 +48,8 @@ sub find_aligned_block{
# 5 & & 6 & \\
# %* \end{tabular}
$logger->trace('*Searching for ALIGNED blocks marked by comments')if($is_t_switch_active);
- $logger->trace(Dumper(\%{$masterSettings{lookForAlignDelims}})) if($is_tt_switch_active);
- while( my ($alignmentBlock,$yesno)= each %{$masterSettings{lookForAlignDelims}}){
+ $logger->trace(Dumper(\%{$mainSettings{lookForAlignDelims}})) if($is_tt_switch_active);
+ while( my ($alignmentBlock,$yesno)= each %{$mainSettings{lookForAlignDelims}}){
if(ref $yesno eq "HASH"){
$yesno = (defined ${$yesno}{delims} ) ? ${$yesno}{delims} : 1;
}
@@ -1362,7 +1362,7 @@ sub double_back_slash_else{
# check for existence of \\ statement, and associated line break information
$self->check_for_else_statement(
# else name regexp
- elseNameRegExp=>qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{doubleBackSlash}/,
+ elseNameRegExp=>qr/${${$mainSettings{fineTuning}}{modifyLineBreaks}}{doubleBackSlash}/,
# else statements name: note that DBS stands for 'Double Back Slash'
ElseStartsOnOwnLine=>"DBSStartsOnOwnLine",
# end statements
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
index 385a3fcb47b..028f0ec842b 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
@@ -19,7 +19,7 @@ use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use Data::Dumper;
use Exporter qw/import/;
@@ -56,7 +56,7 @@ sub find_opt_mand_arguments{
my $objectDependentOptAndMandRegExp = (defined ${$self}{optAndMandArgsRegExp} ? ${$self}{optAndMandArgsRegExp} : $optAndMandRegExpWithLineBreaks);
if(${$self}{body} =~ m/^$objectDependentOptAndMandRegExp\h*($trailingCommentRegExp)?/){
- $logger->trace("Optional/Mandatory arguments".(${$masterSettings{commandCodeBlocks}}{roundParenthesesAllowed}?" (possibly round Parentheses)":q())." found in ${$self}{name}: $1") if $is_t_switch_active;
+ $logger->trace("Optional/Mandatory arguments".(${$mainSettings{commandCodeBlocks}}{roundParenthesesAllowed}?" (possibly round Parentheses)":q())." found in ${$self}{name}: $1") if $is_t_switch_active;
# create a new Arguments object
# The arguments object is a little different to most
@@ -179,7 +179,7 @@ sub find_opt_mand_arguments{
${$self}{begin} =~ s/\h*$//s;
} elsif (${${${$arguments}{children}}[0]}{BeginStartsOnOwnLine}==3) {
$logger->trace("Adding a blank line immediately ${$self}{begin} ($BeginStringLogFile==3)") if $is_t_switch_active;
- $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
+ $trailingCharacterToken = "\n".(${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
}
# modification
@@ -243,16 +243,16 @@ sub get_arguments_regexp{
my $lineBreaksAtEnd = (defined ${input}{mode} and ${input}{mode} eq 'lineBreaksAtEnd')?'\R*':q();
# arguments Before, by default, includes beamer special and numbered arguments, for example #1 #2, etc
- my $argumentsBefore = qr/${${$masterSettings{fineTuning}}{arguments}}{before}/;
- my $argumentsBetween = qr/${${$masterSettings{fineTuning}}{arguments}}{between}/;
+ my $argumentsBefore = qr/${${$mainSettings{fineTuning}}{arguments}}{before}/;
+ my $argumentsBetween = qr/${${$mainSettings{fineTuning}}{arguments}}{between}/;
# commands are allowed strings between arguments, e.g node, decoration, etc, specified in stringsAllowedBetweenArguments
my $stringsBetweenArguments = q();
if(defined ${input}{stringBetweenArguments} and ${input}{stringBetweenArguments}==1
- and ref(${$masterSettings{commandCodeBlocks}}{stringsAllowedBetweenArguments}) eq "ARRAY"){
+ and ref(${$mainSettings{commandCodeBlocks}}{stringsAllowedBetweenArguments}) eq "ARRAY"){
# grab the strings allowed between arguments
- my @stringsAllowedBetweenArguments = @{${$masterSettings{commandCodeBlocks}}{stringsAllowedBetweenArguments}};
+ my @stringsAllowedBetweenArguments = @{${$mainSettings{commandCodeBlocks}}{stringsAllowedBetweenArguments}};
$logger->trace("*Looping through array for commandCodeBlocks->stringsAllowedBetweenArguments") if $is_t_switch_active ;
@@ -404,7 +404,7 @@ sub comma_else{
# check for existence of \\ statement, and associated line break information
$self->check_for_else_statement(
# else name regexp
- elseNameRegExp=>qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{comma}/,
+ elseNameRegExp=>qr/${${$mainSettings{fineTuning}}{modifyLineBreaks}}{comma}/,
# else statements name
ElseStartsOnOwnLine=>"CommaStartsOnOwnLine",
# end statements
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/BackUpFileProcedure.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/BackUpFileProcedure.pm
index a0374552b43..e74b3fd75f7 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/BackUpFileProcedure.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/BackUpFileProcedure.pm
@@ -16,7 +16,7 @@ package LatexIndent::BackUpFileProcedure;
# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
use strict;
use warnings;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/%switches/;
use LatexIndent::LogFile qw/$logger/;
use File::Basename; # to get the filename and directory path
@@ -37,7 +37,7 @@ sub create_back_up_file{
my $fileName = ${$self}{fileName};
# grab the file extension preferences
- my %fileExtensionPreference= %{$masterSettings{fileExtensionPreference}};
+ my %fileExtensionPreference= %{$mainSettings{fileExtensionPreference}};
# sort the file extensions by preference
my @fileExtensions = sort { $fileExtensionPreference{$a} <=> $fileExtensionPreference{$b} } keys(%fileExtensionPreference);
@@ -49,10 +49,10 @@ sub create_back_up_file{
$backupFile = "${$self}{cruftDirectory}/$backupFile";
# local variables, determined from the YAML settings
- my $onlyOneBackUp = $masterSettings{onlyOneBackUp};
- my $maxNumberOfBackUps = $masterSettings{maxNumberOfBackUps};
- my $cycleThroughBackUps= $masterSettings{cycleThroughBackUps};
- my $backupExtension= $masterSettings{backupExtension};
+ my $onlyOneBackUp = $mainSettings{onlyOneBackUp};
+ my $maxNumberOfBackUps = $mainSettings{maxNumberOfBackUps};
+ my $cycleThroughBackUps= $mainSettings{cycleThroughBackUps};
+ my $backupExtension= $mainSettings{backupExtension};
# if both ($onlyOneBackUp and $maxNumberOfBackUps) then we have
# a conflict- er on the side of caution and turn off onlyOneBackUp
@@ -109,7 +109,14 @@ sub create_back_up_file{
# check that the oldBackupFile exists
if(-e $oldBackupFile){
$logger->info(" copying $oldBackupFile to $newBackupFile ");
- copy($oldBackupFile,$newBackupFile) or die "Could not write to backup file $backupFile. Please check permissions. Exiting.";
+ my $backUpFilePossible = 1;
+ copy($oldBackupFile,$newBackupFile) or ($backUpFilePossible = 0);
+ if ($backUpFilePossible==0){
+ $logger->fatal("*Could not write to backup file $backupFile. Please check permissions. Exiting.");
+ $logger->fatal("Exiting, no indendation done.");
+ $self->output_logfile();
+ exit(5);
+ }
}
}
}
@@ -131,6 +138,13 @@ sub create_back_up_file{
# output these lines to the log file
$logger->info("Backup file: $backupFile");
$logger->info("$fileName will be overwritten after indentation");
- copy($fileName,$backupFile) or die "Could not write to backup file $backupFile. Please check permissions. Exiting.";
+ my $backUpFilePossible = 1;
+ copy($fileName,$backupFile) or ($backUpFilePossible = 0);
+ if ($backUpFilePossible==0){
+ $logger->fatal("*Could not write to backup file $backupFile. Please check permissions.");
+ $logger->fatal("Exiting, no indendation done.");
+ $self->output_logfile();
+ exit(5);
+ }
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/BlankLines.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/BlankLines.pm
index 2622e9ad905..a3e439d2e0d 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/BlankLines.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/BlankLines.pm
@@ -17,17 +17,16 @@ package LatexIndent::BlankLines;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use Exporter qw/import/;
our @EXPORT_OK = qw/protect_blank_lines unprotect_blank_lines condense_blank_lines/;
sub protect_blank_lines{
- return unless $is_m_switch_active;
my $self = shift;
- unless(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}){
+ unless(${$mainSettings{modifyLineBreaks}}{preserveBlankLines}){
$logger->trace("*Blank lines will not be protected (preserveBlankLines=0)") if $is_t_switch_active;
return
}
@@ -38,18 +37,15 @@ sub protect_blank_lines{
}
sub condense_blank_lines{
- return unless $is_m_switch_active;
-
- return unless ${$masterSettings{modifyLineBreaks}}{condenseMultipleBlankLinesInto}>0;
my $self = shift;
$logger->trace("*condense blank lines routine") if $is_t_switch_active;
# if preserveBlankLines is set to 0, then the blank-line-token will not be present
# in the document -- we change that here
- if(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}==0){
+ if(${$mainSettings{modifyLineBreaks}}{preserveBlankLines}==0){
# turn the switch on
- ${$masterSettings{modifyLineBreaks}}{preserveBlankLines}=1;
+ ${$mainSettings{modifyLineBreaks}}{preserveBlankLines}=1;
# log file information
$logger->trace("Updating body to include blank line token, this requires preserveBlankLines = 1") if($is_tt_switch_active);
@@ -61,7 +57,7 @@ sub condense_blank_lines{
}
# grab the value from the settings
- my $condenseMultipleBlankLinesInto = ${$masterSettings{modifyLineBreaks}}{condenseMultipleBlankLinesInto};
+ my $condenseMultipleBlankLinesInto = ${$mainSettings{modifyLineBreaks}}{condenseMultipleBlankLinesInto};
# grab the blank-line-token
my $blankLineToken = $tokens{blanklines};
@@ -80,9 +76,6 @@ sub condense_blank_lines{
}
sub unprotect_blank_lines{
- return unless $is_m_switch_active;
-
- return unless ${$masterSettings{modifyLineBreaks}}{preserveBlankLines};
my $self = shift;
# remove any empty lines that might have been added by the text_wrap routine; see, for example,
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Check.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Check.pm
new file mode 100644
index 00000000000..67efab2348b
--- /dev/null
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Check.pm
@@ -0,0 +1,130 @@
+package LatexIndent::Check;
+# 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
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# See http://www.gnu.org/licenses/.
+#
+# Chris Hughes, 2017
+#
+# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
+use strict;
+use warnings;
+use Exporter qw/import/;
+use LatexIndent::LogFile qw/$logger/;
+use LatexIndent::Switches qw/$is_m_switch_active $is_check_verbose_switch_active/;
+our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
+our @EXPORT_OK = qw/simple_diff/;
+
+sub simple_diff {
+ my $self = shift;
+
+ # simple diff...
+ $logger->info("*simple diff: (check switch active)");
+
+ # check switch work below here
+ if (${$self}{originalBody} eq ${$self}{body}){
+ $logger->info("no differences, no diff to report");
+ return;
+ }
+
+ # otherwise we loop through the old and new body, and make comparisons
+ my @oldBody = split("\n",${$self}{originalBody});
+ my @newBody = split("\n",${$self}{body});
+ my @diff = ();
+
+ # this loop stores the differences ...
+ if($is_m_switch_active){
+ # if -m *is* active, then the number of lines in old and new may not be the same
+ # so we need to go through the options
+ my $maxLines = ($#oldBody >= $#newBody ? $#oldBody : $#newBody);
+
+ # loop through to maxLines, accounting for the three scenarios:
+ #
+ # oldBody[lineCount] and newBody[lineCount] both defined
+ # oldBody[lineCount] defined and newBody[lineCount] not defined
+ # oldBody[lineCount] not defined and newBody[lineCount] defined
+ #
+ for (my $lineCount=0;$lineCount<=$maxLines;$lineCount++){
+ if ($lineCount<=$#oldBody and $lineCount<=$#newBody ){
+ if ($oldBody[$lineCount] ne $newBody[$lineCount]){
+ push(@diff,{old=>$oldBody[$lineCount],new=>$newBody[$lineCount],lineNumber=>$lineCount+1});
+ }
+ } elsif ($lineCount<=$#oldBody) {
+ push(@diff,{old=>$oldBody[$lineCount],lineNumber=>$lineCount+1});
+ } else {
+ push(@diff,{new=>$newBody[$lineCount],lineNumber=>$lineCount+1});
+ }
+ }
+ } else {
+ # if -m is not active, then the number of lines in old and new will be the same
+ for (my $lineCount=0;$lineCount<=$#oldBody;$lineCount++){
+ if ($oldBody[$lineCount] ne $newBody[$lineCount]){
+ push(@diff,{old=>$oldBody[$lineCount],new=>$newBody[$lineCount],lineNumber=>$lineCount+1});
+ }
+ }
+ }
+
+ # initialise the old and new tmp body for storage
+ my $tmpOldBody = '-';
+ my $tmpNewBody = '+';
+ my $previousLineNumber = -1;
+
+ # and the 'diff chunk' storage array
+ my @diffChunks = ();
+ my $diffChunkFirstLineNumber = ${$diff[0]}{lineNumber};
+
+ # ... and this loop combines the diffs into chunks
+ for my $i (0..$#diff) {
+
+ my $currentLineNumber = ${$diff[$i]}{lineNumber};
+
+ if ($i == $#diff
+ or ( $previousLineNumber>=0 and $currentLineNumber>($previousLineNumber+1) )){
+
+ my $lastLine = ${$diff[$i-1]}{lineNumber};
+
+ if ($i == $#diff){
+ $lastLine = $currentLineNumber;
+ $tmpOldBody .= ($tmpOldBody eq '-' ? q() : "\n-").${$diff[$i]}{old};
+ $tmpNewBody .= ($tmpNewBody eq '+' ? q() : "\n+").${$diff[$i]}{new};
+ }
+
+ push(@diffChunks, {old=>$tmpOldBody,
+ new=>$tmpNewBody,
+ firstLine=>$diffChunkFirstLineNumber,
+ lastLine=>$lastLine } );
+
+ $tmpOldBody = '-'.${$diff[$i]}{old} if defined ${$diff[$i]}{old};
+ $tmpNewBody = '+'.${$diff[$i]}{new} if defined ${$diff[$i]}{new};
+ $diffChunkFirstLineNumber = $currentLineNumber;
+ } else {
+ $tmpOldBody .= ($tmpOldBody eq '-' ? q() : "\n-").${$diff[$i]}{old} if defined ${$diff[$i]}{old};
+ $tmpNewBody .= ($tmpNewBody eq '+' ? q() : "\n+").${$diff[$i]}{new} if defined ${$diff[$i]}{new};
+ }
+
+ $previousLineNumber = ${$diff[$i]}{lineNumber};
+ }
+
+ # finally, output the diff chunks
+ foreach (@diffChunks){
+ $logger->info("@@ ${$_}{firstLine} -- ${$_}{lastLine} @@");
+ $logger->info(${$_}{old});
+ $logger->info(${$_}{new});
+
+ # possibly output to terminal
+ if($is_check_verbose_switch_active){
+ print "\n@@ ${$_}{firstLine} -- ${$_}{lastLine} @@\n";
+ print ${$_}{old},"\n";
+ print ${$_}{new},"\n";
+ }
+ }
+}
+
+1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
index a877a6295c1..b35577ab96c 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
@@ -19,7 +19,7 @@ use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use Data::Dumper;
use Exporter qw/import/;
@@ -36,19 +36,19 @@ sub construct_command_regexp{
my $self = shift;
$optAndMandAndRoundBracketsRegExp = $self->get_arguments_regexp(
- roundBrackets=>${$masterSettings{commandCodeBlocks}}{roundParenthesesAllowed},
+ roundBrackets=>${$mainSettings{commandCodeBlocks}}{roundParenthesesAllowed},
stringBetweenArguments=>1);
$optAndMandAndRoundBracketsRegExpLineBreaks = $self->get_arguments_regexp(
- roundBrackets=>${$masterSettings{commandCodeBlocks}}{roundParenthesesAllowed},
+ roundBrackets=>${$mainSettings{commandCodeBlocks}}{roundParenthesesAllowed},
mode=>"lineBreaksAtEnd",
stringBetweenArguments=>1);
# put together a list of the special command names (this was mostly motivated by the \@ifnextchar[ issue)
my $commandNameSpecialRegExp = q();
- if(ref(${$masterSettings{commandCodeBlocks}}{commandNameSpecial}) eq "ARRAY"){
+ if(ref(${$mainSettings{commandCodeBlocks}}{commandNameSpecial}) eq "ARRAY"){
- my @commandNameSpecial = @{${$masterSettings{commandCodeBlocks}}{commandNameSpecial}};
+ my @commandNameSpecial = @{${$mainSettings{commandCodeBlocks}}{commandNameSpecial}};
$logger->trace("*Looping through array for commandCodeBlocks->commandNameSpecial") if $is_t_switch_active ;
# note that the zero'th element in this array contains the amalgamate switch, which we don't want!
@@ -65,7 +65,7 @@ sub construct_command_regexp{
$logger->trace("*The special command names regexp is: $commandNameSpecialRegExp (see commandNameSpecial)") if $is_t_switch_active;
# read from fine tuning
- my $commandNameRegExp = qr/${${$masterSettings{fineTuning}}{commands}}{name}/;
+ my $commandNameRegExp = qr/${${$mainSettings{fineTuning}}{commands}}{name}/;
# construct the command regexp
$commandRegExp = qr/
@@ -132,7 +132,7 @@ sub tasks_particular_to_each_object{
if (${${${${$self}{children}}[0]}{children}[-1]}{EndFinishesWithLineBreak} == 3 ){
my $EndStringLogFile = ${${${${$self}{children}}[0]}{children}[-1]}{aliases}{EndFinishesWithLineBreak}||"EndFinishesWithLineBreak";
$logger->trace("Adding another blank line to replacement text for ${$self}{name} as last argument has $EndStringLogFile == 3 ") if $is_t_switch_active;
- ${$self}{replacementText} .= (${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
+ ${$self}{replacementText} .= (${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
}
# update the argument object
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
index 4098d018137..c989b201521 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
@@ -21,11 +21,13 @@ use utf8;
use open ':std', ':encoding(UTF-8)';
# gain access to subroutines in the following modules
-use LatexIndent::Switches qw/store_switches %switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active/;
+use LatexIndent::Switches qw/store_switches %switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active $is_check_switch_active/;
use LatexIndent::LogFile qw/process_switches $logger/;
use LatexIndent::Logger qw/@logFileLines/;
+use LatexIndent::Check qw/simple_diff/;
+use LatexIndent::Lines qw/lines_body_selected_lines lines_verbatim_create_line_block/;
use LatexIndent::Replacement qw/make_replacements/;
-use LatexIndent::GetYamlSettings qw/yaml_read_settings yaml_modify_line_breaks_settings yaml_get_indentation_settings_for_this_object yaml_poly_switch_get_every_or_custom_value yaml_get_indentation_information yaml_get_object_attribute_for_indentation_settings yaml_alignment_at_ampersand_settings yaml_get_textwrap_removeparagraphline_breaks %masterSettings yaml_get_columns/;
+use LatexIndent::GetYamlSettings qw/yaml_read_settings yaml_modify_line_breaks_settings yaml_get_indentation_settings_for_this_object yaml_poly_switch_get_every_or_custom_value yaml_get_indentation_information yaml_get_object_attribute_for_indentation_settings yaml_alignment_at_ampersand_settings yaml_get_textwrap_removeparagraphline_breaks %mainSettings yaml_get_columns/;
use LatexIndent::FileExtension qw/file_extension_check/;
use LatexIndent::BackUpFileProcedure qw/create_back_up_file/;
use LatexIndent::BlankLines qw/protect_blank_lines unprotect_blank_lines condense_blank_lines/;
@@ -67,7 +69,7 @@ sub new{
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {@_};
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationStartCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationStartCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationStartCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationStartCodeBlockTrace};
bless ($self,$class);
return $self;
}
@@ -79,13 +81,18 @@ sub latexindent{
$self->yaml_read_settings;
$self->file_extension_check;
$self->operate_on_file;
+
+ # check switch active, and file changed, gives different exit code
+ if ($is_check_switch_active and ${$self}{originalBody} ne ${$self}{body}){
+ exit(1);
+ }
}
sub operate_on_file{
my $self = shift;
$self->create_back_up_file;
- $self->token_check;
+ $self->token_check unless ($switches{lines}) ;
$self->make_replacements(when=>"before") if ($is_r_switch_active and !$is_rv_switch_active);
unless ($is_rr_switch_active){
$self->construct_regular_expressions;
@@ -99,24 +106,24 @@ sub operate_on_file{
$logger->trace(Dumper(\%verbatimStorage)) if $is_tt_switch_active;
$self->verbatim_modify_line_breaks if $is_m_switch_active;
$self->make_replacements(when=>"before") if $is_rv_switch_active;
- $self->text_wrap if ($is_m_switch_active and !${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1);
- $self->protect_blank_lines;
+ $self->text_wrap if ($is_m_switch_active and !${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1);
+ $self->protect_blank_lines if $is_m_switch_active;
$self->remove_trailing_whitespace(when=>"before");
$self->find_file_contents_environments_and_preamble;
$self->dodge_double_backslash;
$self->remove_leading_space;
$self->process_body_of_text;
- ${$self}{body} =~ s/\r\n/\n/sg if $masterSettings{dos2unixlinebreaks};
+ ${$self}{body} =~ s/\r\n/\n/sg if $mainSettings{dos2unixlinebreaks};
$self->remove_trailing_whitespace(when=>"after");
- $self->condense_blank_lines;
- $self->unprotect_blank_lines;
+ $self->condense_blank_lines if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}}{condenseMultipleBlankLinesInto} );
+ $self->unprotect_blank_lines if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}}{preserveBlankLines} );
$self->un_dodge_double_backslash;
$self->make_replacements(when=>"after") if $is_rv_switch_active;
$self->put_verbatim_back_in (match=>"everything-except-commands");
$self->put_trailing_comments_back_in;
$self->put_verbatim_back_in (match=>"just-commands");
$self->make_replacements(when=>"after") if ($is_r_switch_active and !$is_rv_switch_active);
- ${$self}{body} =~ s/\r\n/\n/sg if $masterSettings{dos2unixlinebreaks};
+ ${$self}{body} =~ s/\r\n/\n/sg if $mainSettings{dos2unixlinebreaks};
}
$self->output_indented_text;
return
@@ -141,6 +148,8 @@ sub construct_regular_expressions{
sub output_indented_text{
my $self = shift;
+ $self->simple_diff() if $is_check_switch_active;
+
$logger->info("*Output routine:");
# if -overwrite is active then output to original fileName
@@ -172,10 +181,10 @@ sub output_logfile{
my $self = shift;
#
# put the final line in the logfile
- $logger->info("${$masterSettings{logFilePreferences}}{endLogFileWith}") if ${$masterSettings{logFilePreferences}}{endLogFileWith};
+ $logger->info("${$mainSettings{logFilePreferences}}{endLogFileWith}") if ${$mainSettings{logFilePreferences}}{endLogFileWith};
# github info line
- $logger->info("*Please direct all communication/issues to:\nhttps://github.com/cmhughes/latexindent.pl") if ${$masterSettings{logFilePreferences}}{showGitHubInfoFooter};
+ $logger->info("*Please direct all communication/issues to:\nhttps://github.com/cmhughes/latexindent.pl") if ${$mainSettings{logFilePreferences}}{showGitHubInfoFooter};
# open log file
my $logfileName = $switches{logFileName}||"indent.log";
@@ -220,19 +229,19 @@ sub find_objects{
my $self = shift;
# one sentence per line: sentences are objects, as of V3.5.1
- $self->one_sentence_per_line if ($is_m_switch_active and ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{manipulateSentences});
+ $self->one_sentence_per_line if ($is_m_switch_active and ${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{manipulateSentences});
if ($is_m_switch_active and !${$self}{preamblePresent}){
$self->yaml_get_textwrap_removeparagraphline_breaks;
}
- if( $is_m_switch_active and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 1){
+ if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 1){
# call the remove_paragraph_line_breaks and text_wrap routines
- if(${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
} else {
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
}
}
@@ -253,13 +262,13 @@ sub find_objects{
$self->find_commands_or_key_equals_values_braces_and_special if ${$self}{body} =~ m/$specialBeginAndBracesBracketsBasicRegExp/s;
# documents without preamble need a manual call to the paragraph_one_line routine
- if ($is_m_switch_active and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 0 ){
+ if ($is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 0 ){
# call the remove_paragraph_line_breaks and text_wrap routines
- if(${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
} else {
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
}
}
@@ -283,7 +292,7 @@ sub find_commands_or_key_equals_values_braces_and_special{
# the order in which we search for specialBeginEnd and commands/key/braces
# can change depending upon specialBeforeCommand
- if(${$masterSettings{specialBeginEnd}}{specialBeforeCommand}){
+ if(${$mainSettings{specialBeginEnd}}{specialBeforeCommand}){
# search for special begin/end
$logger->trace('looking for SPECIAL begin/end *before* looking for commands (see specialBeforeCommand)') if $is_t_switch_active;
$self->find_special if ${$self}{body} =~ m/$specialBeginBasicRegExp/s;
@@ -318,13 +327,13 @@ sub get_settings_and_store_new_object{
$latexIndentObject->tasks_common_to_each_object(%{$self});
# removeParagraphLineBreaks and textWrapping fun!
- $latexIndentObject->text_wrap_remove_paragraph_line_breaks if( $is_m_switch_active and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} );
+ $latexIndentObject->text_wrap_remove_paragraph_line_breaks if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} );
# tasks particular to each object
$latexIndentObject->tasks_particular_to_each_object;
# removeParagraphLineBreaks and textWrapping fun!
- $latexIndentObject->text_wrap_remove_paragraph_line_breaks if($is_m_switch_active and !${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} );
+ $latexIndentObject->text_wrap_remove_paragraph_line_breaks if($is_m_switch_active and !${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} );
# store children in special hash
push(@{${$self}{children}},$latexIndentObject);
@@ -333,7 +342,7 @@ sub get_settings_and_store_new_object{
$self->hidden_children_preparation_for_alignment($latexIndentObject) if(${$latexIndentObject}{lookForAlignDelims} and ${$latexIndentObject}{measureHiddenChildren});
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
@@ -381,7 +390,7 @@ sub tasks_common_to_each_object{
${$self}{idRegExp} = ${$self}{id};
if($is_m_switch_active
- and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{huge} ne "overflow"){
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{huge} ne "overflow"){
my $IDwithLineBreaks = join("\\R?\\h*",split(//,${$self}{id}));
${$self}{idRegExp} = qr/$IDwithLineBreaks/s;
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
index 44388abbf33..12c8d6e1916 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Braces qw/$braceBracketRegExpBasic/;
@@ -36,7 +36,7 @@ our $environmentRegExp;
sub construct_environments_regexp{
# read from fine tuning
- my $environmentNameRegExp = qr/${${$masterSettings{fineTuning}}{environments}}{name}/;
+ my $environmentNameRegExp = qr/${${$mainSettings{fineTuning}}{environments}}{name}/;
$environmentRegExp = qr/
(
\\begin\{
@@ -110,7 +110,7 @@ sub tasks_particular_to_each_object{
}
# search for items as the first order of business
- $self->find_items if ${$masterSettings{indentAfterItems}}{${$self}{name}};
+ $self->find_items if ${$mainSettings{indentAfterItems}}{${$self}{name}};
# search for headings (important to do this before looking for commands!)
$self->find_heading if ${$self}{body} =~ m/$allHeadingsRegexp/s;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileContents.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileContents.pm
index ff7b0eeb18c..b18feae6bd9 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileContents.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileContents.pm
@@ -17,7 +17,7 @@ package LatexIndent::FileContents;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Environment qw/$environmentBasicRegExp/;
@@ -41,8 +41,8 @@ sub find_file_contents_environments_and_preamble{
# fileContents environments
$logger->trace('*Searching for FILE CONTENTS environments (see fileContentsEnvironments)') if $is_t_switch_active;
- $logger->trace(Dumper(\%{$masterSettings{fileContentsEnvironments}})) if($is_tt_switch_active);
- while( my ($fileContentsEnv,$yesno)= each %{$masterSettings{fileContentsEnvironments}}){
+ $logger->trace(Dumper(\%{$mainSettings{fileContentsEnvironments}})) if($is_tt_switch_active);
+ while( my ($fileContentsEnv,$yesno)= each %{$mainSettings{fileContentsEnvironments}}){
if(!$yesno){
$logger->trace(" *not* looking for $fileContentsEnv as $fileContentsEnv:$yesno");
@@ -133,7 +133,7 @@ sub find_file_contents_environments_and_preamble{
my $needToStorePreamble = 0;
# try and find the preamble
- if( ${$self}{body} =~ m/$preambleRegExp/sx and ${$masterSettings{lookForPreamble}}{${$self}{fileExtension}}){
+ if( ${$self}{body} =~ m/$preambleRegExp/sx and ${$mainSettings{lookForPreamble}}{${$self}{fileExtension}}){
$logger->trace("\\begin{document} found in body (after searching for filecontents)-- assuming that a preamble exists") if $is_t_switch_active ;
@@ -173,13 +173,13 @@ sub find_file_contents_environments_and_preamble{
$logger->trace("replaced with ID: ${$preamble}{replacementText}") if $is_tt_switch_active;
# indentPreamble set to 1
- if($masterSettings{indentPreamble}){
+ if($mainSettings{indentPreamble}){
$logger->trace("storing ${$preamble}{id} for indentation (see indentPreamble)") if $is_tt_switch_active;
$needToStorePreamble = 1;
} else {
# indentPreamble set to 0
$logger->trace("NOT storing ${$preamble}{id} for indentation -- will store as VERBATIM object (because indentPreamble:0)") if $is_t_switch_active;
- $preamble->unprotect_blank_lines;
+ $preamble->unprotect_blank_lines if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}}{preserveBlankLines} );
$verbatimStorage{${$preamble}{id}} = $preamble;
}
} else {
@@ -193,7 +193,7 @@ sub find_file_contents_environments_and_preamble{
if($preamble ne '' and ${$preamble}{body} =~ m/${$_}{id}/){
$logger->trace("filecontents (${$_}{id}) is within preamble") if $is_t_switch_active;
# indentPreamble set to 1
- if($masterSettings{indentPreamble}){
+ if($mainSettings{indentPreamble}){
$logger->trace("storing ${$_}{id} for indentation (indentPreamble is 1)") if $is_t_switch_active;
$indentThisChild = 1;
} else {
@@ -213,14 +213,14 @@ sub find_file_contents_environments_and_preamble{
push(@{${$self}{children}},$_);
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
}
if($needToStorePreamble){
$preamble->dodge_double_backslash;
$preamble->remove_leading_space;
- $preamble->find_commands_or_key_equals_values_braces if($masterSettings{preambleCommandsBeforeEnvironments});
+ $preamble->find_commands_or_key_equals_values_braces if($mainSettings{preambleCommandsBeforeEnvironments});
$preamble->tasks_particular_to_each_object;
push(@{${$self}{children}},$preamble);
}
@@ -238,6 +238,23 @@ sub create_unique_id{
sub tasks_particular_to_each_object{
my $self = shift;
+ # text wrapping, remove paragraph line breaks
+ if ($is_m_switch_active){
+ $self->yaml_get_textwrap_removeparagraphline_breaks;
+ }
+
+ # option to textWrap beforeFindingChildCodeBlocks
+ if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 1){
+ # call the remove_paragraph_line_breaks and text_wrap routines
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ $self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ } else {
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
+ }
+ }
+
# search for environments
$self->find_environments if ${$self}{body} =~ m/$environmentBasicRegExp/s;
@@ -251,15 +268,13 @@ sub tasks_particular_to_each_object{
$self->find_commands_or_key_equals_values_braces_and_special if ${$self}{body} =~ m/$specialBeginAndBracesBracketsBasicRegExp/s;
# text wrapping, remove paragraph line breaks
- if ($is_m_switch_active){
- $self->yaml_get_textwrap_removeparagraphline_breaks;
-
+ if ($is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 0){
# call the remove_paragraph_line_breaks and text_wrap routines
- if(${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
} else {
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
}
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
index 6902b0f48cd..a9ff031493e 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
@@ -21,8 +21,8 @@ use PerlIO::encoding;
use open ':std', ':encoding(UTF-8)';
use File::Basename; # to get the filename and directory path
use Exporter qw/import/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
-use LatexIndent::Switches qw/%switches/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
+use LatexIndent::Switches qw/%switches $is_check_switch_active/;
use LatexIndent::LogFile qw/$logger/;
our @EXPORT_OK = qw/file_extension_check/;
@@ -36,7 +36,7 @@ sub file_extension_check{
my ($name,$dir,$ext) = fileparse($fileName,qr/\..[^.]*$/);
# grab the file extension preferences
- my %fileExtensionPreference= %{$masterSettings{fileExtensionPreference}};
+ my %fileExtensionPreference= %{$mainSettings{fileExtensionPreference}};
# sort the file extensions by preference
my @fileExtensions = sort { $fileExtensionPreference{$a} <=> $fileExtensionPreference{$b} } keys(%fileExtensionPreference);
@@ -69,17 +69,18 @@ sub file_extension_check{
foreach (@fileExtensions ){
$logger->fatal("I searched for $fileName$_");
}
- $logger->fatal("but couldn't find any of them.\nConsider updating fileExtensionPreference.\nExiting, no indendation done.");
+ $logger->fatal("but couldn't find any of them.\nConsider updating fileExtensionPreference.");
+ $logger->fatal("*Exiting, no indendation done.");
$self->output_logfile();
- die "ERROR: I couldn't find any of the following files: ".$fileName.join(", $fileName",@fileExtensions)." (see fileExtensionPreference)\nExiting, no indendation done.";
+ exit(3);
}
} else {
# if the file has a recognised extension, check that the file exists
unless( -e $fileName ){
- my $message = "ERROR: I couldn't find $fileName, are you sure it exists?\nNo indentation done.\nExiting.";
- $logger->fatal("*$message");
+ $logger->fatal("*I couldn't find $fileName, are you sure it exists?");
+ $logger->fatal("Exiting, no indendation done.");
$self->output_logfile();
- die $message;
+ exit(3);
}
}
}
@@ -140,14 +141,31 @@ sub file_extension_check{
# read the file into the Document body
my @lines;
if($fileName ne "-"){
- open(MAINFILE, $fileName) or die "Could not open input file, $fileName";
+ my $openFilePossible=1;
+ open(MAINFILE, $fileName) or ($openFilePossible=0);
+ if($openFilePossible==0){
+ $logger->fatal("*$fileName exists, but could not open it");
+ $logger->fatal("Exiting, no indendation done.");
+ $self->output_logfile();
+ exit(4);
+ }
push(@lines,$_) while(<MAINFILE>);
close(MAINFILE);
} else {
push(@lines,$_) while (<>)
}
- # the all-important step: update the body
- ${$self}{body} = join("",@lines);
+ # -n, --lines mode active
+ if($switches{lines}){
+ $self->lines_body_selected_lines(\@lines);
+ } else {
+ # the all-important step: update the body
+ ${$self}{body} = join("",@lines);
+ }
+
+ # necessary extra storage if check switch is active
+ if ($is_check_switch_active){
+ ${$self}{originalBody} = ${$self}{body};
+ }
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
index 1529493d4f9..168c5d97bbb 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
@@ -24,13 +24,13 @@ use File::HomeDir;
use Cwd;
use Exporter qw/import/;
use LatexIndent::LogFile qw/$logger/;
-our @EXPORT_OK = qw/yaml_read_settings yaml_modify_line_breaks_settings yaml_get_indentation_settings_for_this_object yaml_poly_switch_get_every_or_custom_value yaml_get_indentation_information yaml_get_object_attribute_for_indentation_settings yaml_alignment_at_ampersand_settings yaml_get_textwrap_removeparagraphline_breaks %masterSettings yaml_get_columns/;
+our @EXPORT_OK = qw/yaml_read_settings yaml_modify_line_breaks_settings yaml_get_indentation_settings_for_this_object yaml_poly_switch_get_every_or_custom_value yaml_get_indentation_information yaml_get_object_attribute_for_indentation_settings yaml_alignment_at_ampersand_settings yaml_get_textwrap_removeparagraphline_breaks %mainSettings yaml_get_columns/;
# Read in defaultSettings.YAML file
our $defaultSettings;
# master yaml settings is a hash, global to this module
-our %masterSettings;
+our %mainSettings;
# previously found settings is a hash, global to this module
our %previouslyFoundSettings;
@@ -64,15 +64,25 @@ sub yaml_read_settings{
# if latexindent.exe is invoked from TeXLive, then defaultSettings.yaml won't be in
# the same directory as it; we need to navigate to it
if(!$defaultSettings) {
- $defaultSettings = YAML::Tiny->read( "$FindBin::RealBin/../../texmf-dist/scripts/latexindent/defaultSettings.yaml");
$logger->info("Reading defaultSettings.yaml (2nd attempt, TeXLive, Windows) from $FindBin::RealBin/../../texmf-dist/scripts/latexindent/defaultSettings.yaml");
+ if ( -e "$FindBin::RealBin/../../texmf-dist/scripts/latexindent/defaultSettings.yaml" ){
+ $defaultSettings = YAML::Tiny->read( "$FindBin::RealBin/../../texmf-dist/scripts/latexindent/defaultSettings.yaml");
+ } else {
+ $logger->fatal("*Could not open defaultSettings.yaml");
+ $self->output_logfile();
+ exit(2);
+ }
}
# need to exit if we can't get defaultSettings.yaml
- die "Could not open defaultSettings.yaml" if(!$defaultSettings);
+ if(!$defaultSettings){
+ $logger->fatal("*Could not open defaultSettings.yaml");
+ $self->output_logfile();
+ exit(2);
+ }
# master yaml settings is a hash, global to this module
- our %masterSettings = %{$defaultSettings->[0]};
+ our %mainSettings = %{$defaultSettings->[0]};
&yaml_update_dumper_settings();
@@ -270,26 +280,26 @@ sub yaml_read_settings{
if (ref($firstLevelValue) eq "HASH") {
while(my ($secondLevelKey,$secondLevelValue) = each %{$userSettings->[0]{$firstLevelKey}}) {
if (ref $secondLevelValue eq "HASH"){
- # if masterSettings already contains a *scalar* value in secondLevelKey
+ # if mainSettings already contains a *scalar* value in secondLevelKey
# then we need to delete it (test-cases/headings-first.tex with indentRules1.yaml first demonstrated this)
- if(defined $masterSettings{$firstLevelKey}{$secondLevelKey}
- and ref $masterSettings{$firstLevelKey}{$secondLevelKey} ne "HASH"){
- $logger->trace("*masterSettings{$firstLevelKey}{$secondLevelKey} currently contains a *scalar* value, but it needs to be updated with a hash (see $settings); deleting the scalar") if($is_t_switch_active);
- delete $masterSettings{$firstLevelKey}{$secondLevelKey} ;
+ if(defined $mainSettings{$firstLevelKey}{$secondLevelKey}
+ and ref $mainSettings{$firstLevelKey}{$secondLevelKey} ne "HASH"){
+ $logger->trace("*mainSettings{$firstLevelKey}{$secondLevelKey} currently contains a *scalar* value, but it needs to be updated with a hash (see $settings); deleting the scalar") if($is_t_switch_active);
+ delete $mainSettings{$firstLevelKey}{$secondLevelKey} ;
}
while(my ($thirdLevelKey,$thirdLevelValue) = each %{$secondLevelValue}) {
if (ref $thirdLevelValue eq "HASH"){
# similarly for third level
- if (defined $masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey}
- and ref $masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} ne "HASH"){
- $logger->trace("*masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} currently contains a *scalar* value, but it needs to be updated with a hash (see $settings); deleting the scalar") if($is_t_switch_active);
- delete $masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} ;
+ if (defined $mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey}
+ and ref $mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} ne "HASH"){
+ $logger->trace("*mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} currently contains a *scalar* value, but it needs to be updated with a hash (see $settings); deleting the scalar") if($is_t_switch_active);
+ delete $mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} ;
}
while(my ($fourthLevelKey,$fourthLevelValue) = each %{$thirdLevelValue}) {
- $masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey}{$fourthLevelKey} = $fourthLevelValue;
+ $mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey}{$fourthLevelKey} = $fourthLevelValue;
}
} else {
- $masterSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} = $thirdLevelValue;
+ $mainSettings{$firstLevelKey}{$secondLevelKey}{$thirdLevelKey} = $thirdLevelValue;
}
}
} else {
@@ -297,54 +307,54 @@ sub yaml_read_settings{
# to be amalgamated, rather than overwritten
if(ref($secondLevelValue) eq "ARRAY"
and
- ${${$masterSettings{$firstLevelKey}{$secondLevelKey}}[0]}{amalgamate}
+ ${${$mainSettings{$firstLevelKey}{$secondLevelKey}}[0]}{amalgamate}
and
!(ref(${$secondLevelValue}[0]) eq "HASH" and defined ${$secondLevelValue}[0]{amalgamate} and !${$secondLevelValue}[0]{amalgamate})
){
$logger->trace("*$firstLevelKey -> $secondLevelKey, amalgamate: 1") if($is_t_switch_active);
foreach (@{$secondLevelValue}){
$logger->trace("$_") if($is_t_switch_active);
- push (@{$masterSettings{$firstLevelKey}{$secondLevelKey}},$_) unless(ref($_) eq "HASH");
+ push (@{$mainSettings{$firstLevelKey}{$secondLevelKey}},$_) unless(ref($_) eq "HASH");
}
# remove duplicated entries, https://stackoverflow.com/questions/7651/how-do-i-remove-duplicate-items-from-an-array-in-perl
my %seen = ();
- my @unique = grep { ! $seen{ $_ }++ } @{$masterSettings{$firstLevelKey}{$secondLevelKey}};
- @{$masterSettings{$firstLevelKey}{$secondLevelKey}} = @unique;
+ my @unique = grep { ! $seen{ $_ }++ } @{$mainSettings{$firstLevelKey}{$secondLevelKey}};
+ @{$mainSettings{$firstLevelKey}{$secondLevelKey}} = @unique;
$logger->trace("*master settings for $firstLevelKey -> $secondLevelKey now look like:") if $is_t_switch_active;
- foreach (@{$masterSettings{$firstLevelKey}{$secondLevelKey}}){
+ foreach (@{$mainSettings{$firstLevelKey}{$secondLevelKey}}){
$logger->trace("$_") if($is_t_switch_active);
}
} else {
- $masterSettings{$firstLevelKey}{$secondLevelKey} = $secondLevelValue;
+ $mainSettings{$firstLevelKey}{$secondLevelKey} = $secondLevelValue;
}
}
}
} elsif (ref($firstLevelValue) eq "ARRAY") {
# update amalgamate in master settings
if(ref(${$firstLevelValue}[0]) eq "HASH" and defined ${$firstLevelValue}[0]{amalgamate}){
- ${$masterSettings{$firstLevelKey}[0]}{amalgamate} = ${$firstLevelValue}[0]{amalgamate};
- shift @{$firstLevelValue} if ${$masterSettings{$firstLevelKey}[0]}{amalgamate};
+ ${$mainSettings{$firstLevelKey}[0]}{amalgamate} = ${$firstLevelValue}[0]{amalgamate};
+ shift @{$firstLevelValue} if ${$mainSettings{$firstLevelKey}[0]}{amalgamate};
}
# if amalgamate is set to 1, then append
- if(${$masterSettings{$firstLevelKey}[0]}{amalgamate}){
+ if(${$mainSettings{$firstLevelKey}[0]}{amalgamate}){
# loop through the other settings
foreach (@{$firstLevelValue}){
- push (@{$masterSettings{$firstLevelKey}},$_);
+ push (@{$mainSettings{$firstLevelKey}},$_);
}
} else {
# otherwise overwrite
- $masterSettings{$firstLevelKey} = $firstLevelValue;
+ $mainSettings{$firstLevelKey} = $firstLevelValue;
}
} else {
- $masterSettings{$firstLevelKey} = $firstLevelValue;
+ $mainSettings{$firstLevelKey} = $firstLevelValue;
}
}
# output settings to $logfile
- if($masterSettings{logFilePreferences}{showEveryYamlRead}){
+ if($mainSettings{logFilePreferences}{showEveryYamlRead}){
$logger->info(Dump \%{$userSettings->[0]});
} else {
$logger->info("Not showing settings in the log file (see showEveryYamlRead and showAmalgamatedSettings).");
@@ -532,29 +542,29 @@ sub yaml_read_settings{
if(scalar(@keysValues) == 2){
# for example, -y="defaultIndent: ' '"
my $key = $keysValues[0];
- $logger->info("Updating masterSettings with $key: $value");
- $masterSettings{$key} = $value;
+ $logger->info("Updating mainSettings with $key: $value");
+ $mainSettings{$key} = $value;
} elsif(scalar(@keysValues) == 3){
# for example, -y="indentRules: one: '\t\t\t\t'"
my $parent = $keysValues[0];
my $child = $keysValues[1];
- $logger->info("Updating masterSettings with $parent: $child: $value");
- $masterSettings{$parent}{$child} = $value;
+ $logger->info("Updating mainSettings with $parent: $child: $value");
+ $mainSettings{$parent}{$child} = $value;
} elsif(scalar(@keysValues) == 4){
# for example, -y='modifyLineBreaks : environments: EndStartsOnOwnLine:3' -m
my $parent = $keysValues[0];
my $child = $keysValues[1];
my $grandchild = $keysValues[2];
- $logger->info("Updating masterSettings with $parent: $child: $grandchild: $value");
- $masterSettings{$parent}{$child}{$grandchild} = $value;
+ $logger->info("Updating mainSettings with $parent: $child: $grandchild: $value");
+ $mainSettings{$parent}{$child}{$grandchild} = $value;
} elsif(scalar(@keysValues) == 5){
# for example, -y='modifyLineBreaks : environments: one: EndStartsOnOwnLine:3' -m
my $parent = $keysValues[0];
my $child = $keysValues[1];
my $grandchild = $keysValues[2];
my $greatgrandchild = $keysValues[3];
- $logger->info("Updating masterSettings with $parent: $child: $grandchild: $greatgrandchild: $value");
- $masterSettings{$parent}{$child}{$grandchild}{$greatgrandchild} = $value;
+ $logger->info("Updating mainSettings with $parent: $child: $grandchild: $greatgrandchild: $value");
+ $mainSettings{$parent}{$child}{$grandchild}{$greatgrandchild} = $value;
}
&yaml_update_dumper_settings();
@@ -562,17 +572,9 @@ sub yaml_read_settings{
}
- # some users may wish to see showAmalgamatedSettings
- # which details the overall state of the settings modified
- # from the default in various user files
- if($masterSettings{logFilePreferences}{showAmalgamatedSettings}){
- $logger->info("Amalgamated/overall settings to be used:");
- $logger->info(Dumper(\%masterSettings));
- }
-
if( $is_m_switch_active
- and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks}
- and !${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} ){
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks}
+ and !${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} ){
# the following settings don't make sense, so we change
#
@@ -589,8 +591,89 @@ sub yaml_read_settings{
$logger->warn("*textWrapOptions:beforeFindingChildCodeBlocks:1 with textWrapOptions:perCodeBlockBasis:0");
$logger->warn("turning off beforeFindingChildCodeBlocks by changing textWrapOptions:beforeFindingOtherCodeBlocks to be 0");
$logger->warn("you need to set *both* values to be 1 to use the beforeFindingChildCodeBlocks feature");
- ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} = 0;
+ ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} = 0;
}
+
+ # modifyLineBreaks:
+ # textWrapOptions:
+ # columns: 80
+ # perCodeBlockBasis: 1
+ # masterDocument: 1
+ #
+ # needs to be interpretted as
+ #
+ # modifyLineBreaks:
+ # textWrapOptions:
+ # columns: 80
+ # perCodeBlockBasis: 1
+ # mainDocument: 1
+ #
+ if( $is_m_switch_active
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis}
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{masterDocument} ){
+ $logger->warn("*textWrapOptions:masterDocument specified when textWrapOptions:mainDocument preferred");
+ $logger->warn("setting textWrapOptions:mainDocument: 1, but note that future versions of latexindent.pl may not support this");
+ $logger->warn("recommendation to use textWrapOptions:mainDocument: 1 in place of textWrapOptions:masterDocument:1");
+ ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{mainDocument} = 1;
+ }
+
+ # modifyLineBreaks:
+ # removeParagraphLineBreaks:
+ # masterDocument: 1
+ #
+ # needs to be interpretted as
+ #
+ # modifyLineBreaks:
+ # removeParagraphLineBreaks:
+ # mainDocument: 1
+ #
+ if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{masterDocument} ){
+ $logger->warn("*removeParagraphLineBreaks:masterDocument specified when removeParagraphLineBreaks:mainDocument preferred");
+ $logger->warn("setting removeParagraphLineBreaks:mainDocument: 1, but note that future versions of latexindent.pl may not support this");
+ $logger->warn("recommendation to use removeParagraphLineBreaks:mainDocument: 1 in place of removeParagraphLineBreaks:masterDocument:1");
+ ${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{mainDocument} = 1;
+ }
+
+ # modifyLineBreaks:
+ # textWrapOptions/removeParagraphLineBreaks:
+ # all:
+ # except:
+ # - 'masterDocument'
+ #
+ # need to be interpretted as
+ #
+ # modifyLineBreaks:
+ # textWrapOptions/removeParagraphLineBreaks:
+ # all:
+ # except:
+ # - 'mainDocument'
+ #
+ if( $is_m_switch_active ){
+ foreach ("textWrapOptions","removeParagraphLineBreaks"){
+ if ( ref ${$mainSettings{modifyLineBreaks}{$_}}{all} eq "HASH"
+ and
+ defined ${${$mainSettings{modifyLineBreaks}{$_}}{all}}{except}
+ and
+ ref ${${$mainSettings{modifyLineBreaks}{$_}}{all}}{except} eq "ARRAY") {
+ my %except = map { $_ => 1 } @{${${$mainSettings{modifyLineBreaks}}{$_}}{all}{except}};
+ if($except{masterDocument}){
+ $logger->warn("*$_:all:except:masterDocument specified when mainDocument preferred");
+ $logger->warn("setting $_:all:except:mainDocument:1, but note that future versions of latexindent.pl may not support this");
+ $logger->warn("recommendation to use $_:all:except:mainDocument:1 in place of $_:all:except:masterDocument:1");
+ push( @{${${$mainSettings{modifyLineBreaks}}{$_}}{all}{except}}, "mainDocument" );
+ }
+ }
+ }
+ }
+
+ # some users may wish to see showAmalgamatedSettings
+ # which details the overall state of the settings modified
+ # from the default in various user files
+ if($mainSettings{logFilePreferences}{showAmalgamatedSettings}){
+ $logger->info("Amalgamated/overall settings to be used:");
+ $logger->info(Dumper(\%mainSettings));
+ }
+
return;
}
@@ -670,11 +753,11 @@ sub yaml_alignment_at_ampersand_settings{
# delims: 1
# alignDoubleBackSlash: 1
# spacesBeforeDoubleBackSlash: 2
- return unless ${$masterSettings{lookForAlignDelims}}{$name};
+ return unless ${$mainSettings{lookForAlignDelims}}{$name};
$logger->trace("alignAtAmpersand settings for $name (see lookForAlignDelims)") if($is_t_switch_active);
- if(ref ${$masterSettings{lookForAlignDelims}}{$name} eq "HASH"){
+ if(ref ${$mainSettings{lookForAlignDelims}}{$name} eq "HASH"){
# specified as a hash, e.g
#
# lookForAlignDelims:
@@ -704,37 +787,37 @@ sub yaml_alignment_at_ampersand_settings{
# default: 0
#
# approach:
- # - update masterSettings to have the relevant information: leadingBlankColumn and/or default
+ # - update mainSettings to have the relevant information: leadingBlankColumn and/or default
# - delete the spacesBeforeAmpersand hash
#
if ($yamlname eq "spacesBeforeAmpersand"
- and ref(${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}) eq "HASH"){
+ and ref(${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}) eq "HASH"){
$logger->trace("spacesBeforeAmpersand settings for $name") if $is_t_switch_active;
# lookForAlignDelims:
# aligned:
# spacesBeforeAmpersand:
# leadingBlankColumn: 0
- if(defined ${${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{leadingBlankColumn}){
+ if(defined ${${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{leadingBlankColumn}){
$logger->trace("spacesBeforeAmpersand: leadingBlankColumn specified for $name") if $is_t_switch_active;
- ${${$masterSettings{lookForAlignDelims}}{$name}}{leadingBlankColumn}
- = ${${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{leadingBlankColumn};
+ ${${$mainSettings{lookForAlignDelims}}{$name}}{leadingBlankColumn}
+ = ${${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{leadingBlankColumn};
}
# lookForAlignDelims:
# aligned:
# spacesBeforeAmpersand:
# default: 0
- if(defined ${${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{default}){
- ${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}
- = ${${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{default};
+ if(defined ${${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{default}){
+ ${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}
+ = ${${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand}}{default};
} else {
# deleting spacesBeforeAmpersand hash allows spacesBeforeAmpersand
# to pull from the default values @alignAtAmpersandInformation
- delete ${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand};
+ delete ${${$mainSettings{lookForAlignDelims}}{$name}}{spacesBeforeAmpersand};
}
}
- ${$self}{ ${$_}{name} } = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{$yamlname} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{$yamlname} : ${$_}{default};
+ ${$self}{ ${$_}{name} } = (defined ${${$mainSettings{lookForAlignDelims}}{$name}}{$yamlname} ) ? ${${$mainSettings{lookForAlignDelims}}{$name}}{$yamlname} : ${$_}{default};
}
} else {
# specified as a scalar, e.g
@@ -815,10 +898,10 @@ sub yaml_get_textwrap_removeparagraphline_breaks{
# will disable textWrapOptions for itemize
# if 'all' is set as a hash, then the default value is 1, to be turned off (possibly) later
- ${$self}{$_} = ( ref ${$masterSettings{modifyLineBreaks}{$_}}{all} eq "HASH" ? 1 : ${$masterSettings{modifyLineBreaks}{$_}}{all});
+ ${$self}{$_} = ( ref ${$mainSettings{modifyLineBreaks}{$_}}{all} eq "HASH" ? 1 : ${$mainSettings{modifyLineBreaks}{$_}}{all});
# get the columns
- if($_ eq "textWrapOptions" and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis}){
+ if($_ eq "textWrapOptions" and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis}){
$self->yaml_get_columns;
}
@@ -835,9 +918,9 @@ sub yaml_get_textwrap_removeparagraphline_breaks{
#
if(${$self}{$_}
and
- ref ${$masterSettings{modifyLineBreaks}{$_}}{all} ne "HASH"
+ ref ${$mainSettings{modifyLineBreaks}{$_}}{all} ne "HASH"
and
- ${$masterSettings{modifyLineBreaks}{$_}}{all}){
+ ${$mainSettings{modifyLineBreaks}{$_}}{all}){
$logger->trace("$_ for $name is ${$self}{$_}") if $is_t_switch_active;
next;
};
@@ -865,11 +948,11 @@ sub yaml_get_textwrap_removeparagraphline_breaks{
#
if(${$self}{$_}
and
- defined ${${$masterSettings{modifyLineBreaks}{$_}}{all}}{except}
+ defined ${${$mainSettings{modifyLineBreaks}{$_}}{all}}{except}
and
- ref ${${$masterSettings{modifyLineBreaks}{$_}}{all}}{except} eq "ARRAY"
+ ref ${${$mainSettings{modifyLineBreaks}{$_}}{all}}{except} eq "ARRAY"
){
- my %except = map { $_ => 1 } @{${${$masterSettings{modifyLineBreaks}}{$_}}{all}{except}};
+ my %except = map { $_ => 1 } @{${${$mainSettings{modifyLineBreaks}}{$_}}{all}{except}};
if( $except{$name} or $except{$YamlName}){
${$self}{$_} = 0;
my $detail = ($except{$name} ? "per-name" : "per-code-block-type");
@@ -884,19 +967,19 @@ sub yaml_get_textwrap_removeparagraphline_breaks{
#
# the textWrapOptions/removeParagraphLineBreaks can contain fields that are hashes or scalar
#
- if(ref ${$masterSettings{modifyLineBreaks}{$_}}{$YamlName} eq "HASH"){
+ if(ref ${$mainSettings{modifyLineBreaks}{$_}}{$YamlName} eq "HASH"){
# textWrapOptions/removeParagraphLineBreaks:
# all: 0
# environments:
# quotation: 0
$logger->trace("*$YamlName specified with fields in $_, looking for $name") if $is_t_switch_active;
- ${$self}{$_} = ${${$masterSettings{modifyLineBreaks}{$_}}{$YamlName}}{$name} if (defined ${${$masterSettings{modifyLineBreaks}{$_}}{$YamlName}}{$name});
- } elsif(defined ${$masterSettings{modifyLineBreaks}{$_}}{$YamlName}){
+ ${$self}{$_} = ${${$mainSettings{modifyLineBreaks}{$_}}{$YamlName}}{$name} if (defined ${${$mainSettings{modifyLineBreaks}{$_}}{$YamlName}}{$name});
+ } elsif(defined ${$mainSettings{modifyLineBreaks}{$_}}{$YamlName}){
# textWrapOptions/removeParagraphLineBreaks:
# all: 0
# environments: 0
- $logger->trace("*$YamlName specified with just a number in $_ ${$masterSettings{modifyLineBreaks}{$_}}{$YamlName}") if $is_t_switch_active;
- ${$self}{$_} = ${$masterSettings{modifyLineBreaks}{$_}}{$YamlName} if (defined ${$masterSettings{modifyLineBreaks}{$_}}{$YamlName});
+ $logger->trace("*$YamlName specified with just a number in $_ ${$mainSettings{modifyLineBreaks}{$_}}{$YamlName}") if $is_t_switch_active;
+ ${$self}{$_} = ${$mainSettings{modifyLineBreaks}{$_}}{$YamlName} if (defined ${$mainSettings{modifyLineBreaks}{$_}}{$YamlName});
}
}
@@ -913,17 +996,17 @@ sub yaml_get_columns{
my $YamlName = ${$self}{modifyLineBreaksYamlName};
# the columns settings can have a variety of different ways of being specified
- if(ref ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns} eq "HASH"){
+ if(ref ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns} eq "HASH"){
# assign default value of $columns
my $columns;
- if(defined ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default}){
- $columns = ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default};
+ if(defined ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default}){
+ $columns = ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default};
} else {
$columns = 80;
}
# possibly specify object wrapping on a per-name basis
- if(ref ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName} eq "HASH"){
+ if(ref ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName} eq "HASH"){
# for example:
# modifyLineBreaks:
# textWrapOptions:
@@ -933,10 +1016,10 @@ sub yaml_get_columns{
# default: 80
# something: 10
# another: 20
- if(defined ${${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{${$self}{name}}){
- $columns = ${${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{${$self}{name}};
- } elsif (${${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{default}){
- $columns = ${${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{default};
+ if(defined ${${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{${$self}{name}}){
+ $columns = ${${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{${$self}{name}};
+ } elsif (${${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{default}){
+ $columns = ${${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName}}{default};
}
} else {
# for example:
@@ -945,11 +1028,11 @@ sub yaml_get_columns{
# columns:
# default: 80
# environments: 10
- $columns = ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName};
+ $columns = ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{$YamlName};
}
${$self}{columns} = $columns;
} else {
- ${$self}{columns} = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns};
+ ${$self}{columns} = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns};
}
return;
}
@@ -973,8 +1056,8 @@ sub yaml_poly_switch_get_every_or_custom_value{
my $name = ($YamlName =~ m/Arguments/) ? ${$self}{parent} : ${$self}{name};
# these variables just ease the notation what follows
- my $everyValue = ${${$masterSettings{modifyLineBreaks}}{$YamlName}}{$toBeAssignedToAlias};
- my $customValue = ${${${$masterSettings{modifyLineBreaks}}{$YamlName}}{$name}}{$toBeAssignedToAlias};
+ my $everyValue = ${${$mainSettings{modifyLineBreaks}}{$YamlName}}{$toBeAssignedToAlias};
+ my $customValue = ${${${$mainSettings{modifyLineBreaks}}{$YamlName}}{$name}}{$toBeAssignedToAlias};
# check for the *custom* value
if (defined $customValue){
@@ -1043,12 +1126,12 @@ sub yaml_get_indentation_information{
my $indentationInformation;
foreach my $indentationAbout ("noAdditionalIndent","indentRules"){
# check that the 'thing' is defined
- if(defined ${$masterSettings{$indentationAbout}}{$name}){
- if(ref ${$masterSettings{$indentationAbout}}{$name} eq "HASH"){
+ if(defined ${$mainSettings{$indentationAbout}}{$name}){
+ if(ref ${$mainSettings{$indentationAbout}}{$name} eq "HASH"){
$logger->trace("$indentationAbout indentation specified with multiple fields for $name, searching for $name: $YamlName (see $indentationAbout)") if $is_t_switch_active ;
- $indentationInformation = ${${$masterSettings{$indentationAbout}}{$name}}{$YamlName};
+ $indentationInformation = ${${$mainSettings{$indentationAbout}}{$name}}{$YamlName};
} else {
- $indentationInformation = ${$masterSettings{$indentationAbout}}{$name};
+ $indentationInformation = ${$mainSettings{$indentationAbout}}{$name};
$logger->trace("$indentationAbout indentation specified for $name (for *all* fields, body, optionalArguments, mandatoryArguments, afterHeading), using '$indentationInformation' (see $indentationAbout)") if $is_t_switch_active ;
}
# return, after performing an integrity check
@@ -1070,23 +1153,23 @@ sub yaml_get_indentation_information{
foreach my $indentationAbout ("noAdditionalIndent","indentRules"){
# global assignments in noAdditionalIndentGlobal and/or indentRulesGlobal
my $globalInformation = $indentationAbout."Global";
- next if(!(defined ${$masterSettings{$globalInformation}}{$YamlName}));
- if( ($globalInformation eq "noAdditionalIndentGlobal") and ${$masterSettings{$globalInformation}}{$YamlName}==1){
+ next if(!(defined ${$mainSettings{$globalInformation}}{$YamlName}));
+ if( ($globalInformation eq "noAdditionalIndentGlobal") and ${$mainSettings{$globalInformation}}{$YamlName}==1){
$logger->trace("$globalInformation specified for $YamlName (see $globalInformation)") if $is_t_switch_active;
return q();
} elsif($globalInformation eq "indentRulesGlobal") {
- if(${$masterSettings{$globalInformation}}{$YamlName}=~m/^\h*$/){
+ if(${$mainSettings{$globalInformation}}{$YamlName}=~m/^\h*$/){
$logger->trace("$globalInformation specified for $YamlName (see $globalInformation)") if $is_t_switch_active;
- return ${$masterSettings{$globalInformation}}{$YamlName};
- } elsif (${$masterSettings{$globalInformation}}{$YamlName} ne '0') {
- $logger->warn("$globalInformation specified (${$masterSettings{$globalInformation}}{$YamlName}) for $YamlName, but it needs to only contain horizontal space -- I'm ignoring this one");
+ return ${$mainSettings{$globalInformation}}{$YamlName};
+ } elsif (${$mainSettings{$globalInformation}}{$YamlName} ne '0') {
+ $logger->warn("$globalInformation specified (${$mainSettings{$globalInformation}}{$YamlName}) for $YamlName, but it needs to only contain horizontal space -- I'm ignoring this one");
}
}
}
# return defaultIndent, by default
$logger->trace("Using defaultIndent for $name") if $is_t_switch_active;
- return $masterSettings{defaultIndent};
+ return $mainSettings{defaultIndent};
}
sub yaml_get_object_attribute_for_indentation_settings{
@@ -1107,13 +1190,13 @@ sub yaml_get_object_attribute_for_indentation_settings{
sub yaml_update_dumper_settings{
# log file preferences
- $Data::Dumper::Terse = ${$masterSettings{logFilePreferences}{Dumper}}{Terse};
- $Data::Dumper::Indent = ${$masterSettings{logFilePreferences}{Dumper}}{Indent};
- $Data::Dumper::Useqq = ${$masterSettings{logFilePreferences}{Dumper}}{Useqq};
- $Data::Dumper::Deparse = ${$masterSettings{logFilePreferences}{Dumper}}{Deparse};
- $Data::Dumper::Quotekeys = ${$masterSettings{logFilePreferences}{Dumper}}{Quotekeys};
- $Data::Dumper::Sortkeys = ${$masterSettings{logFilePreferences}{Dumper}}{Sortkeys};
- $Data::Dumper::Pair = ${$masterSettings{logFilePreferences}{Dumper}}{Pair};
+ $Data::Dumper::Terse = ${$mainSettings{logFilePreferences}{Dumper}}{Terse};
+ $Data::Dumper::Indent = ${$mainSettings{logFilePreferences}{Dumper}}{Indent};
+ $Data::Dumper::Useqq = ${$mainSettings{logFilePreferences}{Dumper}}{Useqq};
+ $Data::Dumper::Deparse = ${$mainSettings{logFilePreferences}{Dumper}}{Deparse};
+ $Data::Dumper::Quotekeys = ${$mainSettings{logFilePreferences}{Dumper}}{Quotekeys};
+ $Data::Dumper::Sortkeys = ${$mainSettings{logFilePreferences}{Dumper}}{Sortkeys};
+ $Data::Dumper::Pair = ${$mainSettings{logFilePreferences}{Dumper}}{Pair};
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Heading.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Heading.pm
index 0c42f166a62..24d6865c4d5 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Heading.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Heading.pm
@@ -19,7 +19,7 @@ use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Special qw/$specialBeginBasicRegExp/;
use Exporter qw/import/;
@@ -33,7 +33,7 @@ sub construct_headings_levels{
my $self = shift;
# grab the heading levels
- my %headingsLevels = %{$masterSettings{indentAfterHeadings}};
+ my %headingsLevels = %{$mainSettings{indentAfterHeadings}};
# output to log file
$logger->trace("*Constructing headings reg exp for example, chapter, section, etc (see indentAfterThisHeading)") if $is_t_switch_active ;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/HorizontalWhiteSpace.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/HorizontalWhiteSpace.pm
index 9c5a04e2fb1..695e18223f2 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/HorizontalWhiteSpace.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/HorizontalWhiteSpace.pm
@@ -16,7 +16,7 @@ package LatexIndent::HorizontalWhiteSpace;
# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
use strict;
use warnings;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use Exporter qw/import/;
@@ -30,27 +30,27 @@ sub remove_trailing_whitespace{
# removeTrailingWhitespace can be either a hash or a scalar, but if
# it's a scalar, we need to fix it
- if(ref($masterSettings{removeTrailingWhitespace}) ne 'HASH'){
+ if(ref($mainSettings{removeTrailingWhitespace}) ne 'HASH'){
$logger->trace("removeTrailingWhitespace specified as scalar, will update it to be a hash") if $is_t_switch_active;
# grab the value
- my $removeTWS = $masterSettings{removeTrailingWhitespace};
+ my $removeTWS = $mainSettings{removeTrailingWhitespace};
# delete the scalar
- delete $masterSettings{removeTrailingWhitespace};
+ delete $mainSettings{removeTrailingWhitespace};
# redefine it as a hash
- ${$masterSettings{removeTrailingWhitespace}}{beforeProcessing} = $removeTWS;
- ${$masterSettings{removeTrailingWhitespace}}{afterProcessing} = $removeTWS;
+ ${$mainSettings{removeTrailingWhitespace}}{beforeProcessing} = $removeTWS;
+ ${$mainSettings{removeTrailingWhitespace}}{afterProcessing} = $removeTWS;
$logger->trace("removeTrailingWhitespace: beforeProcessing is now $removeTWS") if $is_t_switch_active;
$logger->trace("removeTrailingWhitespace: afterProcessing is now $removeTWS") if $is_t_switch_active;
}
# this method can be called before the indendation, and after, depending upon the input
if($input{when} eq "before"){
- return unless(${$masterSettings{removeTrailingWhitespace}}{beforeProcessing});
+ return unless(${$mainSettings{removeTrailingWhitespace}}{beforeProcessing});
$logger->trace("Removing trailing white space *before* the document is processed (see removeTrailingWhitespace: beforeProcessing)") if $is_t_switch_active;
} elsif($input{when} eq "after"){
- return unless(${$masterSettings{removeTrailingWhitespace}}{afterProcessing});
+ return unless(${$mainSettings{removeTrailingWhitespace}}{afterProcessing});
$logger->trace("Removing trailing white space *after* the document is processed (see removeTrailingWhitespace: afterProcessing)") if $is_t_switch_active;
} else {
return;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
index 4cbab6efea9..e090845828c 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
@@ -17,7 +17,7 @@ package LatexIndent::IfElseFi;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -33,7 +33,7 @@ our $ifElseFiBasicRegExp = qr/\\if/;
# note: we search for \else separately in an attempt to keep this regexp a little more managable
sub construct_ifelsefi_regexp{
- my $ifElseFiNameRegExp = qr/${${$masterSettings{fineTuning}}{ifElseFi}}{name}/;
+ my $ifElseFiNameRegExp = qr/${${$mainSettings{fineTuning}}{ifElseFi}}{name}/;
$ifElseFiRegExp = qr/
(
\\
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
index bf1216d5b1b..fcf15fc1407 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
@@ -19,7 +19,7 @@ use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::HiddenChildren qw/%familyTree/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use Text::Tabs;
use Data::Dumper;
@@ -126,7 +126,7 @@ sub indent_body{
my $indentation = ${$self}{indentation};
# possibly remove paragraph line breaks
- $self->remove_paragraph_line_breaks if ($is_m_switch_active and ${$self}{removeParagraphLineBreaks} and !${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap});
+ $self->remove_paragraph_line_breaks if ($is_m_switch_active and ${$self}{removeParagraphLineBreaks} and !${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap});
# body indendation
if(${$self}{linebreaksAtEnd}{begin}==1){
@@ -236,7 +236,7 @@ sub final_indentation_check{
$indentation;
/xsmeg;
- return unless($masterSettings{maximumIndentation} =~ m/^\h+$/);
+ return unless($mainSettings{maximumIndentation} =~ m/^\h+$/);
# maximum indentation check
$logger->trace("*Maximum indentation check") if($is_t_switch_active);
@@ -246,7 +246,7 @@ sub final_indentation_check{
${$self}{body} = join("",@expanded_lines);
# grab the maximum indentation
- my $maximumIndentation = $masterSettings{maximumIndentation};
+ my $maximumIndentation = $mainSettings{maximumIndentation};
my $maximumIndentationLength = length($maximumIndentation)+1;
# replace any leading space that is greater than the
@@ -355,7 +355,7 @@ sub indent_children_recursively{
$trailingCharacterToken = "%".$self->add_comment_symbol;
} elsif ($_==3){
$logger->trace("Adding a blank line at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 3)") if $is_t_switch_active;
- $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
+ $trailingCharacterToken = "\n".(${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
} else {
$logger->trace("Adding a linebreak at the beginning of ${$child}{begin} (see $BeginStringLogFile)") if $is_t_switch_active;
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Item.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Item.pm
index 16c6bd8b8da..4e10401ae1f 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Item.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Item.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+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/;
@@ -36,7 +36,7 @@ sub construct_list_of_items{
my $self = shift;
# put together a list of the items
- while( my ($item,$lookForThisItem)= each %{$masterSettings{itemNames}}){
+ while( my ($item,$lookForThisItem)= each %{$mainSettings{itemNames}}){
$listOfItems .= ($listOfItems eq "")?"$item":"|$item" if($lookForThisItem);
}
@@ -71,7 +71,7 @@ sub find_items{
# otherwise loop through the item names
$logger->trace("Searching for items (see itemNames) in ${$self}{name} (see indentAfterItems)") if $is_t_switch_active;
- $logger->trace(Dumper(\%{$masterSettings{itemNames}})) if $is_tt_switch_active;
+ $logger->trace(Dumper(\%{$mainSettings{itemNames}})) if $is_tt_switch_active;
while(${$self}{body} =~ m/$itemRegExp\h*($trailingCommentRegExp)?/){
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
index 6eb4f703dd6..f7090c3d714 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
@@ -17,7 +17,7 @@ package LatexIndent::KeyEqualsValuesBraces;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -38,8 +38,8 @@ sub construct_key_equals_values_regexp{
my $blankLineToken = $tokens{blanklines};
# read from fine tuning
- my $keyEqualsValuesBracesBrackets = qr/${${$masterSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{name}/;
- my $keyEqualsValuesBracesBracketsFollow = qr/${${$masterSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{follow}/;
+ my $keyEqualsValuesBracesBrackets = qr/${${$mainSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{name}/;
+ my $keyEqualsValuesBracesBracketsFollow = qr/${${$mainSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{follow}/;
# store the regular expresssion for matching and replacing
$key_equals_values_bracesRegExp = qr/
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Lines.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Lines.pm
new file mode 100644
index 00000000000..edfe8115647
--- /dev/null
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Lines.pm
@@ -0,0 +1,266 @@
+package LatexIndent::Lines;
+# 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
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# See http://www.gnu.org/licenses/.
+#
+# Chris Hughes, 2017
+#
+# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
+use strict;
+use warnings;
+use Exporter qw/import/;
+use LatexIndent::LogFile qw/$logger/;
+use LatexIndent::Switches qw/%switches/;
+use LatexIndent::Verbatim qw/%verbatimStorage/;
+our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
+our @EXPORT_OK = qw/lines_body_selected_lines lines_verbatim_create_line_block/;
+
+sub lines_body_selected_lines {
+ my $self = shift;
+ my @lines = @{$_[0]};
+
+ # strip all space from lines switch
+ $switches{lines} =~ s/\h//sg;
+
+ $logger->info("*-n,--lines switch is active, operating on lines $switches{lines}");
+ $logger->info("number of lines in file: ".($#lines+1));
+ $logger->info("*interpretting $switches{lines}");
+
+ my @lineRanges = split(/,/,$switches{lines});
+ my @indentLineRange;
+ my @NOTindentLineRange;
+
+ my %minMaxStorage;
+ my %negationMinMaxStorage;
+
+ # loop through line ranges, which are separated by commas
+ #
+ # --lines 3-15,17-19
+ #
+ foreach(@lineRanges){
+ my $minLine = 0;
+ my $maxLine = 0;
+ my $negationMode = 0;
+
+ #
+ # --lines !3-15
+ #
+ if($_ =~ m/!/s){
+ $negationMode = 1;
+ $_ =~ s/!//s;
+ $logger->info("negation mode active as $_");
+ }
+
+ # --lines min-max
+ if($_ =~ m/-/s){
+ ($minLine,$maxLine) = split(/-/,$_);
+ } else {
+ $minLine = $_;
+ $maxLine = $_;
+ }
+
+ # both minLine and maxLine need to be INTEGERS
+ if ($minLine !~ m/^\d+$/ or $maxLine !~ m/^\d+$/){
+ $logger->warn("*$_ not a valid line specification; I'm ignoring this entry");
+ next;
+ }
+
+ # swap minLine and maxLine if necessary
+ if($minLine > $maxLine){
+ ($minLine,$maxLine) = ($maxLine, $minLine);
+ }
+
+ # minline > number of lines needs addressing
+ if ($minLine-1 > $#lines){
+ $logger->warn("*--lines specified with min line $minLine which is *greater than* the number of lines in file: ".($#lines+1));
+ $logger->warn("adjusting this value to be ".($#lines+1));
+ $minLine = $#lines+1;
+ }
+
+ # maxline > number of lines needs addressing
+ if ($maxLine-1 > $#lines){
+ $logger->warn("*--lines specified with max line $maxLine which is *greater than* the number of lines in file: ".($#lines+1));
+ $logger->warn("adjusting this value to be ".($#lines+1));
+ $maxLine = $#lines+1;
+ }
+
+ # either store the negation, or not
+ if($negationMode){
+ $negationMinMaxStorage{$minLine} = $maxLine;
+ } else {
+ $minMaxStorage{$minLine} = $maxLine;
+ }
+ $logger->info("min line: $minLine, max line: $maxLine");
+ }
+
+ # only proceed if we have a valid line range
+ if ( (keys %minMaxStorage) < 1 and (keys %negationMinMaxStorage) < 1){
+ $logger->warn("*--lines not specified with valid range: $switches{lines}");
+ $logger->warn("entire body will be indented, and ignoring $switches{lines}");
+ $switches{lines} = 0;
+ ${$self}{body} = join("",@lines);
+ return;
+ }
+
+ # we need to perform the token check here
+ ${$self}{body} = join("",@lines);
+ $self->token_check;
+ ${$self}{body} = q();
+
+ # negated line ranges
+ if (keys %negationMinMaxStorage >= 1){
+ @NOTindentLineRange = &lines_sort_and_combine_line_range(\%negationMinMaxStorage);
+
+ $logger->info("*negation line range summary: ");
+ $logger->info("the number of NEGATION line ranges: ".(($#NOTindentLineRange+1)/2));
+ $logger->info("the *sorted* NEGATION line ranges are in the form MIN-MAX: ");
+ for (my $index=0; $index<(($#NOTindentLineRange+1)/2); $index++){
+ $logger->info(join("-",@NOTindentLineRange[2*$index..2*$index+1]));
+
+ if($index==0 and $NOTindentLineRange[2*$index]>1){
+ $minMaxStorage{1} = $NOTindentLineRange[2*$index]-1;
+ } elsif($index>0){
+ $minMaxStorage{$NOTindentLineRange[2*$index-1]+1} = $NOTindentLineRange[2*$index]-1;
+ }
+ }
+
+ # final range
+ if($NOTindentLineRange[-1]<$#lines){
+ $minMaxStorage{$NOTindentLineRange[-1]+1} = $#lines+1;
+ }
+ }
+
+ @indentLineRange = &lines_sort_and_combine_line_range(\%minMaxStorage) if (keys %minMaxStorage >= 1) ;
+
+ $logger->info("*line range summary: ");
+ $logger->info("the number of indent line ranges: ".(($#indentLineRange+1)/2));
+ $logger->info("the *sorted* line ranges are in the form MIN-MAX: ");
+ for (my $index=0; $index<(($#indentLineRange+1)/2); $index++){
+ $logger->info(join("-",@indentLineRange[2*$index..2*$index+1]));
+ }
+
+ my $startLine = 0;
+
+ # now that we have the line range, we can sort arrange the body
+ while ($#indentLineRange>0){
+ my $minLine = shift(@indentLineRange);
+ my $maxLine = shift(@indentLineRange);
+
+ # perl arrays start at 0
+ $minLine--;
+ $maxLine--;
+
+ $self->lines_verbatim_create_line_block(\@lines,$startLine,$minLine-1) unless ($minLine == 0);
+
+ ${$self}{body} .= join("",@lines[$minLine..$maxLine]);
+
+ $startLine = $maxLine+1;
+ }
+
+ # final line range
+ $self->lines_verbatim_create_line_block(\@lines,$startLine,$#lines) if($startLine<=$#lines);
+ return;
+}
+
+sub lines_sort_and_combine_line_range{
+
+ my %minMaxStorage = %{$_[0]};
+ #
+ # --lines 8-10,4-5,1-2
+ #
+ # needs to be interpretted as
+ #
+ # --lines 1-2,4-5,8-10,
+ #
+ # sort the line ranges by the *minimum* value, the associated
+ # maximum values will be arranged after this
+ my @indentLineRange = sort { $a <=> $b } keys(%minMaxStorage);
+
+ my @justMinimumValues = @indentLineRange;
+ for (my $index=0;$index<=$#justMinimumValues;$index++){
+ splice(@indentLineRange,2*$index+1,0,$minMaxStorage{$justMinimumValues[$index]});
+ }
+
+ for (my $index=1;$index<(($#indentLineRange+1)/2);$index++){
+ my $currentMin = $indentLineRange[2*$index];
+ my $currentMax = $indentLineRange[2*$index+1];
+ my $previousMax = $indentLineRange[2*$index-1];
+ my $previousMin = $indentLineRange[2*$index-2];
+
+ if ( ($currentMin - 1) <= $previousMax and ( $currentMax > $previousMax ) ){
+ # overlapping line ranges, for example
+ #
+ # --lines 3-5,4-10
+ #
+ # needs to be interpretted as
+ #
+ # --lines 3-10
+ #
+ $logger->info("overlapping line range found");
+ $logger->info("line ranges (before): ".join(", ",@indentLineRange));
+ splice(@indentLineRange,2*$index-1,2);
+ $logger->info("line ranges (after): ".join(", ",@indentLineRange));
+
+ # reset index so that loop starts again
+ $index = 0;
+ } elsif ( ($currentMin - 1) <= $previousMax and ( $currentMax <= $previousMax ) ){
+ # overlapping line ranges, for example
+ #
+ # --lines 3-7,4-6
+ #
+ # needs to be interpretted as
+ #
+ # --lines 3-7
+ #
+ $logger->info("overlapping line range found");
+ $logger->info("line ranges (before): ".join(", ",@indentLineRange));
+ splice(@indentLineRange,2*$index,2);
+ $logger->info("line ranges (after): ".join(", ",@indentLineRange));
+
+ # reset index so that loop starts again
+ $index = 0;
+ }
+ }
+
+ return @indentLineRange;
+}
+
+sub lines_verbatim_create_line_block{
+ my $self = shift;
+ my @lines = @{$_[0]};
+ my $startLine = $_[1];
+ my $finishLine = $_[2];
+
+ my $verbBody = join("",@lines[$startLine..$finishLine]);
+ $verbBody =~ s/\R?$//s;
+
+ # create a new Verbatim object
+ my $noIndentBlockObj = LatexIndent::Verbatim->new( begin=>q(),
+ body=>$verbBody,
+ end=>q(),
+ name=>"line-switch-verbatim-protection",
+ type=>"linesprotect",
+ modifyLineBreaksYamlName=>"lines-not-to-be-indented",
+ );
+
+ # give unique id
+ $noIndentBlockObj->create_unique_id;
+
+ # verbatim children go in special hash
+ $verbatimStorage{${$noIndentBlockObj}{id}}=$noIndentBlockObj;
+
+ # remove the environment block, and replace with unique ID
+ ${$self}{body} .= ${$noIndentBlockObj}{id}."\n";
+
+ return;
+}
+
+1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
index 5b44822829d..e01792c6fb5 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
@@ -28,7 +28,7 @@ sub process_switches{
# -v switch is just to show the version number
if($switches{version}) {
print $versionNumber,", ",$versionDate,"\n";
- exit(2);
+ exit(0);
}
if(scalar(@ARGV) < 1 or $switches{showhelp}) {
@@ -81,9 +81,17 @@ usage: latexindent.pl [options] [file]
-rr, --onlyreplacement
*only* replacement mode, no indentation;
verbatim blocks not respected
+ -k, --check mode
+ will exit with 0 if document body unchanged, 1 if changed
+ -kv, --check mode verbose
+ as in check mode, but outputs diff to screen as well as to logfile
+ -n, --lines=<MIN-MAX>
+ only operate on selected lines; sample usage:
+ latexindent.pl --lines 3-5 myfile.tex
+ latexindent.pl --lines 3-5,7-10 myfile.tex
ENDQUOTE
;
- exit(2);
+ exit(0);
}
# if we've made it this far, the processing of switches and logging begins
@@ -93,7 +101,14 @@ ENDQUOTE
# cruft directory
${$self}{cruftDirectory} = $switches{cruftDirectory}||(dirname ${$self}{fileName});
- die "Could not find directory ${$self}{cruftDirectory}\nExiting, no indentation done." if(!(-d ${$self}{cruftDirectory}));
+
+ # if cruft directory does not exist
+ if(!(-d ${$self}{cruftDirectory})){
+ $logger->fatal("*Could not find directory ${$self}{cruftDirectory}");
+ $logger->fatal("Exiting, no indendation done.");
+ $self->output_logfile();
+ exit(6);
+ }
my $logfileName = ($switches{cruftDirectory} ? ${$self}{cruftDirectory}."/" : '').($switches{logFileName}||"indent.log");
@@ -135,6 +150,9 @@ ENDQUOTE
$logger->info("-c|--cruft: cruft directory") if($switches{cruftDirectory});
$logger->info("-r|--replacement: replacement mode") if($switches{replacement});
$logger->info("-rr|--onlyreplacement: *only* replacement mode, no indentation") if($switches{onlyreplacement});
+ $logger->info("-k|--check mode: will exit with 0 if document body unchanged, 1 if changed") if($switches{check});
+ $logger->info("-kv|--check mode verbose: as in check mode, but outputs diff to screen") if($switches{checkverbose});
+ $logger->info("-n|--lines mode: will only operate on specific lines $switches{lines}") if($switches{lines});
# check if overwrite and outputfile are active similtaneously
if($switches{overwrite} and $switches{outputToFile}){
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm
index 35ff428eab6..d3f9d0f48df 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Logger.pm
@@ -60,7 +60,7 @@ sub fatal{
$logfileline =~ s/^/ /mg;
}
push(@logFileLines,$logfileline);
- print $logfileline,"\n" if $switches{screenlog};
+ print $logfileline,"\n";
}
sub trace{
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
index f11221e25bd..128dcd8ed81 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use Exporter qw/import/;
use Text::Wrap;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
@@ -74,7 +74,7 @@ sub modify_line_breaks_body{
my $trailingCharacterToken = q();
$logger->trace("Adding a blank line at the end of begin ${$self}{begin} followed by a linebreak ($BodyStringLogFile == 3)") if $is_t_switch_active;
${$self}{begin} =~ s/\h*$//;
- ${$self}{begin} .= (${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
+ ${$self}{begin} .= (${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
${$self}{linebreaksAtEnd}{begin} = 1;
$logger->trace("Removing leading space from body of ${$self}{name} (see $BodyStringLogFile)") if $is_t_switch_active;
${$self}{body} =~ s/^\h*//;
@@ -127,7 +127,7 @@ sub modify_line_breaks_end{
${$self}{body} =~ s/\h*$//s;
} elsif ($_==3) {
$logger->trace("Adding a blank line immediately after body of ${$self}{name} ($EndStringLogFile==3)") if $is_t_switch_active;
- $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
+ $trailingCharacterToken = "\n".(${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
${$self}{body} =~ s/\h*$//s;
}
@@ -203,7 +203,7 @@ sub modify_line_breaks_end_after{
${$self}{linebreaksAtEnd}{end} = 1;
# modified end statement
- ${$self}{replacementText} .= (${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
+ ${$self}{replacementText} .= (${$mainSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
}
}
}
@@ -278,11 +278,11 @@ sub verbatim_modify_line_breaks{
sub text_wrap_remove_paragraph_line_breaks{
my $self = shift;
- if(${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
} else {
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
}
}
@@ -292,7 +292,7 @@ sub text_wrap{
my $self = shift;
# alignment at ampersand can take priority
- return if(${$self}{lookForAlignDelims} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{alignAtAmpersandTakesPriority});
+ return if(${$self}{lookForAlignDelims} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{alignAtAmpersandTakesPriority});
# goal: get an accurate measurement of verbatim objects;
#
@@ -316,7 +316,7 @@ sub text_wrap{
my @putVerbatimBackIn;
# check body for verbatim and get measurements
- if (${$self}{body} =~ m/$tokens{verbatim}/s and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{huge} eq "overflow"){
+ if (${$self}{body} =~ m/$tokens{verbatim}/s and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{huge} eq "overflow"){
# reference: https://stackoverflow.com/questions/10336660/in-perl-how-can-i-generate-random-strings-consisting-of-eight-hex-digits
my @set = ('0' ..'9', 'A' .. 'Z', 'a' .. 'z');
@@ -354,27 +354,27 @@ sub text_wrap{
# columns might have been defined by the user
if(defined ${$self}{columns}){
$columns = ${$self}{columns};
- } elsif(ref ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns} eq "HASH"){
- if(defined ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default}){
- $columns = ${${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default};
+ } elsif(ref ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns} eq "HASH"){
+ if(defined ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default}){
+ $columns = ${${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}}{default};
} else {
$columns = 80;
}
- } elsif (defined ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}){
- $columns = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns} ;
+ } elsif (defined ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}){
+ $columns = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns} ;
} else {
$columns = 80;
}
# vital Text::Wrap options
$Text::Wrap::columns=$columns;
- $Text::Wrap::huge = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{huge};
+ $Text::Wrap::huge = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{huge};
# all other Text::Wrap options not usually needed/helpful, but available
- $Text::Wrap::separator=${$masterSettings{modifyLineBreaks}{textWrapOptions}}{separator} if(${$masterSettings{modifyLineBreaks}{textWrapOptions}}{separator} ne '');
- $Text::Wrap::break = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{break} if ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{break};
- $Text::Wrap::unexpand = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{unexpand} if ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{unexpand};
- $Text::Wrap::tabstop = ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{tabstop} if ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{tabstop};
+ $Text::Wrap::separator=${$mainSettings{modifyLineBreaks}{textWrapOptions}}{separator} if(${$mainSettings{modifyLineBreaks}{textWrapOptions}}{separator} ne '');
+ $Text::Wrap::break = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{break} if ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{break};
+ $Text::Wrap::unexpand = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{unexpand} if ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{unexpand};
+ $Text::Wrap::tabstop = ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{tabstop} if ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{tabstop};
# perform the text wrapping
${$self}{body} = wrap('','',${$self}{body});
@@ -387,7 +387,7 @@ sub construct_paragraph_reg_exp{
$logger->trace("*Constructing the paragraph-stop regexp (see paragraphsStopAt)") if $is_t_switch_active ;
my $stopAtRegExp = q();
- while( my ($paragraphStopAt,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{paragraphsStopAt}}){
+ while( my ($paragraphStopAt,$yesNo)= each %{${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{paragraphsStopAt}}){
if($yesNo){
# the headings (chapter, section, etc) need a slightly special treatment
$paragraphStopAt = "afterHeading" if($paragraphStopAt eq "heading");
@@ -436,7 +436,7 @@ sub remove_paragraph_line_breaks{
return unless ${$self}{removeParagraphLineBreaks};
# alignment at ampersand can take priority
- return if(${$self}{lookForAlignDelims} and ${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{alignAtAmpersandTakesPriority});
+ return if(${$self}{lookForAlignDelims} and ${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{alignAtAmpersandTakesPriority});
$logger->trace("Checking ${$self}{name} for paragraphs (see removeParagraphLineBreaks)") if $is_t_switch_active;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
index 50b00ed556f..23634075927 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
@@ -17,7 +17,7 @@ package LatexIndent::NamedGroupingBracesBrackets;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -35,8 +35,8 @@ sub construct_grouping_braces_brackets_regexp{
my $optAndMandRegExp = $self->get_arguments_regexp;
# read from fine tuning
- my $NamedGroupingBracesBracketsRegExp = qr/${${$masterSettings{fineTuning}}{namedGroupingBracesBrackets}}{name}/;
- my $NamedGroupingFollowRegExp = qr/${${$masterSettings{fineTuning}}{namedGroupingBracesBrackets}}{follow}/;
+ my $NamedGroupingBracesBracketsRegExp = qr/${${$mainSettings{fineTuning}}{namedGroupingBracesBrackets}}{name}/;
+ my $NamedGroupingFollowRegExp = qr/${${$mainSettings{fineTuning}}{namedGroupingBracesBrackets}}{follow}/;
# defaultSettings.yaml mistakenly had
#
@@ -50,13 +50,13 @@ sub construct_grouping_braces_brackets_regexp{
#
# the mistake was mine, so I feel that the following is necessary; if we
# get to V4, then this will be removed and only namedGroupingBracesBrackets will be supported
- if(${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{name}){
+ if(${${$mainSettings{fineTuning}}{NamedGroupingBracesBrackets}}{name}){
$logger->warn("*fineTuning:NamedGroupingBracesBrackets is ok for now, but in future versions, fineTuning:namedGroupingBracesBrackets will be used");
- $NamedGroupingBracesBracketsRegExp = qr/${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{name}/;
+ $NamedGroupingBracesBracketsRegExp = qr/${${$mainSettings{fineTuning}}{NamedGroupingBracesBrackets}}{name}/;
}
- if(${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{follow}){
+ if(${${$mainSettings{fineTuning}}{NamedGroupingBracesBrackets}}{follow}){
$logger->warn("*fineTuning:NamedGroupingBracesBrackets is ok for now, but in future versions, fineTuning:namedGroupingBracesBrackets will be used");
- $NamedGroupingFollowRegExp = qr/${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{follow}/;
+ $NamedGroupingFollowRegExp = qr/${${$mainSettings{fineTuning}}{NamedGroupingBracesBrackets}}{follow}/;
}
# store the regular expresssion for matching and replacing
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Preamble.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Preamble.pm
index a31efd1a49e..eab45a10d9a 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Preamble.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Preamble.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::Switches qw/$is_t_switch_active $is_m_switch_active/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Environment qw/$environmentBasicRegExp/;
use LatexIndent::IfElseFi qw/$ifElseFiBasicRegExp/;
@@ -51,36 +51,51 @@ sub indent{
sub tasks_particular_to_each_object{
my $self = shift;
+ # text wrapping, remove paragraph line breaks
+ if ($is_m_switch_active){
+ $self->yaml_get_textwrap_removeparagraphline_breaks;
+ }
+
+ # option to textWrap beforeFindingChildCodeBlocks
+ if( $is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 1){
+ # call the remove_paragraph_line_breaks and text_wrap routines
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ $self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ } else {
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
+ }
+ }
+
# search for environments
$self->find_environments if ${$self}{body} =~ m/$environmentBasicRegExp/;
# search for ifElseFi blocks
$self->find_ifelsefi if ${$self}{body} =~ m/$ifElseFiBasicRegExp/s;
- if(${$masterSettings{specialBeginEnd}}{specialBeforeCommand}){
+ if(${$mainSettings{specialBeginEnd}}{specialBeforeCommand}){
# search for special begin/end
$self->find_special if ${$self}{body} =~ m/$specialBeginBasicRegExp/s;
# search for commands with arguments
- $self->find_commands_or_key_equals_values_braces if(!$masterSettings{preambleCommandsBeforeEnvironments});
+ $self->find_commands_or_key_equals_values_braces if(!$mainSettings{preambleCommandsBeforeEnvironments});
} else {
# search for commands with arguments
- $self->find_commands_or_key_equals_values_braces if(!$masterSettings{preambleCommandsBeforeEnvironments});
+ $self->find_commands_or_key_equals_values_braces if(!$mainSettings{preambleCommandsBeforeEnvironments});
# search for special begin/end
$self->find_special if ${$self}{body} =~ m/$specialBeginBasicRegExp/s;
}
# text wrapping, remove paragraph line breaks
- if ($is_m_switch_active){
- $self->yaml_get_textwrap_removeparagraphline_breaks;
-
+ if ($is_m_switch_active and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{beforeFindingChildCodeBlocks} == 0){
# call the remove_paragraph_line_breaks and text_wrap routines
- if(${$masterSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
+ if(${$mainSettings{modifyLineBreaks}{removeParagraphLineBreaks}}{beforeTextWrap}){
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
} else {
- $self->text_wrap if (${$self}{textWrapOptions} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
+ $self->text_wrap if (${$self}{textWrapOptions} and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis});
$self->remove_paragraph_line_breaks if ${$self}{removeParagraphLineBreaks};
}
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm
index 0d79a39f0c6..e387d11b4c7 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_rr_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use Exporter qw/import/;
@@ -34,7 +34,7 @@ sub make_replacements{
$logger->trace("*Replacement mode, -rr switch is active") if $is_t_switch_active ;
}
- my @replacements = @{$masterSettings{replacements}};
+ my @replacements = @{$mainSettings{replacements}};
foreach ( @replacements ){
next if !(${$_}{this} or ${$_}{substitution});
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
index c8534681f0a..d41c8869b6b 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Environment qw/$environmentBasicRegExp/;
@@ -40,7 +40,7 @@ sub one_sentence_per_line{
# sentences FOLLOW
my $sentencesFollow = q();
- while( my ($sentencesFollowEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}){
+ while( my ($sentencesFollowEachPart,$yesNo)= each %{${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}){
if($yesNo){
if($sentencesFollowEachPart eq "par"){
$sentencesFollowEachPart = qr/\R?\\par/s;
@@ -75,7 +75,7 @@ sub one_sentence_per_line{
# if blankLine is not active from sentencesFollow then we need to set up the
# beginning of the string, but make sure that it is *not* followed by a
# blank line token, or a blank line
- if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ if(!${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
$sentencesFollow .= ($sentencesFollow eq '' ? q() : "|").
qr/
\G
@@ -83,7 +83,7 @@ sub one_sentence_per_line{
/sx;
}
- if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ if(${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
$sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h|\R)*/sx );
} else {
$sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h*\R?)/sx );
@@ -98,7 +98,7 @@ sub one_sentence_per_line{
# sentences BEGIN with
my $sentencesBeginWith = q();
- while( my ($sentencesBeginWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesBeginWith}}){
+ while( my ($sentencesBeginWithEachPart,$yesNo)= each %{${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesBeginWith}}){
if($yesNo){
if($sentencesBeginWithEachPart eq "A-Z"){
$logger->trace("sentence BEGINS with capital letters (see oneSentencePerLine:sentencesBeginWith:A-Z)") if $is_t_switch_active;
@@ -118,17 +118,17 @@ sub one_sentence_per_line{
# sentences END with
# sentences END with
# sentences END with
- ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{basicFullStop} = 0 if ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{betterFullStop};
+ ${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{basicFullStop} = 0 if ${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{betterFullStop};
my $sentencesEndWith = q();
- while( my ($sentencesEndWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}){
+ while( my ($sentencesEndWithEachPart,$yesNo)= each %{${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}){
if($yesNo){
if($sentencesEndWithEachPart eq "basicFullStop"){
$logger->trace("sentence ENDS with full stop (see oneSentencePerLine:sentencesEndWith:basicFullStop") if $is_t_switch_active;
$sentencesEndWithEachPart = qr/\./;
} elsif($sentencesEndWithEachPart eq "betterFullStop"){
$logger->trace("sentence ENDS with *better* full stop (see oneSentencePerLine:sentencesEndWith:betterFullStop") if $is_t_switch_active;
- $sentencesEndWithEachPart = qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{betterFullStop}/;
+ $sentencesEndWithEachPart = qr/${${$mainSettings{fineTuning}}{modifyLineBreaks}}{betterFullStop}/;
} elsif ($sentencesEndWithEachPart eq "exclamationMark"){
$logger->trace("sentence ENDS with exclamation mark (see oneSentencePerLine:sentencesEndWith:exclamationMark)") if $is_t_switch_active;
$sentencesEndWithEachPart = qr/!/;
@@ -163,12 +163,12 @@ sub one_sentence_per_line{
#
# is set to 0 then we need to *exclude* the $tokens{blanklines} from the sentence routine,
# otherwise we could begin a sentence with $tokens{blanklines}.
- if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ if(!${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
$notWithinSentence .= "|".qr/(?:\h*\R?$tokens{blanklines})/s;
}
# similarly for \par
- if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{par}){
+ if(${${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{par}){
$notWithinSentence .= "|".qr/(?:\R?\\par)/s;
}
@@ -193,7 +193,7 @@ sub one_sentence_per_line{
my $lineBreaksAtEnd = ($6? 1 : ($7?1:0) );
my $trailingComments = q();
# remove trailing comments from within the body of the sentence
- if (${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks}){
+ if (${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks}){
while($middle =~ m|$trailingCommentRegExp|){
$middle =~ s|\h*($trailingCommentRegExp)||s;
$trailingComments .= $1;
@@ -203,7 +203,7 @@ sub one_sentence_per_line{
$middle =~ s|
(?!\A) # not at the *beginning* of a match
(\h*)\R # possible horizontal space, then line break
- |$1?$1:" ";|esgx if ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks};
+ |$1?$1:" ";|esgx if ${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks};
$middle =~ s|$tokens{blanklines}\h*\R?|$tokens{blanklines}\n|sg;
$logger->trace("follows: $beginning") if $is_tt_switch_active;
$logger->trace("sentence: $middle") if $is_tt_switch_active;
@@ -211,13 +211,13 @@ sub one_sentence_per_line{
# if indentation is specified for sentences, then we treat
# them as objects; otherwise we don't
my $replacementText = q();
- if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m|\h+|){
+ if(${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m|\h+|){
my $sentenceObj = LatexIndent::Sentence->new(
name=>"sentence",
begin=>q(),
body=>$middle.$end,
end=>q(),
- indentation=>${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent},
+ indentation=>${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent},
modifyLineBreaksYamlName=>"sentence",
BeginStartsOnOwnLine=>1,
);
@@ -236,7 +236,7 @@ sub one_sentence_per_line{
$replacementText;
/xsge;
- if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} !~ m/\h+/){
+ if(${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} !~ m/\h+/){
# loop back through the sentenceStorage and replace with the sentence, adjusting line breaks
# before and after appropriately
while( my $sentence = pop @sentenceStorage){
@@ -244,7 +244,7 @@ sub one_sentence_per_line{
my $sentenceStorageValue = ${$sentence}{value};
# option to text wrap (and option to indent) sentences
- if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
+ if(${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
my $sentenceObj = LatexIndent::Document->new(body=>$sentenceStorageValue,
name=>"sentence",
modifyLineBreaksYamlName=>"sentence",
@@ -257,7 +257,7 @@ sub one_sentence_per_line{
$logger->info("You have specified oneSentencePerLine:textWrapSentences, but columns is set to 0");
$logger->info("You might wish to specify, for example: modifyLineBreaks: textWrapOptions: columns: 80");
$logger->info("The value of oneSentencePerLine:textWrapSentences will now be set to 0, so you won't see this message again");
- ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences} = 0;
+ ${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences} = 0;
} else {
$sentenceObj->text_wrap;
}
@@ -270,7 +270,7 @@ sub one_sentence_per_line{
/sx){
my $bodyFirstLine = $1;
my $remainingBody = $2;
- my $indentation = ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent};
+ my $indentation = ${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent};
$logger->trace("first line of sencent: $bodyFirstLine") if $is_tt_switch_active;
$logger->trace("remaining body (before indentation):\n'$remainingBody'") if($is_tt_switch_active);
@@ -305,7 +305,7 @@ sub tasks_particular_to_each_object{
my $self = shift;
# option to text wrap (and option to indent) sentences
- if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
+ if(${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
$self->yaml_get_columns;
$self->text_wrap;
}
@@ -327,7 +327,7 @@ sub tasks_particular_to_each_object{
}
sub indent_body{
- return unless ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m/\h+/;
+ return unless ${$mainSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m/\h+/;
my $self = shift;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm
index 4e1a8020b34..4b585f42aef 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Special.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+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/;
@@ -39,11 +39,11 @@ sub construct_special_begin{
$logger->trace("*Constructing specialBeginEnd regex (see specialBeginEnd)") if $is_t_switch_active;
# put together a list of the begin terms in special
- while( my ($specialName,$BeginEnd)= each %{$masterSettings{specialBeginEnd}}){
+ while( my ($specialName,$BeginEnd)= each %{$mainSettings{specialBeginEnd}}){
if(ref($BeginEnd) eq "HASH"){
if (not defined ${$BeginEnd}{lookForThis}){
${$BeginEnd}{lookForThis} = 1;
- ${${$masterSettings{specialBeginEnd}}{$specialName}}{lookForThis} = 1;
+ ${${$mainSettings{specialBeginEnd}}{$specialName}}{lookForThis} = 1;
$logger->trace("setting lookForThis:1 for $specialName (lookForThis not specified)") if $is_t_switch_active;
}
@@ -53,7 +53,7 @@ sub construct_special_begin{
}
# put together a list of the begin terms in special
- while( my ($specialName,$BeginEnd)= each %{$masterSettings{specialBeginEnd}}){
+ while( my ($specialName,$BeginEnd)= each %{$mainSettings{specialBeginEnd}}){
# only append the regexps if lookForThis is 1
if( ref($BeginEnd) eq "HASH" ){
@@ -129,13 +129,13 @@ sub find_special{
# otherwise loop through the special begin/end
$logger->trace("*Searching ${$self}{name} for special begin/end (see specialBeginEnd)") if $is_t_switch_active ;
- $logger->trace(Dumper(\%{$masterSettings{specialBeginEnd}})) if $is_tt_switch_active;
+ $logger->trace(Dumper(\%{$mainSettings{specialBeginEnd}})) if $is_tt_switch_active;
# keep looping as long as there is a special match of some kind
while(${$self}{body} =~ m/$specialAllMatchesRegExp/sx){
# loop through each special match
- while( my ($specialName,$BeginEnd)= each %{$masterSettings{specialBeginEnd}}){
+ while( my ($specialName,$BeginEnd)= each %{$mainSettings{specialBeginEnd}}){
# log file
if((ref($BeginEnd) eq "HASH") and ${$BeginEnd}{lookForThis}=~m/\d/s and ${$BeginEnd}{lookForThis} == 1){
@@ -197,21 +197,21 @@ sub find_special{
sub tasks_particular_to_each_object{
my $self = shift;
- if( defined ${${$masterSettings{specialBeginEnd}}{${$self}{name}}}{middle}){
+ if( defined ${${$mainSettings{specialBeginEnd}}{${$self}{name}}}{middle}){
$logger->trace("middle specified for ${$self}{name} (see specialBeginEnd -> ${$self}{name} -> middle)") if $is_t_switch_active ;
# initiate the middle regexp
my $specialMiddle = q();
# we can specify middle as either an array or a hash
- if(ref(${${$masterSettings{specialBeginEnd}}{${$self}{name}}}{middle}) eq "ARRAY"){
+ if(ref(${${$mainSettings{specialBeginEnd}}{${$self}{name}}}{middle}) eq "ARRAY"){
$logger->trace("looping through middle array for ${$self}{name}") if $is_t_switch_active ;
- foreach(@{${${$masterSettings{specialBeginEnd}}{${$self}{name}}}{middle}}){
+ foreach(@{${${$mainSettings{specialBeginEnd}}{${$self}{name}}}{middle}}){
$specialMiddle .= ($specialMiddle eq ""?q():"|").$_;
}
$specialMiddle = qr/$specialMiddle/;
} else {
- $specialMiddle = qr/${${$masterSettings{specialBeginEnd}}{${$self}{name}}}{middle}/;
+ $specialMiddle = qr/${${$mainSettings{specialBeginEnd}}{${$self}{name}}}{middle}/;
}
$logger->trace("overall middle regexp for ${$self}{name}: $specialMiddle") if $is_t_switch_active ;
@@ -236,7 +236,7 @@ sub tasks_particular_to_each_object{
}
- return unless(${$masterSettings{specialBeginEnd}}{specialBeforeCommand});
+ return unless(${$mainSettings{specialBeginEnd}}{specialBeforeCommand});
# search for commands with arguments
$self->find_commands_or_key_equals_values_braces;
@@ -253,7 +253,7 @@ sub post_indentation_check{
# needed to remove leading horizontal space before \else
my $self = shift;
- return unless ( defined ${${$masterSettings{specialBeginEnd}}{${$self}{name}}}{middle});
+ return unless ( defined ${${$mainSettings{specialBeginEnd}}{${$self}{name}}}{middle});
$logger->trace("post indentation check for ${$self}{name} to account for middle") if $is_t_switch_active ;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
index e5e93b1de0c..360ac415043 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
@@ -17,7 +17,7 @@ package LatexIndent::Switches;
use strict;
use warnings;
use Exporter qw/import/;
-our @EXPORT_OK = qw/%switches store_switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active/;
+our @EXPORT_OK = qw/%switches store_switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active $is_check_switch_active $is_check_verbose_switch_active/;
our %switches;
our $is_m_switch_active;
our $is_t_switch_active;
@@ -25,6 +25,8 @@ our $is_tt_switch_active;
our $is_r_switch_active;
our $is_rr_switch_active;
our $is_rv_switch_active;
+our $is_check_switch_active;
+our $is_check_verbose_switch_active;
sub store_switches{
my $self = shift;
@@ -39,6 +41,9 @@ sub store_switches{
$is_rr_switch_active = defined $switches{onlyreplacement}?$switches{onlyreplacement}: 0;
$is_rv_switch_active = defined $switches{replacementRespectVerb}?$switches{replacementRespectVerb}: 0;
$is_r_switch_active = ($is_rr_switch_active|$is_rv_switch_active) ? ($is_rr_switch_active|$is_rv_switch_active) : $is_r_switch_active;
+ $is_check_switch_active = defined $switches{check}?$switches{check}: 0;
+ $is_check_verbose_switch_active = defined $switches{checkverbose}?$switches{checkverbose}: 0;
+ $is_check_switch_active = $is_check_verbose_switch_active ? $is_check_verbose_switch_active : $is_check_switch_active;
delete ${$self}{switches};
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm
index 262201e76a0..7d03349c528 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/TrailingComments.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::LogFile qw/$logger/;
use Data::Dumper;
use Exporter qw/import/;
@@ -28,7 +28,7 @@ our $commentCounter = 0;
our $trailingCommentRegExp;
sub construct_trailing_comment_regexp{
- my $notPreceededBy = qr/${${$masterSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
+ my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
$trailingCommentRegExp = qr/$notPreceededBy%$tokens{trailingComment}\d+$tokens{endOfToken}/;
}
@@ -56,7 +56,7 @@ sub remove_trailing_comments{
my $self = shift;
$logger->trace("*Storing trailing comments")if $is_t_switch_active;
- my $notPreceededBy = qr/${${$masterSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
+ my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
# perform the substitution
${$self}{body} =~ s/
@@ -104,8 +104,8 @@ sub put_trailing_comments_back_in{
my $trailingcommentIDwithLineBreaks;
# construct a reg exp that contains possible line breaks in between each character
- if(${$masterSettings{modifyLineBreaks}{textWrapOptions}}{separator} ne ''){
- $trailingcommentIDwithLineBreaks = join("\\".${$masterSettings{modifyLineBreaks}{textWrapOptions}}{separator}."?",split(//,$trailingcommentID));
+ if(${$mainSettings{modifyLineBreaks}{textWrapOptions}}{separator} ne ''){
+ $trailingcommentIDwithLineBreaks = join("\\".${$mainSettings{modifyLineBreaks}{textWrapOptions}}{separator}."?",split(//,$trailingcommentID));
} else {
$trailingcommentIDwithLineBreaks = join("(?:\\h|\\R)*",split(//,$trailingcommentID));
}
@@ -114,7 +114,7 @@ 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/${${$masterSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
+ my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
if(${$self}{body} =~ m/%$trailingcommentID
(
(?! # not immediately preceeded by
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
index eea6ee6747a..55f0d7fa27f 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
@@ -17,7 +17,7 @@ package LatexIndent::UnNamedGroupingBracesBrackets;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -38,8 +38,8 @@ sub construct_unnamed_grouping_braces_brackets_regexp{
my $blankLineToken = $tokens{blanklines};
# arguments Before, by default, includes beamer special and numbered arguments, for example #1 #2, etc
- my $argumentsBefore = qr/${${$masterSettings{fineTuning}}{arguments}}{before}/;
- my $UnNamedGroupingFollowRegExp = qr/${${$masterSettings{fineTuning}}{UnNamedGroupingBracesBrackets}}{follow}/;
+ my $argumentsBefore = qr/${${$mainSettings{fineTuning}}{arguments}}{before}/;
+ my $UnNamedGroupingFollowRegExp = qr/${${$mainSettings{fineTuning}}{UnNamedGroupingBracesBrackets}}{follow}/;
# store the regular expresssion for matching and replacing
$un_named_grouping_braces_RegExp = qr/
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
index 2d8fe0e2d8a..3abe2e0d46a 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
@@ -19,7 +19,7 @@ use warnings;
use Data::Dumper;
use Exporter qw/import/;
use LatexIndent::Tokens qw/%tokens/;
-use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
use LatexIndent::LogFile qw/$logger/;
our @EXPORT_OK = qw/put_verbatim_back_in find_verbatim_environments find_noindent_block find_verbatim_commands find_verbatim_special verbatim_common_tasks %verbatimStorage/;
@@ -32,8 +32,8 @@ sub find_noindent_block{
# noindent block
$logger->trace('*Searching for NOINDENTBLOCk (see noIndentBlock)') if $is_t_switch_active;
- $logger->trace(Dumper(\%{$masterSettings{noIndentBlock}})) if($is_tt_switch_active);
- while( my ($noIndentBlock,$yesno)= each %{$masterSettings{noIndentBlock}}){
+ $logger->trace(Dumper(\%{$mainSettings{noIndentBlock}})) if($is_tt_switch_active);
+ while( my ($noIndentBlock,$yesno)= each %{$mainSettings{noIndentBlock}}){
# integrity check on the field for noIndentBlock
if ( ref($yesno) eq "HASH" ){
@@ -123,7 +123,7 @@ sub find_noindent_block{
$logger->trace("replaced with ID: ${$noIndentBlockObj}{id}") if $is_t_switch_active;
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
}
return;
@@ -134,8 +134,8 @@ sub find_verbatim_environments{
# verbatim environments
$logger->trace('*Searching for VERBATIM environments (see verbatimEnvironments)') if $is_t_switch_active;
- $logger->trace(Dumper(\%{$masterSettings{verbatimEnvironments}})) if($is_tt_switch_active);
- while( my ($verbEnv,$yesno)= each %{$masterSettings{verbatimEnvironments}}){
+ $logger->trace(Dumper(\%{$mainSettings{verbatimEnvironments}})) if($is_tt_switch_active);
+ while( my ($verbEnv,$yesno)= each %{$mainSettings{verbatimEnvironments}}){
if($yesno){
$logger->trace("looking for $verbEnv:$yesno environments") if $is_t_switch_active;
@@ -192,7 +192,7 @@ sub find_verbatim_environments{
$logger->trace("replaced with ID: ${$verbatimBlock}{id}") if $is_t_switch_active;
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
} else {
$logger->trace("*not* looking for $verbEnv as $verbEnv:$yesno") if $is_t_switch_active;
@@ -210,8 +210,8 @@ sub find_verbatim_commands{
# verbatim commands need to be put back in *after* trailing comments have been put
# back in
$logger->trace('*Searching for VERBATIM commands (see verbatimCommands)') if $is_t_switch_active;
- $logger->trace(Dumper(\%{$masterSettings{verbatimCommands}})) if($is_tt_switch_active);
- while( my ($verbCommand,$yesno)= each %{$masterSettings{verbatimCommands}}){
+ $logger->trace(Dumper(\%{$mainSettings{verbatimCommands}})) if($is_tt_switch_active);
+ while( my ($verbCommand,$yesno)= each %{$mainSettings{verbatimCommands}}){
if($yesno){
$logger->trace("looking for $verbCommand:$yesno Commands") if $is_t_switch_active;
@@ -281,7 +281,7 @@ sub find_verbatim_commands{
$logger->trace("replaced with ID: ${$verbatimCommand}{id}") if $is_t_switch_active;
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
} else {
$logger->trace("*not* looking for $verbCommand as $verbCommand:$yesno") if $is_t_switch_active;
@@ -295,7 +295,7 @@ sub find_verbatim_special{
my $self = shift;
# loop through specialBeginEnd
- while( my ($specialName,$BeginEnd)= each %{$masterSettings{specialBeginEnd}}){
+ while( my ($specialName,$BeginEnd)= each %{$mainSettings{specialBeginEnd}}){
# only classify special Verbatim if lookForThis is 'verbatim'
if( (ref($BeginEnd) eq "HASH") and ${$BeginEnd}{lookForThis}=~m/v/s and ${$BeginEnd}{lookForThis} eq 'verbatim'){
@@ -350,7 +350,7 @@ sub find_verbatim_special{
$logger->trace("replaced with ID: ${$verbatimBlock}{id}") if $is_t_switch_active;
# possible decoration in log file
- $logger->trace(${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace(${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace}) if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
}
}
@@ -363,7 +363,7 @@ sub put_verbatim_back_in {
my $verbatimCount=0;
my $toMatch = q();
if($input{match} eq "everything-except-commands"){
- $toMatch = "noindentblockenvironmentspecial";
+ $toMatch = "noindentblockenvironmentspeciallinesprotect";
} else {
$toMatch = "command";
}
@@ -386,14 +386,32 @@ sub put_verbatim_back_in {
while($verbatimFound < $verbatimCount){
while( my ($verbatimID,$child)= each %verbatimStorage){
if($toMatch =~ m/${$child}{type}/){
- if(${$self}{body} =~ m/$verbatimID/mx){
+ if(${$self}{body} =~ m/$verbatimID/m){
# possibly remove trailing line break
- if(defined ${$child}{EndFinishesWithLineBreak}
+ if($is_m_switch_active
+ and defined ${$child}{EndFinishesWithLineBreak}
and ${$child}{EndFinishesWithLineBreak}==-1
and ${$self}{body} =~ m/$verbatimID\h*\R/s){
$logger->trace("m-switch active, removing trailing line breaks from ${$child}{name}") if $is_t_switch_active;
${$self}{body} =~ s/$verbatimID(\h*)?(\R|\h)*/$verbatimID /s;
}
+
+ # line protection mode can allow line breaks to be removed
+ # at end of verbatim; these need to be added back in
+ #
+ # see
+ #
+ # test-cases/line-switch-test-cases/environments-simple-nested-mod13.tex
+ #
+ if(${$child}{type} eq "linesprotect"){
+ # remove leading space ahead of verbatim ID
+ ${$self}{body} =~ s/^\h*$verbatimID/$verbatimID/m;
+
+ if($is_m_switch_active and ${$self}{body}=~ m/$verbatimID\h*\S/s){
+ ${$self}{body} =~ s/$verbatimID\h*(\S)/$verbatimID\n$1/s;
+ }
+ }
+
# replace ids with body
${$self}{body} =~ s/$verbatimID/${$child}{begin}${$child}{body}${$child}{end}/s;
@@ -405,8 +423,8 @@ sub put_verbatim_back_in {
delete $verbatimStorage{$verbatimID};
$verbatimFound++;
} elsif ($is_m_switch_active
- and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1
- and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{huge} ne "overflow"
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1
+ and ${$mainSettings{modifyLineBreaks}{textWrapOptions}}{huge} ne "overflow"
and ${$self}{body} !~ m/${$child}{id}/){
$logger->trace("$verbatimID not found in body using /m matching, it may have been split across line (see modifyLineBreaks: textWrapOptions)") if($is_t_switch_active);
@@ -462,7 +480,7 @@ sub create_unique_id{
sub yaml_get_textwrap_removeparagraphline_breaks{
my $self = shift;
- $logger->trace("No text wrap or remove paragraph line breaks for verbatim code blocks, ${$self}{name}") if ${$masterSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
+ $logger->trace("No text wrap or remove paragraph line breaks for verbatim code blocks, ${$self}{name}") if ${$mainSettings{logFilePreferences}}{showDecorationFinishCodeBlockTrace};
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
index 81a37b49c0f..cd4878cbaa3 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
@@ -19,6 +19,6 @@ use warnings;
use Exporter qw/import/;
our @EXPORT_OK = qw/$versionNumber $versionDate/;
-our $versionNumber = '3.11';
-our $versionDate = '2021-07-31';
+our $versionNumber = '3.12';
+our $versionDate = '2021-09-16';
1
diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
index edac9bad826..fc4be94bc06 100755
--- a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
+++ b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
@@ -1,4 +1,4 @@
-# defaultSettings.yaml for latexindent.pl, version 3.11, 2021-07-31
+# defaultSettings.yaml for latexindent.pl, version 3.12, 2021-09-16
# a script that aims to
# beautify .tex, .sty, .cls files
#
@@ -528,7 +528,7 @@ modifyLineBreaks:
afterHeading: 0
preamble: 0
filecontents: 0
- masterDocument: 0
+ mainDocument: 0
removeParagraphLineBreaks:
all: 0
beforeTextWrap: 0
@@ -543,7 +543,7 @@ modifyLineBreaks:
afterHeading: 0
preamble: 0
filecontents: 0
- masterDocument: 0
+ mainDocument: 0
paragraphsStopAt:
environments: 1
verbatim: 1
diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl
index 696fb2b7b8d..e27a8be07b7 100755
--- a/Master/texmf-dist/scripts/latexindent/latexindent.pl
+++ b/Master/texmf-dist/scripts/latexindent/latexindent.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# latexindent.pl, version 3.11, 2021-07-31
+# latexindent.pl, version 3.12, 2021-09-16
#
# 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
@@ -47,6 +47,9 @@ GetOptions (
"replacement|r"=>\$switches{replacement},
"onlyreplacement|rr"=>\$switches{onlyreplacement},
"replacementrespectverb|rv"=>\$switches{replacementRespectVerb},
+ "check|k"=>\$switches{check},
+ "checkv|kv"=>\$switches{checkverbose},
+ "lines|n=s"=>\$switches{lines},
);
# check local settings doesn't interfer with reading the file;
@@ -67,6 +70,6 @@ if($switches{readLocalSettings} and scalar(@ARGV) < 1) {
# allow STDIN as input, if a filename is not present
unshift( @ARGV, '-' ) unless @ARGV;
-my $document = bless ({name=>"masterDocument",modifyLineBreaksYamlName=>"masterDocument",fileName=>$ARGV[0],switches=>\%switches},"LatexIndent::Document");
+my $document = bless ({name=>"mainDocument",modifyLineBreaksYamlName=>"mainDocument",fileName=>$ARGV[0],switches=>\%switches},"LatexIndent::Document");
$document->latexindent;
exit(0);