texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_gather_spaces_after_cmd_before_arg) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/parser.c (gather_spaces_after_cmd_before_arg, process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): store spaces_after_cmd_before_arg as an element, firstly put in the brace co [...]
Date: Wed, 22 Feb 2023 09:39:57 -0500

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 a3bea06a42 * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi), 
tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm 
(_gather_spaces_after_cmd_before_arg) (_process_remaining_on_line), 
tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi), 
tp/Texinfo/XS/parsetexi/parser.c (gather_spaces_after_cmd_before_arg, 
process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c 
(handle_open_brace): store spaces_after_cmd_before_arg as an element, firstl 
[...]
a3bea06a42 is described below

commit a3bea06a4275f3ceaba5951990723cdf6dcaeffd
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Wed Feb 22 15:39:45 2023 +0100

    * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi),
    tp/Texinfo/Convert/TexinfoMarkup.pm (_convert),
    tp/Texinfo/ParserNonXS.pm (_gather_spaces_after_cmd_before_arg)
    (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/convert.c
    (expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/parser.c
    (gather_spaces_after_cmd_before_arg, process_remaining_on_line),
    tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): store
    spaces_after_cmd_before_arg as an element, firstly put in the brace
    command contents (with an internal type used solely for debugging)
    to gather source marks, then removed from the tree and put in
    the spaces_after_cmd_before_arg info key, with
    gather_spaces_after_cmd_before_arg().
    
    * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): avoid
    autovivification.
---
 ChangeLog                                          | 18 +++++++
 tp/Texinfo/Convert/Texinfo.pm                      |  4 +-
 tp/Texinfo/Convert/TexinfoMarkup.pm                |  4 +-
 tp/Texinfo/ParserNonXS.pm                          | 55 ++++++++++++++++----
 tp/Texinfo/XS/parsetexi/convert.c                  |  2 +-
 tp/Texinfo/XS/parsetexi/element_types.c            |  1 +
 tp/Texinfo/XS/parsetexi/element_types.h            |  1 +
 tp/Texinfo/XS/parsetexi/element_types.txt          |  1 +
 tp/Texinfo/XS/parsetexi/parser.c                   | 43 +++++++++++-----
 tp/Texinfo/XS/parsetexi/parser.h                   |  1 +
 tp/Texinfo/XS/parsetexi/separator.c                |  5 ++
 tp/t/results/converters_tests/inlinefmtspaces.pl   |  4 +-
 .../converters_tests/inlineifsetifclearspaces.pl   | 16 ++++--
 tp/t/results/converters_tests/inlinerawspaces.pl   |  4 +-
 tp/t/results/coverage/accents_errors.pl            | 16 ++++--
 tp/t/results/coverage/at_after_accent_command.pl   |  4 +-
 tp/t/results/coverage/commands.pl                  |  4 +-
 tp/t/results/coverage/invalid_U.pl                 |  4 +-
 .../results/coverage/lettered_accent_and_spaces.pl | 32 +++++++++---
 tp/t/results/coverage/not_i_j_in_dotless.pl        |  4 +-
 .../coverage/spaces_after_braced_command.pl        | 20 ++++++--
 .../spaces_no_brace_after_braced_command.pl        |  4 +-
 .../spaces_unknown_command_after_braced_command.pl |  8 ++-
 tp/t/results/coverage_braces/no_brace.pl           | 12 +++--
 .../coverage_braces/no_brace_space_end_line.pl     | 12 +++--
 tp/t/results/formats_encodings/accent.pl           | 36 +++++++++----
 .../formats_encodings/accent_enable_encoding.pl    | 36 +++++++++----
 tp/t/results/formats_encodings/accentenc.pl        | 36 +++++++++----
 .../formats_encodings/accentenc_enable_encoding.pl | 36 +++++++++----
 .../invalid_nestings/section_on_itemize_line.pl    |  4 +-
 .../invalid_nestings/section_on_xtable_line.pl     |  4 +-
 tp/t/results/itemize/accent_argument.pl            |  4 +-
 tp/t/results/macro/macro_in_accent.pl              | 49 ++++++++++++------
 tp/t/results/macro/macro_in_misc_commands.pl       | 18 +++----
 tp/t/results/value/value_after_accent.pl           | 24 ++++++---
 tp/t/results/value/value_after_brace_command.pl    | 60 +++++++++-------------
 tp/t/results/value/value_in_misc_commands.pl       | 18 +++----
 37 files changed, 423 insertions(+), 181 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 66147ac874..e893a0beea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2023-02-22  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi),
+       tp/Texinfo/Convert/TexinfoMarkup.pm (_convert),
+       tp/Texinfo/ParserNonXS.pm (_gather_spaces_after_cmd_before_arg)
+       (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/convert.c
+       (expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/parser.c
+       (gather_spaces_after_cmd_before_arg, process_remaining_on_line),
+       tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): store
+       spaces_after_cmd_before_arg as an element, firstly put in the brace
+       command contents (with an internal type used solely for debugging)
+       to gather source marks, then removed from the tree and put in
+       the spaces_after_cmd_before_arg info key, with
+       gather_spaces_after_cmd_before_arg().
+
+       * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): avoid
+       autovivification.
+
 2023-02-22  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/ParserNonXS.pm (_next_text, _parse_texi)
