[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: Format @*ref node out of main document to determi
From: |
Patrice Dumas |
Subject: |
branch master updated: Format @*ref node out of main document to determine if quoted |
Date: |
Fri, 14 Oct 2022 12:55:06 -0400 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new 67ffa6f016 Format @*ref node out of main document to determine if
quoted
67ffa6f016 is described below
commit 67ffa6f0168b1299a4df0c2397b65673c4612fac
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Oct 14 18:54:55 2022 +0200
Format @*ref node out of main document to determine if quoted
* tp/Texinfo/Convert/Info.pm (converter_line_warn)
(converter_line_error), tp/Texinfo/Convert/Plaintext.pm
(converter_line_warn, converter_line_error, _convert):
add converter_line_warn and converter_line_error to intercept calls
to line_warn and line_error in case a silent conversion is needed,
with 'silent' set for converter.
Convert the @*ref commands node outside of the main document
formatting before converting the node normally, to determine if it
needs to be quoted.
* tp/Texinfo/Convert/Info.pm (add_text_to_count),
tp/Texinfo/Convert/Plaintext.pm(add_text_to_count): rename
add_text_count to add_text_to_count.
---
ChangeLog | 18 ++
tp/Texinfo/Convert/Info.pm | 18 +-
tp/Texinfo/Convert/Plaintext.pm | 169 ++++++++---------
.../quote_node_names_info/res_info/nodequote.info | 2 +-
tp/t/results/info_tests/ref_tests.pl | 2 +-
tp/t/results/info_tests/xref_test.pl | 8 +-
.../res_plaintext/quote_node_names.txt | 2 +-
.../plaintext_tests/xref_quote_long_item.pl | 15 +-
.../res_parser/formatting_info/formatting.info | 200 ++++++++++-----------
9 files changed, 224 insertions(+), 210 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d47607be33..376e98a517 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2022-10-14 Patrice Dumas <pertusus@free.fr>
+
+ Format @*ref node out of main document to determine if quoted
+
+ * tp/Texinfo/Convert/Info.pm (converter_line_warn)
+ (converter_line_error), tp/Texinfo/Convert/Plaintext.pm
+ (converter_line_warn, converter_line_error, _convert):
+ add converter_line_warn and converter_line_error to intercept calls
+ to line_warn and line_error in case a silent conversion is needed,
+ with 'silent' set for converter.
+ Convert the @*ref commands node outside of the main document
+ formatting before converting the node normally, to determine if it
+ needs to be quoted.
+
+ * tp/Texinfo/Convert/Info.pm (add_text_to_count),
+ tp/Texinfo/Convert/Plaintext.pm(add_text_to_count): rename
+ add_text_count to add_text_to_count.
+
2022-10-13 Patrice Dumas <pertusus@free.fr>
* tp/init/html32.pm: do not use −, protect with
diff --git a/tp/Texinfo/Convert/Info.pm b/tp/Texinfo/Convert/Info.pm
index 6f96c425fc..e7af999855 100644
--- a/tp/Texinfo/Convert/Info.pm
+++ b/tp/Texinfo/Convert/Info.pm
@@ -265,7 +265,7 @@ sub output($)
my ($label_text, $byte_count) = $self->node_line($label->{'root'});
if ($seen_anchors{$label_text}) {
- $self->line_error($self, sprintf(__("\@%s output more than once: %s"),
+ $self->converter_line_error($self, sprintf(__("\@%s output more than
once: %s"),
$label->{'root'}->{'cmdname'},
Texinfo::Convert::Texinfo::convert_to_texinfo({'contents' =>
$label->{'root'}->{'extra'}->{'node_content'}})),
@@ -420,7 +420,7 @@ sub format_error_outside_of_any_node($$)
my $self = shift;
my $element = shift;
if (!$self->{'current_node'}) {
- $self->line_warn($self,
+ $self->converter_line_warn($self,
sprintf(__("\@%s outside of any node"),
$element->{'cmdname'}), $element->{'source_info'});
}
@@ -436,7 +436,7 @@ sub format_node($$)
return '' if (!defined($node->{'extra'}->{'node_content'}));
if (!$self->{'empty_lines_count'}) {
$result .= "\n";
- $self->add_text_count("\n");
+ $self->add_text_to_count("\n");
# if in the first node, complete the 'text_before_first_node' too.
if (!$self->{'first_node_done'}) {
$self->{'text_before_first_node'} .= "\n";
@@ -457,13 +457,13 @@ sub format_node($$)
$self->add_location($node);
my $node_begin = "\x{1F}\nFile: $output_filename, Node: ";
$result .= $node_begin;
- $self->add_text_count($node_begin);
+ $self->add_text_to_count($node_begin);
my ($node_text, $byte_count) = $self->node_line($node);
my $pre_quote = '';
my $post_quote = '';
if ($node_text =~ /,/) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"\@node name should not contain `,': %s"), $node_text),
$node->{'source_info'});
}
@@ -479,7 +479,7 @@ sub format_node($$)
if ($node->{'structure'}->{'node_'.lc($direction)}) {
my $node_direction = $node->{'structure'}->{'node_'.lc($direction)};
my $text = ", $direction: ";
- $self->add_text_count($text);
+ $self->add_text_to_count($text);
$result .= $text;
if ($node_direction->{'extra'}->{'manual_content'}) {
$result .= $self->convert_line({'type' => '_code',
@@ -499,7 +499,7 @@ sub format_node($$)
# warn only for external nodes, internal nodes should already
# trigger a warning when defined
and $node_direction->{'extra'}->{'manual_content'}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"\@node %s name should not contain `,': %s"),
$direction, $node_text),
$node->{'source_info'});
@@ -515,12 +515,12 @@ sub format_node($$)
} elsif ($direction eq 'Up' and $node->{'extra'}->{'normalized'} eq 'Top')
{
# add an up direction for Top node
my $text = ", $direction: ".$self->get_conf('TOP_NODE_UP');
- $self->add_text_count($text);
+ $self->add_text_to_count($text);
$result .= $text;
}
}
$result .="\n\n";
- $self->add_text_count("\n\n");
+ $self->add_text_to_count("\n\n");
$self->{'count_context'}->[-1]->{'lines'} = 3;
$self->{'empty_lines_count'} = 1;
diff --git a/tp/Texinfo/Convert/Plaintext.pm b/tp/Texinfo/Convert/Plaintext.pm
index 3ea00e00aa..9bcaa51b3d 100644
--- a/tp/Texinfo/Convert/Plaintext.pm
+++ b/tp/Texinfo/Convert/Plaintext.pm
@@ -737,6 +737,31 @@ sub new_formatter($$;$)
return $formatter;
}
+# intercept messages, in case some Texinfo is processed twice
+sub converter_line_warn($$$$)
+{
+ my $self = shift;
+ my $configuration_information = shift;
+ my $text = shift;
+ my $error_location_info = shift;
+
+ if (!$self->{'silent'}) {
+ $self->line_warn($configuration_information, $text, $error_location_info);
+ }
+}
+
+sub converter_line_error($$$$)
+{
+ my $self = shift;
+ my $configuration_information = shift;
+ my $text = shift;
+ my $error_location_info = shift;
+
+ if (!$self->{'silent'}) {
+ $self->line_error($configuration_information, $text, $error_location_info);
+ }
+}
+
sub convert_line($$;$)
{
my ($self, $converted, $conf) = @_;
@@ -770,7 +795,7 @@ sub count_bytes($$)
$self->{'output_perl_encoding'});
}
-sub add_text_count($$)
+sub add_text_to_count($$)
{
my ($self, $text) = @_;
if (!$self->{'count_context'}->[-1]->{'pending_text'}) {
@@ -787,7 +812,7 @@ sub _add_lines_count($$)
# Update $SELF->{'count_context'}->[-1]->{'bytes'} by counting the text that
# hasn't been counted yet. It is faster to count the text all together than
-# piece by piece in add_text_count.
+# piece by piece in add_text_to_count.
sub update_count_context($)
{
my $self = shift;
@@ -860,7 +885,7 @@ sub _add_newline_if_needed($) {
my $self = shift;
if (defined($self->{'empty_lines_count'})
and $self->{'empty_lines_count'} == 0) {
- add_text_count($self, "\n");
+ add_text_to_count($self, "\n");
_add_lines_count($self, 1);
$self->{'empty_lines_count'} = 1;
return "\n";
@@ -909,7 +934,7 @@ sub process_footnotes($;$)
if ($self->get_conf('footnotestyle') eq 'end' or !defined($element)) {
my $footnotes_header = " ---------- Footnotes ----------\n\n";
$result .= $footnotes_header;
- add_text_count($self, $footnotes_header);
+ add_text_to_count($self, $footnotes_header);
_add_lines_count($self, 2);
$self->{'empty_lines_count'} = 1;
} else {
@@ -953,7 +978,7 @@ sub process_footnotes($;$)
$result .= $footnote_text;
$self->{'text_element_context'}->[-1]->{'counter'} +=
Texinfo::Convert::Unicode::string_width($footnote_text);
- add_text_count($self, $footnote_text);
+ add_text_to_count($self, $footnote_text);
$self->{'empty_lines_count'} = 0;
$result .= $self->_convert($footnote->{'root'}->{'args'}->[0]);
@@ -1205,7 +1230,7 @@ sub _menu($$)
if ($menu_command->{'cmdname'} eq 'menu') {
my $result = "* Menu:\n\n";
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
_add_lines_count($self, 2);
if ($self->{'current_node'}) {
$self->{'seenmenus'}->{$self->{'current_node'}} = 1;
@@ -1338,13 +1363,13 @@ sub process_printindex($$;$)
if ($in_info) {
my $info_printindex_magic = "\x{00}\x{08}[index\x{00}\x{08}]\n";
$result .= $info_printindex_magic;
- add_text_count($self, $info_printindex_magic);
+ add_text_to_count($self, $info_printindex_magic);
_add_lines_count($self, 1);
}
my $heading = "* Menu:\n\n";
$result .= $heading;
- add_text_count($self, $heading);
+ add_text_to_count($self, $heading);
_add_lines_count($self, 2);
# this is used to count entries that are the same
@@ -1384,7 +1409,7 @@ sub process_printindex($$;$)
# protected, however, as done below, such that : in the node are not
# mistaken as being part of the index entry.
if ($entry_text =~ /:/ and $self->get_conf('INDEX_SPECIAL_CHARS_WARNING'))
{
- $self->line_warn ($self,
+ $self->converter_line_warn ($self,
sprintf(__("Index entry in \@%s with : produces invalid Info: %s"),
$entry->{'index_at_command'},
Texinfo::Convert::Texinfo::convert_to_texinfo($entry_tree)),
@@ -1397,17 +1422,17 @@ sub process_printindex($$;$)
} else {
$entry_counts{$entry_text}++;
$entry_nr = ' <'.$entry_counts{$entry_text}.'>';
- add_text_count($self, $entry_nr);
+ add_text_to_count($self, $entry_nr);
}
my $entry_line = "* $entry_text${entry_nr}: ";
- add_text_count($self, "* ".": ");
+ add_text_to_count($self, "* ".": ");
my $line_width = Texinfo::Convert::Unicode::string_width($entry_line);
my $entry_line_addition = '';
if ($line_width < $index_length_to_node) {
my $spaces = ' ' x ($index_length_to_node - $line_width);
$entry_line_addition .= $spaces;
- add_text_count($self, $spaces);
+ add_text_to_count($self, $spaces);
}
my $node = $entry_nodes{$entry};
@@ -1431,7 +1456,7 @@ sub process_printindex($$;$)
# done by the Parser.
# Warn, only once.
if (!$self->{'index_entries_no_node'}->{$entry}) {
- $self->line_warn($self,
+ $self->converter_line_warn($self,
sprintf(__("entry for index `%s' outside of any node"),
$index_name),
$entry->{'entry_element'}->{'source_info'});
$self->{'index_entries_no_node'}->{$entry} = 1;
@@ -1447,7 +1472,7 @@ sub process_printindex($$;$)
if ($self->{'info_special_chars_warning'}) {
# Warn only once
if (! $self->{'index_entry_node_colon'}->{$node_line}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"node name with index entries should not contain `%s'"),
$warned_char),
$node->{'source_info'});
@@ -1464,7 +1489,7 @@ sub process_printindex($$;$)
$entry_line_addition .= $node_line;
}
$entry_line_addition .= '.';
- add_text_count($self, '.');
+ add_text_to_count($self, '.');
$entry_line .= $entry_line_addition;
$result .= $entry_line;
@@ -1484,12 +1509,12 @@ sub process_printindex($$;$)
. "$line_part\n";
}
_add_lines_count($self, 1);
- add_text_count($self, $line_part);
+ add_text_to_count($self, $line_part);
$result .= $line_part;
}
$result .= "\n";
- add_text_count($self, "\n");
+ add_text_to_count($self, "\n");
_add_lines_count($self, 1);
return $result;
@@ -1537,7 +1562,7 @@ sub ensure_end_of_line($$)
}
$text .= "\n";
$self->{'text_element_context'}->[-1]->{'counter'} = 0;
- add_text_count($self, "\n");
+ add_text_to_count($self, "\n");
_add_lines_count($self, 1);
return $text;
}
@@ -1556,7 +1581,7 @@ sub image_formatted_text($$$$)
{'contents' => $element->{'args'}->[3]->{'contents'}},
$self->{'convert_text_options'}) .']';
} else {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"could not find \@image file `%s.txt' nor alternate text"),
$basefile), $element->{'source_info'});
$result = '['.$basefile.']';
@@ -1634,7 +1659,7 @@ sub _convert($$)
# relevant to keep form feeds in other ignorable spaces.
$result = _get_form_feeds($element->{'text'});
}
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
return $result;
}
@@ -1650,7 +1675,7 @@ sub _convert($$)
$result = "";
if ($element->{'text'} =~ /\f/) {
$result .= _get_form_feeds($element->{'text'});
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
}
$result .= _count_added($self, $formatter->{'container'},
add_text($formatter->{'container'}, "\n"));
@@ -1675,7 +1700,7 @@ sub _convert($$)
return $result;
# the following is only possible if paragraphindent is set to asis
} elsif ($type and $type eq 'spaces_before_paragraph') {
- add_text_count($self, $element->{'text'});
+ add_text_to_count($self, $element->{'text'});
return $element->{'text'};
# ignore text outside of any format, but warn if ignored text not empty
} elsif ($element->{'text'} =~ /\S/) {
@@ -1930,7 +1955,7 @@ sub _convert($$)
and $element->{'args'}->[0]->{'contents'}->[0]->{'text'} =~
/^Note\s/i
and $self->{'converted_format'}
and $self->{'converted_format'} eq 'info') {
- $self->line_warn($self, __(
+ $self->converter_line_warn($self, __(
"\@strong{Note...} produces a spurious cross-reference in Info; reword to
avoid that"),
$element->{'source_info'});
}
@@ -1983,7 +2008,7 @@ sub _convert($$)
add_next($formatter->{'container'},'');
my ($image, $lines_count) = $self->format_image($element);
_add_lines_count($self, $lines_count);
- add_text_count($self, $image);
+ add_text_to_count($self, $image);
if ($image ne '' and $formatter->{'type'} ne 'paragraph') {
$self->{'empty_lines_count'} = 0;
}
@@ -2182,7 +2207,7 @@ sub _convert($$)
my $quoting_required = 0;
if ($name_text_checked =~ /:/m) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"\@%s cross-reference name should not contain `:'"),
$command), $element->{'source_info'});
}
@@ -2205,20 +2230,17 @@ sub _convert($$)
$result .= _convert($self, {'contents' => $file});
}
- # node name
- $self->{'formatters'}->[-1]->{'suppress_styles'} = 1;
- my $maybe_file
- = get_pending($self->{'formatters'}->[-1]->{'container'});
- my $node_text = _convert($self, {'type' => '_code',
- 'contents' => $node_content});
- delete $self->{'formatters'}->[-1]->{'suppress_styles'};
-
- my $node_text_checked = $node_text
- .get_pending($self->{'formatters'}->[-1]->{'container'});
- $maybe_file =~ s/^\s*//;
- $maybe_file = quotemeta $maybe_file;
- $node_text_checked =~ s/^\s*$maybe_file//;
- my $quoting_required = 0;
+ # format ref node argument outside of the document context to determine
+ # if it should be quoted
+ $self->{'silent'} = 0 if (!defined($self->{'silent'}));
+ $self->{'silent'}++;
+ push @{$self->{'count_context'}}, {'lines' => 0, 'bytes' => 0};
+ my $node_line_name = $self->convert_line({'type' => '_code',
+ 'contents' => $node_content},
+ {'suppress_styles' => 1,
+ 'no_added_eol' => 1});
+ pop @{$self->{'count_context'}};
+ $self->{'silent'}--;
my $check_chars;
if ($name) {
@@ -2227,9 +2249,10 @@ sub _convert($$)
$check_chars = quotemeta ":";
}
- if ($node_text_checked =~ /([$check_chars])/m){
+ my $quoting_required = 0;
+ if ($node_line_name =~ /([$check_chars])/m) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"\@%s node name should not contain `%s'"), $command, $1),
$element->{'source_info'});
}
@@ -2237,9 +2260,22 @@ sub _convert($$)
$quoting_required = 1;
}
}
+
my $pre_quote = $quoting_required ? "\x{7f}" : '';
my $post_quote = $pre_quote;
+ # node name
+ my $node_text = '';
+ $node_text .= _count_added($self,
+ $self->{'formatters'}[-1]{'container'},
+ add_next($self->{'formatters'}->[-1]->{'container'}, $pre_quote))
+ if $pre_quote;
+
+ $self->{'formatters'}->[-1]->{'suppress_styles'} = 1;
+ $node_text .= _convert($self, {'type' => '_code',
+ 'contents' => $node_content});
+ delete $self->{'formatters'}->[-1]->{'suppress_styles'};
+
$node_text .= _count_added($self,
$self->{'formatters'}[-1]{'container'},
add_next($self->{'formatters'}->[-1]->{'container'}, $post_quote))
@@ -2251,42 +2287,15 @@ sub _convert($$)
add_next($self->{'formatters'}->[-1]->{'container'}, '::'));
}
- my $following = '';
- my $maybe_leading
- = get_pending($self->{'formatters'}->[-1]->{'container'});
-
- if ($pre_quote) {
- # Try to output enough that the node name is output so we can
- # insert $pre_quote before it.
- # We could use add_pending_word, but this could lead to
- # the line being broken too late.
- my $next = $self->{'current_contents'}->[-1]->[0];
- if ($next) {
- $following = _convert($self, $next);
- $node_text .= $following;
- shift @{$self->{'current_contents'}->[-1]};
- }
-
- $node_text =~ s/(^(\s*$maybe_file\s*))/$1$pre_quote/;
- _count_added($self,$self->{'formatters'}[-1]{'container'},
- $pre_quote);
- }
$result .= $node_text;
- # Check if punctuation follows the ref command. If we converted
- # past the ref command, check if the excess starts with one of the
- # characters. Do this by stripping off the leading text that
- # contains the output from the ref command.
+ # Check if punctuation follows the ref command.
#
# FIXME: is @xref really special here? Original comment:
# "If command is @xref, the punctuation must always follow the
# command, for other commands it may be in the argument..."
- $following .= get_pending($self->{'formatters'}->[-1]->{'container'});
- $maybe_leading = quotemeta $maybe_leading;
- $following =~ s/^$maybe_leading//;
-
- if ($name and $following !~ /^[\.,]/) {
+ if ($name) {
my $next = $self->{'current_contents'}->[-1]->[0];
if (!($next and $next->{'text'} and $next->{'text'} =~ /^[\.,]/)) {
if ($command eq 'xref') {
@@ -2294,11 +2303,11 @@ sub _convert($$)
my $text = $next->{'text'};
$text =~ s/^\s*//;
my $char = substr($text, 0, 1);
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"`.' or `,' must follow \@xref, not %s"),
$char), $element->{'source_info'});
} else {
- $self->line_warn($self,
+ $self->converter_line_warn($self,
__("`.' or `,' must follow \@xref"),
$element->{'source_info'});
}
@@ -2396,7 +2405,7 @@ sub _convert($$)
($self->{'format_context'}->[-1]->{'indent_level'}) *
$indent_length);
$result =~ s/\n$//; # final newline has its own tree element
$self->{'empty_lines_count'} = 0 unless ($result eq '');
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
_add_lines_count($self, 1);
return $result;
@@ -2585,7 +2594,7 @@ sub _convert($$)
* $indent_length);
$result .= _add_newline_if_needed($self);
$self->{'empty_lines_count'} = 0 unless ($heading_underlined eq '');
- add_text_count($self, $heading_underlined);
+ add_text_to_count($self, $heading_underlined);
$result .= $heading_underlined;
if ($heading_underlined ne '') {
_add_lines_count($self, 2);
@@ -2789,7 +2798,7 @@ sub _convert($$)
pop @{$self->{'count_context'}};
}
$self->{'format_context'}->[-1]->{'paragraph_count'}++;
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
_add_lines_count($self, $lines_count);
return $result;
} elsif ($command eq 'sp') {
@@ -2815,7 +2824,7 @@ sub _convert($$)
=
$self->format_contents($self->{'structuring'}->{'sectioning_root'},
'contents');
_add_lines_count($self, $lines_count);
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
}
return $result;
} elsif ($command eq 'shortcontents'
@@ -2827,7 +2836,7 @@ sub _convert($$)
=
$self->format_contents($self->{'structuring'}->{'sectioning_root'},
'shortcontents');
_add_lines_count($self, $lines_count);
- add_text_count($self, $result);
+ add_text_to_count($self, $result);
}
return $result;
# all the @-commands that have an information for the formatting, like
@@ -3135,7 +3144,7 @@ sub _convert($$)
if ($entry_name_seen) {
if ($node_text =~ /([,\t]|\.\s)/) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, sprintf(__(
+ $self->converter_line_warn($self, sprintf(__(
"menu entry node name should not contain `%s'"), $1),
$element->{'source_info'});
}
@@ -3146,7 +3155,7 @@ sub _convert($$)
} else {
if ($node_text =~ /:/) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, __(
+ $self->converter_line_warn($self, __(
"menu entry node name should not contain `:'"),
$element->{'source_info'});
}
@@ -3168,7 +3177,7 @@ sub _convert($$)
$pre_quote = $post_quote = '';
if ($entry_name =~ /:/) {
if ($self->{'info_special_chars_warning'}) {
- $self->line_warn($self, __(
+ $self->converter_line_warn($self, __(
"menu entry name should not contain `:'"),
$element->{'source_info'});
}
diff --git
a/tp/t/results/info_tests/quote_node_names_info/res_info/nodequote.info
b/tp/t/results/info_tests/quote_node_names_info/res_info/nodequote.info
index 69d4608336..5cd2dea860 100644
--- a/tp/t/results/info_tests/quote_node_names_info/res_info/nodequote.info
+++ b/tp/t/results/info_tests/quote_node_names_info/res_info/nodequote.info
@@ -9,7 +9,7 @@ node.
*Note the::caption and a word: blah:blah. *Note the::caption:
blah:blah.
- *Note the::caption and a word: blumpty.fump .*Note the::caption:
+ *Note the::caption and a word: blumpty.fump. *Note the::caption:
blumpty.fump.mrmrmrmmrmrmr
*Note blah:blah::.
diff --git a/tp/t/results/info_tests/ref_tests.pl
b/tp/t/results/info_tests/ref_tests.pl
index 1fb3c5cbbb..2415b50915 100644
--- a/tp/t/results/info_tests/ref_tests.pl
+++ b/tp/t/results/info_tests/ref_tests.pl
@@ -672,7 +672,7 @@ comma:: after ref. ‘*note (m)in ref followed by end
command::’.
*note name: (m)in ref followed by comma, *note name: (m)in ref not
followed by comma. after ref. ‘*note name: (m)in ref followed by end
-command.’. *note name: (m)in ref ending with a dot. after ref. .
+command.’. *note name: (m)in ref ending with a dot.. after ref.
diff --git a/tp/t/results/info_tests/xref_test.pl
b/tp/t/results/info_tests/xref_test.pl
index 79345769da..64b7be13e0 100644
--- a/tp/t/results/info_tests/xref_test.pl
+++ b/tp/t/results/info_tests/xref_test.pl
@@ -449,8 +449,8 @@ $result_converted{'info'}->{'xref_test'} = 'This is ,
produced from .
File: , Node: Top, Up: (dir)
*Note (m)in xref::. *Note (m)bad xref:: after xref. ‘*Note (m)bad
-nested xref::’. *Note name: (m)in ref ending with a dot. ! after xref
-and dot inside. .*Note (m)in ref followed by symbol::# g.
+nested xref::’. *Note name: (m)in ref ending with a dot.. ! after xref
+and dot inside. *Note (m)in ref followed by symbol::# g.
Tag Table:
@@ -475,12 +475,12 @@ $result_converted_errors{'info'}->{'xref_test'} = [
'type' => 'warning'
},
{
- 'error_line' => 'warning: `.\' or `,\' must follow @xref
+ 'error_line' => 'warning: `.\' or `,\' must follow @xref, not !
',
'file_name' => '',
'line_nr' => 6,
'macro' => '',
- 'text' => '`.\' or `,\' must follow @xref',
+ 'text' => '`.\' or `,\' must follow @xref, not !',
'type' => 'warning'
}
];
diff --git
a/tp/t/results/plaintext_tests/quote_node_names/res_plaintext/quote_node_names.txt
b/tp/t/results/plaintext_tests/quote_node_names/res_plaintext/quote_node_names.txt
index 6ba889cb94..181b634d42 100644
---
a/tp/t/results/plaintext_tests/quote_node_names/res_plaintext/quote_node_names.txt
+++
b/tp/t/results/plaintext_tests/quote_node_names/res_plaintext/quote_node_names.txt
@@ -4,7 +4,7 @@ node.
*Note the::caption and a word: blah:blah. *Note the::caption:
blah:blah.
- *Note the::caption and a word: blumpty.fump .*Note the::caption:
+ *Note the::caption and a word: blumpty.fump. *Note the::caption:
blumpty.fump.mrmrmrmmrmrmr
*Note blah:blah::.
diff --git a/tp/t/results/plaintext_tests/xref_quote_long_item.pl
b/tp/t/results/plaintext_tests/xref_quote_long_item.pl
index f84da04c5a..38b957645c 100644
--- a/tp/t/results/plaintext_tests/xref_quote_long_item.pl
+++ b/tp/t/results/plaintext_tests/xref_quote_long_item.pl
@@ -348,21 +348,8 @@ $result_converted{'plaintext'}->{'xref_quote_long_item'} =
'‘@verbatiminclude
*Note Texinfo::Convert::Utils::expand_verbatiminclude:
(tp_api)Texinfo::Convert::Utils $tree =
expand_verbatiminclude($registrar, $configuration_information,
- $verbatiminclude). .
+ $verbatiminclude).
';
-$result_converted_errors{'plaintext'}->{'xref_quote_long_item'} = [
- {
- 'error_line' => 'warning: `.\' or `,\' must follow @xref
-',
- 'file_name' => '',
- 'line_nr' => 4,
- 'macro' => '',
- 'text' => '`.\' or `,\' must follow @xref',
- 'type' => 'warning'
- }
-];
-
-
1;
diff --git a/tp/tests/layout/res_parser/formatting_info/formatting.info
b/tp/tests/layout/res_parser/formatting_info/formatting.info
index 5a35534032..8d8c787308 100644
--- a/tp/tests/layout/res_parser/formatting_info/formatting.info
+++ b/tp/tests/layout/res_parser/formatting_info/formatting.info
@@ -426,7 +426,7 @@ s--ect,ion::
'@ref{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{} in
title, a comma@comma{} in file, a @comma{} in manual name }' *note a ,
-in cross ref: (a comma, in file)s--ect,ion .
+in cross ref: (a comma, in file)s--ect,ion.
'@ref{chapter,cross ref name}' *note cross ref name: chapter.
'@ref{chapter,,title}' *note title: chapter. '@ref{chapter,,,file name}'
@@ -473,7 +473,7 @@ name}' *note cross ref name: node. '@inforef{node,,file
name}' *note
arg}' *note cross ref name: (file name, spurious arg)chapter.
'@inforef{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{}
-in file}' *note a , in cross ref: (a comma, in file)s--ect,ion .
+in file}' *note a , in cross ref: (a comma, in file)s--ect,ion.
'*note chapter::'.
@@ -1136,7 +1136,7 @@ s--ect,ion::
'@ref{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{} in
title, a comma@comma{} in file, a @comma{} in manual name }' *note a ,
-in cross ref: (a comma, in file)s--ect,ion .
+in cross ref: (a comma, in file)s--ect,ion.
'@ref{chapter,cross ref name}' *note cross ref name: chapter.
'@ref{chapter,,title}' *note title: chapter. '@ref{chapter,,,file name}'
@@ -1183,7 +1183,7 @@ name}' *note cross ref name: node. '@inforef{node,,file
name}' *note
arg}' *note cross ref name: (file name, spurious arg)chapter.
'@inforef{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{}
-in file}' *note a , in cross ref: (a comma, in file)s--ect,ion .
+in file}' *note a , in cross ref: (a comma, in file)s--ect,ion.
'*note chapter::'.
@@ -1803,7 +1803,7 @@ s--ect,ion::
'@ref{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{} in
title, a comma@comma{} in file, a @comma{} in manual name }' *note a ,
-in cross ref: (a comma, in file)s--ect,ion .
+in cross ref: (a comma, in file)s--ect,ion.
'@ref{chapter,cross ref name}' *note cross ref name: chapter.
'@ref{chapter,,title}' *note title: chapter. '@ref{chapter,,,file name}'
@@ -1850,7 +1850,7 @@ name}' *note cross ref name: node. '@inforef{node,,file
name}' *note
arg}' *note cross ref name: (file name, spurious arg)chapter.
'@inforef{s--ect@comma{}ion, a @comma{} in cross ref, a comma@comma{}
-in file}' *note a , in cross ref: (a comma, in file)s--ect,ion .
+in file}' *note a , in cross ref: (a comma, in file)s--ect,ion.
'*note chapter::'.
@@ -2610,8 +2610,8 @@ cross ref name: (file name). '@inforef{}' *note ::
@ref{s--ect@comma{}ion, a @comma{} in cross
ref, a comma@comma{} in title, a comma@comma{} in file, a @comma{} in
manual name }
*note a , in cross
- ref: (a comma, in file)s--ect,ion
- .
+ ref: (a comma, in file)s--ect,ion.
+
@ref{chapter,cross ref name} *note cross ref name: chapter.
@ref{chapter,,title} *note title: chapter.
@ref{chapter,,,file name} *note (file name)chapter::
@@ -2657,8 +2657,8 @@ cross ref name: (file name). '@inforef{}' *note ::
@inforef{s--ect@comma{}ion, a @comma{} in cross
ref, a comma@comma{} in file}
*note a , in cross
- ref: (a comma, in file)s--ect,ion
- .
+ ref: (a comma, in file)s--ect,ion.
+
'*note chapter::'.
*note cross ref with uref uref1 (href://http/myhost.com/index.html):
(info file with uref3 uref3 (href://http/myhost.com/index3.html))ext.
@@ -2895,14 +2895,14 @@ aaa"