summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/latexindent
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-05 21:29:26 +0000
committerKarl Berry <karl@freefriends.org>2019-05-05 21:29:26 +0000
commit68d8522544f91b9bf99e420d505dd558389bbe61 (patch)
tree5a5c569c1541628a0fa108d04ee68485600a708e /Master/texmf-dist/scripts/latexindent
parent8b3f105e5c735e3dff4098328dd7e7004822224c (diff)
latexindent (5may19)
git-svn-id: svn://tug.org/texlive/trunk@51015 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/latexindent')
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm9
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm33
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm2
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm272
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm4
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/defaultSettings.yaml5
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/latexindent.pl2
8 files changed, 215 insertions, 116 deletions
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
index 491b9bce7f3..b4441b99455 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
@@ -27,7 +27,7 @@ use LatexIndent::GetYamlSettings qw/yaml_read_settings yaml_modify_line_breaks_s
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/;
-use LatexIndent::ModifyLineBreaks qw/modify_line_breaks_body modify_line_breaks_end remove_line_breaks_begin adjust_line_breaks_end_parent text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks/;
+use LatexIndent::ModifyLineBreaks qw/modify_line_breaks_body modify_line_breaks_end remove_line_breaks_begin adjust_line_breaks_end_parent text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks verbatim_modify_line_breaks/;
use LatexIndent::Sentence qw/one_sentence_per_line/;
use LatexIndent::TrailingComments qw/remove_trailing_comments put_trailing_comments_back_in add_comment_symbol construct_trailing_comment_regexp/;
use LatexIndent::HorizontalWhiteSpace qw/remove_trailing_whitespace remove_leading_space/;
@@ -38,7 +38,7 @@ use LatexIndent::AlignmentAtAmpersand qw/align_at_ampersand find_aligned_block/;
use LatexIndent::DoubleBackSlash qw/dodge_double_backslash un_dodge_double_backslash/;
# code blocks
-use LatexIndent::Verbatim qw/put_verbatim_back_in find_verbatim_environments find_noindent_block find_verbatim_commands put_verbatim_commands_back_in find_verbatim_special/;
+use LatexIndent::Verbatim qw/put_verbatim_back_in find_verbatim_environments find_noindent_block find_verbatim_commands find_verbatim_special verbatim_common_tasks/;
use LatexIndent::Environment qw/find_environments $environmentBasicRegExp/;
use LatexIndent::IfElseFi qw/find_ifelsefi construct_ifelsefi_regexp $ifElseFiBasicRegExp/;
use LatexIndent::Else qw/check_for_else_statement/;
@@ -90,6 +90,7 @@ sub operate_on_file{
$self->remove_trailing_comments;
$self->find_verbatim_environments;
$self->find_verbatim_special;
+ $self->verbatim_modify_line_breaks if $is_m_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->remove_trailing_whitespace(when=>"before");
@@ -101,9 +102,9 @@ sub operate_on_file{
$self->condense_blank_lines;
$self->unprotect_blank_lines;
$self->un_dodge_double_backslash;
- $self->put_verbatim_back_in;
+ $self->put_verbatim_back_in (match=>"everything-except-commands");
$self->put_trailing_comments_back_in;
- $self->put_verbatim_commands_back_in;
+ $self->put_verbatim_back_in (match=>"just-commands");
$self->output_indented_text;
return
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
index a190d1e5f8c..97cb36df823 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
@@ -780,12 +780,12 @@ sub yaml_poly_switch_get_every_or_custom_value{
# check for the *custom* value
if (defined $customValue){
- $logger->trace("$name: $toBeAssignedToAlias=$customValue, (*custom* value) adjusting $toBeAssignedTo") if($is_t_switch_active);
+ $logger->trace("$name: $toBeAssignedToAlias=$customValue, (*per-name* value) adjusting $toBeAssignedTo") if($is_t_switch_active);
${$self}{$toBeAssignedTo} = $customValue !=0 ? $customValue : undef;
} else {
# check for the *every* value
if (defined $everyValue and $everyValue != 0){
- $logger->trace("$name: $toBeAssignedToAlias=$everyValue, (*every* value) adjusting $toBeAssignedTo") if($is_t_switch_active);
+ $logger->trace("$name: $toBeAssignedToAlias=$everyValue, (*global* value) adjusting $toBeAssignedTo") if($is_t_switch_active);
${$self}{$toBeAssignedTo} = $everyValue;
}
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
index 2faa53b2920..a0763456e02 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
@@ -25,7 +25,7 @@ use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::Item qw/$listOfItems/;
use LatexIndent::LogFile qw/$logger/;
-our @EXPORT_OK = qw/modify_line_breaks_body modify_line_breaks_end adjust_line_breaks_end_parent remove_line_breaks_begin text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks/;
+our @EXPORT_OK = qw/modify_line_breaks_body modify_line_breaks_end adjust_line_breaks_end_parent remove_line_breaks_begin text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks verbatim_modify_line_breaks/;
our $paragraphRegExp = q();
@@ -207,6 +207,37 @@ sub adjust_line_breaks_end_parent{
}
+sub verbatim_modify_line_breaks{
+ # verbatim modify line breaks are a bit special, as they happen before
+ # any of the main processes have been done
+ my $self = shift;
+ while ( my ($key,$child)= each %{${$self}{verbatim}}){
+ if(defined ${$child}{BeginStartsOnOwnLine}){
+ my $BeginStringLogFile = ${$child}{aliases}{BeginStartsOnOwnLine};
+ $logger->trace("*$BeginStringLogFile is ${$child}{BeginStartsOnOwnLine} for ${$child}{name}") if $is_t_switch_active ;
+ if (${$child}{BeginStartsOnOwnLine}==-1){
+ # VerbatimStartsOnOwnLine = -1
+ if(${$self}{body}=~m/^\h*${$child}{id}/m){
+ $logger->trace("${$child}{name} begins on its own line, removing leading line break") if $is_t_switch_active ;
+ ${$self}{body} =~ s/(\R|\h)*${$child}{id}/${$child}{id}/s;
+ }
+ } elsif (${$child}{BeginStartsOnOwnLine}>=1 and ${$self}{body}!~m/^\h*${$child}{id}/m){
+ # VerbatimStartsOnOwnLine = 1, 2 or 3
+ my $trailingCharacterToken = q();
+ if(${$child}{BeginStartsOnOwnLine}==1){
+ $logger->trace("Adding a linebreak at the beginning of ${$child}{begin} (see $BeginStringLogFile)") if $is_t_switch_active;
+ } elsif (${$child}{BeginStartsOnOwnLine}==2){
+ $logger->trace("Adding a % at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 2)") if $is_t_switch_active;
+ $trailingCharacterToken = "%".$self->add_comment_symbol;
+ } elsif (${$child}{BeginStartsOnOwnLine}==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";
+ }
+ ${$self}{body} =~ s/\h*${$child}{id}/$trailingCharacterToken\n${$child}{id}/s;
+ }
+ }
+ }
+}
sub text_wrap_remove_paragraph_line_breaks{
my $self = shift;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
index c7bc39c284b..48ae0379d6c 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
@@ -129,7 +129,7 @@ sub one_sentence_per_line{
$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/(?:\.\)(?!\h*[a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|\,|[0-9]))/;
+ $sentencesEndWithEachPart = qr/(?:\.\)(?!\h*[a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|~|\,|[0-9]))/;
} elsif ($sentencesEndWithEachPart eq "exclamationMark"){
$logger->trace("sentence ENDS with exclamation mark (see oneSentencePerLine:sentencesEndWith:exclamationMark)") if $is_t_switch_active;
$sentencesEndWithEachPart = qr/!/;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
index f283eb0661c..d115bf078f7 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Verbatim.pm
@@ -22,7 +22,7 @@ use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::GetYamlSettings qw/%masterSettings/;
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 put_verbatim_commands_back_in find_verbatim_special/;
+our @EXPORT_OK = qw/put_verbatim_back_in find_verbatim_environments find_noindent_block find_verbatim_commands find_verbatim_special verbatim_common_tasks/;
our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
our $verbatimCounter;
@@ -59,11 +59,13 @@ sub find_noindent_block{
while( ${$self}{body} =~ m/$noIndentRegExp/sx){
- # create a new Environment object
+ # create a new Verbatim object
my $noIndentBlockObj = LatexIndent::Verbatim->new( begin=>$1,
body=>$2,
end=>$3,
name=>$noIndentBlock,
+ type=>"noindentblock",
+ modifyLineBreaksYamlName=>"verbatim",
);
# give unique id
@@ -113,19 +115,34 @@ sub find_verbatim_environments{
(
\\end\{$verbEnvSpec\} # \end{<something>} statement
)
+ (\h*)? # possibly followed by horizontal space
+ (\R)? # possibly followed by a line break
/sx;
while( ${$self}{body} =~ m/$verbatimRegExp/sx){
- # create a new Environment object
+ # create a new Verbatim object
my $verbatimBlock = LatexIndent::Verbatim->new( begin=>$1,
body=>$2,
end=>$3,
name=>$verbEnv,
+ type=>"environment",
+ modifyLineBreaksYamlName=>"verbatim",
+ linebreaksAtEnd=>{
+ end=>$5?1:0,
+ },
+ horizontalTrailingSpace=>$4?$4:q(),
+ aliases=>{
+ # begin statements
+ BeginStartsOnOwnLine=>"VerbatimBeginStartsOnOwnLine",
+ # after end statements
+ EndFinishesWithLineBreak=>"VerbatimEndFinishesWithLineBreak",
+ },
);
- # give unique id
- $verbatimBlock->create_unique_id;
+ # there are common tasks for each of the verbatim objects
+ $verbatimBlock->verbatim_common_tasks;
+
# verbatim children go in special hash
${$self}{verbatim}{${$verbatimBlock}{id}}=$verbatimBlock;
@@ -133,7 +150,7 @@ sub find_verbatim_environments{
$logger->trace("*VERBATIM environment found: $verbEnv") if $is_t_switch_active;
# remove the environment block, and replace with unique ID
- ${$self}{body} =~ s/$verbatimRegExp/${$verbatimBlock}{id}/sx;
+ ${$self}{body} =~ s/$verbatimRegExp/${$verbatimBlock}{replacementText}/sx;
$logger->trace("replaced with ID: ${$verbatimBlock}{id}") if $is_t_switch_active;
@@ -161,7 +178,7 @@ sub find_verbatim_commands{
if($yesno){
$logger->trace("looking for $verbCommand:$yesno Commands") if $is_t_switch_active;
- my $verbatimCommandRegExp = qr/
+ my $verbatimRegExp = qr/
(
\\$verbCommand
\h*
@@ -176,39 +193,53 @@ sub find_verbatim_commands{
(?<!\\) # not immediately pre-ceeded by \
\] # [optional arguments]
\h*
- )? # opt arg into $2
+ )? # opt arg into $2
(
.
- ) # delimiter into $3
+ ) # delimiter into $3
(
.*?
- ) # body into $4
+ ) # body into $4
\3
+ (\h*)? # possibly followed by horizontal space
+ (\R)? # possibly followed by a line break
/mx;
- while( ${$self}{body} =~ m/$verbatimCommandRegExp/){
+ while( ${$self}{body} =~ m/$verbatimRegExp/){
- # create a new Environment object
+ # create a new Verbatim object
my $verbatimCommand = LatexIndent::Verbatim->new( begin=>$1.($2?$2:q()).$3,
body=>$4,
end=>$3,
name=>$verbCommand,
+ type=>"command",
+ modifyLineBreaksYamlName=>"verbatim",
+ linebreaksAtEnd=>{
+ end=>$6?1:0,
+ },
+ horizontalTrailingSpace=>$5?$5:q(),
+ aliases=>{
+ # begin statements
+ BeginStartsOnOwnLine=>"VerbatimBeginStartsOnOwnLine",
+ # after end statements
+ EndFinishesWithLineBreak=>"VerbatimEndFinishesWithLineBreak",
+ },
optArg=>$2?$2:q(),
);
- # give unique id
- $verbatimCommand->create_unique_id;
+ # there are common tasks for each of the verbatim objects
+ $verbatimCommand->verbatim_common_tasks;
# output, if desired
$logger->trace(Dumper($verbatimCommand),'ttrace') if($is_tt_switch_active);
# verbatim children go in special hash
- ${$self}{verbatimCommands}{${$verbatimCommand}{id}}=$verbatimCommand;
+ ${$self}{verbatim}{${$verbatimCommand}{id}}=$verbatimCommand;
# log file output
$logger->trace("*VERBATIM command found: $verbCommand") if $is_t_switch_active;
# remove the environment block, and replace with unique ID
- ${$self}{body} =~ s/$verbatimCommandRegExp/${$verbatimCommand}{id}/sx;
+ ${$self}{body} =~ s/$verbatimRegExp/${$verbatimCommand}{replacementText}/sx;
$logger->trace("replaced with ID: ${$verbatimCommand}{id}") if $is_t_switch_active;
@@ -223,73 +254,127 @@ sub find_verbatim_commands{
}
-sub put_verbatim_back_in {
+sub find_verbatim_special{
my $self = shift;
- # if there are no verbatim children, return
- return unless(${$self}{verbatim});
+ # loop through specialBeginEnd
+ while( my ($specialName,$BeginEnd)= each %{$masterSettings{specialBeginEnd}}){
- # search for environments/commands
- $logger->trace('*Putting verbatim back in, here is the pre-processed body:') if $is_tt_switch_active;
- $logger->trace(${$self}{body}) if($is_tt_switch_active);
+ # only classify special Verbatim if lookForThis is 'verbatim'
+ if( (ref($BeginEnd) eq "HASH") and ${$BeginEnd}{lookForThis}=~m/v/s and ${$BeginEnd}{lookForThis} eq 'verbatim'){
+ $logger->trace('*Searching for VERBATIM special (see specialBeginEnd)') if $is_t_switch_active;
- # loop through document children hash
- while( (scalar keys %{${$self}{verbatim}})>0 ){
- while( my ($key,$child)= each %{${$self}{verbatim}}){
- if(${$self}{body} =~ m/${$child}{id}/mx){
+ my $verbatimRegExp = qr/
+ (
+ ${$BeginEnd}{begin}
+ )
+ (
+ .*?
+ )
+ (
+ ${$BeginEnd}{end}
+ )
+ (\h*)? # possibly followed by horizontal space
+ (\R)? # possibly followed by a line break
+ /sx;
- # replace ids with body
- ${$self}{body} =~ s/${$child}{id}/${$child}{begin}${$child}{body}${$child}{end}/;
+ while( ${$self}{body} =~ m/$verbatimRegExp/sx){
- # log file info
- $logger->trace('Body now looks like:') if $is_tt_switch_active;
- $logger->trace(${$self}{body},'ttrace') if($is_tt_switch_active);
+ # create a new Verbatim object
+ my $verbatimBlock = LatexIndent::Verbatim->new( begin=>$1,
+ body=>$2,
+ end=>$3,
+ name=>$specialName,
+ modifyLineBreaksYamlName=>"specialBeginEnd",
+ linebreaksAtEnd=>{
+ end=>$5?1:0,
+ },
+ horizontalTrailingSpace=>$4?$4:q(),
+ type=>"special",
+ aliases=>{
+ # begin statements
+ BeginStartsOnOwnLine=>"SpecialBeginStartsOnOwnLine",
+ # after end statements
+ EndFinishesWithLineBreak=>"SpecialEndFinishesWithLineBreak",
+ },
+ );
+ # there are common tasks for each of the verbatim objects
+ $verbatimBlock->verbatim_common_tasks;
- # delete the hash so it won't be operated upon again
- delete ${$self}{verbatim}{${$child}{id}};
- } elsif ($is_m_switch_active and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1 and ${$self}{body} !~ m/${$child}{id}/){
- $logger->trace("${$child}{id} not found in body using /m matching, it may have been split across line (see modifyLineBreaks: textWrapOptions)") if($is_t_switch_active);
+ # verbatim children go in special hash
+ ${$self}{verbatim}{${$verbatimBlock}{id}}=$verbatimBlock;
- # search for a version of the verbatim ID that may have line breaks
- my $verbatimIDwithLineBreaks = join("\\R?",split(//,${$child}{id}));
- my $verbatimIDwithLineBreaksRegExp = qr/$verbatimIDwithLineBreaks/s;
+ # log file output
+ $logger->trace("*VERBATIM special found: $specialName") if $is_t_switch_active;
- # replace the line-broken verbatim ID with a non-broken verbatim ID
- ${$self}{body} =~ s/$verbatimIDwithLineBreaksRegExp/${$child}{id}/s;
- }
- }
- }
+ # remove the special block, and replace with unique ID
+ ${$self}{body} =~ s/$verbatimRegExp/${$verbatimBlock}{replacementText}/sx;
- # logfile info
- $logger->trace('*Post-processed body:') if $is_tt_switch_active;
- $logger->trace(${$self}{body}) if($is_tt_switch_active);
- return;
+ $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};
+ }
+ }
+ }
}
-sub put_verbatim_commands_back_in {
+sub put_verbatim_back_in {
my $self = shift;
+ my %input = @_;
# if there are no verbatim children, return
- return unless(${$self}{verbatimCommands});
+ return unless(${$self}{verbatim});
+ my $verbatimCount=0;
+ my $toMatch = q();
+ if($input{match} eq "everything-except-commands"){
+ $toMatch = "noindentblockenvironmentspecial";
+
+ # count the number of non-command verbatim objects
+ while( my ($key,$child)= each %{${$self}{verbatim}}){
+ ${$child}{type} = "environment" if !(defined ${$child}{type});
+ $verbatimCount++ if($toMatch =~ m/${$child}{type}/);
+ }
+ return unless($verbatimCount>0);
+ } else {
+ $toMatch = "command";
+ # count the number of command verbatim objects
+ while( my ($key,$child)= each %{${$self}{verbatim}}){
+ ${$child}{type} = "environment" if !(defined ${$child}{type});
+ $verbatimCount++ if($toMatch =~ m/${$child}{type}/);
+ }
+ return unless($verbatimCount>0);
+ }
+
# search for environments/commands
- $logger->trace('*Putting verbatim commands back in, here is the pre-processed body:') if $is_tt_switch_active;
+ $logger->trace('*Putting verbatim back in') if $is_t_switch_active;
+ $logger->trace('pre-processed body:') if $is_tt_switch_active;
$logger->trace(${$self}{body}) if($is_tt_switch_active);
# loop through document children hash
- while( (scalar keys %{${$self}{verbatimCommands}})>0 ){
- while( my ($key,$child)= each %{${$self}{verbatimCommands}}){
+ my $verbatimFound=0;
+ while($verbatimFound < $verbatimCount){
+ while( my ($key,$child)= each %{${$self}{verbatim}}){
+ if($toMatch =~ m/${$child}{type}/){
if(${$self}{body} =~ m/${$child}{id}/mx){
-
+ # possibly remove trailing line break
+ if(defined ${$child}{EndFinishesWithLineBreak}
+ and ${$child}{EndFinishesWithLineBreak}==-1
+ and ${$self}{body} =~ m/${$child}{id}\h*\R/s){
+ $logger->trace("m-switch active, removing trailing line breaks from ${$child}{name}") if $is_t_switch_active;
+ ${$self}{body} =~ s/${$child}{id}(\h*)?(\R|\h)*/${$child}{id} /s;
+ }
# replace ids with body
- ${$self}{body} =~ s/${$child}{id}/${$child}{begin}${$child}{body}${$child}{end}/;
+ ${$self}{body} =~ s/${$child}{id}/${$child}{begin}${$child}{body}${$child}{end}/s;
# log file info
$logger->trace('Body now looks like:') if $is_tt_switch_active;
$logger->trace(${$self}{body},'ttrace') if($is_tt_switch_active);
- # delete the hash so it won't be operated upon again
- delete ${$self}{verbatimCommands}{${$child}{id}};
+ # delete the child so it won't be operated upon again
+ delete ${$self}{verbatim}{${$child}{id}};
+ $verbatimFound++;
} elsif ($is_m_switch_active and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1 and ${$self}{body} !~ m/${$child}{id}/){
$logger->trace("${$child}{id} not found in body using /m matching, it may have been split across line (see modifyLineBreaks: textWrapOptions)") if($is_t_switch_active);
@@ -299,65 +384,39 @@ sub put_verbatim_commands_back_in {
# replace the line-broken verbatim ID with a non-broken verbatim ID
${$self}{body} =~ s/$verbatimIDwithLineBreaksRegExp/${$child}{id}/s;
+
+ # note: we do *not* label this as found, as we need to go back through
+ # and search for the newly modified ID
}
}
- }
- # logfile info
- $logger->trace('*Post-processed body:') if $is_tt_switch_active;
- $logger->trace(${$self}{body}) if($is_tt_switch_active);
+ # logfile info
+ $logger->trace('*Post-processed body:') if $is_tt_switch_active;
+ $logger->trace(${$self}{body}) if($is_tt_switch_active);
+ }
+ }
return;
}
-sub find_verbatim_special{
- my $self = shift;
-
- # loop through specialBeginEnd
- while( my ($specialName,$BeginEnd)= each %{$masterSettings{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'){
- $logger->trace('*Searching for VERBATIM special (see specialBeginEnd)') if $is_t_switch_active;
-
- my $verbatimRegExp = qr/
- (
- ${$BeginEnd}{begin}
- )
- (
- .*?
- )
- (
- ${$BeginEnd}{end}
- )
- /sx;
-
- while( ${$self}{body} =~ m/$verbatimRegExp/sx){
+sub verbatim_common_tasks{
- # create a new Environment object
- my $verbatimBlock = LatexIndent::Verbatim->new( begin=>$1,
- body=>$2,
- end=>$3,
- name=>$specialName,
- );
- # give unique id
- $verbatimBlock->create_unique_id;
+ my $self = shift;
- # verbatim children go in special hash
- ${$self}{verbatim}{${$verbatimBlock}{id}}=$verbatimBlock;
+ # get yaml settings
+ $self->yaml_modify_line_breaks_settings if $is_m_switch_active;
- # log file output
- $logger->trace("*VERBATIM special found: $specialName") if $is_t_switch_active;
+ # give unique id
+ $self->create_unique_id;
- # remove the special block, and replace with unique ID
- ${$self}{body} =~ s/$verbatimRegExp/${$verbatimBlock}{id}/sx;
+ # the replacement text can be just the ID, but the ID might have a line break at the end of it
+ $self->get_replacement_text;
- $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};
- }
- }
- }
+ # the above regexp, when used below, will remove the trailing linebreak in ${$self}{linebreaksAtEnd}{end}
+ # so we compensate for it here
+ $self->adjust_replacement_text_line_breaks_at_end;
+
+ # modify line breaks end statements
+ $self->modify_line_breaks_end if $is_m_switch_active;
}
sub create_unique_id{
@@ -368,4 +427,9 @@ sub create_unique_id{
return;
}
+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};
+}
+
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
index 4dd9ec1da57..52a659dc79c 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.5.3';
-our $versionDate = '2018-10-13';
+our $versionNumber = '3.6';
+our $versionDate = '2019-05-05';
1
diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
index ad6a61fed57..d457e96e3a3 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.5.3, 2018-10-13
+# defaultSettings.yaml for latexindent.pl, version 3.6, 2019-05-05
# a script that aims to
# beautify .tex, .sty, .cls files
#
@@ -516,3 +516,6 @@ modifyLineBreaks:
SpecialBodyStartsOnOwnLine: 0
SpecialEndStartsOnOwnLine: 0
SpecialEndFinishesWithLineBreak: 0
+ verbatim:
+ VerbatimBeginStartsOnOwnLine: 0
+ VerbatimEndFinishesWithLineBreak: 0
diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl
index d55682eadde..cb2208d1176 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.5.3, 2018-10-13
+# latexindent.pl, version 3.6, 2019-05-05
#
# 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