diff --git a/tp/Texinfo/Convert/Texinfo.pm b/tp/Texinfo/Convert/Texinfo.pm
index b4c0d0e527..32ab54c9ff 100644
--- a/tp/Texinfo/Convert/Texinfo.pm
+++ b/tp/Texinfo/Convert/Texinfo.pm
@@ -155,8 +155,8 @@ sub _expand_cmd_args_to_texi($) {
   # this is done here otherwise for some constructs, there are
   # no 'args', and so the space is never readded.
   if ($cmd->{'info'}
-      and exists ($cmd->{'info'}->{'spaces_after_cmd_before_arg'})) {
-    $result .= $cmd->{'info'}->{'spaces_after_cmd_before_arg'};
+      and $cmd->{'info'}->{'spaces_after_cmd_before_arg'}) {
+    $result .= $cmd->{'info'}->{'spaces_after_cmd_before_arg'}->{'text'};
   }
   # arg_line set for line_commands with type special and @macro
   if ($cmd->{'info'} and defined($cmd->{'info'}->{'arg_line'})) {
diff --git a/tp/Texinfo/Convert/TexinfoMarkup.pm 
b/tp/Texinfo/Convert/TexinfoMarkup.pm
index 1f699d7c19..65e7fd67ac 100644
--- a/tp/Texinfo/Convert/TexinfoMarkup.pm
+++ b/tp/Texinfo/Convert/TexinfoMarkup.pm
@@ -658,7 +658,7 @@ sub _convert($$;$)
           if ($element->{'info'}
               and $element->{'info'}->{'spaces_after_cmd_before_arg'}) {
             push @$attributes, ['spacesaftercmd',
-                    $element->{'info'}->{'spaces_after_cmd_before_arg'}];
+               $element->{'info'}->{'spaces_after_cmd_before_arg'}->{'text'}];
           }
           if ($element->{'args'}->[0]->{'type'} eq 'following_arg') {
             push @$attributes, ['bracketed', 'off'];
@@ -1077,7 +1077,7 @@ sub _convert($$;$)
       if ($element->{'info'}
           and $element->{'info'}->{'spaces_after_cmd_before_arg'}) {
         $space_after_command_attribute = ['spacesaftercmd',
-                $element->{'info'}->{'spaces_after_cmd_before_arg'}];
+                $element->{'info'}->{'spaces_after_cmd_before_arg'}->{'text'}];
       }
 
       my @format_elements;
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 4bdf6b27d7..9737dd8b7d 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -4691,6 +4691,16 @@ sub _new_value_element($$;$)
   return $value_elt;
 }
 
+sub _gather_spaces_after_cmd_before_arg($$)
+{
+  my $self = shift;
+  my $current = shift;
+  my $spaces_element = _pop_element_from_contents($self, $current);
+  delete $spaces_element->{'type'};
+  $current->{'info'} = {} if (!$current->{'info'});
+  $current->{'info'}->{'spaces_after_cmd_before_arg'} = $spaces_element;
+}
+
 sub _handle_macro($$$$$)
 {
   my $self = shift;
@@ -5146,6 +5156,9 @@ sub _process_remaining_on_line($$$$)
       and defined($self->{'brace_commands'}->{$current->{'cmdname'}})) {
     $self->_line_error(sprintf(__("\@%s expected braces"),
                        $current->{'cmdname'}), $source_info);
+    if ($current->{'contents'}) {
+      _gather_spaces_after_cmd_before_arg($self, $current);
+    }
     $current = $current->{'parent'};
   }
 
@@ -5178,7 +5191,8 @@ sub _process_remaining_on_line($$$$)
   if ($current->{'cmdname'}
         and defined($self->{'brace_commands'}->{$current->{'cmdname'}})
         and !$open_brace) {
-    print STDERR "BRACE CMD: no brace after \@$current->{'cmdname'}: $line"
+    print STDERR "BRACE CMD: no brace after \@$current->{'cmdname'}: '$line'"
+     . ($line =~ /\n/ ? '' : "\n")
       if $self->{'DEBUG'};
     # Note that non ascii spaces do not count as spaces
     if ($line =~ /^(\s+)/
@@ -5195,6 +5209,10 @@ sub _process_remaining_on_line($$$$)
           # do not consider the end of line to be possibly between
           # the @-command and the argument if at the end of a
           # line or block @-command.
+          if ($current->{'contents'}) {
+            # TODO specific case not tested
+            _gather_spaces_after_cmd_before_arg($self, $current);
+          }
           $current = $current->{'parent'};
           $current = _merge_text($self, $current, $added_space);
           _isolate_last_space($self, $current);
@@ -5204,24 +5222,28 @@ sub _process_remaining_on_line($$$$)
         }
         $additional_newline = 1;
       }
-      $current->{'info'} = {} if (!$current->{'info'});
-      if (!defined($current->{'info'}->{'spaces_after_cmd_before_arg'})) {
+      if (!$current->{'contents'}) {
         $line =~ s/^(\s+)//;
-        $current->{'info'}->{'spaces_after_cmd_before_arg'} = $added_space;
+        my $spaces_after_cmd_before_arg
+           = {'type' => 'internal_spaces_after_cmd_before_arg',
+              'text' => $1, 'parent' => $current};
+        $current->{'contents'} = [$spaces_after_cmd_before_arg];
         print STDERR "BRACE CMD before brace init spaces '$added_space'\n"
           if $self->{'DEBUG'};
       # only ignore spaces and one newline, two newlines lead to
       # an empty line before the brace or argument which is incorrect.
       } elsif ($additional_newline
-               and $current->{'info'}->{'spaces_after_cmd_before_arg'} =~ 
/\n/) {
+               and $current->{'contents'}
+               and $current->{'contents'}->[0]->{'text'} =~ /\n/) {
         print STDERR "BRACE CMD before brace second newline stops spaces\n"
           if $self->{'DEBUG'};
         $self->_line_error(sprintf(__("\@%s expected braces"),
                            $current->{'cmdname'}), $source_info);
+        _gather_spaces_after_cmd_before_arg($self, $current);
         $current = $current->{'parent'};
       } else {
         $line =~ s/^(\s+)//;
-        $current->{'info'}->{'spaces_after_cmd_before_arg'} .= $added_space;
+        $current->{'contents'}->[0]->{'text'} .= $added_space;
         print STDERR "BRACE CMD before brace add spaces '$added_space'\n"
           if $self->{'DEBUG'};
       }
@@ -5233,6 +5255,9 @@ sub _process_remaining_on_line($$$$)
              and $line =~ s/^([^@])//) {
       print STDERR "ACCENT following_arg \@$current->{'cmdname'}\n"
         if ($self->{'DEBUG'});
+      if ($current->{'contents'}) {
+        _gather_spaces_after_cmd_before_arg($self, $current);
+      }
       my $following_arg = {'type' => 'following_arg',
                            'parent' => $current};
       $following_arg->{'contents'} = [{ 'text' => $1,
@@ -5252,6 +5277,7 @@ sub _process_remaining_on_line($$$$)
       # else than empty elements.
       while ($current->{'contents'} and scalar(@{$current->{'contents'}})) {
         # TODO not clear that it leads to a correct location of source marks
+        print STDERR "HHHHHHH 
".Texinfo::Common::debug_print_element($current->{'contents'}->[0], 1)."\n";
         my $removed_element = _pop_element_from_contents($self, $current);
         _transfer_source_marks($removed_element, $following_arg);
       }
@@ -5259,6 +5285,9 @@ sub _process_remaining_on_line($$$$)
     } else {
       $self->_line_error(sprintf(__("\@%s expected braces"),
                          $current->{'cmdname'}), $source_info);
+      if ($current->{'contents'}) {
+        _gather_spaces_after_cmd_before_arg($self, $current);
+      }
       $current = $current->{'parent'};
     }
   # maybe a menu entry beginning: a * at the beginning of a menu line
@@ -6051,6 +6080,11 @@ sub _process_remaining_on_line($$$$)
            and defined($self->{'brace_commands'}->{$current->{'cmdname'}})) {
         my $command = $current->{'cmdname'};
 
+        # if there is already content it is for spaces_after_cmd_before_arg
+        if ($current->{'contents'}) {
+          _gather_spaces_after_cmd_before_arg($self, $current);
+        }
+
         if (defined($commands_args_number{$command})
             and $commands_args_number{$command} > 1) {
           $current->{'remaining_args'}
@@ -6226,7 +6260,10 @@ sub _process_remaining_on_line($$$$)
                             $current->{'parent'}->{'cmdname'}, $source_info)) {
             _register_label($self->{'targets'}, $current->{'parent'},
                             $parsed_anchor);
-             if (@{$self->{'nesting_context'}->{'regions_stack'}} > 0) {
+             if ($self->{'nesting_context'}
+                 and $self->{'nesting_context'}->{'regions_stack'}
+           and scalar(@{$self->{'nesting_context'}->{'regions_stack'}}) > 0) {
+                $current->{'extra'} = {} if (!$current->{'extra'});
                 $current->{'extra'}->{'region'}
                   = $self->{'nesting_context'}->{'regions_stack'}->[-1];
              }
@@ -8180,8 +8217,8 @@ For accent commands with spaces following the @-command, 
like:
  @ringaccent A
  @^ u
 
-there is a I<spaces_after_cmd_before_arg> key which holds the
-spaces appearing after the command.
+there is a I<spaces_after_cmd_before_arg> key linking to an element
+containing the spaces appearing after the command in I<text>.
 
 Space between a brace @-command name and its opening brace also
 ends up in I<spaces_after_cmd_before_arg>.  It is not recommended
diff --git a/tp/Texinfo/XS/parsetexi/convert.c 
b/tp/Texinfo/XS/parsetexi/convert.c
index 4a771bc355..736d34331a 100644
--- a/tp/Texinfo/XS/parsetexi/convert.c
+++ b/tp/Texinfo/XS/parsetexi/convert.c
@@ -67,7 +67,7 @@ expand_cmd_args_to_texi (ELEMENT *e, TEXT *result)
       ADD("@");  ADD(command_name(cmd));
       k = lookup_info (e, "spaces_after_cmd_before_arg");
       if (k)
-        ADD((char *)k->value);
+        ADD((char *)k->value->text.text);
     }
 
   // TODO extra spaces
diff --git a/tp/Texinfo/XS/parsetexi/element_types.c 
b/tp/Texinfo/XS/parsetexi/element_types.c
index 2356e33d09..29a882d93d 100644
--- a/tp/Texinfo/XS/parsetexi/element_types.c
+++ b/tp/Texinfo/XS/parsetexi/element_types.c
@@ -43,6 +43,7 @@ char *element_type_names[] = {
 "internal_spaces_after_command",
 "internal_spaces_before_argument",
 "internal_spaces_before_brace_in_index",
+"internal_spaces_after_cmd_before_arg",
 "macro_name",
 "macro_arg",
 "before_item",
diff --git a/tp/Texinfo/XS/parsetexi/element_types.h 
b/tp/Texinfo/XS/parsetexi/element_types.h
index f02209f1ac..ffff0ed2ff 100644
--- a/tp/Texinfo/XS/parsetexi/element_types.h
+++ b/tp/Texinfo/XS/parsetexi/element_types.h
@@ -46,6 +46,7 @@ ET_internal_menu_star,
 ET_internal_spaces_after_command,
 ET_internal_spaces_before_argument,
 ET_internal_spaces_before_brace_in_index,
+ET_internal_spaces_after_cmd_before_arg,
 ET_macro_name,
 ET_macro_arg,
 ET_before_item,
diff --git a/tp/Texinfo/XS/parsetexi/element_types.txt 
b/tp/Texinfo/XS/parsetexi/element_types.txt
index 8fa8e179d9..246cf07423 100644
--- a/tp/Texinfo/XS/parsetexi/element_types.txt
+++ b/tp/Texinfo/XS/parsetexi/element_types.txt
@@ -65,6 +65,7 @@ internal_menu_star
 internal_spaces_after_command
 internal_spaces_before_argument
 internal_spaces_before_brace_in_index
+internal_spaces_after_cmd_before_arg
 
 macro_name
 macro_arg
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index 46a6bdf65c..ec563c7c56 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -1012,6 +1012,15 @@ register_command_as_argument (ELEMENT *cmd_as_arg)
   }
 }
 
+void
+gather_spaces_after_cmd_before_arg(ELEMENT *current)
+{
+  ELEMENT *spaces_element = pop_element_from_contents (current);
+  spaces_element->type = ET_NONE;
+  add_info_element_oot (current, "spaces_after_cmd_before_arg",
+                        spaces_element);
+}
+
 ELEMENT *
 new_value_element (enum command_id cmd, char *flag)
 {
@@ -1787,6 +1796,8 @@ process_remaining_on_line (ELEMENT **current_inout, char 
**line_inout)
     {
       line_error ("@%s expected braces",
                   command_name(current->cmd));
+      if (current->contents.number > 0)
+        gather_spaces_after_cmd_before_arg (current);
       current = current->parent;
     }
 
@@ -1840,6 +1851,8 @@ process_remaining_on_line (ELEMENT **current_inout, char 
**line_inout)
                        the @-command and the argument if at the end of a
                        line or block @-command. */
                        char saved; /* TODO: Have a length argument to 
merge_text? */
+                       if (current->contents.number > 0)
+                         gather_spaces_after_cmd_before_arg (current);
                        current = current->parent;
                        saved = line[whitespaces_len];
                        line[whitespaces_len] = '\0';
@@ -1856,34 +1869,32 @@ process_remaining_on_line (ELEMENT **current_inout, 
char **line_inout)
                  }
              }
 
-           k = lookup_info (current, "spaces_after_cmd_before_arg");
-           if (!k)
+           if (current->contents.number == 0)
              {
-               p = line + whitespaces_len;
-               xasprintf (&s, "%.*s", (int) (p - line), line);
-               add_info_string (current, "spaces_after_cmd_before_arg", s);
-               line = p;
+               ELEMENT *spaces_after_cmd_before_arg
+                 = new_element (ET_internal_spaces_after_cmd_before_arg);
+               text_append_n (&(spaces_after_cmd_before_arg->text),
+                              line, whitespaces_len);
+               add_to_element_contents (current, spaces_after_cmd_before_arg);
+               line += whitespaces_len;
              }
            else
              {
             /* only ignore spaces and one newline, two newlines lead to
                an empty line before the brace or argument which is incorrect. 
*/
-               char *previous_value = (char *) k->value;
+               char *previous_value = current->contents.list[0]->text.text;
                if (additional_newline && strchr ("\n", *previous_value))
                  {
                    line_error ("@%s expected braces",
                                command_name(current->cmd));
+                   gather_spaces_after_cmd_before_arg (current);
                    current = current->parent;
                  }
                else
                  {
-                   p = line + whitespaces_len;
-                   xasprintf (&s, "%s%.*s",
-                              previous_value,
-                             (int) (p - line), line);
-                   free (k->value);
-                   k->value = (ELEMENT *) s;
-                   line = p;
+                   text_append_n (&(current->contents.list[0]->text),
+                                  line, whitespaces_len);
+                   line += whitespaces_len;
                  }
              }
         }
@@ -1894,6 +1905,8 @@ process_remaining_on_line (ELEMENT **current_inout, char 
**line_inout)
         {
           ELEMENT *e, *e2;
           debug ("ACCENT following_arg");
+          if (current->contents.number > 0)
+            gather_spaces_after_cmd_before_arg (current);
           e = new_element (ET_following_arg);
           add_to_element_args (current, e);
           e2 = new_element (ET_NONE);
@@ -1931,6 +1944,8 @@ process_remaining_on_line (ELEMENT **current_inout, char 
**line_inout)
         {
           line_error ("@%s expected braces",
                       command_name(current->cmd));
+          if (current->contents.number > 0)
+            gather_spaces_after_cmd_before_arg (current);
           current = current->parent;
         }
     }
diff --git a/tp/Texinfo/XS/parsetexi/parser.h b/tp/Texinfo/XS/parsetexi/parser.h
index dbda28372d..fc524e1936 100644
--- a/tp/Texinfo/XS/parsetexi/parser.h
+++ b/tp/Texinfo/XS/parsetexi/parser.h
@@ -190,6 +190,7 @@ void set_documentlanguage_override (char *value);
 void set_accept_internalvalue (void);
 char *element_type_name (ELEMENT *e);
 int check_space_element (ELEMENT *e);
+void gather_spaces_after_cmd_before_arg (ELEMENT *current);
 
 /* Return values */
 #define GET_A_NEW_LINE 0
diff --git a/tp/Texinfo/XS/parsetexi/separator.c 
b/tp/Texinfo/XS/parsetexi/separator.c
index 5e84539887..e91ec9d62b 100644
--- a/tp/Texinfo/XS/parsetexi/separator.c
+++ b/tp/Texinfo/XS/parsetexi/separator.c
@@ -37,6 +37,11 @@ handle_open_brace (ELEMENT *current, char **line_inout)
       ELEMENT *arg;
 
       command = current->cmd;
+
+      /* if there is already content it is for spaces_after_cmd_before_arg */
+      if (current->contents.number > 0)
+        gather_spaces_after_cmd_before_arg (current);
+
       counter_push (&count_remaining_args, current,
                     command_data(current->cmd).args_number);
       counter_dec (&count_remaining_args);
diff --git a/tp/t/results/converters_tests/inlinefmtspaces.pl 
b/tp/t/results/converters_tests/inlinefmtspaces.pl
index 3f1aa43821..ded8d1bd91 100644
--- a/tp/t/results/converters_tests/inlinefmtspaces.pl
+++ b/tp/t/results/converters_tests/inlinefmtspaces.pl
@@ -68,7 +68,9 @@ $result_trees{'inlinefmtspaces'} = {
                 'format' => 'plaintext'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/converters_tests/inlineifsetifclearspaces.pl 
b/tp/t/results/converters_tests/inlineifsetifclearspaces.pl
index e0c27cef07..b67ea4d530 100644
--- a/tp/t/results/converters_tests/inlineifsetifclearspaces.pl
+++ b/tp/t/results/converters_tests/inlineifsetifclearspaces.pl
@@ -49,8 +49,10 @@ $result_trees{'inlineifsetifclearspaces'} = {
                 'format' => 'aaa'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -105,8 +107,10 @@ $result_trees{'inlineifsetifclearspaces'} = {
                 'format' => 'aaa'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -189,7 +193,9 @@ $result_trees{'inlineifsetifclearspaces'} = {
                 'format' => 'aaa'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -249,7 +255,9 @@ $result_trees{'inlineifsetifclearspaces'} = {
                 'format' => 'aaa'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/converters_tests/inlinerawspaces.pl 
b/tp/t/results/converters_tests/inlinerawspaces.pl
index dd70ac62f7..fbb96d53b7 100644
--- a/tp/t/results/converters_tests/inlinerawspaces.pl
+++ b/tp/t/results/converters_tests/inlinerawspaces.pl
@@ -136,7 +136,9 @@ $result_trees{'inlinerawspaces'} = {
                 'format' => 'html'
               },
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/accents_errors.pl 
b/tp/t/results/coverage/accents_errors.pl
index 1deebdc0bf..9e98d9defb 100644
--- a/tp/t/results/coverage/accents_errors.pl
+++ b/tp/t/results/coverage/accents_errors.pl
@@ -27,8 +27,10 @@ $result_trees{'accents_errors'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -52,8 +54,10 @@ $result_trees{'accents_errors'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '  
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '  
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -111,7 +115,9 @@ $result_trees{'accents_errors'} = {
               ],
               'cmdname' => '~',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -139,8 +145,10 @@ $result_trees{'accents_errors'} = {
               ],
               'cmdname' => '~',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/at_after_accent_command.pl 
b/tp/t/results/coverage/at_after_accent_command.pl
index df1bb69429..9f51f951ae 100644
--- a/tp/t/results/coverage/at_after_accent_command.pl
+++ b/tp/t/results/coverage/at_after_accent_command.pl
@@ -14,7 +14,9 @@ $result_trees{'at_after_accent_command'} = {
             {
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/commands.pl 
b/tp/t/results/coverage/commands.pl
index 6c31566085..e3610f5652 100644
--- a/tp/t/results/coverage/commands.pl
+++ b/tp/t/results/coverage/commands.pl
@@ -128,7 +128,9 @@ $result_trees{'commands'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/invalid_U.pl 
b/tp/t/results/coverage/invalid_U.pl
index 0920649608..8f86748c6b 100644
--- a/tp/t/results/coverage/invalid_U.pl
+++ b/tp/t/results/coverage/invalid_U.pl
@@ -14,7 +14,9 @@ $result_trees{'invalid_U'} = {
             {
               'cmdname' => 'U',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/lettered_accent_and_spaces.pl 
b/tp/t/results/coverage/lettered_accent_and_spaces.pl
index f727d9c003..0f6cf07c88 100644
--- a/tp/t/results/coverage/lettered_accent_and_spaces.pl
+++ b/tp/t/results/coverage/lettered_accent_and_spaces.pl
@@ -24,7 +24,9 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '    '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '    '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -59,8 +61,10 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -95,8 +99,10 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -131,8 +137,10 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
   '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -167,7 +175,9 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => '^',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -202,8 +212,10 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => '^',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -238,8 +250,10 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => '^',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
  '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -275,7 +289,9 @@ $result_trees{'lettered_accent_and_spaces'} = {
               ],
               'cmdname' => '^',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/not_i_j_in_dotless.pl 
b/tp/t/results/coverage/not_i_j_in_dotless.pl
index 36020e0766..487dce836d 100644
--- a/tp/t/results/coverage/not_i_j_in_dotless.pl
+++ b/tp/t/results/coverage/not_i_j_in_dotless.pl
@@ -24,7 +24,9 @@ $result_trees{'not_i_j_in_dotless'} = {
               ],
               'cmdname' => 'dotless',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/spaces_after_braced_command.pl 
b/tp/t/results/coverage/spaces_after_braced_command.pl
index 149a8ca774..aa30dd4435 100644
--- a/tp/t/results/coverage/spaces_after_braced_command.pl
+++ b/tp/t/results/coverage/spaces_after_braced_command.pl
@@ -24,7 +24,9 @@ $result_trees{'spaces_after_braced_command'} = {
               ],
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -59,8 +61,10 @@ $result_trees{'spaces_after_braced_command'} = {
               ],
               'cmdname' => 'samp',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -90,8 +94,10 @@ $result_trees{'spaces_after_braced_command'} = {
               ],
               'cmdname' => 'AA',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
  '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -143,8 +149,10 @@ $result_trees{'spaces_after_braced_command'} = {
               ],
               'cmdname' => 'email',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -169,8 +177,10 @@ $result_trees{'spaces_after_braced_command'} = {
             {
               'cmdname' => 'TeX',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage/spaces_no_brace_after_braced_command.pl 
b/tp/t/results/coverage/spaces_no_brace_after_braced_command.pl
index 5098a36222..ca6944898f 100644
--- a/tp/t/results/coverage/spaces_no_brace_after_braced_command.pl
+++ b/tp/t/results/coverage/spaces_no_brace_after_braced_command.pl
@@ -14,7 +14,9 @@ $result_trees{'spaces_no_brace_after_braced_command'} = {
             {
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git 
a/tp/t/results/coverage/spaces_unknown_command_after_braced_command.pl 
b/tp/t/results/coverage/spaces_unknown_command_after_braced_command.pl
index f9b63b794a..1eed4c9ca6 100644
--- a/tp/t/results/coverage/spaces_unknown_command_after_braced_command.pl
+++ b/tp/t/results/coverage/spaces_unknown_command_after_braced_command.pl
@@ -14,7 +14,9 @@ $result_trees{'spaces_unknown_command_after_braced_command'} 
= {
             {
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -39,7 +41,9 @@ $result_trees{'spaces_unknown_command_after_braced_command'} 
= {
             {
               'cmdname' => '~',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage_braces/no_brace.pl 
b/tp/t/results/coverage_braces/no_brace.pl
index 9e463eee79..c93c7c488f 100644
--- a/tp/t/results/coverage_braces/no_brace.pl
+++ b/tp/t/results/coverage_braces/no_brace.pl
@@ -14,7 +14,9 @@ $result_trees{'no_brace'} = {
             {
               'cmdname' => 'TeX',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -28,7 +30,9 @@ $result_trees{'no_brace'} = {
             {
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -42,7 +46,9 @@ $result_trees{'no_brace'} = {
             {
               'cmdname' => 'footnote',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/coverage_braces/no_brace_space_end_line.pl 
b/tp/t/results/coverage_braces/no_brace_space_end_line.pl
index d183a06999..5da6777562 100644
--- a/tp/t/results/coverage_braces/no_brace_space_end_line.pl
+++ b/tp/t/results/coverage_braces/no_brace_space_end_line.pl
@@ -24,7 +24,9 @@ $result_trees{'no_brace_space_end_line'} = {
               ],
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -49,8 +51,10 @@ $result_trees{'no_brace_space_end_line'} = {
             {
               'cmdname' => 'TeX',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -65,8 +69,10 @@ $result_trees{'no_brace_space_end_line'} = {
             {
               'cmdname' => 'code',
               'info' => {
-                'spaces_after_cmd_before_arg' => '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => '
 '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/formats_encodings/accent.pl 
b/tp/t/results/formats_encodings/accent.pl
index 1591c1415f..d3e4af769b 100644
--- a/tp/t/results/formats_encodings/accent.pl
+++ b/tp/t/results/formats_encodings/accent.pl
@@ -759,7 +759,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'H',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -818,7 +820,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'dotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -877,7 +881,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -971,7 +977,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'u',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1030,7 +1038,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'ubaraccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1089,7 +1099,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'udotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1148,7 +1160,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'v',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1207,7 +1221,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1266,7 +1282,9 @@ $result_trees{'accent'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/formats_encodings/accent_enable_encoding.pl 
b/tp/t/results/formats_encodings/accent_enable_encoding.pl
index d287c43b6c..9ab3aa4d2f 100644
--- a/tp/t/results/formats_encodings/accent_enable_encoding.pl
+++ b/tp/t/results/formats_encodings/accent_enable_encoding.pl
@@ -759,7 +759,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'H',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -818,7 +820,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'dotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -877,7 +881,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -971,7 +977,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'u',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1030,7 +1038,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'ubaraccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1089,7 +1099,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'udotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1148,7 +1160,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'v',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1207,7 +1221,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1266,7 +1282,9 @@ $result_trees{'accent_enable_encoding'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/formats_encodings/accentenc.pl 
b/tp/t/results/formats_encodings/accentenc.pl
index 779805d544..027e55b1b5 100644
--- a/tp/t/results/formats_encodings/accentenc.pl
+++ b/tp/t/results/formats_encodings/accentenc.pl
@@ -799,7 +799,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'H',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -858,7 +860,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'dotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -917,7 +921,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1011,7 +1017,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'u',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1070,7 +1078,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'ubaraccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1129,7 +1139,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'udotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1188,7 +1200,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'v',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1247,7 +1261,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1306,7 +1322,9 @@ $result_trees{'accentenc'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/formats_encodings/accentenc_enable_encoding.pl 
b/tp/t/results/formats_encodings/accentenc_enable_encoding.pl
index 7691d57bd2..101456e1d5 100644
--- a/tp/t/results/formats_encodings/accentenc_enable_encoding.pl
+++ b/tp/t/results/formats_encodings/accentenc_enable_encoding.pl
@@ -794,7 +794,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'H',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -853,7 +855,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'dotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -912,7 +916,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'ringaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1006,7 +1012,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'u',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1065,7 +1073,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'ubaraccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1124,7 +1134,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'udotaccent',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1183,7 +1195,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'v',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1242,7 +1256,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
@@ -1301,7 +1317,9 @@ $result_trees{'accentenc_enable_encoding'} = {
               ],
               'cmdname' => 'ogonek',
               'info' => {
-                'spaces_after_cmd_before_arg' => ' '
+                'spaces_after_cmd_before_arg' => {
+                  'text' => ' '
+                }
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/invalid_nestings/section_on_itemize_line.pl 
b/tp/t/results/invalid_nestings/section_on_itemize_line.pl
index c8b4e61aff..dca46342a2 100644
--- a/tp/t/results/invalid_nestings/section_on_itemize_line.pl
+++ b/tp/t/results/invalid_nestings/section_on_itemize_line.pl
@@ -225,7 +225,9 @@ $result_trees{'section_on_itemize_line'} = {
                 {
                   'cmdname' => 'ringaccent',
                   'info' => {
-                    'spaces_after_cmd_before_arg' => ' '
+                    'spaces_after_cmd_before_arg' => {
+                      'text' => ' '
+                    }
                   },
                   'source_info' => {
                     'file_name' => '',
diff --git a/tp/t/results/invalid_nestings/section_on_xtable_line.pl 
b/tp/t/results/invalid_nestings/section_on_xtable_line.pl
index 0050704dba..10b79cc42e 100644
--- a/tp/t/results/invalid_nestings/section_on_xtable_line.pl
+++ b/tp/t/results/invalid_nestings/section_on_xtable_line.pl
@@ -222,7 +222,9 @@ $result_trees{'section_on_xtable_line'} = {
                 {
                   'cmdname' => 'ringaccent',
                   'info' => {
-                    'spaces_after_cmd_before_arg' => ' '
+                    'spaces_after_cmd_before_arg' => {
+                      'text' => ' '
+                    }
                   },
                   'source_info' => {
                     'file_name' => '',
diff --git a/tp/t/results/itemize/accent_argument.pl 
b/tp/t/results/itemize/accent_argument.pl
index e02ea5385e..6e061f0efa 100644
--- a/tp/t/results/itemize/accent_argument.pl
+++ b/tp/t/results/itemize/accent_argument.pl
@@ -244,7 +244,9 @@ $result_trees{'accent_argument'} = {
                   ],
                   'cmdname' => 'ringaccent',
                   'info' => {
-                    'spaces_after_cmd_before_arg' => ' '
+                    'spaces_after_cmd_before_arg' => {
+                      'text' => ' '
+                    }
                   },
                   'source_info' => {
                     'file_name' => '',
diff --git a/tp/t/results/macro/macro_in_accent.pl 
b/tp/t/results/macro/macro_in_accent.pl
index 4fb8da8d8e..edfde18501 100644
--- a/tp/t/results/macro/macro_in_accent.pl
+++ b/tp/t/results/macro/macro_in_accent.pl
@@ -143,6 +143,12 @@ $result_trees{'macro_in_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => 'ringaccent',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 1,
@@ -157,16 +163,13 @@ $result_trees{'macro_in_accent'} = {
                         },
                         'type' => 'macro_call'
                       },
+                      'position' => 1,
                       'sourcemark_type' => 'macro_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => ' '
                 }
-              ],
-              'cmdname' => 'ringaccent',
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -193,6 +196,12 @@ $result_trees{'macro_in_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => 'ringaccent',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 2,
@@ -211,10 +220,9 @@ $result_trees{'macro_in_accent'} = {
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => ''
                 }
-              ],
-              'cmdname' => 'ringaccent',
+              },
               'source_info' => {
                 'file_name' => '',
                 'line_nr' => 10,
@@ -240,6 +248,12 @@ $result_trees{'macro_in_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => '~',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 3,
@@ -258,10 +272,9 @@ $result_trees{'macro_in_accent'} = {
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => ''
                 }
-              ],
-              'cmdname' => '~',
+              },
               'source_info' => {
                 'file_name' => '',
                 'line_nr' => 11,
@@ -343,6 +356,12 @@ $result_trees{'macro_in_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => 'ringaccent',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 5,
@@ -362,6 +381,7 @@ $result_trees{'macro_in_accent'} = {
                     },
                     {
                       'counter' => 5,
+                      'position' => 2,
                       'sourcemark_type' => 'macro_expansion',
                       'status' => 'end'
                     },
@@ -378,16 +398,13 @@ $result_trees{'macro_in_accent'} = {
                         },
                         'type' => 'macro_call'
                       },
+                      'position' => 2,
                       'sourcemark_type' => 'macro_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => '  '
                 }
-              ],
-              'cmdname' => 'ringaccent',
-              'info' => {
-                'spaces_after_cmd_before_arg' => '  '
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/macro/macro_in_misc_commands.pl 
b/tp/t/results/macro/macro_in_misc_commands.pl
index 190cee5cc7..a5b9fc843d 100644
--- a/tp/t/results/macro/macro_in_misc_commands.pl
+++ b/tp/t/results/macro/macro_in_misc_commands.pl
@@ -1722,8 +1722,8 @@ $result_trees{'macro_in_misc_commands'} = {
                 }
               ],
               'cmdname' => 'strong',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 15,
@@ -1733,7 +1733,7 @@ $result_trees{'macro_in_misc_commands'} = {
                   ],
                   'text' => ''
                 }
-              ],
+              },
               'source_info' => {
                 'file_name' => '',
                 'line_nr' => 76,
@@ -1876,8 +1876,12 @@ $result_trees{'macro_in_misc_commands'} = {
                 }
               ],
               'cmdname' => 'strong',
-              'contents' => [
-                {
+              'extra' => {
+                'begin' => '(strong:',
+                'end' => ':)'
+              },
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 18,
@@ -1887,10 +1891,6 @@ $result_trees{'macro_in_misc_commands'} = {
                   ],
                   'text' => ''
                 }
-              ],
-              'extra' => {
-                'begin' => '(strong:',
-                'end' => ':)'
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/value/value_after_accent.pl 
b/tp/t/results/value/value_after_accent.pl
index 2060ce0961..4abce7775b 100644
--- a/tp/t/results/value/value_after_accent.pl
+++ b/tp/t/results/value/value_after_accent.pl
@@ -42,6 +42,12 @@ $result_trees{'value_after_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => 'ringaccent',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 1,
@@ -54,16 +60,13 @@ $result_trees{'value_after_accent'} = {
                         'cmdname' => 'value'
                       },
                       'line' => 'a',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => ' '
                 }
-              ],
-              'cmdname' => 'ringaccent',
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -90,6 +93,12 @@ $result_trees{'value_after_accent'} = {
                       'text' => 'a'
                     }
                   ],
+                  'type' => 'following_arg'
+                }
+              ],
+              'cmdname' => '~',
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 2,
@@ -106,10 +115,9 @@ $result_trees{'value_after_accent'} = {
                       'status' => 'start'
                     }
                   ],
-                  'type' => 'following_arg'
+                  'text' => ''
                 }
-              ],
-              'cmdname' => '~',
+              },
               'source_info' => {
                 'file_name' => '',
                 'line_nr' => 3,
diff --git a/tp/t/results/value/value_after_brace_command.pl 
b/tp/t/results/value/value_after_brace_command.pl
index 30e06fcbb1..efd0c4fe17 100644
--- a/tp/t/results/value/value_after_brace_command.pl
+++ b/tp/t/results/value/value_after_brace_command.pl
@@ -74,8 +74,8 @@ $result_trees{'value_after_brace_command'} = {
                 }
               ],
               'cmdname' => 'ringaccent',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 1,
@@ -88,15 +88,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '{a}',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -117,8 +115,8 @@ $result_trees{'value_after_brace_command'} = {
             },
             {
               'cmdname' => 'ringaccent',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 2,
@@ -131,15 +129,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '@unknown',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -170,8 +166,8 @@ $result_trees{'value_after_brace_command'} = {
                 }
               ],
               'cmdname' => '^',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 3,
@@ -184,15 +180,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '{a}',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -213,8 +207,8 @@ $result_trees{'value_after_brace_command'} = {
             },
             {
               'cmdname' => '^',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 4,
@@ -227,15 +221,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '@unknown',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -266,8 +258,8 @@ $result_trees{'value_after_brace_command'} = {
                 }
               ],
               'cmdname' => 'code',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 5,
@@ -280,15 +272,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '{a}',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
@@ -309,8 +299,8 @@ $result_trees{'value_after_brace_command'} = {
             },
             {
               'cmdname' => 'code',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 6,
@@ -323,15 +313,13 @@ $result_trees{'value_after_brace_command'} = {
                         'cmdname' => 'value'
                       },
                       'line' => '@unknown',
+                      'position' => 1,
                       'sourcemark_type' => 'value_expansion',
                       'status' => 'start'
                     }
                   ],
-                  'text' => ''
+                  'text' => ' '
                 }
-              ],
-              'info' => {
-                'spaces_after_cmd_before_arg' => ' '
               },
               'source_info' => {
                 'file_name' => '',
diff --git a/tp/t/results/value/value_in_misc_commands.pl 
b/tp/t/results/value/value_in_misc_commands.pl
index 111e44b790..a2d7950ed5 100644
--- a/tp/t/results/value/value_in_misc_commands.pl
+++ b/tp/t/results/value/value_in_misc_commands.pl
@@ -1285,8 +1285,8 @@ $result_trees{'value_in_misc_commands'} = {
                 }
               ],
               'cmdname' => 'strong',
-              'contents' => [
-                {
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 12,
@@ -1296,7 +1296,7 @@ $result_trees{'value_in_misc_commands'} = {
                   ],
                   'text' => ''
                 }
-              ],
+              },
               'source_info' => {
                 'file_name' => '',
                 'line_nr' => 50,
@@ -1433,8 +1433,12 @@ $result_trees{'value_in_misc_commands'} = {
                 }
               ],
               'cmdname' => 'strong',
-              'contents' => [
-                {
+              'extra' => {
+                'begin' => '(strong:',
+                'end' => ':)'
+              },
+              'info' => {
+                'spaces_after_cmd_before_arg' => {
                   'source_marks' => [
                     {
                       'counter' => 15,
@@ -1444,10 +1448,6 @@ $result_trees{'value_in_misc_commands'} = {
                   ],
                   'text' => ''
                 }
-              ],
-              'extra' => {
-                'begin' => '(strong:',
-                'end' => ':)'
               },
               'source_info' => {
                 'file_name' => '',



reply via email to

[Prev in Thread] Current Thread [Next in Thread]