texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/ParserNonXS.pm (_parse_macro_command


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line) (_expand_macro_arguments, _expand_linemacro_arguments) (_lookup_macro_parameter, _expand_macro_body, _handle_macro) (_process_macro_block_contents), tp/Texinfo/XS/main/element_types.txt, tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line) (lookup_macro_parameter, expand_macro_arguments) (expand_linemacro_arguments, expand_macro_body, handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_macro_block_contents): put @*macro lin [...]
Date: Tue, 24 Dec 2024 10:34:01 -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 3ae4d475ab * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line) 
(_expand_macro_arguments, _expand_linemacro_arguments) 
(_lookup_macro_parameter, _expand_macro_body, _handle_macro) 
(_process_macro_block_contents), tp/Texinfo/XS/main/element_types.txt, 
tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line) 
(lookup_macro_parameter, expand_macro_arguments) (expand_linemacro_arguments, 
expand_macro_body, handle_macro), tp/Texinfo/XS/parsetexi/parser.c 
(process_macro_block_conte [...]
3ae4d475ab is described below

commit 3ae4d475abcb681bda71eb6dc57c03e0e85e9a46
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Tue Dec 24 16:33:49 2024 +0100

    * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line)
    (_expand_macro_arguments, _expand_linemacro_arguments)
    (_lookup_macro_parameter, _expand_macro_body, _handle_macro)
    (_process_macro_block_contents), tp/Texinfo/XS/main/element_types.txt,
    tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line)
    (lookup_macro_parameter, expand_macro_arguments)
    (expand_linemacro_arguments, expand_macro_body, handle_macro),
    tp/Texinfo/XS/parsetexi/parser.c (process_macro_block_contents): put
    @*macro line in first content argument element as macro_line text
    type.  Put macro name in extra "macro_name" and formal args array in
    extra "misc_args".  Remove macro_name and macro_arg types, add
    macro_name extra item.
    
    * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): adapt to change in
    tree.
---
 ChangeLog                                          |  18 ++
 tp/Texinfo/Convert/TexinfoMarkup.pm                |  20 +-
 tp/Texinfo/ParserNonXS.pm                          |  56 ++--
 tp/Texinfo/XS/main/element_types.c                 |   3 +-
 tp/Texinfo/XS/main/element_types.h                 |   3 +-
 tp/Texinfo/XS/main/element_types.txt               |   3 +-
 tp/Texinfo/XS/main/tree_types.h                    |   1 +
 tp/Texinfo/XS/parsetexi/macro.c                    |  70 +++--
 tp/Texinfo/XS/parsetexi/parser.c                   |  10 +-
 tp/t/results/alias/alias_macro_target_removed.pl   |  15 +-
 tp/t/results/alias/alias_of_macro.pl               |  15 +-
 tp/t/results/alias/alias_of_macro_before_macro.pl  |  15 +-
 tp/t/results/alias/texinfo_command_alias.pl        |  15 +-
 .../alias/texinfo_command_alias_indirect.pl        |  15 +-
 .../alias/texinfo_command_alias_indirect_before.pl |  15 +-
 .../command_conditionals_user_defined.pl           |   9 +-
 tp/t/results/conditionals/macro_in_ifset.pl        |   9 +-
 tp/t/results/conditionals/macro_in_ifset_set.pl    |  18 +-
 tp/t/results/conditionals/nested_ifset_ifclear.pl  |   9 +-
 .../conditionals/user_defined_txiinternalvalue.pl  |   9 +-
 .../results/converters_tests/at_commands_in_raw.pl |   9 +-
 tp/t/results/coverage_braces/test_image.pl         |   9 +-
 tp/t/results/include/cpp_lines.pl                  |  18 +-
 .../macro_and_commands_in_early_commands.pl        |  36 ++-
 .../results/include/macro_definition_in_include.pl |   9 +-
 tp/t/results/include/macro_in_early_commands.pl    |  60 ++--
 tp/t/results/info_tests/def_in_copying.pl          |   9 +-
 tp/t/results/linemacro/api_doc_with_linemacro.pl   |  55 ++--
 .../linemacro/arobase_brace_in_linemacro_call.pl   |  20 +-
 .../linemacro/begin_conditional_in_linemacro.pl    |  15 +-
 .../linemacro/block_begin_end_in_linemacro_call.pl |  35 +--
 tp/t/results/linemacro/blockitem_no_item.pl        |  25 +-
 tp/t/results/linemacro/brace_command_not_closed.pl |  25 +-
 tp/t/results/linemacro/braces_after_text.pl        |  25 +-
 .../linemacro/call_macro_in_linemacro_body.pl      |  40 +--
 .../linemacro/call_macro_in_linemacro_call.pl      |  40 +--
 .../linemacro/comment_at_end_of_linemacro_call.pl  |  20 +-
 .../results/linemacro/comment_in_linemacro_call.pl |  20 +-
 .../comment_in_one_argument_linemacro_call.pl      |  15 +-
 .../comment_on_linemacro_call_macro_expansion.pl   |  35 +--
 .../comment_on_linemacro_call_out_of_braces.pl     |  25 +-
 tp/t/results/linemacro/empty_last_argument.pl      |  20 +-
 .../linemacro/end_conditional_in_linemacro.pl      |  15 +-
 .../results/linemacro/last_argument_with_braces.pl |  20 +-
 tp/t/results/linemacro/missing_formal_arg.pl       |  25 +-
 tp/t/results/linemacro/nested_linemacro_calls.pl   |  45 ++-
 .../linemacro/newline_and_continuation_in_brace.pl |  25 +-
 tp/t/results/linemacro/no_arguments.pl             |   9 +-
 tp/t/results/linemacro/paragraph_no_paragraph.pl   |  25 +-
 tp/t/results/linemacro/protected_spaces_on_line.pl |  20 +-
 .../protection_of_end_of_line_by_command.pl        |  15 +-
 .../linemacro/recursive_linemacro_in_body.pl       |  20 +-
 .../linemacro/recursive_linemacro_in_call.pl       |  20 +-
 .../linemacro/simple_nested_linemacro_calls.pl     |  50 ++--
 .../linemacro/spaces_after_command_in_call.pl      |  25 +-
 ...paces_after_macro_linemacro_commands_in_call.pl |  60 ++--
 .../spaces_after_unknown_command_in_call.pl        |  25 +-
 tp/t/results/linemacro/spaces_in_args.pl           |  25 +-
 tp/t/results/linemacro/spaces_in_call.pl           |  25 +-
 tp/t/results/linemacro/text_arguments.pl           |  25 +-
 tp/t/results/linemacro/verb_in_linemacro_call.pl   |  30 +-
 tp/t/results/linemacro/verb_not_closed.pl          |  25 +-
 .../verb_with_arobase_in_linemacro_call.pl         |  25 +-
 .../linemacro/verb_with_brace_in_linemacro_call.pl |  25 +-
 tp/t/results/macro/arg_body_expansion_order.pl     |  33 ++-
 tp/t/results/macro/arg_not_closed.pl               |  15 +-
 tp/t/results/macro/arobase_brace_in_macro_call.pl  |  20 +-
 tp/t/results/macro/backslash_in_arg.pl             |  15 +-
 tp/t/results/macro/bad_argument.pl                 |  38 ++-
 tp/t/results/macro/bad_formal_arg.pl               |  55 ++--
 .../macro/bad_macro_name_with_underscore.pl        |  20 +-
 tp/t/results/macro/bib_example.pl                  | 104 ++++---
 tp/t/results/macro/bye_in_macro.pl                 |   9 +-
 ...losing_brace_in_macro_call_in_ignored_inline.pl |   9 +-
 tp/t/results/macro/complete_macro_for_end.pl       |   9 +-
 tp/t/results/macro/complex_argument.pl             |  59 ++--
 tp/t/results/macro/cpp_directives_after_macros.pl  |  18 +-
 tp/t/results/macro/cpp_directives_in_macro.pl      |  15 +-
 .../macro/cpp_directives_line_value_macro.pl       |  33 ++-
 .../macro/definfoenclose_replaced_by_macro.pl      |  15 +-
 tp/t/results/macro/double_macro_definition.pl      |  18 +-
 tp/t/results/macro/double_recursive_macro_call.pl  |  30 +-
 tp/t/results/macro/empty_end.pl                    |  15 +-
 tp/t/results/macro/empty_macro_argument.pl         |  24 +-
 tp/t/results/macro/empty_macro_in_text_no_arg.pl   |  18 +-
 tp/t/results/macro/empty_macro_no_arg.pl           |   9 +-
 tp/t/results/macro/expand_two_same.pl              |  15 +-
 tp/t/results/macro/expansion_order.pl              |  24 +-
 tp/t/results/macro/form_feeds.pl                   |  35 +--
 tp/t/results/macro/glossary.pl                     |  91 +++---
 tp/t/results/macro/ifclear_in_macro.pl             |  15 +-
 tp/t/results/macro/ifset_and_end_isef_in_macro.pl  |  18 +-
 tp/t/results/macro/ifset_in_macro.pl               |  15 +-
 tp/t/results/macro/ifset_in_macro_set.pl           |  15 +-
 tp/t/results/macro/ignored_macro_definition.pl     |   9 +-
 tp/t/results/macro/implicit_quoting_one_arg.pl     |  15 +-
 tp/t/results/macro/implicit_quoting_recursion.pl   |  20 +-
 tp/t/results/macro/include_after_empty_line_arg.pl |  15 +-
 tp/t/results/macro/leading_spaces_no_ignore.pl     |   9 +-
 tp/t/results/macro/line_after_recursive_call.pl    |   9 +-
 .../macro/line_end_accent_command_macro_call.pl    |  18 +-
 tp/t/results/macro/macro_after_paragraph.pl        |   9 +-
 .../macro/macro_alias_definfoenclose_defindex.pl   |  60 ++--
 .../macro_before_specific_line_command_args.pl     |   9 +-
 tp/t/results/macro/macro_call_empty_middle_arg.pl  |  25 +-
 tp/t/results/macro/macro_call_empty_two_arg.pl     |  20 +-
 .../macro/macro_call_in_ignored_inlinefmtifelse.pl |   9 +-
 .../macro/macro_call_in_inlinefmtifelse_format.pl  |   9 +-
 tp/t/results/macro/macro_call_in_node_manual.pl    |  54 +++-
 .../macro/macro_end_call_in_ignored_inlinefmt.pl   |   9 +-
 .../macro_end_call_in_ignored_inlinefmtifelse.pl   |   9 +-
 ...cro_end_call_in_ignored_inlinefmtifelse_else.pl |   9 +-
 .../macro/macro_end_call_in_ignored_inlineraw.pl   |   9 +-
 .../results/macro/macro_end_call_in_ignored_raw.pl |   9 +-
 tp/t/results/macro/macro_expands_to_empty.pl       |  15 +-
 tp/t/results/macro/macro_expansion.pl              |  20 +-
 .../macro_expansion_end_in_conditional_end.pl      |   9 +-
 .../macro_expansion_end_in_conditional_line.pl     |   9 +-
 ...macro_expansion_end_in_ignored_ifset_content.pl |   9 +-
 ..._expansion_end_in_ignored_nested_conditional.pl |   9 +-
 ..._end_in_ignored_nested_different_conditional.pl |   9 +-
 .../macro_expansion_in_multitable_prototype.pl     |  24 +-
 .../macro/macro_for_dot_in_menu_not_separator.pl   |   9 +-
 tp/t/results/macro/macro_for_end.pl                |   9 +-
 .../macro/macro_for_ignored_line_command.pl        |   9 +-
 tp/t/results/macro/macro_for_verb.pl               |   9 +-
 ...macro_imbricated_with_beginning_command_name.pl |   9 +-
 tp/t/results/macro/macro_in_accent.pl              |  18 +-
 tp/t/results/macro/macro_in_brace_command.pl       |  18 +-
 tp/t/results/macro/macro_in_def_delimiters.pl      |   9 +-
 tp/t/results/macro/macro_in_empty_menu_comment.pl  |   9 +-
 .../macro_in_empty_multitable_empty_before_item.pl |   9 +-
 .../macro_in_empty_table_empty_before_item.pl      |   9 +-
 tp/t/results/macro/macro_in_empty_text.pl          |   9 +-
 tp/t/results/macro/macro_in_end_argument.pl        |   9 +-
 tp/t/results/macro/macro_in_ifset.pl               |  15 +-
 tp/t/results/macro/macro_in_ifset_end_in_arg.pl    |  15 +-
 tp/t/results/macro/macro_in_index_commands.pl      |  63 ++++-
 .../macro/macro_in_invalid_documentencoding.pl     |   9 +-
 tp/t/results/macro/macro_in_macro_arg.pl           |  44 +--
 tp/t/results/macro/macro_in_macro_arg_simpler.pl   |  29 +-
 tp/t/results/macro/macro_in_menu.pl                |  54 +++-
 .../macro_in_menu_comment_closed_by_detailmenu.pl  |   9 +-
 .../macro/macro_in_menu_comment_like_entry.pl      |   9 +-
 tp/t/results/macro/macro_in_menu_description.pl    |   9 +-
 tp/t/results/macro/macro_in_misc_commands.pl       | 306 ++++++++++++++++-----
 .../macro/macro_in_multitable_empty_before_item.pl |   9 +-
 .../macro/macro_in_table_empty_before_item.pl      |   9 +-
 .../macro_inlineifcond_end_in_empty_ignored.pl     |   9 +-
 .../macro/macro_inlineifcond_end_in_empty_set.pl   |   9 +-
 tp/t/results/macro/macro_name_with_digit.pl        |  24 +-
 tp/t/results/macro/macro_name_with_hyphen.pl       |  20 +-
 tp/t/results/macro/macro_name_zero.pl              |   9 +-
 tp/t/results/macro/macro_no_arg_bad_expansion.pl   |   9 +-
 tp/t/results/macro/macro_no_arg_expansion.pl       |   9 +-
 tp/t/results/macro/macro_no_argument.pl            |   6 +
 tp/t/results/macro/macro_not_closed.pl             |   9 +-
 tp/t/results/macro/macro_one_arg_end_of_file.pl    |  15 +-
 .../macro/macro_replaced_by_definfoenclose.pl      |  15 +-
 .../macro_with_error_at_end_line_after_macro.pl    |  15 +-
 tp/t/results/macro/macro_zero.pl                   |   9 +-
 tp/t/results/macro/nested_macro_call.pl            |  18 +-
 tp/t/results/macro/no_macrobody.pl                 |  15 +-
 tp/t/results/macro/non_ascii_in_macro_name.pl      |   7 +
 tp/t/results/macro/paragraph_and_macro.pl          |  27 +-
 tp/t/results/macro/protect_comma_macro_line.pl     |  15 +-
 tp/t/results/macro/protect_in_body.pl              |  20 +-
 tp/t/results/macro/protect_in_body_line_arg.pl     |  20 +-
 tp/t/results/macro/protect_in_body_one_arg.pl      |  20 +-
 tp/t/results/macro/recursive_call_in_argument.pl   |  15 +-
 tp/t/results/macro/recursive_call_in_macro.pl      |  15 +-
 tp/t/results/macro/recursive_call_in_rmacro.pl     |   9 +-
 tp/t/results/macro/redefine_texinfo_macro.pl       |  15 +-
 tp/t/results/macro/simple_imbricated_macro.pl      |  18 +-
 .../macro/simple_imbricated_macro_rmacro.pl        |  18 +-
 tp/t/results/macro/space_macro_after_end.pl        |   9 +-
 .../macro/space_macro_after_end_verbatim.pl        |   9 +-
 tp/t/results/macro/text_before_after.pl            |   9 +-
 tp/t/results/macro/too_much_args.pl                |  20 +-
 tp/t/results/macro/two_macros_on_a_line.pl         |  24 +-
 .../macro/unpaired_backslash_in_macro_body.pl      |  15 +-
 .../macro/verb_with_arobase_in_macro_call.pl       |  20 +-
 .../results/macro/verb_with_brace_in_macro_call.pl |  25 +-
 tp/t/results/macro/zero_argument.pl                |  18 +-
 tp/t/results/macro/zero_argument_comment.pl        |  18 +-
 .../codequoteundirected_codequotebacktick.pl       |  18 +-
 tp/t/results/misc_commands/kbdinputstyle.pl        |   9 +-
 .../misc_commands/kbdinputstyle_in_table.pl        |   9 +-
 tp/t/results/misc_commands/test_allowcodebreaks.pl |  24 +-
 .../indent_before_macro_definition_and_other.pl    |  15 +-
 .../plaintext_tests/star_at_command_formatting.pl  |   9 +-
 tp/t/results/raw/nested_macros.pl                  |  20 +-
 .../transformations/protect_colon_source_mark.pl   |  15 +-
 .../transformations/protect_comma_source_mark.pl   |   9 +-
 ...st_parenthesis_after_parenthesis_source_mark.pl |   9 +-
 .../protect_first_parenthesis_source_mark.pl       |   9 +-
 ...otect_hashchar_at_line_beginning_source_mark.pl |  33 ++-
 ...ct_node_after_label_source_mark_in_protected.pl |   9 +-
 .../value_and_macro/comma_value_in_macro_arg.pl    |  20 +-
 tp/t/results/value_and_macro/macro_in_value.pl     |   9 +-
 .../results/value_and_macro/value_in_macro_body.pl |  15 +-
 .../value_and_macro/value_in_macro_formal_arg.pl   |  20 +-
 tp/t/results/xml_tests/macro_and_args.pl           |  45 ++-
 tp/t/results/xtable/table_nested.pl                |   9 +-
 204 files changed, 2676 insertions(+), 1622 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 482284ef95..dfb61caafa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2024-11-24  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line)
+       (_expand_macro_arguments, _expand_linemacro_arguments)
+       (_lookup_macro_parameter, _expand_macro_body, _handle_macro)
+       (_process_macro_block_contents), tp/Texinfo/XS/main/element_types.txt,
+       tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line)
+       (lookup_macro_parameter, expand_macro_arguments)
+       (expand_linemacro_arguments, expand_macro_body, handle_macro),
+       tp/Texinfo/XS/parsetexi/parser.c (process_macro_block_contents): put
+       @*macro line in first content argument element as macro_line text
+       type.  Put macro name in extra "macro_name" and formal args array in
+       extra "misc_args".  Remove macro_name and macro_arg types, add
+       macro_name extra item.
+
+       * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): adapt to change in
+       tree.
+
 2024-11-24  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/Texinfo.pm (_convert_to_texinfo, _convert_args),
diff --git a/tp/Texinfo/Convert/TexinfoMarkup.pm 
b/tp/Texinfo/Convert/TexinfoMarkup.pm
index d83b1ac30c..607ea719ea 100644
--- a/tp/Texinfo/Convert/TexinfoMarkup.pm
+++ b/tp/Texinfo/Convert/TexinfoMarkup.pm
@@ -1395,18 +1395,16 @@ sub _convert($$;$)
       } elsif ($element->{'cmdname'} eq 'macro'
                or $element->{'cmdname'} eq 'rmacro'
                or $element->{'cmdname'} eq 'linemacro') {
-        if (defined($element->{'contents'})) {
-          my $macro_definition_arg = $element->{'contents'}->[0];
-          my $macro_args_nr = scalar(@{$macro_definition_arg->{'contents'}});
-          if ($macro_args_nr > 0) {
-            my $name_arg = $macro_definition_arg->{'contents'}->[0];
-            if (defined($name_arg) and defined($name_arg->{'text'})) {
-              push @$attribute, ['name', $name_arg->{'text'}];
-            }
-            for (my $i = 1; $i < $macro_args_nr; $i++) {
-              my $formal_arg = $macro_definition_arg->{'contents'}->[$i];
+        if (defined($element->{'extra'})
+            and defined($element->{'extra'}->{'macro_name'})) {
+          my $macro_name = $element->{'extra'}->{'macro_name'};
+          push @$attribute, ['name', $macro_name];
+          my $macro_args_nr = scalar(@{$element->{'extra'}->{'misc_args'}});
+          if ($macro_args_nr) {
+            for (my $i = 0; $i < $macro_args_nr; $i++) {
+              my $formal_arg = $element->{'extra'}->{'misc_args'}->[$i];
               $prepended_elements .= 
$self->txi_markup_open_element('formalarg')
-                .$self->txi_markup_protect_text($formal_arg->{'text'})
+                .$self->txi_markup_protect_text($formal_arg)
                 .$self->txi_markup_close_element('formalarg');
             }
           }
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 0b44101637..e03b32b603 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -1318,6 +1318,9 @@ sub _parse_macro_command_line($$$$$;$)
                'info' => {'arg_line' => $line}, 'source_info' => $source_info 
};
   my $argument = {'type' => 'argument', 'parent' => $macro};
   $macro->{'contents'} = [$argument];
+  my $macro_line = {'type' => 'macro_line', 'text' => $line,
+                    'parent' => $argument};
+  $argument->{'contents'} = [$macro_line];
 
   # REMACRO
   my $macro_name;
@@ -1338,9 +1341,7 @@ sub _parse_macro_command_line($$$$$;$)
     print STDERR "MACRO \@$command $macro_name\n"
                            if ($self->{'conf'}->{'DEBUG'});
 
-    $argument->{'contents'} = [
-         { 'type' => 'macro_name', 'text' => $macro_name,
-            'parent' => $argument } ];
+    $macro->{'extra'} = {'macro_name' => $macro_name};
 
     my $args_def = $line;
     $args_def =~ s/^\s*//;
@@ -1350,14 +1351,13 @@ sub _parse_macro_command_line($$$$$;$)
       @args = split(/\s*,\s*/, $1);
     }
 
+    $macro->{'extra'}->{'misc_args'} = [];
     foreach my $formal_arg (@args) {
-      push @{$argument->{'contents'}},
-        { 'type' => 'macro_arg', 'text' => $formal_arg,
-          'parent' => $argument};
+      push @{$macro->{'extra'}->{'misc_args'}}, $formal_arg;
       if ($formal_arg !~ /^[\w\-]+$/) {
         $self->_line_error(sprintf(__("bad or empty \@%s formal argument: %s"),
                                    $command, $formal_arg), $source_info);
-        $macro->{'extra'} = {'invalid_syntax' => 1};
+        $macro->{'extra'}->{'invalid_syntax'} = 1;
       }
     }
     # accept an @-command after the arguments in case there is a @c or
@@ -1368,7 +1368,7 @@ sub _parse_macro_command_line($$$$$;$)
       $self->_line_error(sprintf(__("bad syntax for \@%s argument: %s"),
                                  $command, $no_eol_args),
                          $source_info);
-      $macro->{'extra'} = {'invalid_syntax' => 1};
+      $macro->{'extra'}->{'invalid_syntax'} = 1;
     }
   }
   return $macro;
@@ -2706,9 +2706,8 @@ sub _expand_macro_arguments($$$$$)
                           'parent' => $argument};
   push @{$argument->{'contents'}}, $argument_content;
 
-  my $macro_definition_arg = $macro->{'contents'}->[0];
-  my $args_total = scalar(@{$macro_definition_arg->{'contents'}}) -1;
-  my $name = $macro_definition_arg->{'contents'}->[0]->{'text'};
+  my $args_total = scalar(@{$macro->{'extra'}->{'misc_args'}});
+  my $name = $macro->{'extra'}->{'macro_name'};
 
   my $source_info_orig = $source_info;
 
@@ -2819,9 +2818,8 @@ sub _expand_linemacro_arguments($$$$$)
     $current->{'info'} = {} if (!$current->{'info'});
     $current->{'info'}->{'spaces_before_argument'} = {'text' => $1};
   }
-  my $macro_definition_arg = $macro->{'contents'}->[0];
-  my $args_total = scalar(@{$macro_definition_arg->{'contents'}}) -1;
-  my $name = $macro_definition_arg->{'contents'}->[0]->{'text'};
+  my $args_total = scalar(@{$macro->{'extra'}->{'misc_args'}});
+  my $name = $macro->{'extra'}->{'macro_name'};
 
   while (1) {
     # spaces based on whitespace_chars_except_newline in XS parser
@@ -2952,16 +2950,14 @@ sub _lookup_macro_parameter($$) {
   my $macro = shift;
   my $name = shift;
 
-  my $macro_definition_arg = $macro->{'element'}->{'contents'}->[0];
-  my $args_total = scalar(@{$macro_definition_arg->{'contents'}}) -1;
+  my $args_array = $macro->{'element'}->{'extra'}->{'misc_args'};
+  my $args_total = scalar(@$args_array);
   if ($args_total > 0) {
     my $arg_index;
-    # the first argument is the macro name
-    for ($arg_index=1; $arg_index<=$args_total; $arg_index++) {
-      if (defined($macro_definition_arg->{'contents'}->[$arg_index])
-          and $macro_definition_arg->{'contents'}->[$arg_index]->{'text'}
-                                                                   eq $name) {
-        return $arg_index - 1;
+    for ($arg_index = 0; $arg_index <= $args_total; $arg_index++) {
+      if (defined($args_array->[$arg_index])
+          and $args_array->[$arg_index] eq $name) {
+        return $arg_index;
       }
     }
   }
@@ -2992,10 +2988,10 @@ sub _expand_macro_body($$$$) {
             $result .= $args->[$formal_arg_index]->{'contents'}->[0]->{'text'};
           }
         } else {
-          my $macro_definition_arg = $macro->{'element'}->{'contents'}->[0];
+          my $macro_name = $macro->{'element'}->{'extra'}->{'macro_name'};
           $self->_line_error(sprintf(__(
          "\\ in \@%s expansion followed `%s' instead of parameter name or \\"),
-             $macro_definition_arg->{'contents'}->[0]->{'text'}, $arg),
+             $macro_name, $arg),
              $source_info);
           $result .= '\\' . $arg;
         }
@@ -5217,7 +5213,6 @@ sub _handle_macro($$$$$)
   my $command = shift;
 
   my $expanded_macro = $self->{'macros'}->{$command}->{'element'};
-  my $macro_definition_arg = $expanded_macro->{'contents'}->[0];
 
   # It is important to check for expansion before the expansion and
   # not after, as during the expansion, the text may go past the
@@ -5262,7 +5257,7 @@ sub _handle_macro($$$$$)
      = _expand_linemacro_arguments($self, $expanded_macro, $line, $source_info,
                                    $macro_call_element);
   } else {
-    my $args_number = scalar(@{$macro_definition_arg->{'contents'}}) -1;
+    my $args_number = scalar(@{$expanded_macro->{'extra'}->{'misc_args'}});
     if ($line =~ /^\s*{/) { # } macro with args
       if ($line =~ s/^(\s+)//) {
         my $spaces_element = {'text' => $1};
@@ -5363,7 +5358,7 @@ sub _handle_macro($$$$$)
 
   # Put expansion in front of the current line.
   _input_push_text($self, $expanded_macro_text, $source_info->{'line_nr'},
-                   $macro_definition_arg->{'contents'}->[0]->{'text'});
+                   $expanded_macro->{'extra'}->{'macro_name'});
 
   $self->{'input'}->[0]->{'input_source_mark'} = $macro_source_mark;
 
@@ -6951,10 +6946,9 @@ sub _process_macro_block_contents($$)
                 __("\@end %s should only appear at the beginning of a line"),
                                    $current->{'cmdname'}), $source_info);
         }
-        if ($current->{'contents'} and $current->{'contents'}->[0]
-            and $current->{'contents'}->[0]->{'contents'}
-            and $current->{'contents'}->[0]->{'contents'}->[0]) {
-          my $name = $current->{'contents'}->[0]->{'contents'}->[0]->{'text'};
+        if ($current->{'extra'}
+            and defined($current->{'extra'}->{'macro_name'})) {
+          my $name = $current->{'extra'}->{'macro_name'};
           if (exists($self->{'macros'}->{$name})) {
             $self->_line_warn(sprintf(__("macro `%s' previously defined"),
                                       $name), $current->{'source_info'});
diff --git a/tp/Texinfo/XS/main/element_types.c 
b/tp/Texinfo/XS/main/element_types.c
index b50b3ed22d..7dff572265 100644
--- a/tp/Texinfo/XS/main/element_types.c
+++ b/tp/Texinfo/XS/main/element_types.c
@@ -58,8 +58,7 @@ TYPE_DATA type_data[] = {
 {"internal_spaces_before_argument", TF_text | TF_leading_space, 0},
 {"internal_spaces_before_context_argument", TF_text | TF_leading_space, 0},
 {"internal_spaces_before_brace_in_index", TF_text, 0},
-{"macro_name", TF_text, 0},
-{"macro_arg", TF_text, 0},
+{"macro_line", TF_text, 0},
 {"before_item", 0, 0},
 {"table_entry", 0, 0},
 {"table_term", 0, 0},
diff --git a/tp/Texinfo/XS/main/element_types.h 
b/tp/Texinfo/XS/main/element_types.h
index a447457533..f1791c5ff4 100644
--- a/tp/Texinfo/XS/main/element_types.h
+++ b/tp/Texinfo/XS/main/element_types.h
@@ -57,8 +57,7 @@ ET_internal_spaces_after_command,
 ET_internal_spaces_before_argument,
 ET_internal_spaces_before_context_argument,
 ET_internal_spaces_before_brace_in_index,
-ET_macro_name,
-ET_macro_arg,
+ET_macro_line,
 ET_before_item,
 ET_table_entry,
 ET_table_term,
diff --git a/tp/Texinfo/XS/main/element_types.txt 
b/tp/Texinfo/XS/main/element_types.txt
index cc0729b9bd..54eca60f2c 100644
--- a/tp/Texinfo/XS/main/element_types.txt
+++ b/tp/Texinfo/XS/main/element_types.txt
@@ -123,8 +123,7 @@ internal_spaces_before_context_argument    
text,leading_space
 # on @*index commands line before brace specific @-command
 internal_spaces_before_brace_in_index      text
 
-macro_name                                 text
-macro_arg                                  text
+macro_line                                 text
 
 # structure of block commands
 before_item
diff --git a/tp/Texinfo/XS/main/tree_types.h b/tp/Texinfo/XS/main/tree_types.h
index 7f5da3491b..856d10af12 100644
--- a/tp/Texinfo/XS/main/tree_types.h
+++ b/tp/Texinfo/XS/main/tree_types.h
@@ -94,6 +94,7 @@ enum directions {
   ai_key(format) \
   ai_key(index_ignore_chars) \
   ai_key(input_encoding_name) \
+  ai_key(macro_name) \
   ai_key(normalized) \
   ai_key(original_def_cmdname) \
   ai_key(section_number) \
diff --git a/tp/Texinfo/XS/parsetexi/macro.c b/tp/Texinfo/XS/parsetexi/macro.c
index 0cd92506ff..a6677bed86 100644
--- a/tp/Texinfo/XS/parsetexi/macro.c
+++ b/tp/Texinfo/XS/parsetexi/macro.c
@@ -133,9 +133,10 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
 {
   const char *line = *line_inout;
   const char *pline = line;
-  ELEMENT *macro, *macro_name, *argument;
+  ELEMENT *macro, *argument, *macro_line;
   char *name;
   const char *args_ptr;
+  STRING_LIST *formal_args;
 
  /* TODO not sure about using lineraw_command. There is an arg_line info,
     which is consistent with lineraw_command, but the *macro are block
@@ -148,6 +149,10 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
   argument = new_element (ET_argument);
   add_to_element_contents (macro, argument);
 
+  macro_line = new_text_element (ET_macro_line);
+  text_append (macro_line->e.text, line);
+  add_to_element_contents (argument, macro_line);
+
   pline += strspn (pline, whitespace_chars);
   name = read_command_name (&pline);
 
@@ -169,10 +174,10 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
 
   debug ("MACRO @%s %s", command_name (cmd), name);
 
-  macro_name = new_text_element (ET_macro_name);
-  text_append (macro_name->e.text, name);
-  free (name);
-  add_to_element_contents (argument, macro_name);
+  add_extra_string (macro, AI_key_macro_name, name);
+
+  formal_args = new_string_list ();
+  add_extra_misc_args (macro, AI_key_misc_args, formal_args);
 
   args_ptr = pline;
   args_ptr += strspn (args_ptr, whitespace_chars);
@@ -190,7 +195,6 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
          the macro argument */
 
       const char *q, *q2;
-      ELEMENT *arg;
 
       args_ptr += strspn (args_ptr, whitespace_chars);
 
@@ -217,16 +221,15 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
             {
               line_error ("bad or empty @%s formal argument: ",
                           command_name(cmd));
-              arg = new_text_element (ET_macro_arg);
-              add_to_element_contents (argument, arg);
+              add_string ("", formal_args);
               macro->flags |= EF_invalid_syntax;
             }
         }
       else
         {
-          arg = new_text_element (ET_macro_arg);
-          text_append_n (arg->e.text, args_ptr, q2 - args_ptr);
-          add_to_element_contents (argument, arg);
+          char *args_string = strndup (args_ptr, q2 - args_ptr);
+          add_string (args_string, formal_args);
+          free (args_string);
 
           /* Check the argument name. */
             {
@@ -282,22 +285,16 @@ parse_macro_command_line (enum command_id cmd, const char 
**line_inout,
 static size_t
 lookup_macro_parameter (const char *name, const ELEMENT *macro)
 {
-  size_t i, idx;
+  size_t i;
   /* the args_list pointer is const not the ELEMENT */
-  ELEMENT *const *args_list;
-  const ELEMENT *macro_definition_arg = macro->e.c->contents.list[0];
+  const STRING_LIST *formal_args_list = lookup_extra_misc_args (macro,
+                                                      AI_key_misc_args);
 
   /* Find 'arg' in MACRO parameters. */
-  args_list = macro_definition_arg->e.c->contents.list;
-  idx = 0;
-  for (i = 0; i < macro_definition_arg->e.c->contents.number; i++)
+  for (i = 0; i < formal_args_list->number; i++)
     {
-      if (args_list[i]->type == ET_macro_arg)
-        {
-          if (!strcmp (args_list[i]->e.text->text, name))
-            return idx +1;
-          idx++;
-        }
+       if (!strcmp (formal_args_list->list[i], name))
+         return i+1;
     }
   return 0;
 }
@@ -317,15 +314,14 @@ expand_macro_arguments (const ELEMENT *macro, const char 
**line_inout,
   int whitespaces_len;
   ELEMENT *argument = new_element (ET_brace_arg);
   ELEMENT *argument_content = new_text_element (ET_other_text);
-  ELEMENT *macro_definition_arg;
+  const STRING_LIST *formal_args_list = lookup_extra_misc_args (macro,
+                                                       AI_key_misc_args);
 
   add_to_element_contents (current, argument);
   add_to_element_contents (argument, argument_content);
   arg = argument_content->e.text;
 
-  macro_definition_arg = macro->e.c->contents.list[0];
-  /* -1 because of the macro name */
-  args_total = macro_definition_arg->e.c->contents.number - 1;
+  args_total = formal_args_list->number;
 
   /* *pline is '{', advance past the open brace, start at braces_level = 1 */
   pline++;
@@ -463,7 +459,8 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
   size_t i;
   ELEMENT *argument = new_element (ET_line_arg);
   ELEMENT *argument_content = new_text_element (ET_other_text);
-  ELEMENT *macro_definition_arg;
+  const STRING_LIST *formal_args_list = lookup_extra_misc_args (macro,
+                                                       AI_key_misc_args);
 
   add_to_element_contents (current, argument);
   add_to_element_contents (argument, argument_content);
@@ -481,9 +478,7 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
       pline += spaces_nr;
     }
 
-  macro_definition_arg = macro->e.c->contents.list[0];
-  /* -1 because of the macro name */
-  args_total = macro_definition_arg->e.c->contents.number - 1;
+  args_total = formal_args_list->number;
 
   while (1)
     {
@@ -697,11 +692,11 @@ expand_macro_body (const MACRO *macro_record, const 
ELEMENT *arguments,
           pos = lookup_macro_parameter (name, macro);
           if (pos == 0)
             {
-              ELEMENT *macro_definition_arg = macro->e.c->contents.list[0];
+              const char *macro_name = lookup_extra_string (macro,
+                                                        AI_key_macro_name);
               line_error ("\\ in @%s expansion followed `%s' instead of "
                           "parameter name or \\",
-                   macro_definition_arg->e.c->contents.list[0]->e.text->text,
-                          name);
+                          macro_name, name);
               text_append (expanded, "\\");
               text_append (expanded, name);
             }
@@ -780,13 +775,13 @@ handle_macro (ELEMENT *current, const char **line_inout, 
enum command_id cmd)
   const char *line, *p;
   MACRO *macro_record;
   const ELEMENT *macro;
-  const ELEMENT *macro_definition_arg;
   TEXT expanded;
   char *expanded_macro_text;
   size_t args_number;
   SOURCE_MARK *macro_source_mark;
   ELEMENT *macro_call_element;
   int error = 0;
+  const STRING_LIST *formal_args_list;
 
   line = *line_inout;
 
@@ -794,7 +789,7 @@ handle_macro (ELEMENT *current, const char **line_inout, 
enum command_id cmd)
   if (!macro_record)
     fatal ("no macro record");
   macro = macro_record->element;
-  macro_definition_arg = macro->e.c->contents.list[0];
+  formal_args_list = lookup_extra_misc_args (macro, AI_key_misc_args);
 
   /* It is important to check for expansion before the expansion and
      not after, as during the expansion, the text may go past the
@@ -832,8 +827,7 @@ handle_macro (ELEMENT *current, const char **line_inout, 
enum command_id cmd)
     }
   else
     {
-      /* Get number of args. - 1 for the macro name. */
-      args_number = macro_definition_arg->e.c->contents.number - 1;
+      args_number = formal_args_list->number;
 
       p = line + strspn (line, whitespace_chars);
       if (*p == '{')
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index 6ec18d20a6..722ebc045b 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -1544,15 +1544,9 @@ process_macro_block_contents (ELEMENT *current, const 
char **line_out)
                                  "beginning of a line",
                                  command_name(top_stack_cmd));
                     }
-                  if (current->e.c->contents.number > 0
-                      && current->e.c->contents.list[0]
-                                        ->e.c->contents.number > 0)
+                  name = lookup_extra_string (current, AI_key_macro_name);
+                  if (name)
                     {
-                      const ELEMENT *macro_name_e
-                          = contents_child_by_index (
-                              contents_child_by_index (current, 0), 0);
-                      name = macro_name_e->e.text->text;
-
                       existing = lookup_command (name);
                       if (existing)
                         {
diff --git a/tp/t/results/alias/alias_macro_target_removed.pl 
b/tp/t/results/alias/alias_macro_target_removed.pl
index 87db0d9e97..2c8c7dc5c1 100644
--- a/tp/t/results/alias/alias_macro_target_removed.pl
+++ b/tp/t/results/alias/alias_macro_target_removed.pl
@@ -15,12 +15,9 @@ $result_trees{'alias_macro_target_removed'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mystrong',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mystrong {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'alias_macro_target_removed'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mystrong',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mystrong {arg}
 '
diff --git a/tp/t/results/alias/alias_of_macro.pl 
b/tp/t/results/alias/alias_of_macro.pl
index 9d2b2ad84a..a659a413a8 100644
--- a/tp/t/results/alias/alias_of_macro.pl
+++ b/tp/t/results/alias/alias_of_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'alias_of_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'thearg',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {thearg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'alias_of_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'thearg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {thearg}
 '
diff --git a/tp/t/results/alias/alias_of_macro_before_macro.pl 
b/tp/t/results/alias/alias_of_macro_before_macro.pl
index 95b5fc4589..36b62fb779 100644
--- a/tp/t/results/alias/alias_of_macro_before_macro.pl
+++ b/tp/t/results/alias/alias_of_macro_before_macro.pl
@@ -53,12 +53,9 @@ $result_trees{'alias_of_macro_before_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'thearg',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {thearg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -99,6 +96,12 @@ $result_trees{'alias_of_macro_before_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'thearg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {thearg}
 '
diff --git a/tp/t/results/alias/texinfo_command_alias.pl 
b/tp/t/results/alias/texinfo_command_alias.pl
index ea6c0d2422..00c90bc736 100644
--- a/tp/t/results/alias/texinfo_command_alias.pl
+++ b/tp/t/results/alias/texinfo_command_alias.pl
@@ -15,12 +15,9 @@ $result_trees{'texinfo_command_alias'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mystrong',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mystrong {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'texinfo_command_alias'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mystrong',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mystrong {arg}
 '
diff --git a/tp/t/results/alias/texinfo_command_alias_indirect.pl 
b/tp/t/results/alias/texinfo_command_alias_indirect.pl
index 344bf4e8cf..bf1e871940 100644
--- a/tp/t/results/alias/texinfo_command_alias_indirect.pl
+++ b/tp/t/results/alias/texinfo_command_alias_indirect.pl
@@ -15,12 +15,9 @@ $result_trees{'texinfo_command_alias_indirect'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mystrong',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mystrong {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'texinfo_command_alias_indirect'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mystrong',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mystrong {arg}
 '
diff --git a/tp/t/results/alias/texinfo_command_alias_indirect_before.pl 
b/tp/t/results/alias/texinfo_command_alias_indirect_before.pl
index 5a6002f75c..3bc710dd9b 100644
--- a/tp/t/results/alias/texinfo_command_alias_indirect_before.pl
+++ b/tp/t/results/alias/texinfo_command_alias_indirect_before.pl
@@ -15,12 +15,9 @@ $result_trees{'texinfo_command_alias_indirect_before'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mystrong',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mystrong {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'texinfo_command_alias_indirect_before'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mystrong',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mystrong {arg}
 '
diff --git a/tp/t/results/conditionals/command_conditionals_user_defined.pl 
b/tp/t/results/conditionals/command_conditionals_user_defined.pl
index 1013ceb01b..cc84e4697f 100644
--- a/tp/t/results/conditionals/command_conditionals_user_defined.pl
+++ b/tp/t/results/conditionals/command_conditionals_user_defined.pl
@@ -15,8 +15,9 @@ $result_trees{'command_conditionals_user_defined'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'command_conditionals_user_defined'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc
 '
diff --git a/tp/t/results/conditionals/macro_in_ifset.pl 
b/tp/t/results/conditionals/macro_in_ifset.pl
index 03a3731e68..703683476e 100644
--- a/tp/t/results/conditionals/macro_in_ifset.pl
+++ b/tp/t/results/conditionals/macro_in_ifset.pl
@@ -20,8 +20,9 @@ $result_trees{'macro_in_ifset'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_in_ifset'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc {}
 '
diff --git a/tp/t/results/conditionals/macro_in_ifset_set.pl 
b/tp/t/results/conditionals/macro_in_ifset_set.pl
index c9775381be..67ea8259db 100644
--- a/tp/t/results/conditionals/macro_in_ifset_set.pl
+++ b/tp/t/results/conditionals/macro_in_ifset_set.pl
@@ -42,8 +42,9 @@ $result_trees{'macro_in_ifset_set'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -84,6 +85,10 @@ $result_trees{'macro_in_ifset_set'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc {}
 '
@@ -156,8 +161,9 @@ $result_trees{'macro_in_ifset_set'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -198,6 +204,10 @@ $result_trees{'macro_in_ifset_set'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc{}
 '
diff --git a/tp/t/results/conditionals/nested_ifset_ifclear.pl 
b/tp/t/results/conditionals/nested_ifset_ifclear.pl
index cb1413c812..3c55b460a0 100644
--- a/tp/t/results/conditionals/nested_ifset_ifclear.pl
+++ b/tp/t/results/conditionals/nested_ifset_ifclear.pl
@@ -20,8 +20,9 @@ $result_trees{'nested_ifset_ifclear'} = {
             {
               'contents' => [
                 {
-                  'text' => 'conditionals',
-                  'type' => 'macro_name'
+                  'text' => ' conditionals{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -97,6 +98,10 @@ $result_trees{'nested_ifset_ifclear'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'conditionals',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' conditionals{}
 '
diff --git a/tp/t/results/conditionals/user_defined_txiinternalvalue.pl 
b/tp/t/results/conditionals/user_defined_txiinternalvalue.pl
index f465bb4886..c07a6b8212 100644
--- a/tp/t/results/conditionals/user_defined_txiinternalvalue.pl
+++ b/tp/t/results/conditionals/user_defined_txiinternalvalue.pl
@@ -15,8 +15,9 @@ $result_trees{'user_defined_txiinternalvalue'} = {
             {
               'contents' => [
                 {
-                  'text' => 'txiinternalvalue',
-                  'type' => 'macro_name'
+                  'text' => ' txiinternalvalue
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'user_defined_txiinternalvalue'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'txiinternalvalue',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' txiinternalvalue
 '
diff --git a/tp/t/results/converters_tests/at_commands_in_raw.pl 
b/tp/t/results/converters_tests/at_commands_in_raw.pl
index 577dd5df80..e45af0bd81 100644
--- a/tp/t/results/converters_tests/at_commands_in_raw.pl
+++ b/tp/t/results/converters_tests/at_commands_in_raw.pl
@@ -79,8 +79,9 @@ $result_trees{'at_commands_in_raw'} = {
             {
               'contents' => [
                 {
-                  'text' => 'othermacro',
-                  'type' => 'macro_name'
+                  'text' => ' othermacro{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -121,6 +122,10 @@ $result_trees{'at_commands_in_raw'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'othermacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' othermacro{}
 '
diff --git a/tp/t/results/coverage_braces/test_image.pl 
b/tp/t/results/coverage_braces/test_image.pl
index eec9502374..350669bdaa 100644
--- a/tp/t/results/coverage_braces/test_image.pl
+++ b/tp/t/results/coverage_braces/test_image.pl
@@ -15,8 +15,9 @@ $result_trees{'test_image'} = {
             {
               'contents' => [
                 {
-                  'text' => 'files-char',
-                  'type' => 'macro_name'
+                  'text' => ' files-char
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ $result_trees{'test_image'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'files-char',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' files-char
 '
diff --git a/tp/t/results/include/cpp_lines.pl 
b/tp/t/results/include/cpp_lines.pl
index 3e04be9bbb..b0a0747ce7 100644
--- a/tp/t/results/include/cpp_lines.pl
+++ b/tp/t/results/include/cpp_lines.pl
@@ -261,8 +261,9 @@ $result_trees{'cpp_lines'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macr',
-                  'type' => 'macro_name'
+                  'text' => ' macr
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -304,6 +305,10 @@ $result_trees{'cpp_lines'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macr',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macr
 '
@@ -424,8 +429,9 @@ $result_trees{'cpp_lines'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrtwo',
-                  'type' => 'macro_name'
+                  'text' => ' macrtwo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -472,6 +478,10 @@ $result_trees{'cpp_lines'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrtwo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macrtwo
 '
diff --git a/tp/t/results/include/macro_and_commands_in_early_commands.pl 
b/tp/t/results/include/macro_and_commands_in_early_commands.pl
index 240136d090..34e3322976 100644
--- a/tp/t/results/include/macro_and_commands_in_early_commands.pl
+++ b/tp/t/results/include/macro_and_commands_in_early_commands.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'begin-file',
-                  'type' => 'macro_name'
+                  'text' => ' begin-file
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'begin-file',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' begin-file
 '
@@ -143,8 +148,9 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'latin1',
-                  'type' => 'macro_name'
+                  'text' => ' latin1 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -185,6 +191,10 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'latin1',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' latin1 
 '
@@ -269,8 +279,9 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'multiinclude',
-                  'type' => 'macro_name'
+                  'text' => ' multiinclude
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -316,6 +327,10 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'multiinclude',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' multiinclude
 '
@@ -491,8 +506,9 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'themacro',
-                  'type' => 'macro_name'
+                  'text' => ' themacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -534,6 +550,10 @@ $result_trees{'macro_and_commands_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'themacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' themacro
 '
diff --git a/tp/t/results/include/macro_definition_in_include.pl 
b/tp/t/results/include/macro_definition_in_include.pl
index 37de5d711e..a2cf8d81d0 100644
--- a/tp/t/results/include/macro_definition_in_include.pl
+++ b/tp/t/results/include/macro_definition_in_include.pl
@@ -55,8 +55,9 @@ $result_trees{'macro_definition_in_include'} = {
             {
               'contents' => [
                 {
-                  'text' => 'themacro',
-                  'type' => 'macro_name'
+                  'text' => ' themacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -98,6 +99,10 @@ $result_trees{'macro_definition_in_include'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'themacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' themacro
 '
diff --git a/tp/t/results/include/macro_in_early_commands.pl 
b/tp/t/results/include/macro_in_early_commands.pl
index 503a0c61e6..5151586f41 100644
--- a/tp/t/results/include/macro_in_early_commands.pl
+++ b/tp/t/results/include/macro_in_early_commands.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'begin-file',
-                  'type' => 'macro_name'
+                  'text' => ' begin-file
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'begin-file',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' begin-file
 '
@@ -71,12 +76,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'end-file-name',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'ext',
-                  'type' => 'macro_arg'
+                  'text' => ' end-file-name {ext}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -117,6 +119,12 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'end-file-name',
+            'misc_args' => [
+              'ext'
+            ]
+          },
           'info' => {
             'arg_line' => ' end-file-name {ext}
 '
@@ -226,8 +234,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'latin1',
-                  'type' => 'macro_name'
+                  'text' => ' latin1 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -268,6 +277,10 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'latin1',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' latin1 
 '
@@ -287,8 +300,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'documentencoding-command',
-                  'type' => 'macro_name'
+                  'text' => ' documentencoding-command
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -329,6 +343,10 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'documentencoding-command',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' documentencoding-command
 '
@@ -431,8 +449,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'multiinclude',
-                  'type' => 'macro_name'
+                  'text' => ' multiinclude
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -478,6 +497,10 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'multiinclude',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' multiinclude
 '
@@ -653,8 +676,9 @@ $result_trees{'macro_in_early_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'themacro',
-                  'type' => 'macro_name'
+                  'text' => ' themacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -696,6 +720,10 @@ $result_trees{'macro_in_early_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'themacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' themacro
 '
diff --git a/tp/t/results/info_tests/def_in_copying.pl 
b/tp/t/results/info_tests/def_in_copying.pl
index 5fc5be4f7d..34eb2101df 100644
--- a/tp/t/results/info_tests/def_in_copying.pl
+++ b/tp/t/results/info_tests/def_in_copying.pl
@@ -15,8 +15,9 @@ $result_trees{'def_in_copying'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -72,6 +73,10 @@ $result_trees{'def_in_copying'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro
 '
diff --git a/tp/t/results/linemacro/api_doc_with_linemacro.pl 
b/tp/t/results/linemacro/api_doc_with_linemacro.pl
index 2abc4d00dd..8e63215b3e 100644
--- a/tp/t/results/linemacro/api_doc_with_linemacro.pl
+++ b/tp/t/results/linemacro/api_doc_with_linemacro.pl
@@ -15,16 +15,9 @@ $result_trees{'api_doc_with_linemacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'param',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'param',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'type',
-                  'type' => 'macro_arg'
+                  'text' => ' param {param, type}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'api_doc_with_linemacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'param',
+            'misc_args' => [
+              'param',
+              'type'
+            ]
+          },
           'info' => {
             'arg_line' => ' param {param, type}
 '
@@ -79,16 +79,9 @@ $result_trees{'api_doc_with_linemacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'returns',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'param',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'type',
-                  'type' => 'macro_arg'
+                  'text' => ' returns {param, type}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -129,6 +122,13 @@ $result_trees{'api_doc_with_linemacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'returns',
+            'misc_args' => [
+              'param',
+              'type'
+            ]
+          },
           'info' => {
             'arg_line' => ' returns {param, type}
 '
@@ -143,12 +143,9 @@ $result_trees{'api_doc_with_linemacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'raises',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'exception',
-                  'type' => 'macro_arg'
+                  'text' => ' raises {exception}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -189,6 +186,12 @@ $result_trees{'api_doc_with_linemacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'raises',
+            'misc_args' => [
+              'exception'
+            ]
+          },
           'info' => {
             'arg_line' => ' raises {exception}
 '
diff --git a/tp/t/results/linemacro/arobase_brace_in_linemacro_call.pl 
b/tp/t/results/linemacro/arobase_brace_in_linemacro_call.pl
index 418a4b2a0d..04b645afde 100644
--- a/tp/t/results/linemacro/arobase_brace_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/arobase_brace_in_linemacro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'arobase_brace_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'simplemac',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' simplemac { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'arobase_brace_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'simplemac',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' simplemac { arg1 , arg2 }
 '
diff --git a/tp/t/results/linemacro/begin_conditional_in_linemacro.pl 
b/tp/t/results/linemacro/begin_conditional_in_linemacro.pl
index 47af6907f5..5b2a66ad2d 100644
--- a/tp/t/results/linemacro/begin_conditional_in_linemacro.pl
+++ b/tp/t/results/linemacro/begin_conditional_in_linemacro.pl
@@ -15,12 +15,9 @@ $result_trees{'begin_conditional_in_linemacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'begin_conditional_in_linemacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a}
 '
diff --git a/tp/t/results/linemacro/block_begin_end_in_linemacro_call.pl 
b/tp/t/results/linemacro/block_begin_end_in_linemacro_call.pl
index ace1efa984..b2f3696a10 100644
--- a/tp/t/results/linemacro/block_begin_end_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/block_begin_end_in_linemacro_call.pl
@@ -15,12 +15,9 @@ $result_trees{'block_begin_end_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'block_begin_end_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a}
 '
@@ -632,16 +635,9 @@ args \\e\\|\\f\\|
                 {
                   'contents' => [
                     {
-                      'text' => 'mymac',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'e',
-                      'type' => 'macro_arg'
-                    },
-                    {
-                      'text' => 'f',
-                      'type' => 'macro_arg'
+                      'text' => ' mymac {e, f}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -704,6 +700,13 @@ args \\e\\|\\f\\|
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mymac',
+                'misc_args' => [
+                  'e',
+                  'f'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mymac {e, f}
 '
diff --git a/tp/t/results/linemacro/blockitem_no_item.pl 
b/tp/t/results/linemacro/blockitem_no_item.pl
index f34eef3ec0..487a2edb9e 100644
--- a/tp/t/results/linemacro/blockitem_no_item.pl
+++ b/tp/t/results/linemacro/blockitem_no_item.pl
@@ -15,20 +15,9 @@ $result_trees{'blockitem_no_item'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'blockitem_no_item'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/linemacro/brace_command_not_closed.pl 
b/tp/t/results/linemacro/brace_command_not_closed.pl
index f87a91ecc0..cc5f10c8a2 100644
--- a/tp/t/results/linemacro/brace_command_not_closed.pl
+++ b/tp/t/results/linemacro/brace_command_not_closed.pl
@@ -15,20 +15,9 @@ $result_trees{'brace_command_not_closed'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'brace_command_not_closed'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/linemacro/braces_after_text.pl 
b/tp/t/results/linemacro/braces_after_text.pl
index 5db1385403..2386257a0a 100644
--- a/tp/t/results/linemacro/braces_after_text.pl
+++ b/tp/t/results/linemacro/braces_after_text.pl
@@ -15,20 +15,9 @@ $result_trees{'braces_after_text'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'braces_after_text'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {a, b, c}
 '
diff --git a/tp/t/results/linemacro/call_macro_in_linemacro_body.pl 
b/tp/t/results/linemacro/call_macro_in_linemacro_body.pl
index d5599bcfda..191ca97bdd 100644
--- a/tp/t/results/linemacro/call_macro_in_linemacro_body.pl
+++ b/tp/t/results/linemacro/call_macro_in_linemacro_body.pl
@@ -15,16 +15,9 @@ $result_trees{'call_macro_in_linemacro_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -75,6 +68,13 @@ $result_trees{'call_macro_in_linemacro_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b}
 '
@@ -94,16 +94,9 @@ $result_trees{'call_macro_in_linemacro_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'd',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {c, d}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -154,6 +147,13 @@ $result_trees{'call_macro_in_linemacro_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'c',
+              'd'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {c, d}
 '
diff --git a/tp/t/results/linemacro/call_macro_in_linemacro_call.pl 
b/tp/t/results/linemacro/call_macro_in_linemacro_call.pl
index f24f18d025..0a558decd7 100644
--- a/tp/t/results/linemacro/call_macro_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/call_macro_in_linemacro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'call_macro_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'call_macro_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b}
 '
@@ -89,16 +89,9 @@ $result_trees{'call_macro_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'd',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {c, d}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -149,6 +142,13 @@ $result_trees{'call_macro_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'c',
+              'd'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {c, d}
 '
diff --git a/tp/t/results/linemacro/comment_at_end_of_linemacro_call.pl 
b/tp/t/results/linemacro/comment_at_end_of_linemacro_call.pl
index 6a2662f7c2..e92de8fbbf 100644
--- a/tp/t/results/linemacro/comment_at_end_of_linemacro_call.pl
+++ b/tp/t/results/linemacro/comment_at_end_of_linemacro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'comment_at_end_of_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'comment_at_end_of_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b}
 '
diff --git a/tp/t/results/linemacro/comment_in_linemacro_call.pl 
b/tp/t/results/linemacro/comment_in_linemacro_call.pl
index fc4130660b..6d26dd4e95 100644
--- a/tp/t/results/linemacro/comment_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/comment_in_linemacro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'comment_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'comment_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b}
 '
diff --git a/tp/t/results/linemacro/comment_in_one_argument_linemacro_call.pl 
b/tp/t/results/linemacro/comment_in_one_argument_linemacro_call.pl
index e7132b4c77..f201f1bf66 100644
--- a/tp/t/results/linemacro/comment_in_one_argument_linemacro_call.pl
+++ b/tp/t/results/linemacro/comment_in_one_argument_linemacro_call.pl
@@ -15,12 +15,9 @@ $result_trees{'comment_in_one_argument_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'comment_in_one_argument_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a}
 '
diff --git 
a/tp/t/results/linemacro/comment_on_linemacro_call_macro_expansion.pl 
b/tp/t/results/linemacro/comment_on_linemacro_call_macro_expansion.pl
index 0441f5adbe..d78cd98a19 100644
--- a/tp/t/results/linemacro/comment_on_linemacro_call_macro_expansion.pl
+++ b/tp/t/results/linemacro/comment_on_linemacro_call_macro_expansion.pl
@@ -15,16 +15,9 @@ $result_trees{'comment_on_linemacro_call_macro_expansion'} = 
{
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'comment_on_linemacro_call_macro_expansion'} = 
{
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b}
 '
@@ -89,12 +89,9 @@ $result_trees{'comment_on_linemacro_call_macro_expansion'} = 
{
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -140,6 +137,12 @@ $result_trees{'comment_on_linemacro_call_macro_expansion'} 
= {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {a}
 '
diff --git a/tp/t/results/linemacro/comment_on_linemacro_call_out_of_braces.pl 
b/tp/t/results/linemacro/comment_on_linemacro_call_out_of_braces.pl
index bd1ccf02f8..06af228298 100644
--- a/tp/t/results/linemacro/comment_on_linemacro_call_out_of_braces.pl
+++ b/tp/t/results/linemacro/comment_on_linemacro_call_out_of_braces.pl
@@ -15,20 +15,9 @@ $result_trees{'comment_on_linemacro_call_out_of_braces'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'comment_on_linemacro_call_out_of_braces'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a, b, c}
 '
diff --git a/tp/t/results/linemacro/empty_last_argument.pl 
b/tp/t/results/linemacro/empty_last_argument.pl
index e40fa5df37..a3d2f7461e 100644
--- a/tp/t/results/linemacro/empty_last_argument.pl
+++ b/tp/t/results/linemacro/empty_last_argument.pl
@@ -47,16 +47,9 @@ $result_trees{'empty_last_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'defbuiltin',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'symbol',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' defbuiltin {symbol, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -102,6 +95,13 @@ $result_trees{'empty_last_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'defbuiltin',
+            'misc_args' => [
+              'symbol',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' defbuiltin {symbol, rest}
 '
diff --git a/tp/t/results/linemacro/end_conditional_in_linemacro.pl 
b/tp/t/results/linemacro/end_conditional_in_linemacro.pl
index 61e3bc3d14..5bd5294bf9 100644
--- a/tp/t/results/linemacro/end_conditional_in_linemacro.pl
+++ b/tp/t/results/linemacro/end_conditional_in_linemacro.pl
@@ -15,12 +15,9 @@ $result_trees{'end_conditional_in_linemacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'end_conditional_in_linemacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {a}
 '
diff --git a/tp/t/results/linemacro/last_argument_with_braces.pl 
b/tp/t/results/linemacro/last_argument_with_braces.pl
index 92c3a8030d..1929099ad5 100644
--- a/tp/t/results/linemacro/last_argument_with_braces.pl
+++ b/tp/t/results/linemacro/last_argument_with_braces.pl
@@ -15,16 +15,9 @@ $result_trees{'last_argument_with_braces'} = {
             {
               'contents' => [
                 {
-                  'text' => 'defbuiltin',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'symbol',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' defbuiltin {symbol, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'last_argument_with_braces'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'defbuiltin',
+            'misc_args' => [
+              'symbol',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' defbuiltin {symbol, rest}
 '
diff --git a/tp/t/results/linemacro/missing_formal_arg.pl 
b/tp/t/results/linemacro/missing_formal_arg.pl
index da910830d9..130d8c08d5 100644
--- a/tp/t/results/linemacro/missing_formal_arg.pl
+++ b/tp/t/results/linemacro/missing_formal_arg.pl
@@ -15,20 +15,9 @@ $result_trees{'missing_formal_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => '',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {a, , b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,7 +59,13 @@ $result_trees{'missing_formal_arg'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'a',
+              '',
+              'b'
+            ]
           },
           'info' => {
             'arg_line' => ' mymacro {a, , b}
diff --git a/tp/t/results/linemacro/nested_linemacro_calls.pl 
b/tp/t/results/linemacro/nested_linemacro_calls.pl
index 949c41ae82..2cd0070fca 100644
--- a/tp/t/results/linemacro/nested_linemacro_calls.pl
+++ b/tp/t/results/linemacro/nested_linemacro_calls.pl
@@ -15,16 +15,9 @@ $result_trees{'nested_linemacro_calls'} = {
             {
               'contents' => [
                 {
-                  'text' => 'inside',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' inside {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'nested_linemacro_calls'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'inside',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' inside {a, b}
 '
@@ -84,20 +84,9 @@ $result_trees{'nested_linemacro_calls'} = {
             {
               'contents' => [
                 {
-                  'text' => 'outside',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'one',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'two',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'three',
-                  'type' => 'macro_arg'
+                  'text' => ' outside {one, two, three}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -143,6 +132,14 @@ $result_trees{'nested_linemacro_calls'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'outside',
+            'misc_args' => [
+              'one',
+              'two',
+              'three'
+            ]
+          },
           'info' => {
             'arg_line' => ' outside {one, two, three}
 '
diff --git a/tp/t/results/linemacro/newline_and_continuation_in_brace.pl 
b/tp/t/results/linemacro/newline_and_continuation_in_brace.pl
index 6f0ed363d4..b8d33a1b91 100644
--- a/tp/t/results/linemacro/newline_and_continuation_in_brace.pl
+++ b/tp/t/results/linemacro/newline_and_continuation_in_brace.pl
@@ -20,20 +20,9 @@ $result_trees{'newline_and_continuation_in_brace'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -74,6 +63,14 @@ $result_trees{'newline_and_continuation_in_brace'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
diff --git a/tp/t/results/linemacro/no_arguments.pl 
b/tp/t/results/linemacro/no_arguments.pl
index d663ed90b4..daeebd6a87 100644
--- a/tp/t/results/linemacro/no_arguments.pl
+++ b/tp/t/results/linemacro/no_arguments.pl
@@ -15,8 +15,9 @@ $result_trees{'no_arguments'} = {
             {
               'contents' => [
                 {
-                  'text' => 'noarg',
-                  'type' => 'macro_name'
+                  'text' => ' noarg
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'no_arguments'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'noarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' noarg
 '
diff --git a/tp/t/results/linemacro/paragraph_no_paragraph.pl 
b/tp/t/results/linemacro/paragraph_no_paragraph.pl
index f521516e28..38a16695c5 100644
--- a/tp/t/results/linemacro/paragraph_no_paragraph.pl
+++ b/tp/t/results/linemacro/paragraph_no_paragraph.pl
@@ -15,20 +15,9 @@ $result_trees{'paragraph_no_paragraph'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'paragraph_no_paragraph'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/linemacro/protected_spaces_on_line.pl 
b/tp/t/results/linemacro/protected_spaces_on_line.pl
index edcec4142b..94d0959197 100644
--- a/tp/t/results/linemacro/protected_spaces_on_line.pl
+++ b/tp/t/results/linemacro/protected_spaces_on_line.pl
@@ -15,16 +15,9 @@ $result_trees{'protected_spaces_on_line'} = {
             {
               'contents' => [
                 {
-                  'text' => 'test',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' test {first, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -75,6 +68,13 @@ $result_trees{'protected_spaces_on_line'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'test',
+            'misc_args' => [
+              'first',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' test {first, rest}
 '
diff --git a/tp/t/results/linemacro/protection_of_end_of_line_by_command.pl 
b/tp/t/results/linemacro/protection_of_end_of_line_by_command.pl
index 63bff5c19b..3cc35dafab 100644
--- a/tp/t/results/linemacro/protection_of_end_of_line_by_command.pl
+++ b/tp/t/results/linemacro/protection_of_end_of_line_by_command.pl
@@ -15,12 +15,9 @@ $result_trees{'protection_of_end_of_line_by_command'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'one',
-                  'type' => 'macro_arg'
+                  'text' => ' lm {one}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'protection_of_end_of_line_by_command'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lm',
+            'misc_args' => [
+              'one'
+            ]
+          },
           'info' => {
             'arg_line' => ' lm {one}
 '
diff --git a/tp/t/results/linemacro/recursive_linemacro_in_body.pl 
b/tp/t/results/linemacro/recursive_linemacro_in_body.pl
index 906eb0c902..addda88326 100644
--- a/tp/t/results/linemacro/recursive_linemacro_in_body.pl
+++ b/tp/t/results/linemacro/recursive_linemacro_in_body.pl
@@ -15,16 +15,9 @@ $result_trees{'recursive_linemacro_in_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'anorecurse',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'other',
-                  'type' => 'macro_arg'
+                  'text' => ' anorecurse {arg, other}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'recursive_linemacro_in_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'anorecurse',
+            'misc_args' => [
+              'arg',
+              'other'
+            ]
+          },
           'info' => {
             'arg_line' => ' anorecurse {arg, other}
 '
diff --git a/tp/t/results/linemacro/recursive_linemacro_in_call.pl 
b/tp/t/results/linemacro/recursive_linemacro_in_call.pl
index 14d197dfe9..6208d968c9 100644
--- a/tp/t/results/linemacro/recursive_linemacro_in_call.pl
+++ b/tp/t/results/linemacro/recursive_linemacro_in_call.pl
@@ -15,16 +15,9 @@ $result_trees{'recursive_linemacro_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'anorecurse',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'other',
-                  'type' => 'macro_arg'
+                  'text' => ' anorecurse {arg, other}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'recursive_linemacro_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'anorecurse',
+            'misc_args' => [
+              'arg',
+              'other'
+            ]
+          },
           'info' => {
             'arg_line' => ' anorecurse {arg, other}
 '
diff --git a/tp/t/results/linemacro/simple_nested_linemacro_calls.pl 
b/tp/t/results/linemacro/simple_nested_linemacro_calls.pl
index a67fcfb385..106719ec7d 100644
--- a/tp/t/results/linemacro/simple_nested_linemacro_calls.pl
+++ b/tp/t/results/linemacro/simple_nested_linemacro_calls.pl
@@ -43,20 +43,9 @@ $result_trees{'simple_nested_linemacro_calls'} = {
             {
               'contents' => [
                 {
-                  'text' => 'inside',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' inside {a, b, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -97,6 +86,14 @@ $result_trees{'simple_nested_linemacro_calls'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'inside',
+            'misc_args' => [
+              'a',
+              'b',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' inside {a, b, rest}
 '
@@ -116,20 +113,9 @@ $result_trees{'simple_nested_linemacro_calls'} = {
             {
               'contents' => [
                 {
-                  'text' => 'outside',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'one',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'two',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'three',
-                  'type' => 'macro_arg'
+                  'text' => ' outside {one, two, three}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -175,6 +161,14 @@ $result_trees{'simple_nested_linemacro_calls'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'outside',
+            'misc_args' => [
+              'one',
+              'two',
+              'three'
+            ]
+          },
           'info' => {
             'arg_line' => ' outside {one, two, three}
 '
diff --git a/tp/t/results/linemacro/spaces_after_command_in_call.pl 
b/tp/t/results/linemacro/spaces_after_command_in_call.pl
index 66cf693ffe..d1343e05f0 100644
--- a/tp/t/results/linemacro/spaces_after_command_in_call.pl
+++ b/tp/t/results/linemacro/spaces_after_command_in_call.pl
@@ -15,20 +15,9 @@ $result_trees{'spaces_after_command_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'spaces_after_command_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
diff --git 
a/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl 
b/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
index 3d703982f2..3425b0d095 100644
--- a/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
+++ b/tp/t/results/linemacro/spaces_after_macro_linemacro_commands_in_call.pl
@@ -15,20 +15,9 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
@@ -98,12 +95,9 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymac',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
+                  'text' => ' mymac {arg1}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -144,6 +138,12 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymac',
+            'misc_args' => [
+              'arg1'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymac {arg1}
 '
@@ -163,16 +163,9 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinemac',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'name',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinemac {name, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -213,6 +206,13 @@ 
$result_trees{'spaces_after_macro_linemacro_commands_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinemac',
+            'misc_args' => [
+              'name',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinemac {name, rest}
 '
diff --git a/tp/t/results/linemacro/spaces_after_unknown_command_in_call.pl 
b/tp/t/results/linemacro/spaces_after_unknown_command_in_call.pl
index dd86969320..77fefe61fb 100644
--- a/tp/t/results/linemacro/spaces_after_unknown_command_in_call.pl
+++ b/tp/t/results/linemacro/spaces_after_unknown_command_in_call.pl
@@ -15,20 +15,9 @@ $result_trees{'spaces_after_unknown_command_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'spaces_after_unknown_command_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
diff --git a/tp/t/results/linemacro/spaces_in_args.pl 
b/tp/t/results/linemacro/spaces_in_args.pl
index 90a37bfacc..7dc5a6bc8d 100644
--- a/tp/t/results/linemacro/spaces_in_args.pl
+++ b/tp/t/results/linemacro/spaces_in_args.pl
@@ -15,20 +15,9 @@ $result_trees{'spaces_in_args'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'spaces_in_args'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
diff --git a/tp/t/results/linemacro/spaces_in_call.pl 
b/tp/t/results/linemacro/spaces_in_call.pl
index a4868d5197..808b2d242c 100644
--- a/tp/t/results/linemacro/spaces_in_call.pl
+++ b/tp/t/results/linemacro/spaces_in_call.pl
@@ -15,20 +15,9 @@ $result_trees{'spaces_in_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mylinecommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'rest',
-                  'type' => 'macro_arg'
+                  'text' => ' mylinecommand {first, second, rest}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'spaces_in_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mylinecommand',
+            'misc_args' => [
+              'first',
+              'second',
+              'rest'
+            ]
+          },
           'info' => {
             'arg_line' => ' mylinecommand {first, second, rest}
 '
diff --git a/tp/t/results/linemacro/text_arguments.pl 
b/tp/t/results/linemacro/text_arguments.pl
index 0321ee1543..27ea93b247 100644
--- a/tp/t/results/linemacro/text_arguments.pl
+++ b/tp/t/results/linemacro/text_arguments.pl
@@ -15,20 +15,9 @@ $result_trees{'text_arguments'} = {
             {
               'contents' => [
                 {
-                  'text' => 'nospace',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'one',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'two',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'three',
-                  'type' => 'macro_arg'
+                  'text' => ' nospace{one, two, three}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'text_arguments'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'nospace',
+            'misc_args' => [
+              'one',
+              'two',
+              'three'
+            ]
+          },
           'info' => {
             'arg_line' => ' nospace{one, two, three}
 '
diff --git a/tp/t/results/linemacro/verb_in_linemacro_call.pl 
b/tp/t/results/linemacro/verb_in_linemacro_call.pl
index e80cb8ffd3..19b8d54ee5 100644
--- a/tp/t/results/linemacro/verb_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/verb_in_linemacro_call.pl
@@ -15,24 +15,9 @@ $result_trees{'verb_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'd',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c, d}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -88,6 +73,15 @@ $result_trees{'verb_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c',
+              'd'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c, d}
 '
diff --git a/tp/t/results/linemacro/verb_not_closed.pl 
b/tp/t/results/linemacro/verb_not_closed.pl
index 6226e75d19..583994f7f6 100644
--- a/tp/t/results/linemacro/verb_not_closed.pl
+++ b/tp/t/results/linemacro/verb_not_closed.pl
@@ -15,20 +15,9 @@ $result_trees{'verb_not_closed'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'verb_not_closed'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/linemacro/verb_with_arobase_in_linemacro_call.pl 
b/tp/t/results/linemacro/verb_with_arobase_in_linemacro_call.pl
index 6c650fad3a..fe0737ae23 100644
--- a/tp/t/results/linemacro/verb_with_arobase_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/verb_with_arobase_in_linemacro_call.pl
@@ -15,20 +15,9 @@ $result_trees{'verb_with_arobase_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'verb_with_arobase_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/linemacro/verb_with_brace_in_linemacro_call.pl 
b/tp/t/results/linemacro/verb_with_brace_in_linemacro_call.pl
index 872f321712..859e7ebb44 100644
--- a/tp/t/results/linemacro/verb_with_brace_in_linemacro_call.pl
+++ b/tp/t/results/linemacro/verb_with_brace_in_linemacro_call.pl
@@ -15,20 +15,9 @@ $result_trees{'verb_with_brace_in_linemacro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -69,6 +58,14 @@ $result_trees{'verb_with_brace_in_linemacro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/macro/arg_body_expansion_order.pl 
b/tp/t/results/macro/arg_body_expansion_order.pl
index 82646b5354..7a02c5c2cb 100644
--- a/tp/t/results/macro/arg_body_expansion_order.pl
+++ b/tp/t/results/macro/arg_body_expansion_order.pl
@@ -20,8 +20,9 @@ $result_trees{'arg_body_expansion_order'} = {
             {
               'contents' => [
                 {
-                  'text' => 'othermacro',
-                  'type' => 'macro_name'
+                  'text' => ' othermacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'arg_body_expansion_order'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'othermacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' othermacro
 '
@@ -81,12 +86,9 @@ $result_trees{'arg_body_expansion_order'} = {
             {
               'contents' => [
                 {
-                  'text' => 'redefineothermacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' redefineothermacro {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -147,6 +149,12 @@ $result_trees{'arg_body_expansion_order'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'redefineothermacro',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' redefineothermacro {arg}
 '
@@ -203,8 +211,9 @@ $result_trees{'arg_body_expansion_order'} = {
             {
               'contents' => [
                 {
-                  'text' => 'othermacro',
-                  'type' => 'macro_name'
+                  'text' => ' othermacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -246,6 +255,10 @@ $result_trees{'arg_body_expansion_order'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'othermacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' othermacro
 '
diff --git a/tp/t/results/macro/arg_not_closed.pl 
b/tp/t/results/macro/arg_not_closed.pl
index a7e4bf705d..d14a8599f7 100644
--- a/tp/t/results/macro/arg_not_closed.pl
+++ b/tp/t/results/macro/arg_not_closed.pl
@@ -15,12 +15,9 @@ $result_trees{'arg_not_closed'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' foo {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'arg_not_closed'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' foo {arg}
 '
diff --git a/tp/t/results/macro/arobase_brace_in_macro_call.pl 
b/tp/t/results/macro/arobase_brace_in_macro_call.pl
index b81edeb721..0c30a3b017 100644
--- a/tp/t/results/macro/arobase_brace_in_macro_call.pl
+++ b/tp/t/results/macro/arobase_brace_in_macro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'arobase_brace_in_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'simplemac',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' simplemac { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'arobase_brace_in_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'simplemac',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' simplemac { arg1 , arg2 }
 '
diff --git a/tp/t/results/macro/backslash_in_arg.pl 
b/tp/t/results/macro/backslash_in_arg.pl
index 5d2b54cd24..c26fa1a580 100644
--- a/tp/t/results/macro/backslash_in_arg.pl
+++ b/tp/t/results/macro/backslash_in_arg.pl
@@ -79,12 +79,9 @@ $result_trees{'backslash_in_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'funindex',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'TEXT',
-                  'type' => 'macro_arg'
+                  'text' => ' funindex {TEXT}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -125,6 +122,12 @@ $result_trees{'backslash_in_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'funindex',
+            'misc_args' => [
+              'TEXT'
+            ]
+          },
           'info' => {
             'arg_line' => ' funindex {TEXT}
 '
diff --git a/tp/t/results/macro/bad_argument.pl 
b/tp/t/results/macro/bad_argument.pl
index 17a3f3219a..f8ad34100e 100644
--- a/tp/t/results/macro/bad_argument.pl
+++ b/tp/t/results/macro/bad_argument.pl
@@ -13,6 +13,13 @@ $result_trees{'bad_argument'} = {
           'cmdname' => 'macro',
           'contents' => [
             {
+              'contents' => [
+                {
+                  'text' => '
+',
+                  'type' => 'macro_line'
+                }
+              ],
               'type' => 'argument'
             },
             {
@@ -73,8 +80,9 @@ $result_trees{'bad_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'abar',
-                  'type' => 'macro_name'
+                  'text' => ' abar aaa
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -116,7 +124,9 @@ $result_trees{'bad_argument'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'abar',
+            'misc_args' => []
           },
           'info' => {
             'arg_line' => ' abar aaa
@@ -137,12 +147,9 @@ $result_trees{'bad_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aftername',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'ggg',
-                  'type' => 'macro_arg'
+                  'text' => ' aftername {ggg} more  
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -184,7 +191,11 @@ $result_trees{'bad_argument'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'aftername',
+            'misc_args' => [
+              'ggg'
+            ]
           },
           'info' => {
             'arg_line' => ' aftername {ggg} more  
@@ -203,6 +214,13 @@ $result_trees{'bad_argument'} = {
           'cmdname' => 'macro',
           'contents' => [
             {
+              'contents' => [
+                {
+                  'text' => ' #badname
+',
+                  'type' => 'macro_line'
+                }
+              ],
               'type' => 'argument'
             },
             {
diff --git a/tp/t/results/macro/bad_formal_arg.pl 
b/tp/t/results/macro/bad_formal_arg.pl
index 0fc4d98ffb..097c179dc2 100644
--- a/tp/t/results/macro/bad_formal_arg.pl
+++ b/tp/t/results/macro/bad_formal_arg.pl
@@ -20,16 +20,9 @@ $result_trees{'bad_formal_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'bad',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => '',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'not_empty',
-                  'type' => 'macro_arg'
+                  'text' => ' bad  { , not_empty}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -71,7 +64,12 @@ $result_trees{'bad_formal_arg'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'bad',
+            'misc_args' => [
+              '',
+              'not_empty'
+            ]
           },
           'info' => {
             'arg_line' => ' bad  { , not_empty}
@@ -92,16 +90,9 @@ $result_trees{'bad_formal_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'badspace',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'in 2arg',
-                  'type' => 'macro_arg'
+                  'text' => ' badspace{first, in 2arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -143,7 +134,12 @@ $result_trees{'bad_formal_arg'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'badspace',
+            'misc_args' => [
+              'first',
+              'in 2arg'
+            ]
           },
           'info' => {
             'arg_line' => ' badspace{first, in 2arg}
@@ -164,12 +160,9 @@ $result_trees{'bad_formal_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'abar',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => ':::',
-                  'type' => 'macro_arg'
+                  'text' => ' abar {:::}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -226,7 +219,11 @@ $result_trees{'bad_formal_arg'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'abar',
+            'misc_args' => [
+              ':::'
+            ]
           },
           'info' => {
             'arg_line' => ' abar {:::}
diff --git a/tp/t/results/macro/bad_macro_name_with_underscore.pl 
b/tp/t/results/macro/bad_macro_name_with_underscore.pl
index 57a6be57b6..a435afc07f 100644
--- a/tp/t/results/macro/bad_macro_name_with_underscore.pl
+++ b/tp/t/results/macro/bad_macro_name_with_underscore.pl
@@ -15,16 +15,9 @@ $result_trees{'bad_macro_name_with_underscore'} = {
             {
               'contents' => [
                 {
-                  'text' => 'the_macro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' the_macro {arg1, arg2}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'bad_macro_name_with_underscore'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'the_macro',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' the_macro {arg1, arg2}
 '
diff --git a/tp/t/results/macro/bib_example.pl 
b/tp/t/results/macro/bib_example.pl
index b5fcc41da3..b041ae5d0c 100644
--- a/tp/t/results/macro/bib_example.pl
+++ b/tp/t/results/macro/bib_example.pl
@@ -1744,12 +1744,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibsetrefnode',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'node',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibsetrefnode{node}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -1791,6 +1788,12 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibsetrefnode',
+                'misc_args' => [
+                  'node'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibsetrefnode{node}
 '
@@ -1836,8 +1839,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibnode',
-                      'type' => 'macro_name'
+                      'text' => ' mybibnode{}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -1879,6 +1883,10 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibnode',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' mybibnode{}
 '
@@ -1924,12 +1932,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibusetable',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'node',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibusetable{node}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -1991,6 +1996,12 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibusetable',
+                'misc_args' => [
+                  'node'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibusetable{node}
 '
@@ -2036,12 +2047,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibuselist',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'node',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibuselist{node}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -2103,6 +2111,12 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibuselist',
+                'misc_args' => [
+                  'node'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibuselist{node}
 '
@@ -2143,12 +2157,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibcite',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'ref',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibcite{ref}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -2225,6 +2236,12 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibcite',
+                'misc_args' => [
+                  'ref'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibcite{ref}
 '
@@ -2245,16 +2262,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibmakeref',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'node',
-                      'type' => 'macro_arg'
-                    },
-                    {
-                      'text' => 'ref',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibmakeref{node, ref}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -2296,6 +2306,13 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibmakeref',
+                'misc_args' => [
+                  'node',
+                  'ref'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibmakeref{node, ref}
 '
@@ -2331,12 +2348,9 @@ $result_trees{'bib_example'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mybibitem',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'ref',
-                      'type' => 'macro_arg'
+                      'text' => ' mybibitem{ref}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -2443,6 +2457,12 @@ $result_trees{'bib_example'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mybibitem',
+                'misc_args' => [
+                  'ref'
+                ]
+              },
               'info' => {
                 'arg_line' => ' mybibitem{ref}
 '
diff --git a/tp/t/results/macro/bye_in_macro.pl 
b/tp/t/results/macro/bye_in_macro.pl
index 4342bf9134..a7049703bb 100644
--- a/tp/t/results/macro/bye_in_macro.pl
+++ b/tp/t/results/macro/bye_in_macro.pl
@@ -15,8 +15,9 @@ $result_trees{'bye_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'byeinmacro',
-                  'type' => 'macro_name'
+                  'text' => ' byeinmacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -72,6 +73,10 @@ $result_trees{'bye_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'byeinmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' byeinmacro
 '
diff --git 
a/tp/t/results/macro/closing_brace_in_macro_call_in_ignored_inline.pl 
b/tp/t/results/macro/closing_brace_in_macro_call_in_ignored_inline.pl
index 786e42592e..d63b9b4b25 100644
--- a/tp/t/results/macro/closing_brace_in_macro_call_in_ignored_inline.pl
+++ b/tp/t/results/macro/closing_brace_in_macro_call_in_ignored_inline.pl
@@ -15,8 +15,9 @@ 
$result_trees{'closing_brace_in_macro_call_in_ignored_inline'} = {
             {
               'contents' => [
                 {
-                  'text' => 'closebrace',
-                  'type' => 'macro_name'
+                  'text' => ' closebrace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ 
$result_trees{'closing_brace_in_macro_call_in_ignored_inline'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'closebrace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' closebrace
 '
diff --git a/tp/t/results/macro/complete_macro_for_end.pl 
b/tp/t/results/macro/complete_macro_for_end.pl
index 3d27133c9f..c3100dc55e 100644
--- a/tp/t/results/macro/complete_macro_for_end.pl
+++ b/tp/t/results/macro/complete_macro_for_end.pl
@@ -15,8 +15,9 @@ $result_trees{'complete_macro_for_end'} = {
             {
               'contents' => [
                 {
-                  'text' => 'theend',
-                  'type' => 'macro_name'
+                  'text' => ' theend
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'complete_macro_for_end'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'theend',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' theend
 '
diff --git a/tp/t/results/macro/complex_argument.pl 
b/tp/t/results/macro/complex_argument.pl
index d296eef48b..26132725de 100644
--- a/tp/t/results/macro/complex_argument.pl
+++ b/tp/t/results/macro/complex_argument.pl
@@ -15,12 +15,9 @@ $result_trees{'complex_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrotwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrotwo{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'complex_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrotwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrotwo{arg}
 '
@@ -80,8 +83,9 @@ $result_trees{'complex_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrofour',
-                  'type' => 'macro_name'
+                  'text' => ' macrofour {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -137,6 +141,10 @@ $result_trees{'complex_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrofour',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macrofour {}
 '
@@ -156,16 +164,9 @@ $result_trees{'complex_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrothree',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'text',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrothree{text, arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -211,6 +212,13 @@ $result_trees{'complex_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrothree',
+            'misc_args' => [
+              'text',
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrothree{text, arg}
 '
@@ -568,12 +576,9 @@ macroseven defined
             {
               'contents' => [
                 {
-                  'text' => 'macroseven',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'truc',
-                  'type' => 'macro_arg'
+                  'text' => ' macroseven {truc}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -615,6 +620,12 @@ macroseven defined
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroseven',
+            'misc_args' => [
+              'truc'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroseven {truc}
 '
diff --git a/tp/t/results/macro/cpp_directives_after_macros.pl 
b/tp/t/results/macro/cpp_directives_after_macros.pl
index f8584f1e7c..759da7c842 100644
--- a/tp/t/results/macro/cpp_directives_after_macros.pl
+++ b/tp/t/results/macro/cpp_directives_after_macros.pl
@@ -27,8 +27,9 @@ $result_trees{'cpp_directives_after_macros'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'noargsspaces',
-                      'type' => 'macro_name'
+                      'text' => ' noargsspaces
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -70,6 +71,10 @@ $result_trees{'cpp_directives_after_macros'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'noargsspaces',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' noargsspaces
 '
@@ -90,8 +95,9 @@ $result_trees{'cpp_directives_after_macros'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'emptyexpansion',
-                      'type' => 'macro_name'
+                      'text' => ' emptyexpansion
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -133,6 +139,10 @@ $result_trees{'cpp_directives_after_macros'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'emptyexpansion',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' emptyexpansion
 '
diff --git a/tp/t/results/macro/cpp_directives_in_macro.pl 
b/tp/t/results/macro/cpp_directives_in_macro.pl
index 8db20b949c..0fa05aa505 100644
--- a/tp/t/results/macro/cpp_directives_in_macro.pl
+++ b/tp/t/results/macro/cpp_directives_in_macro.pl
@@ -27,12 +27,9 @@ $result_trees{'cpp_directives_in_macro'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'simplemacro',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'out',
-                      'type' => 'macro_arg'
+                      'text' => ' simplemacro{out}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -74,6 +71,12 @@ $result_trees{'cpp_directives_in_macro'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'simplemacro',
+                'misc_args' => [
+                  'out'
+                ]
+              },
               'info' => {
                 'arg_line' => ' simplemacro{out}
 '
diff --git a/tp/t/results/macro/cpp_directives_line_value_macro.pl 
b/tp/t/results/macro/cpp_directives_line_value_macro.pl
index b639df1508..827df57107 100644
--- a/tp/t/results/macro/cpp_directives_line_value_macro.pl
+++ b/tp/t/results/macro/cpp_directives_line_value_macro.pl
@@ -27,8 +27,9 @@ $result_trees{'cpp_directives_line_value_macro'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'vvv',
-                      'type' => 'macro_name'
+                      'text' => ' vvv {}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -70,6 +71,10 @@ $result_trees{'cpp_directives_line_value_macro'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'vvv',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' vvv {}
 '
@@ -131,8 +136,9 @@ $result_trees{'cpp_directives_line_value_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'machash',
-                  'type' => 'macro_name'
+                  'text' => ' machash {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -174,6 +180,10 @@ $result_trees{'cpp_directives_line_value_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'machash',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' machash {}
 '
@@ -232,12 +242,9 @@ $result_trees{'cpp_directives_line_value_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'numberfileflag',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' numberfileflag {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -279,6 +286,12 @@ $result_trees{'cpp_directives_line_value_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'numberfileflag',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' numberfileflag {arg}
 '
diff --git a/tp/t/results/macro/definfoenclose_replaced_by_macro.pl 
b/tp/t/results/macro/definfoenclose_replaced_by_macro.pl
index 43ad78a492..7d8afbaa82 100644
--- a/tp/t/results/macro/definfoenclose_replaced_by_macro.pl
+++ b/tp/t/results/macro/definfoenclose_replaced_by_macro.pl
@@ -54,12 +54,9 @@ $result_trees{'definfoenclose_replaced_by_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phoo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phoo {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -100,6 +97,12 @@ $result_trees{'definfoenclose_replaced_by_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phoo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phoo {arg}
 '
diff --git a/tp/t/results/macro/double_macro_definition.pl 
b/tp/t/results/macro/double_macro_definition.pl
index 10ddbb44e6..df91823168 100644
--- a/tp/t/results/macro/double_macro_definition.pl
+++ b/tp/t/results/macro/double_macro_definition.pl
@@ -15,8 +15,9 @@ $result_trees{'double_macro_definition'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'double_macro_definition'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo
 '
@@ -71,8 +76,9 @@ $result_trees{'double_macro_definition'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -108,6 +114,10 @@ $result_trees{'double_macro_definition'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo
 '
diff --git a/tp/t/results/macro/double_recursive_macro_call.pl 
b/tp/t/results/macro/double_recursive_macro_call.pl
index b23a238d43..ebad5630dd 100644
--- a/tp/t/results/macro/double_recursive_macro_call.pl
+++ b/tp/t/results/macro/double_recursive_macro_call.pl
@@ -20,12 +20,9 @@ $result_trees{'double_recursive_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macone {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -66,6 +63,12 @@ $result_trees{'double_recursive_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macone',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macone {arg}
 '
@@ -85,12 +88,9 @@ $result_trees{'double_recursive_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mactwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mactwo{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -131,6 +131,12 @@ $result_trees{'double_recursive_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mactwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mactwo{arg}
 '
diff --git a/tp/t/results/macro/empty_end.pl b/tp/t/results/macro/empty_end.pl
index de64daa6c9..31530e7adf 100644
--- a/tp/t/results/macro/empty_end.pl
+++ b/tp/t/results/macro/empty_end.pl
@@ -15,12 +15,9 @@ $result_trees{'empty_end'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'aaa',
-                  'type' => 'macro_arg'
+                  'text' => ' foo {aaa, }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -55,6 +52,12 @@ $result_trees{'empty_end'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => [
+              'aaa'
+            ]
+          },
           'info' => {
             'arg_line' => ' foo {aaa, }
 '
diff --git a/tp/t/results/macro/empty_macro_argument.pl 
b/tp/t/results/macro/empty_macro_argument.pl
index 629574c5dc..9efd27493c 100644
--- a/tp/t/results/macro/empty_macro_argument.pl
+++ b/tp/t/results/macro/empty_macro_argument.pl
@@ -15,8 +15,9 @@ $result_trees{'empty_macro_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'empty_macro_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro{}
 '
@@ -203,12 +208,9 @@ $result_trees{'empty_macro_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mytwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mytwo{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -249,6 +251,12 @@ $result_trees{'empty_macro_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mytwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mytwo{arg}
 '
diff --git a/tp/t/results/macro/empty_macro_in_text_no_arg.pl 
b/tp/t/results/macro/empty_macro_in_text_no_arg.pl
index 027ac5d2d1..c644fd81bb 100644
--- a/tp/t/results/macro/empty_macro_in_text_no_arg.pl
+++ b/tp/t/results/macro/empty_macro_in_text_no_arg.pl
@@ -15,8 +15,9 @@ $result_trees{'empty_macro_in_text_no_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'texnl',
-                  'type' => 'macro_name'
+                  'text' => ' texnl{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'empty_macro_in_text_no_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'texnl',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' texnl{}
 '
@@ -109,8 +114,9 @@ $result_trees{'empty_macro_in_text_no_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'texnltwo',
-                  'type' => 'macro_name'
+                  'text' => ' texnltwo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -146,6 +152,10 @@ $result_trees{'empty_macro_in_text_no_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'texnltwo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' texnltwo
 '
diff --git a/tp/t/results/macro/empty_macro_no_arg.pl 
b/tp/t/results/macro/empty_macro_no_arg.pl
index 983b9a1b70..81f4084859 100644
--- a/tp/t/results/macro/empty_macro_no_arg.pl
+++ b/tp/t/results/macro/empty_macro_no_arg.pl
@@ -15,8 +15,9 @@ $result_trees{'empty_macro_no_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'empty_macro_no_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo
 '
diff --git a/tp/t/results/macro/expand_two_same.pl 
b/tp/t/results/macro/expand_two_same.pl
index 2be73a8d13..e9e1eefe1a 100644
--- a/tp/t/results/macro/expand_two_same.pl
+++ b/tp/t/results/macro/expand_two_same.pl
@@ -15,12 +15,9 @@ $result_trees{'expand_two_same'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrotwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrotwo { arg }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -66,6 +63,12 @@ $result_trees{'expand_two_same'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrotwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrotwo { arg }
 '
diff --git a/tp/t/results/macro/expansion_order.pl 
b/tp/t/results/macro/expansion_order.pl
index 072f8df888..d7417635cc 100644
--- a/tp/t/results/macro/expansion_order.pl
+++ b/tp/t/results/macro/expansion_order.pl
@@ -15,12 +15,9 @@ $result_trees{'expansion_order'} = {
             {
               'contents' => [
                 {
-                  'text' => 'bidule',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' bidule{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'expansion_order'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'bidule',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' bidule{arg}
 '
@@ -80,8 +83,9 @@ $result_trees{'expansion_order'} = {
             {
               'contents' => [
                 {
-                  'text' => 'machin',
-                  'type' => 'macro_name'
+                  'text' => ' machin
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -127,6 +131,10 @@ $result_trees{'expansion_order'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'machin',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' machin
 '
diff --git a/tp/t/results/macro/form_feeds.pl b/tp/t/results/macro/form_feeds.pl
index 20302bc296..61499ea617 100644
--- a/tp/t/results/macro/form_feeds.pl
+++ b/tp/t/results/macro/form_feeds.pl
@@ -15,16 +15,9 @@ $result_trees{'form_feeds'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro{a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'form_feeds'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro{a, b}
 '
@@ -84,12 +84,9 @@ $result_trees{'form_feeds'} = {
             {
               'contents' => [
                 {
-                  'text' => 'oneargmacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' oneargmacro{c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -130,6 +127,12 @@ $result_trees{'form_feeds'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'oneargmacro',
+            'misc_args' => [
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' oneargmacro{c}
 '
diff --git a/tp/t/results/macro/glossary.pl b/tp/t/results/macro/glossary.pl
index d3f0d3a53e..7c82c05b72 100644
--- a/tp/t/results/macro/glossary.pl
+++ b/tp/t/results/macro/glossary.pl
@@ -73,8 +73,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'glossarytext',
-                      'type' => 'macro_name'
+                      'text' => ' glossarytext
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -116,6 +117,10 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'glossarytext',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' glossarytext
 '
@@ -136,8 +141,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'glossary',
-                      'type' => 'macro_name'
+                      'text' => ' glossary
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -189,6 +195,10 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'glossary',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' glossary
 '
@@ -209,20 +219,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'gentry',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'id',
-                      'type' => 'macro_arg'
-                    },
-                    {
-                      'text' => 'name',
-                      'type' => 'macro_arg'
-                    },
-                    {
-                      'text' => 'text',
-                      'type' => 'macro_arg'
+                      'text' => ' gentry {id, name, text}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -344,6 +343,14 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'gentry',
+                'misc_args' => [
+                  'id',
+                  'name',
+                  'text'
+                ]
+              },
               'info' => {
                 'arg_line' => ' gentry {id, name, text}
 '
@@ -782,12 +789,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'expandglossary',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'glossary',
-                      'type' => 'macro_arg'
+                      'text' => ' expandglossary{glossary}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -855,6 +859,12 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'expandglossary',
+                'misc_args' => [
+                  'glossary'
+                ]
+              },
               'info' => {
                 'arg_line' => ' expandglossary{glossary}
 '
@@ -910,8 +920,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'glossarytext',
-                      'type' => 'macro_name'
+                      'text' => ' glossarytext
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -972,6 +983,10 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'glossarytext',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' glossarytext
 '
@@ -1236,12 +1251,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'expandglossary',
-                      'type' => 'macro_name'
-                    },
-                    {
-                      'text' => 'glossary',
-                      'type' => 'macro_arg'
+                      'text' => ' expandglossary{glossary}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -1309,6 +1321,12 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'expandglossary',
+                'misc_args' => [
+                  'glossary'
+                ]
+              },
               'info' => {
                 'arg_line' => ' expandglossary{glossary}
 '
@@ -1364,8 +1382,9 @@ $result_trees{'glossary'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'glossarytext',
-                      'type' => 'macro_name'
+                      'text' => ' glossarytext
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -1426,6 +1445,10 @@ $result_trees{'glossary'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'glossarytext',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' glossarytext
 '
diff --git a/tp/t/results/macro/ifclear_in_macro.pl 
b/tp/t/results/macro/ifclear_in_macro.pl
index e4fdba097b..030cc32d46 100644
--- a/tp/t/results/macro/ifclear_in_macro.pl
+++ b/tp/t/results/macro/ifclear_in_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'ifclear_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'note',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' note {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -71,6 +68,12 @@ $result_trees{'ifclear_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'note',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' note {arg}
 '
diff --git a/tp/t/results/macro/ifset_and_end_isef_in_macro.pl 
b/tp/t/results/macro/ifset_and_end_isef_in_macro.pl
index 6cae11cb59..c0419c73fc 100644
--- a/tp/t/results/macro/ifset_and_end_isef_in_macro.pl
+++ b/tp/t/results/macro/ifset_and_end_isef_in_macro.pl
@@ -15,8 +15,9 @@ $result_trees{'ifset_and_end_isef_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'beginifset',
-                  'type' => 'macro_name'
+                  'text' => ' beginifset {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'ifset_and_end_isef_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'beginifset',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' beginifset {}
 '
@@ -76,8 +81,9 @@ $result_trees{'ifset_and_end_isef_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'endifset',
-                  'type' => 'macro_name'
+                  'text' => ' endifset {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -118,6 +124,10 @@ $result_trees{'ifset_and_end_isef_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'endifset',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' endifset {}
 '
diff --git a/tp/t/results/macro/ifset_in_macro.pl 
b/tp/t/results/macro/ifset_in_macro.pl
index 9ad582d798..d877aa8106 100644
--- a/tp/t/results/macro/ifset_in_macro.pl
+++ b/tp/t/results/macro/ifset_in_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'ifset_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'note',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' note {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -71,6 +68,12 @@ $result_trees{'ifset_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'note',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' note {arg}
 '
diff --git a/tp/t/results/macro/ifset_in_macro_set.pl 
b/tp/t/results/macro/ifset_in_macro_set.pl
index 413353381f..7bc892018f 100644
--- a/tp/t/results/macro/ifset_in_macro_set.pl
+++ b/tp/t/results/macro/ifset_in_macro_set.pl
@@ -15,12 +15,9 @@ $result_trees{'ifset_in_macro_set'} = {
             {
               'contents' => [
                 {
-                  'text' => 'note',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' note {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -71,6 +68,12 @@ $result_trees{'ifset_in_macro_set'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'note',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' note {arg}
 '
diff --git a/tp/t/results/macro/ignored_macro_definition.pl 
b/tp/t/results/macro/ignored_macro_definition.pl
index 81238661ce..dc3c694095 100644
--- a/tp/t/results/macro/ignored_macro_definition.pl
+++ b/tp/t/results/macro/ignored_macro_definition.pl
@@ -15,8 +15,9 @@ $result_trees{'ignored_macro_definition'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'ignored_macro_definition'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro{}
 '
diff --git a/tp/t/results/macro/implicit_quoting_one_arg.pl 
b/tp/t/results/macro/implicit_quoting_one_arg.pl
index c913716657..ff17dddb48 100644
--- a/tp/t/results/macro/implicit_quoting_one_arg.pl
+++ b/tp/t/results/macro/implicit_quoting_one_arg.pl
@@ -20,12 +20,9 @@ $result_trees{'implicit_quoting_one_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'FIXAME',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
+                  'text' => ' FIXAME{a}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -66,6 +63,12 @@ $result_trees{'implicit_quoting_one_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'FIXAME',
+            'misc_args' => [
+              'a'
+            ]
+          },
           'info' => {
             'arg_line' => ' FIXAME{a}
 '
diff --git a/tp/t/results/macro/implicit_quoting_recursion.pl 
b/tp/t/results/macro/implicit_quoting_recursion.pl
index 9f6ec8b7c4..00b5a45905 100644
--- a/tp/t/results/macro/implicit_quoting_recursion.pl
+++ b/tp/t/results/macro/implicit_quoting_recursion.pl
@@ -15,16 +15,9 @@ $result_trees{'implicit_quoting_recursion'} = {
             {
               'contents' => [
                 {
-                  'text' => 'cat',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' cat{a,b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'implicit_quoting_recursion'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'cat',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' cat{a,b}
 '
diff --git a/tp/t/results/macro/include_after_empty_line_arg.pl 
b/tp/t/results/macro/include_after_empty_line_arg.pl
index 5af77aca5a..c9d99084dd 100644
--- a/tp/t/results/macro/include_after_empty_line_arg.pl
+++ b/tp/t/results/macro/include_after_empty_line_arg.pl
@@ -15,12 +15,9 @@ $result_trees{'include_after_empty_line_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'body',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro{body}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'include_after_empty_line_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'body'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro{body}
 '
diff --git a/tp/t/results/macro/leading_spaces_no_ignore.pl 
b/tp/t/results/macro/leading_spaces_no_ignore.pl
index dbc201c698..0af9be9ed6 100644
--- a/tp/t/results/macro/leading_spaces_no_ignore.pl
+++ b/tp/t/results/macro/leading_spaces_no_ignore.pl
@@ -15,8 +15,9 @@ $result_trees{'leading_spaces_no_ignore'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'leading_spaces_no_ignore'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro
 '
diff --git a/tp/t/results/macro/line_after_recursive_call.pl 
b/tp/t/results/macro/line_after_recursive_call.pl
index c0566ee341..36be4eed32 100644
--- a/tp/t/results/macro/line_after_recursive_call.pl
+++ b/tp/t/results/macro/line_after_recursive_call.pl
@@ -15,8 +15,9 @@ $result_trees{'line_after_recursive_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mac',
-                  'type' => 'macro_name'
+                  'text' => ' mac
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ $result_trees{'line_after_recursive_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mac',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mac
 '
diff --git a/tp/t/results/macro/line_end_accent_command_macro_call.pl 
b/tp/t/results/macro/line_end_accent_command_macro_call.pl
index faf3dcda77..16c092558b 100644
--- a/tp/t/results/macro/line_end_accent_command_macro_call.pl
+++ b/tp/t/results/macro/line_end_accent_command_macro_call.pl
@@ -15,8 +15,9 @@ $result_trees{'line_end_accent_command_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'expand',
-                  'type' => 'macro_name'
+                  'text' => ' expand {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'line_end_accent_command_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'expand',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' expand {}
 '
@@ -161,8 +166,9 @@ $result_trees{'line_end_accent_command_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'nospace',
-                  'type' => 'macro_name'
+                  'text' => ' nospace {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -203,6 +209,10 @@ $result_trees{'line_end_accent_command_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'nospace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' nospace {}
 '
diff --git a/tp/t/results/macro/macro_after_paragraph.pl 
b/tp/t/results/macro/macro_after_paragraph.pl
index 049d62b4b2..0118ccd101 100644
--- a/tp/t/results/macro/macro_after_paragraph.pl
+++ b/tp/t/results/macro/macro_after_paragraph.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_after_paragraph'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_after_paragraph'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro
 '
diff --git a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl 
b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
index b8ebf57f73..195a1b24ed 100644
--- a/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
+++ b/tp/t/results/macro/macro_alias_definfoenclose_defindex.pl
@@ -154,12 +154,9 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phooindex',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phooindex {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -200,6 +197,12 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phooindex',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phooindex {arg}
 '
@@ -540,12 +543,9 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phooindex',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phooindex {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -586,6 +586,12 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phooindex',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phooindex {arg}
 '
@@ -719,12 +725,9 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phooindex',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phooindex {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -765,6 +768,12 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phooindex',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phooindex {arg}
 '
@@ -1102,12 +1111,9 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phooindex',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phooindex {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1148,6 +1154,12 @@ $result_trees{'macro_alias_definfoenclose_defindex'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phooindex',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phooindex {arg}
 '
diff --git a/tp/t/results/macro/macro_before_specific_line_command_args.pl 
b/tp/t/results/macro/macro_before_specific_line_command_args.pl
index 60bdbed3be..243a39895b 100644
--- a/tp/t/results/macro/macro_before_specific_line_command_args.pl
+++ b/tp/t/results/macro/macro_before_specific_line_command_args.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_before_specific_line_command_args'} = {
             {
               'contents' => [
                 {
-                  'text' => 'cpfn',
-                  'type' => 'macro_name'
+                  'text' => ' cpfn
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_before_specific_line_command_args'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'cpfn',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' cpfn
 '
diff --git a/tp/t/results/macro/macro_call_empty_middle_arg.pl 
b/tp/t/results/macro/macro_call_empty_middle_arg.pl
index 71328e6fcb..4eb7f369f6 100644
--- a/tp/t/results/macro/macro_call_empty_middle_arg.pl
+++ b/tp/t/results/macro/macro_call_empty_middle_arg.pl
@@ -15,20 +15,9 @@ $result_trees{'macro_call_empty_middle_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'threea',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'aa',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'bb',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'cc',
-                  'type' => 'macro_arg'
+                  'text' => ' threea {aa, bb, cc}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -79,6 +68,14 @@ $result_trees{'macro_call_empty_middle_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'threea',
+            'misc_args' => [
+              'aa',
+              'bb',
+              'cc'
+            ]
+          },
           'info' => {
             'arg_line' => ' threea {aa, bb, cc}
 '
diff --git a/tp/t/results/macro/macro_call_empty_two_arg.pl 
b/tp/t/results/macro/macro_call_empty_two_arg.pl
index 736fc20d10..423ce945e2 100644
--- a/tp/t/results/macro/macro_call_empty_two_arg.pl
+++ b/tp/t/results/macro/macro_call_empty_two_arg.pl
@@ -15,16 +15,9 @@ $result_trees{'macro_call_empty_two_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'twoa',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'aa',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'bb',
-                  'type' => 'macro_arg'
+                  'text' => ' twoa {aa, bb}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'macro_call_empty_two_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'twoa',
+            'misc_args' => [
+              'aa',
+              'bb'
+            ]
+          },
           'info' => {
             'arg_line' => ' twoa {aa, bb}
 '
diff --git a/tp/t/results/macro/macro_call_in_ignored_inlinefmtifelse.pl 
b/tp/t/results/macro/macro_call_in_ignored_inlinefmtifelse.pl
index 01457fc8f5..f3ca4f9594 100644
--- a/tp/t/results/macro/macro_call_in_ignored_inlinefmtifelse.pl
+++ b/tp/t/results/macro/macro_call_in_ignored_inlinefmtifelse.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_call_in_ignored_inlinefmtifelse'} = {
             {
               'contents' => [
                 {
-                  'text' => 'commafmt',
-                  'type' => 'macro_name'
+                  'text' => ' commafmt
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_call_in_ignored_inlinefmtifelse'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'commafmt',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' commafmt
 '
diff --git a/tp/t/results/macro/macro_call_in_inlinefmtifelse_format.pl 
b/tp/t/results/macro/macro_call_in_inlinefmtifelse_format.pl
index db71367f05..7c98eaedb2 100644
--- a/tp/t/results/macro/macro_call_in_inlinefmtifelse_format.pl
+++ b/tp/t/results/macro/macro_call_in_inlinefmtifelse_format.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_call_in_inlinefmtifelse_format'} = {
             {
               'contents' => [
                 {
-                  'text' => 'inlinefirstarg',
-                  'type' => 'macro_name'
+                  'text' => ' inlinefirstarg
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_call_in_inlinefmtifelse_format'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'inlinefirstarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' inlinefirstarg
 '
diff --git a/tp/t/results/macro/macro_call_in_node_manual.pl 
b/tp/t/results/macro/macro_call_in_node_manual.pl
index e8b0021ed7..6d61b0a1e7 100644
--- a/tp/t/results/macro/macro_call_in_node_manual.pl
+++ b/tp/t/results/macro/macro_call_in_node_manual.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'openbrace',
-                  'type' => 'macro_name'
+                  'text' => ' openbrace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'openbrace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' openbrace
 '
@@ -76,8 +81,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'openbracetext',
-                  'type' => 'macro_name'
+                  'text' => ' openbracetext
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -118,6 +124,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'openbracetext',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' openbracetext
 '
@@ -137,8 +147,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'manualnameend',
-                  'type' => 'macro_name'
+                  'text' => ' manualnameend
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -179,6 +190,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'manualnameend',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' manualnameend
 '
@@ -198,8 +213,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'manualnameendbrace',
-                  'type' => 'macro_name'
+                  'text' => ' manualnameendbrace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -240,6 +256,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'manualnameendbrace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' manualnameendbrace
 '
@@ -259,8 +279,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'manualnameendbracespace',
-                  'type' => 'macro_name'
+                  'text' => ' manualnameendbracespace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -301,6 +322,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'manualnameendbracespace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' manualnameendbracespace
 '
@@ -320,8 +345,9 @@ $result_trees{'macro_call_in_node_manual'} = {
             {
               'contents' => [
                 {
-                  'text' => 'manualnameendbracespacetext',
-                  'type' => 'macro_name'
+                  'text' => ' manualnameendbracespacetext
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -362,6 +388,10 @@ $result_trees{'macro_call_in_node_manual'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'manualnameendbracespacetext',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' manualnameendbracespacetext
 '
diff --git a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmt.pl 
b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmt.pl
index 251e870d8e..b9c6f8dd7a 100644
--- a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmt.pl
+++ b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmt.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_end_call_in_ignored_inlinefmt'} = {
             {
               'contents' => [
                 {
-                  'text' => 'startfmt',
-                  'type' => 'macro_name'
+                  'text' => ' startfmt
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_end_call_in_ignored_inlinefmt'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'startfmt',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' startfmt
 '
diff --git a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse.pl 
b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse.pl
index abcbf1d12d..acd666c39d 100644
--- a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse.pl
+++ b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_end_call_in_ignored_inlinefmtifelse'} = {
             {
               'contents' => [
                 {
-                  'text' => 'inlinefirstfmt',
-                  'type' => 'macro_name'
+                  'text' => ' inlinefirstfmt
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_end_call_in_ignored_inlinefmtifelse'} = 
{
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'inlinefirstfmt',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' inlinefirstfmt
 '
diff --git 
a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse_else.pl 
b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse_else.pl
index 92cf1ce4f0..c2bd163a97 100644
--- a/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse_else.pl
+++ b/tp/t/results/macro/macro_end_call_in_ignored_inlinefmtifelse_else.pl
@@ -15,8 +15,9 @@ 
$result_trees{'macro_end_call_in_ignored_inlinefmtifelse_else'} = {
             {
               'contents' => [
                 {
-                  'text' => 'endcallinignoredinlineelse',
-                  'type' => 'macro_name'
+                  'text' => ' endcallinignoredinlineelse
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ 
$result_trees{'macro_end_call_in_ignored_inlinefmtifelse_else'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'endcallinignoredinlineelse',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' endcallinignoredinlineelse
 '
diff --git a/tp/t/results/macro/macro_end_call_in_ignored_inlineraw.pl 
b/tp/t/results/macro/macro_end_call_in_ignored_inlineraw.pl
index 6597d836cb..ea5418ba78 100644
--- a/tp/t/results/macro/macro_end_call_in_ignored_inlineraw.pl
+++ b/tp/t/results/macro/macro_end_call_in_ignored_inlineraw.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_end_call_in_ignored_inlineraw'} = {
             {
               'contents' => [
                 {
-                  'text' => 'startraw',
-                  'type' => 'macro_name'
+                  'text' => ' startraw
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_end_call_in_ignored_inlineraw'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'startraw',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' startraw
 '
diff --git a/tp/t/results/macro/macro_end_call_in_ignored_raw.pl 
b/tp/t/results/macro/macro_end_call_in_ignored_raw.pl
index 9f78a91e2b..baa8996ee7 100644
--- a/tp/t/results/macro/macro_end_call_in_ignored_raw.pl
+++ b/tp/t/results/macro/macro_end_call_in_ignored_raw.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_end_call_in_ignored_raw'} = {
             {
               'contents' => [
                 {
-                  'text' => 'startraw',
-                  'type' => 'macro_name'
+                  'text' => ' startraw
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_end_call_in_ignored_raw'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'startraw',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' startraw
 '
diff --git a/tp/t/results/macro/macro_expands_to_empty.pl 
b/tp/t/results/macro/macro_expands_to_empty.pl
index 77d2c2053d..cb6fbdf298 100644
--- a/tp/t/results/macro/macro_expands_to_empty.pl
+++ b/tp/t/results/macro/macro_expands_to_empty.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_expands_to_empty'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' foo {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_expands_to_empty'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' foo {arg}
 '
diff --git a/tp/t/results/macro/macro_expansion.pl 
b/tp/t/results/macro/macro_expansion.pl
index 2ac85a8174..0f5957f622 100644
--- a/tp/t/results/macro/macro_expansion.pl
+++ b/tp/t/results/macro/macro_expansion.pl
@@ -20,16 +20,9 @@ $result_trees{'macro_expansion'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone {arg1, arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -85,6 +78,13 @@ $result_trees{'macro_expansion'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone {arg1, arg2 }
 '
diff --git a/tp/t/results/macro/macro_expansion_end_in_conditional_end.pl 
b/tp/t/results/macro/macro_expansion_end_in_conditional_end.pl
index e7699bd303..9088eb1556 100644
--- a/tp/t/results/macro/macro_expansion_end_in_conditional_end.pl
+++ b/tp/t/results/macro/macro_expansion_end_in_conditional_end.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_expansion_end_in_conditional_end'} = {
             {
               'contents' => [
                 {
-                  'text' => 'beginendcond',
-                  'type' => 'macro_name'
+                  'text' => ' beginendcond
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ $result_trees{'macro_expansion_end_in_conditional_end'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'beginendcond',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' beginendcond
 '
diff --git a/tp/t/results/macro/macro_expansion_end_in_conditional_line.pl 
b/tp/t/results/macro/macro_expansion_end_in_conditional_line.pl
index 8095d8d0df..fb47af0772 100644
--- a/tp/t/results/macro/macro_expansion_end_in_conditional_line.pl
+++ b/tp/t/results/macro/macro_expansion_end_in_conditional_line.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_expansion_end_in_conditional_line'} = {
             {
               'contents' => [
                 {
-                  'text' => 'begincond',
-                  'type' => 'macro_name'
+                  'text' => ' begincond
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_expansion_end_in_conditional_line'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'begincond',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' begincond
 '
diff --git a/tp/t/results/macro/macro_expansion_end_in_ignored_ifset_content.pl 
b/tp/t/results/macro/macro_expansion_end_in_ignored_ifset_content.pl
index 1ffb5efe35..781da94052 100644
--- a/tp/t/results/macro/macro_expansion_end_in_ignored_ifset_content.pl
+++ b/tp/t/results/macro/macro_expansion_end_in_ignored_ifset_content.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_expansion_end_in_ignored_ifset_content'} 
= {
             {
               'contents' => [
                 {
-                  'text' => 'beginifsetcontent',
-                  'type' => 'macro_name'
+                  'text' => ' beginifsetcontent
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ 
$result_trees{'macro_expansion_end_in_ignored_ifset_content'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'beginifsetcontent',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' beginifsetcontent
 '
diff --git 
a/tp/t/results/macro/macro_expansion_end_in_ignored_nested_conditional.pl 
b/tp/t/results/macro/macro_expansion_end_in_ignored_nested_conditional.pl
index 96bfa51d53..1e2dfa60ba 100644
--- a/tp/t/results/macro/macro_expansion_end_in_ignored_nested_conditional.pl
+++ b/tp/t/results/macro/macro_expansion_end_in_ignored_nested_conditional.pl
@@ -15,8 +15,9 @@ 
$result_trees{'macro_expansion_end_in_ignored_nested_conditional'} = {
             {
               'contents' => [
                 {
-                  'text' => 'beginnestedcond',
-                  'type' => 'macro_name'
+                  'text' => ' beginnestedcond
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ 
$result_trees{'macro_expansion_end_in_ignored_nested_conditional'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'beginnestedcond',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' beginnestedcond
 '
diff --git 
a/tp/t/results/macro/macro_expansion_end_in_ignored_nested_different_conditional.pl
 
b/tp/t/results/macro/macro_expansion_end_in_ignored_nested_different_conditional.pl
index 3ba5a31641..0eee3da488 100644
--- 
a/tp/t/results/macro/macro_expansion_end_in_ignored_nested_different_conditional.pl
+++ 
b/tp/t/results/macro/macro_expansion_end_in_ignored_nested_different_conditional.pl
@@ -15,8 +15,9 @@ 
$result_trees{'macro_expansion_end_in_ignored_nested_different_conditional'} = {
             {
               'contents' => [
                 {
-                  'text' => 'beginnestedcond',
-                  'type' => 'macro_name'
+                  'text' => ' beginnestedcond
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ 
$result_trees{'macro_expansion_end_in_ignored_nested_different_conditional'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'beginnestedcond',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' beginnestedcond
 '
diff --git a/tp/t/results/macro/macro_expansion_in_multitable_prototype.pl 
b/tp/t/results/macro/macro_expansion_in_multitable_prototype.pl
index 215a3dea2f..9c44674123 100644
--- a/tp/t/results/macro/macro_expansion_in_multitable_prototype.pl
+++ b/tp/t/results/macro/macro_expansion_in_multitable_prototype.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_expansion_in_multitable_prototype'} = {
             {
               'contents' => [
                 {
-                  'text' => 'simple',
-                  'type' => 'macro_name'
+                  'text' => ' simple
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_expansion_in_multitable_prototype'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'simple',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' simple
 '
@@ -76,12 +81,9 @@ $result_trees{'macro_expansion_in_multitable_prototype'} = {
             {
               'contents' => [
                 {
-                  'text' => 'endbrace',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' endbrace {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -122,6 +124,12 @@ $result_trees{'macro_expansion_in_multitable_prototype'} = 
{
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'endbrace',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' endbrace {arg}
 '
diff --git a/tp/t/results/macro/macro_for_dot_in_menu_not_separator.pl 
b/tp/t/results/macro/macro_for_dot_in_menu_not_separator.pl
index e63920afe0..18228853f3 100644
--- a/tp/t/results/macro/macro_for_dot_in_menu_not_separator.pl
+++ b/tp/t/results/macro/macro_for_dot_in_menu_not_separator.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_for_dot_in_menu_not_separator'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrodot',
-                  'type' => 'macro_name'
+                  'text' => ' macrodot
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_for_dot_in_menu_not_separator'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrodot',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macrodot
 '
diff --git a/tp/t/results/macro/macro_for_end.pl 
b/tp/t/results/macro/macro_for_end.pl
index 410d3d8712..e7398ec9b8 100644
--- a/tp/t/results/macro/macro_for_end.pl
+++ b/tp/t/results/macro/macro_for_end.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_for_end'} = {
             {
               'contents' => [
                 {
-                  'text' => 'myend',
-                  'type' => 'macro_name'
+                  'text' => ' myend
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_for_end'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'myend',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' myend
 '
diff --git a/tp/t/results/macro/macro_for_ignored_line_command.pl 
b/tp/t/results/macro/macro_for_ignored_line_command.pl
index 93e125718a..879bc2e3b7 100644
--- a/tp/t/results/macro/macro_for_ignored_line_command.pl
+++ b/tp/t/results/macro/macro_for_ignored_line_command.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_for_ignored_line_command'} = {
             {
               'contents' => [
                 {
-                  'text' => 'pagemacro',
-                  'type' => 'macro_name'
+                  'text' => ' pagemacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_for_ignored_line_command'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'pagemacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' pagemacro
 '
diff --git a/tp/t/results/macro/macro_for_verb.pl 
b/tp/t/results/macro/macro_for_verb.pl
index 93bd9df65a..66ea45df3f 100644
--- a/tp/t/results/macro/macro_for_verb.pl
+++ b/tp/t/results/macro/macro_for_verb.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_for_verb'} = {
             {
               'contents' => [
                 {
-                  'text' => 'verbopen',
-                  'type' => 'macro_name'
+                  'text' => ' verbopen {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_for_verb'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'verbopen',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' verbopen {}
 '
diff --git a/tp/t/results/macro/macro_imbricated_with_beginning_command_name.pl 
b/tp/t/results/macro/macro_imbricated_with_beginning_command_name.pl
index 2a4e0be247..3a61ea95d6 100644
--- a/tp/t/results/macro/macro_imbricated_with_beginning_command_name.pl
+++ b/tp/t/results/macro/macro_imbricated_with_beginning_command_name.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_imbricated_with_beginning_command_name'} 
= {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ 
$result_trees{'macro_imbricated_with_beginning_command_name'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo
 '
diff --git a/tp/t/results/macro/macro_in_accent.pl 
b/tp/t/results/macro/macro_in_accent.pl
index bf69323528..2154108231 100644
--- a/tp/t/results/macro/macro_in_accent.pl
+++ b/tp/t/results/macro/macro_in_accent.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_accent'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aletter',
-                  'type' => 'macro_name'
+                  'text' => ' aletter
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_accent'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aletter',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' aletter
 '
@@ -76,8 +81,9 @@ $result_trees{'macro_in_accent'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aspace',
-                  'type' => 'macro_name'
+                  'text' => ' aspace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -118,6 +124,10 @@ $result_trees{'macro_in_accent'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aspace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' aspace
 '
diff --git a/tp/t/results/macro/macro_in_brace_command.pl 
b/tp/t/results/macro/macro_in_brace_command.pl
index 1a8618a1c2..ebbc45eb62 100644
--- a/tp/t/results/macro/macro_in_brace_command.pl
+++ b/tp/t/results/macro/macro_in_brace_command.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_brace_command'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_brace_command'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo
 '
@@ -76,8 +81,9 @@ $result_trees{'macro_in_brace_command'} = {
             {
               'contents' => [
                 {
-                  'text' => 'abar',
-                  'type' => 'macro_name'
+                  'text' => ' abar
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -118,6 +124,10 @@ $result_trees{'macro_in_brace_command'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'abar',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' abar
 '
diff --git a/tp/t/results/macro/macro_in_def_delimiters.pl 
b/tp/t/results/macro/macro_in_def_delimiters.pl
index 7977776eca..51a91c2f61 100644
--- a/tp/t/results/macro/macro_in_def_delimiters.pl
+++ b/tp/t/results/macro/macro_in_def_delimiters.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_def_delimiters'} = {
             {
               'contents' => [
                 {
-                  'text' => 'string',
-                  'type' => 'macro_name'
+                  'text' => ' string
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_def_delimiters'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'string',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' string
 '
diff --git a/tp/t/results/macro/macro_in_empty_menu_comment.pl 
b/tp/t/results/macro/macro_in_empty_menu_comment.pl
index 73c8c35a72..7d5f8c5c9a 100644
--- a/tp/t/results/macro/macro_in_empty_menu_comment.pl
+++ b/tp/t/results/macro/macro_in_empty_menu_comment.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_empty_menu_comment'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptystring',
-                  'type' => 'macro_name'
+                  'text' => ' emptystring
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_empty_menu_comment'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptystring',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptystring
 '
diff --git a/tp/t/results/macro/macro_in_empty_multitable_empty_before_item.pl 
b/tp/t/results/macro/macro_in_empty_multitable_empty_before_item.pl
index 5cbe1cc46f..b9d7202dc6 100644
--- a/tp/t/results/macro/macro_in_empty_multitable_empty_before_item.pl
+++ b/tp/t/results/macro/macro_in_empty_multitable_empty_before_item.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_empty_multitable_empty_before_item'} 
= {
             {
               'contents' => [
                 {
-                  'text' => 'emptymacro',
-                  'type' => 'macro_name'
+                  'text' => ' emptymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'macro_in_empty_multitable_empty_before_item'} 
= {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptymacro
 '
diff --git a/tp/t/results/macro/macro_in_empty_table_empty_before_item.pl 
b/tp/t/results/macro/macro_in_empty_table_empty_before_item.pl
index 878131dd3b..fc5d6bfb62 100644
--- a/tp/t/results/macro/macro_in_empty_table_empty_before_item.pl
+++ b/tp/t/results/macro/macro_in_empty_table_empty_before_item.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_empty_table_empty_before_item'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptymacro',
-                  'type' => 'macro_name'
+                  'text' => ' emptymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'macro_in_empty_table_empty_before_item'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptymacro
 '
diff --git a/tp/t/results/macro/macro_in_empty_text.pl 
b/tp/t/results/macro/macro_in_empty_text.pl
index 02807d84cf..2e2ffabc6b 100644
--- a/tp/t/results/macro/macro_in_empty_text.pl
+++ b/tp/t/results/macro/macro_in_empty_text.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_empty_text'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptystring',
-                  'type' => 'macro_name'
+                  'text' => ' emptystring
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_empty_text'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptystring',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptystring
 '
diff --git a/tp/t/results/macro/macro_in_end_argument.pl 
b/tp/t/results/macro/macro_in_end_argument.pl
index d282b7a164..c81728ae00 100644
--- a/tp/t/results/macro/macro_in_end_argument.pl
+++ b/tp/t/results/macro/macro_in_end_argument.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_end_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'acartouche',
-                  'type' => 'macro_name'
+                  'text' => ' acartouche
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_end_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'acartouche',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' acartouche
 '
diff --git a/tp/t/results/macro/macro_in_ifset.pl 
b/tp/t/results/macro/macro_in_ifset.pl
index b1c2ce8375..a5fdcaae3b 100644
--- a/tp/t/results/macro/macro_in_ifset.pl
+++ b/tp/t/results/macro/macro_in_ifset.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_in_ifset'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_in_ifset'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone {arg}
 '
diff --git a/tp/t/results/macro/macro_in_ifset_end_in_arg.pl 
b/tp/t/results/macro/macro_in_ifset_end_in_arg.pl
index 5ce9b7e111..c4185ae8f9 100644
--- a/tp/t/results/macro/macro_in_ifset_end_in_arg.pl
+++ b/tp/t/results/macro/macro_in_ifset_end_in_arg.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_in_ifset_end_in_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_in_ifset_end_in_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone {arg}
 '
diff --git a/tp/t/results/macro/macro_in_index_commands.pl 
b/tp/t/results/macro/macro_in_index_commands.pl
index 3502adf5a6..8909083186 100644
--- a/tp/t/results/macro/macro_in_index_commands.pl
+++ b/tp/t/results/macro/macro_in_index_commands.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'cp',
-                  'type' => 'macro_name'
+                  'text' => ' cp
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'cp',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' cp
 '
@@ -71,8 +76,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'fn',
-                  'type' => 'macro_name'
+                  'text' => ' fn 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -113,6 +119,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'fn',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' fn 
 '
@@ -127,8 +137,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'syncodeindexcommand',
-                  'type' => 'macro_name'
+                  'text' => ' syncodeindexcommand 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -169,6 +180,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'syncodeindexcommand',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' syncodeindexcommand 
 '
@@ -335,8 +350,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -377,6 +393,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc 
 '
@@ -473,8 +493,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'trucindexcommand',
-                  'type' => 'macro_name'
+                  'text' => ' trucindexcommand 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -515,6 +536,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'trucindexcommand',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' trucindexcommand 
 '
@@ -534,8 +559,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'codeidx',
-                  'type' => 'macro_name'
+                  'text' => ' codeidx 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -576,6 +602,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'codeidx',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' codeidx 
 '
@@ -659,8 +689,9 @@ $result_trees{'macro_in_index_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'defcodeindexentry',
-                  'type' => 'macro_name'
+                  'text' => ' defcodeindexentry 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -701,6 +732,10 @@ $result_trees{'macro_in_index_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'defcodeindexentry',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' defcodeindexentry 
 '
diff --git a/tp/t/results/macro/macro_in_invalid_documentencoding.pl 
b/tp/t/results/macro/macro_in_invalid_documentencoding.pl
index 344a2ced30..8c41f56223 100644
--- a/tp/t/results/macro/macro_in_invalid_documentencoding.pl
+++ b/tp/t/results/macro/macro_in_invalid_documentencoding.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_invalid_documentencoding'} = {
             {
               'contents' => [
                 {
-                  'text' => 'badmacro',
-                  'type' => 'macro_name'
+                  'text' => ' badmacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_invalid_documentencoding'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'badmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' badmacro
 '
diff --git a/tp/t/results/macro/macro_in_macro_arg.pl 
b/tp/t/results/macro/macro_in_macro_arg.pl
index 460c2d39dc..865a5accf2 100644
--- a/tp/t/results/macro/macro_in_macro_arg.pl
+++ b/tp/t/results/macro/macro_in_macro_arg.pl
@@ -20,8 +20,9 @@ $result_trees{'macro_in_macro_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
+                  'text' => ' macroone
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_in_macro_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macroone
 '
@@ -81,12 +86,9 @@ $result_trees{'macro_in_macro_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrotwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrotwo{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -127,6 +129,12 @@ $result_trees{'macro_in_macro_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrotwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrotwo{arg}
 '
@@ -146,16 +154,9 @@ $result_trees{'macro_in_macro_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrothree',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'text',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrothree{text, arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -201,6 +202,13 @@ $result_trees{'macro_in_macro_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrothree',
+            'misc_args' => [
+              'text',
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrothree{text, arg}
 '
diff --git a/tp/t/results/macro/macro_in_macro_arg_simpler.pl 
b/tp/t/results/macro/macro_in_macro_arg_simpler.pl
index c91aca85fe..f94aacdeb5 100644
--- a/tp/t/results/macro/macro_in_macro_arg_simpler.pl
+++ b/tp/t/results/macro/macro_in_macro_arg_simpler.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_macro_arg_simpler'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrooneone',
-                  'type' => 'macro_name'
+                  'text' => ' macrooneone
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_macro_arg_simpler'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrooneone',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macrooneone
 '
@@ -76,16 +81,9 @@ $result_trees{'macro_in_macro_arg_simpler'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrothree',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'text',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrothree{text, arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -131,6 +129,13 @@ $result_trees{'macro_in_macro_arg_simpler'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrothree',
+            'misc_args' => [
+              'text',
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrothree{text, arg}
 '
diff --git a/tp/t/results/macro/macro_in_menu.pl 
b/tp/t/results/macro/macro_in_menu.pl
index 7559bd0987..e275ac993d 100644
--- a/tp/t/results/macro/macro_in_menu.pl
+++ b/tp/t/results/macro/macro_in_menu.pl
@@ -20,8 +20,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'astar',
-                  'type' => 'macro_name'
+                  'text' => ' astar
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'astar',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' astar
 '
@@ -81,8 +86,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'starspaces',
-                  'type' => 'macro_name'
+                  'text' => ' starspaces
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -123,6 +129,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'starspaces',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' starspaces
 '
@@ -142,8 +152,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'spaces',
-                  'type' => 'macro_name'
+                  'text' => ' spaces
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -184,6 +195,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'spaces',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' spaces
 '
@@ -203,8 +218,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aspace',
-                  'type' => 'macro_name'
+                  'text' => ' aspace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -245,6 +261,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aspace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' aspace
 '
@@ -264,8 +284,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'twocolon',
-                  'type' => 'macro_name'
+                  'text' => ' twocolon
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -306,6 +327,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'twocolon',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' twocolon
 '
@@ -325,8 +350,9 @@ $result_trees{'macro_in_menu'} = {
             {
               'contents' => [
                 {
-                  'text' => 'acolon',
-                  'type' => 'macro_name'
+                  'text' => ' acolon
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -367,6 +393,10 @@ $result_trees{'macro_in_menu'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'acolon',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' acolon
 '
diff --git a/tp/t/results/macro/macro_in_menu_comment_closed_by_detailmenu.pl 
b/tp/t/results/macro/macro_in_menu_comment_closed_by_detailmenu.pl
index 18f35ccaeb..a435056244 100644
--- a/tp/t/results/macro/macro_in_menu_comment_closed_by_detailmenu.pl
+++ b/tp/t/results/macro/macro_in_menu_comment_closed_by_detailmenu.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_menu_comment_closed_by_detailmenu'} = 
{
             {
               'contents' => [
                 {
-                  'text' => 'emptystring',
-                  'type' => 'macro_name'
+                  'text' => ' emptystring
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_menu_comment_closed_by_detailmenu'} 
= {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptystring',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptystring
 '
diff --git a/tp/t/results/macro/macro_in_menu_comment_like_entry.pl 
b/tp/t/results/macro/macro_in_menu_comment_like_entry.pl
index ca16f15f99..f7ce7fe7d1 100644
--- a/tp/t/results/macro/macro_in_menu_comment_like_entry.pl
+++ b/tp/t/results/macro/macro_in_menu_comment_like_entry.pl
@@ -20,8 +20,9 @@ $result_trees{'macro_in_menu_comment_like_entry'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptystring',
-                  'type' => 'macro_name'
+                  'text' => ' emptystring
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'macro_in_menu_comment_like_entry'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptystring',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptystring
 '
diff --git a/tp/t/results/macro/macro_in_menu_description.pl 
b/tp/t/results/macro/macro_in_menu_description.pl
index a7904b8c46..b478e6339d 100644
--- a/tp/t/results/macro/macro_in_menu_description.pl
+++ b/tp/t/results/macro/macro_in_menu_description.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_menu_description'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptystring',
-                  'type' => 'macro_name'
+                  'text' => ' emptystring
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_menu_description'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptystring',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptystring
 '
diff --git a/tp/t/results/macro/macro_in_misc_commands.pl 
b/tp/t/results/macro/macro_in_misc_commands.pl
index c0258412cd..83c4d6b86f 100644
--- a/tp/t/results/macro/macro_in_misc_commands.pl
+++ b/tp/t/results/macro/macro_in_misc_commands.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'text',
-                  'type' => 'macro_name'
+                  'text' => ' text 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'text',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' text 
 '
@@ -76,8 +81,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'Top',
-                  'type' => 'macro_name'
+                  'text' => ' Top
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -118,6 +124,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'Top',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' Top
 '
@@ -341,8 +351,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'en',
-                  'type' => 'macro_name'
+                  'text' => ' en 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -383,6 +394,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'en',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' en 
 '
@@ -397,8 +412,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'documentlanguagecommand',
-                  'type' => 'macro_name'
+                  'text' => ' documentlanguagecommand 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -439,6 +455,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'documentlanguagecommand',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' documentlanguagecommand 
 '
@@ -603,8 +623,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'pagesizesarg',
-                  'type' => 'macro_name'
+                  'text' => ' pagesizesarg
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -645,6 +666,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'pagesizesarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' pagesizesarg
 '
@@ -664,8 +689,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'afourpapermacro',
-                  'type' => 'macro_name'
+                  'text' => ' afourpapermacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -706,6 +732,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'afourpapermacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' afourpapermacro 
 '
@@ -978,8 +1008,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'needarg',
-                  'type' => 'macro_name'
+                  'text' => ' needarg
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1020,6 +1051,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'needarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' needarg
 '
@@ -1103,8 +1138,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'raisesectionsmacro',
-                  'type' => 'macro_name'
+                  'text' => ' raisesectionsmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1145,6 +1181,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'raisesectionsmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' raisesectionsmacro 
 '
@@ -1192,8 +1232,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'lowersectionsmacro',
-                  'type' => 'macro_name'
+                  'text' => ' lowersectionsmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1234,6 +1275,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'lowersectionsmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' lowersectionsmacro 
 '
@@ -1374,8 +1419,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'definfoenclosename',
-                  'type' => 'macro_name'
+                  'text' => ' definfoenclosename 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1416,6 +1462,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'definfoenclosename',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' definfoenclosename 
 '
@@ -1534,8 +1584,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'strongmacro',
-                  'type' => 'macro_name'
+                  'text' => ' strongmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1576,6 +1627,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'strongmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' strongmacro 
 '
@@ -1590,8 +1645,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'strongname',
-                  'type' => 'macro_name'
+                  'text' => ' strongname 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1632,6 +1688,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'strongname',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' strongname 
 '
@@ -1900,8 +1960,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'kbdinputstylearg',
-                  'type' => 'macro_name'
+                  'text' => ' kbdinputstylearg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -1942,6 +2003,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'kbdinputstylearg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' kbdinputstylearg 
 '
@@ -2138,8 +2203,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'asisarg',
-                  'type' => 'macro_name'
+                  'text' => ' asisarg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2180,6 +2246,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'asisarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' asisarg 
 '
@@ -2194,8 +2264,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'zero',
-                  'type' => 'macro_name'
+                  'text' => ' zero 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2236,6 +2307,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'zero',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' zero 
 '
@@ -2250,8 +2325,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'nonearg',
-                  'type' => 'macro_name'
+                  'text' => ' nonearg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2292,6 +2368,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'nonearg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' nonearg 
 '
@@ -2306,8 +2386,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'four',
-                  'type' => 'macro_name'
+                  'text' => ' four 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2348,6 +2429,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'four',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' four 
 '
@@ -2362,8 +2447,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'six',
-                  'type' => 'macro_name'
+                  'text' => ' six 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2404,6 +2490,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'six',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' six 
 '
@@ -2782,8 +2872,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'endarg',
-                  'type' => 'macro_name'
+                  'text' => ' endarg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2824,6 +2915,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'endarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' endarg 
 '
@@ -2838,8 +2933,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'separatearg',
-                  'type' => 'macro_name'
+                  'text' => ' separatearg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -2880,6 +2976,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'separatearg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' separatearg 
 '
@@ -3017,8 +3117,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'onarg',
-                  'type' => 'macro_name'
+                  'text' => ' onarg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3059,6 +3160,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'onarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' onarg 
 '
@@ -3073,8 +3178,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'offarg',
-                  'type' => 'macro_name'
+                  'text' => ' offarg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3115,6 +3221,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'offarg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' offarg 
 '
@@ -3262,8 +3372,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'ten',
-                  'type' => 'macro_name'
+                  'text' => ' ten 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3304,6 +3415,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'ten',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' ten 
 '
@@ -3387,8 +3502,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'falsearg',
-                  'type' => 'macro_name'
+                  'text' => ' falsearg 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3429,6 +3545,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'falsearg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' falsearg 
 '
@@ -3443,8 +3563,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truearg',
-                  'type' => 'macro_name'
+                  'text' => ' truearg
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3485,6 +3606,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truearg',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truearg
 '
@@ -3627,8 +3752,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'pagemacro',
-                  'type' => 'macro_name'
+                  'text' => ' pagemacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3669,6 +3795,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'pagemacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' pagemacro 
 '
@@ -3683,8 +3813,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'noindentmacro',
-                  'type' => 'macro_name'
+                  'text' => ' noindentmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3725,6 +3856,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'noindentmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' noindentmacro 
 '
@@ -3739,8 +3874,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'refillmacro',
-                  'type' => 'macro_name'
+                  'text' => ' refillmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -3781,6 +3917,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'refillmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' refillmacro 
 '
@@ -4299,8 +4439,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'contentsmacro',
-                  'type' => 'macro_name'
+                  'text' => ' contentsmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -4341,6 +4482,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'contentsmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' contentsmacro 
 '
@@ -4413,8 +4558,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'exdentmacro',
-                  'type' => 'macro_name'
+                  'text' => ' exdentmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -4455,6 +4601,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'exdentmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' exdentmacro 
 '
@@ -4527,8 +4677,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'two',
-                  'type' => 'macro_name'
+                  'text' => ' two 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -4569,6 +4720,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'two',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' two 
 '
@@ -4647,8 +4802,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'resultmacro',
-                  'type' => 'macro_name'
+                  'text' => ' resultmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -4689,6 +4845,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'resultmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' resultmacro 
 '
@@ -5002,8 +5162,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'shortcontentsmacro',
-                  'type' => 'macro_name'
+                  'text' => ' shortcontentsmacro 
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -5044,6 +5205,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'shortcontentsmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' shortcontentsmacro 
 '
@@ -5101,8 +5266,9 @@ $result_trees{'macro_in_misc_commands'} = {
             {
               'contents' => [
                 {
-                  'text' => 'byemacro',
-                  'type' => 'macro_name'
+                  'text' => ' byemacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -5143,6 +5309,10 @@ $result_trees{'macro_in_misc_commands'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'byemacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' byemacro
 '
diff --git a/tp/t/results/macro/macro_in_multitable_empty_before_item.pl 
b/tp/t/results/macro/macro_in_multitable_empty_before_item.pl
index 308683d096..ebd8988d10 100644
--- a/tp/t/results/macro/macro_in_multitable_empty_before_item.pl
+++ b/tp/t/results/macro/macro_in_multitable_empty_before_item.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_multitable_empty_before_item'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptymacro',
-                  'type' => 'macro_name'
+                  'text' => ' emptymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'macro_in_multitable_empty_before_item'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptymacro
 '
diff --git a/tp/t/results/macro/macro_in_table_empty_before_item.pl 
b/tp/t/results/macro/macro_in_table_empty_before_item.pl
index ba396a1904..9f3c84113f 100644
--- a/tp/t/results/macro/macro_in_table_empty_before_item.pl
+++ b/tp/t/results/macro/macro_in_table_empty_before_item.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_table_empty_before_item'} = {
             {
               'contents' => [
                 {
-                  'text' => 'emptymacro',
-                  'type' => 'macro_name'
+                  'text' => ' emptymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'macro_in_table_empty_before_item'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'emptymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' emptymacro
 '
diff --git a/tp/t/results/macro/macro_inlineifcond_end_in_empty_ignored.pl 
b/tp/t/results/macro/macro_inlineifcond_end_in_empty_ignored.pl
index 2d5d3b05ad..fd98329484 100644
--- a/tp/t/results/macro/macro_inlineifcond_end_in_empty_ignored.pl
+++ b/tp/t/results/macro/macro_inlineifcond_end_in_empty_ignored.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_inlineifcond_end_in_empty_ignored'} = {
             {
               'contents' => [
                 {
-                  'text' => 'setargendignored',
-                  'type' => 'macro_name'
+                  'text' => ' setargendignored
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_inlineifcond_end_in_empty_ignored'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'setargendignored',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' setargendignored
 '
diff --git a/tp/t/results/macro/macro_inlineifcond_end_in_empty_set.pl 
b/tp/t/results/macro/macro_inlineifcond_end_in_empty_set.pl
index f6f48a4bc9..7b59628bb5 100644
--- a/tp/t/results/macro/macro_inlineifcond_end_in_empty_set.pl
+++ b/tp/t/results/macro/macro_inlineifcond_end_in_empty_set.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_inlineifcond_end_in_empty_set'} = {
             {
               'contents' => [
                 {
-                  'text' => 'clearargendignored',
-                  'type' => 'macro_name'
+                  'text' => ' clearargendignored
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_inlineifcond_end_in_empty_set'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'clearargendignored',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' clearargendignored
 '
diff --git a/tp/t/results/macro/macro_name_with_digit.pl 
b/tp/t/results/macro/macro_name_with_digit.pl
index 84c2b6f87c..5ddf35274f 100644
--- a/tp/t/results/macro/macro_name_with_digit.pl
+++ b/tp/t/results/macro/macro_name_with_digit.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_name_with_digit'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macro1',
-                  'type' => 'macro_name'
+                  'text' => ' macro1
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_name_with_digit'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macro1',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' macro1
 '
@@ -76,12 +81,9 @@ $result_trees{'macro_name_with_digit'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macro11',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macro11 {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -122,6 +124,12 @@ $result_trees{'macro_name_with_digit'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macro11',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macro11 {arg}
 '
diff --git a/tp/t/results/macro/macro_name_with_hyphen.pl 
b/tp/t/results/macro/macro_name_with_hyphen.pl
index 35fc199b44..4bd2781922 100644
--- a/tp/t/results/macro/macro_name_with_hyphen.pl
+++ b/tp/t/results/macro/macro_name_with_hyphen.pl
@@ -15,16 +15,9 @@ $result_trees{'macro_name_with_hyphen'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macro-one',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg-one',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macro-one {arg-one, arg2}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'macro_name_with_hyphen'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macro-one',
+            'misc_args' => [
+              'arg-one',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macro-one {arg-one, arg2}
 '
diff --git a/tp/t/results/macro/macro_name_zero.pl 
b/tp/t/results/macro/macro_name_zero.pl
index 3b22b73bb4..e438977dea 100644
--- a/tp/t/results/macro/macro_name_zero.pl
+++ b/tp/t/results/macro/macro_name_zero.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_name_zero'} = {
             {
               'contents' => [
                 {
-                  'text' => '0',
-                  'type' => 'macro_name'
+                  'text' => ' 0
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_name_zero'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => '0',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' 0
 '
diff --git a/tp/t/results/macro/macro_no_arg_bad_expansion.pl 
b/tp/t/results/macro/macro_no_arg_bad_expansion.pl
index a1226ce9e4..66610a7662 100644
--- a/tp/t/results/macro/macro_no_arg_bad_expansion.pl
+++ b/tp/t/results/macro/macro_no_arg_bad_expansion.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_no_arg_bad_expansion'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testone',
-                  'type' => 'macro_name'
+                  'text' => ' testone
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_no_arg_bad_expansion'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'testone',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' testone
 '
diff --git a/tp/t/results/macro/macro_no_arg_expansion.pl 
b/tp/t/results/macro/macro_no_arg_expansion.pl
index c1b8dc971a..657474d6bf 100644
--- a/tp/t/results/macro/macro_no_arg_expansion.pl
+++ b/tp/t/results/macro/macro_no_arg_expansion.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_no_arg_expansion'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testone',
-                  'type' => 'macro_name'
+                  'text' => ' testone
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_no_arg_expansion'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'testone',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' testone
 '
diff --git a/tp/t/results/macro/macro_no_argument.pl 
b/tp/t/results/macro/macro_no_argument.pl
index 55fcb1b93f..9ca920785c 100644
--- a/tp/t/results/macro/macro_no_argument.pl
+++ b/tp/t/results/macro/macro_no_argument.pl
@@ -13,6 +13,12 @@ $result_trees{'macro_no_argument'} = {
           'cmdname' => 'macro',
           'contents' => [
             {
+              'contents' => [
+                {
+                  'text' => '',
+                  'type' => 'macro_line'
+                }
+              ],
               'type' => 'argument'
             }
           ],
diff --git a/tp/t/results/macro/macro_not_closed.pl 
b/tp/t/results/macro/macro_not_closed.pl
index 7bb497000b..676d3fb2d9 100644
--- a/tp/t/results/macro/macro_not_closed.pl
+++ b/tp/t/results/macro/macro_not_closed.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_not_closed'} = {
             {
               'contents' => [
                 {
-                  'text' => 'name',
-                  'type' => 'macro_name'
+                  'text' => ' name
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -27,6 +28,10 @@ $result_trees{'macro_not_closed'} = {
               'type' => 'raw'
             }
           ],
+          'extra' => {
+            'macro_name' => 'name',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' name
 '
diff --git a/tp/t/results/macro/macro_one_arg_end_of_file.pl 
b/tp/t/results/macro/macro_one_arg_end_of_file.pl
index b3dc0256f4..e10b2d29d5 100644
--- a/tp/t/results/macro/macro_one_arg_end_of_file.pl
+++ b/tp/t/results/macro/macro_one_arg_end_of_file.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_one_arg_end_of_file'} = {
             {
               'contents' => [
                 {
-                  'text' => 'onearg',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' onearg{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_one_arg_end_of_file'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'onearg',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' onearg{arg}
 '
diff --git a/tp/t/results/macro/macro_replaced_by_definfoenclose.pl 
b/tp/t/results/macro/macro_replaced_by_definfoenclose.pl
index 7fadb68c0d..196a65dab9 100644
--- a/tp/t/results/macro/macro_replaced_by_definfoenclose.pl
+++ b/tp/t/results/macro/macro_replaced_by_definfoenclose.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_replaced_by_definfoenclose'} = {
             {
               'contents' => [
                 {
-                  'text' => 'phoo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' phoo {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_replaced_by_definfoenclose'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'phoo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' phoo {arg}
 '
diff --git a/tp/t/results/macro/macro_with_error_at_end_line_after_macro.pl 
b/tp/t/results/macro/macro_with_error_at_end_line_after_macro.pl
index 416cea815f..4a15ff98cc 100644
--- a/tp/t/results/macro/macro_with_error_at_end_line_after_macro.pl
+++ b/tp/t/results/macro/macro_with_error_at_end_line_after_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'macro_with_error_at_end_line_after_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'witherror',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'string',
-                  'type' => 'macro_arg'
+                  'text' => ' witherror{string}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'macro_with_error_at_end_line_after_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'witherror',
+            'misc_args' => [
+              'string'
+            ]
+          },
           'info' => {
             'arg_line' => ' witherror{string}
 '
diff --git a/tp/t/results/macro/macro_zero.pl b/tp/t/results/macro/macro_zero.pl
index ed4c037459..473adfb37b 100644
--- a/tp/t/results/macro/macro_zero.pl
+++ b/tp/t/results/macro/macro_zero.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_zero'} = {
             {
               'contents' => [
                 {
-                  'text' => 'zero',
-                  'type' => 'macro_name'
+                  'text' => ' zero
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'macro_zero'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'zero',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' zero
 '
diff --git a/tp/t/results/macro/nested_macro_call.pl 
b/tp/t/results/macro/nested_macro_call.pl
index 899a46ed21..feed6c4654 100644
--- a/tp/t/results/macro/nested_macro_call.pl
+++ b/tp/t/results/macro/nested_macro_call.pl
@@ -15,8 +15,9 @@ $result_trees{'nested_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'machin',
-                  'type' => 'macro_name'
+                  'text' => ' machin{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'nested_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'machin',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' machin{}
 '
@@ -76,8 +81,9 @@ $result_trees{'nested_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -123,6 +129,10 @@ $result_trees{'nested_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc{}
 '
diff --git a/tp/t/results/macro/no_macrobody.pl 
b/tp/t/results/macro/no_macrobody.pl
index c788ab43e3..bb85fededa 100644
--- a/tp/t/results/macro/no_macrobody.pl
+++ b/tp/t/results/macro/no_macrobody.pl
@@ -15,12 +15,9 @@ $result_trees{'no_macrobody'} = {
             {
               'contents' => [
                 {
-                  'text' => 'nomacrobody',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' nomacrobody {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -56,6 +53,12 @@ $result_trees{'no_macrobody'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'nomacrobody',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' nomacrobody {arg}
 '
diff --git a/tp/t/results/macro/non_ascii_in_macro_name.pl 
b/tp/t/results/macro/non_ascii_in_macro_name.pl
index 1634478fc7..79e2e0f14c 100644
--- a/tp/t/results/macro/non_ascii_in_macro_name.pl
+++ b/tp/t/results/macro/non_ascii_in_macro_name.pl
@@ -13,6 +13,13 @@ $result_trees{'non_ascii_in_macro_name'} = {
           'cmdname' => 'macro',
           'contents' => [
             {
+              'contents' => [
+                {
+                  'text' => " parenbr\x{e8}ve {a}
+",
+                  'type' => 'macro_line'
+                }
+              ],
               'type' => 'argument'
             },
             {
diff --git a/tp/t/results/macro/paragraph_and_macro.pl 
b/tp/t/results/macro/paragraph_and_macro.pl
index 02ca7ec694..68f89d97ae 100644
--- a/tp/t/results/macro/paragraph_and_macro.pl
+++ b/tp/t/results/macro/paragraph_and_macro.pl
@@ -15,8 +15,9 @@ $result_trees{'paragraph_and_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aempty',
-                  'type' => 'macro_name'
+                  'text' => ' aempty
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -52,6 +53,10 @@ $result_trees{'paragraph_and_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aempty',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' aempty
 '
@@ -71,8 +76,9 @@ $result_trees{'paragraph_and_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'aspace',
-                  'type' => 'macro_name'
+                  'text' => ' aspace
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -113,6 +119,10 @@ $result_trees{'paragraph_and_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aspace',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' aspace
 '
@@ -132,8 +142,9 @@ $result_trees{'paragraph_and_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'word',
-                  'type' => 'macro_name'
+                  'text' => ' word
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -174,6 +185,10 @@ $result_trees{'paragraph_and_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'word',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' word
 '
diff --git a/tp/t/results/macro/protect_comma_macro_line.pl 
b/tp/t/results/macro/protect_comma_macro_line.pl
index cdb10eac94..9f853ea615 100644
--- a/tp/t/results/macro/protect_comma_macro_line.pl
+++ b/tp/t/results/macro/protect_comma_macro_line.pl
@@ -15,12 +15,9 @@ $result_trees{'protect_comma_macro_line'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macrotwo',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' macrotwo { arg }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -76,6 +73,12 @@ $result_trees{'protect_comma_macro_line'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macrotwo',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' macrotwo { arg }
 '
diff --git a/tp/t/results/macro/protect_in_body.pl 
b/tp/t/results/macro/protect_in_body.pl
index ab0d40f105..e74a6fe381 100644
--- a/tp/t/results/macro/protect_in_body.pl
+++ b/tp/t/results/macro/protect_in_body.pl
@@ -15,16 +15,9 @@ $result_trees{'protect_in_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'protect_in_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone { arg1 , arg2 }
 '
diff --git a/tp/t/results/macro/protect_in_body_line_arg.pl 
b/tp/t/results/macro/protect_in_body_line_arg.pl
index 41712e7880..3bd60d7c1f 100644
--- a/tp/t/results/macro/protect_in_body_line_arg.pl
+++ b/tp/t/results/macro/protect_in_body_line_arg.pl
@@ -15,16 +15,9 @@ $result_trees{'protect_in_body_line_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'protect_in_body_line_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone { arg1 , arg2 }
 '
diff --git a/tp/t/results/macro/protect_in_body_one_arg.pl 
b/tp/t/results/macro/protect_in_body_one_arg.pl
index da8a052ca8..a1cd85ca17 100644
--- a/tp/t/results/macro/protect_in_body_one_arg.pl
+++ b/tp/t/results/macro/protect_in_body_one_arg.pl
@@ -15,16 +15,9 @@ $result_trees{'protect_in_body_one_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macroone',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macroone { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -65,6 +58,13 @@ $result_trees{'protect_in_body_one_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macroone',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macroone { arg1 , arg2 }
 '
diff --git a/tp/t/results/macro/recursive_call_in_argument.pl 
b/tp/t/results/macro/recursive_call_in_argument.pl
index 3b14e4c219..355beb5962 100644
--- a/tp/t/results/macro/recursive_call_in_argument.pl
+++ b/tp/t/results/macro/recursive_call_in_argument.pl
@@ -15,12 +15,9 @@ $result_trees{'recursive_call_in_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'anorecurse',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' anorecurse{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'recursive_call_in_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'anorecurse',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' anorecurse{arg}
 '
diff --git a/tp/t/results/macro/recursive_call_in_macro.pl 
b/tp/t/results/macro/recursive_call_in_macro.pl
index 2ddb309a39..ee68d14b71 100644
--- a/tp/t/results/macro/recursive_call_in_macro.pl
+++ b/tp/t/results/macro/recursive_call_in_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'recursive_call_in_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'anorecurse',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' anorecurse{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'recursive_call_in_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'anorecurse',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' anorecurse{arg}
 '
diff --git a/tp/t/results/macro/recursive_call_in_rmacro.pl 
b/tp/t/results/macro/recursive_call_in_rmacro.pl
index a1c7fa2daa..798db8db1c 100644
--- a/tp/t/results/macro/recursive_call_in_rmacro.pl
+++ b/tp/t/results/macro/recursive_call_in_rmacro.pl
@@ -20,8 +20,9 @@ $result_trees{'recursive_call_in_rmacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'rec',
-                  'type' => 'macro_name'
+                  'text' => ' rec
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'recursive_call_in_rmacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'rec',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' rec
 '
diff --git a/tp/t/results/macro/redefine_texinfo_macro.pl 
b/tp/t/results/macro/redefine_texinfo_macro.pl
index 09dd4a270a..2de836644e 100644
--- a/tp/t/results/macro/redefine_texinfo_macro.pl
+++ b/tp/t/results/macro/redefine_texinfo_macro.pl
@@ -15,12 +15,9 @@ $result_trees{'redefine_texinfo_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'code',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' code{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'redefine_texinfo_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'code',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' code{arg}
 '
diff --git a/tp/t/results/macro/simple_imbricated_macro.pl 
b/tp/t/results/macro/simple_imbricated_macro.pl
index 92e585a3cb..f6fc881531 100644
--- a/tp/t/results/macro/simple_imbricated_macro.pl
+++ b/tp/t/results/macro/simple_imbricated_macro.pl
@@ -15,8 +15,9 @@ $result_trees{'simple_imbricated_macro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -72,6 +73,10 @@ $result_trees{'simple_imbricated_macro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc {}
 '
@@ -115,8 +120,9 @@ $result_trees{'simple_imbricated_macro'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'bidule',
-                      'type' => 'macro_name'
+                      'text' => ' bidule {}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -166,6 +172,10 @@ $result_trees{'simple_imbricated_macro'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'bidule',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' bidule {}
 '
diff --git a/tp/t/results/macro/simple_imbricated_macro_rmacro.pl 
b/tp/t/results/macro/simple_imbricated_macro_rmacro.pl
index b0ba964789..b7f7779d00 100644
--- a/tp/t/results/macro/simple_imbricated_macro_rmacro.pl
+++ b/tp/t/results/macro/simple_imbricated_macro_rmacro.pl
@@ -15,8 +15,9 @@ $result_trees{'simple_imbricated_macro_rmacro'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
+                  'text' => ' truc {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -72,6 +73,10 @@ $result_trees{'simple_imbricated_macro_rmacro'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' truc {}
 '
@@ -115,8 +120,9 @@ $result_trees{'simple_imbricated_macro_rmacro'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'bidule',
-                      'type' => 'macro_name'
+                      'text' => ' bidule {}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -166,6 +172,10 @@ $result_trees{'simple_imbricated_macro_rmacro'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'bidule',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' bidule {}
 '
diff --git a/tp/t/results/macro/space_macro_after_end.pl 
b/tp/t/results/macro/space_macro_after_end.pl
index 3fa5e95968..89f4984135 100644
--- a/tp/t/results/macro/space_macro_after_end.pl
+++ b/tp/t/results/macro/space_macro_after_end.pl
@@ -15,8 +15,9 @@ $result_trees{'space_macro_after_end'} = {
             {
               'contents' => [
                 {
-                  'text' => 'spaces',
-                  'type' => 'macro_name'
+                  'text' => ' spaces
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'space_macro_after_end'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'spaces',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' spaces
 '
diff --git a/tp/t/results/macro/space_macro_after_end_verbatim.pl 
b/tp/t/results/macro/space_macro_after_end_verbatim.pl
index d6cc52bbe1..82abaa7ca9 100644
--- a/tp/t/results/macro/space_macro_after_end_verbatim.pl
+++ b/tp/t/results/macro/space_macro_after_end_verbatim.pl
@@ -15,8 +15,9 @@ $result_trees{'space_macro_after_end_verbatim'} = {
             {
               'contents' => [
                 {
-                  'text' => 'spaces',
-                  'type' => 'macro_name'
+                  'text' => ' spaces
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'space_macro_after_end_verbatim'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'spaces',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' spaces
 '
diff --git a/tp/t/results/macro/text_before_after.pl 
b/tp/t/results/macro/text_before_after.pl
index c505521945..76da124749 100644
--- a/tp/t/results/macro/text_before_after.pl
+++ b/tp/t/results/macro/text_before_after.pl
@@ -20,8 +20,9 @@ $result_trees{'text_before_after'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'mymacro',
-                      'type' => 'macro_name'
+                      'text' => ' mymacro
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -62,6 +63,10 @@ $result_trees{'text_before_after'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'mymacro',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' mymacro
 '
diff --git a/tp/t/results/macro/too_much_args.pl 
b/tp/t/results/macro/too_much_args.pl
index 77b3bf997c..36e379a231 100644
--- a/tp/t/results/macro/too_much_args.pl
+++ b/tp/t/results/macro/too_much_args.pl
@@ -15,16 +15,9 @@ $result_trees{'too_much_args'} = {
             {
               'contents' => [
                 {
-                  'text' => 'twoargs',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'first',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'second',
-                  'type' => 'macro_arg'
+                  'text' => ' twoargs {first, second}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'too_much_args'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'twoargs',
+            'misc_args' => [
+              'first',
+              'second'
+            ]
+          },
           'info' => {
             'arg_line' => ' twoargs {first, second}
 '
diff --git a/tp/t/results/macro/two_macros_on_a_line.pl 
b/tp/t/results/macro/two_macros_on_a_line.pl
index f78c5f2c66..d71cd00551 100644
--- a/tp/t/results/macro/two_macros_on_a_line.pl
+++ b/tp/t/results/macro/two_macros_on_a_line.pl
@@ -15,8 +15,9 @@ $result_trees{'two_macros_on_a_line'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'two_macros_on_a_line'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro
 '
@@ -76,12 +81,9 @@ $result_trees{'two_macros_on_a_line'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacrowithargs',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacrowithargs{arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -132,6 +134,12 @@ $result_trees{'two_macros_on_a_line'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacrowithargs',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacrowithargs{arg}
 '
diff --git a/tp/t/results/macro/unpaired_backslash_in_macro_body.pl 
b/tp/t/results/macro/unpaired_backslash_in_macro_body.pl
index 1dae4c40aa..8c784c5ed0 100644
--- a/tp/t/results/macro/unpaired_backslash_in_macro_body.pl
+++ b/tp/t/results/macro/unpaired_backslash_in_macro_body.pl
@@ -15,12 +15,9 @@ $result_trees{'unpaired_backslash_in_macro_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' mymacro {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -66,6 +63,12 @@ $result_trees{'unpaired_backslash_in_macro_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' mymacro {arg}
 '
diff --git a/tp/t/results/macro/verb_with_arobase_in_macro_call.pl 
b/tp/t/results/macro/verb_with_arobase_in_macro_call.pl
index 9d050565f8..8bb5f3f40e 100644
--- a/tp/t/results/macro/verb_with_arobase_in_macro_call.pl
+++ b/tp/t/results/macro/verb_with_arobase_in_macro_call.pl
@@ -15,16 +15,9 @@ $result_trees{'verb_with_arobase_in_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'showarg',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
+                  'text' => ' showarg {a, b}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -70,6 +63,13 @@ $result_trees{'verb_with_arobase_in_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'showarg',
+            'misc_args' => [
+              'a',
+              'b'
+            ]
+          },
           'info' => {
             'arg_line' => ' showarg {a, b}
 '
diff --git a/tp/t/results/macro/verb_with_brace_in_macro_call.pl 
b/tp/t/results/macro/verb_with_brace_in_macro_call.pl
index 3d6f9b32cb..3a58bdba81 100644
--- a/tp/t/results/macro/verb_with_brace_in_macro_call.pl
+++ b/tp/t/results/macro/verb_with_brace_in_macro_call.pl
@@ -20,20 +20,9 @@ $result_trees{'verb_with_brace_in_macro_call'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mycommand',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'a',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'c',
-                  'type' => 'macro_arg'
+                  'text' => ' mycommand {a, b, c}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -74,6 +63,14 @@ $result_trees{'verb_with_brace_in_macro_call'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mycommand',
+            'misc_args' => [
+              'a',
+              'b',
+              'c'
+            ]
+          },
           'info' => {
             'arg_line' => ' mycommand {a, b, c}
 '
diff --git a/tp/t/results/macro/zero_argument.pl 
b/tp/t/results/macro/zero_argument.pl
index 6b36f0ae3f..409198cc52 100644
--- a/tp/t/results/macro/zero_argument.pl
+++ b/tp/t/results/macro/zero_argument.pl
@@ -15,8 +15,9 @@ $result_trees{'zero_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'zero_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo {}
 '
@@ -76,8 +81,9 @@ $result_trees{'zero_argument'} = {
             {
               'contents' => [
                 {
-                  'text' => 'abar',
-                  'type' => 'macro_name'
+                  'text' => ' abar
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -112,6 +118,10 @@ $result_trees{'zero_argument'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'abar',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' abar
 '
diff --git a/tp/t/results/macro/zero_argument_comment.pl 
b/tp/t/results/macro/zero_argument_comment.pl
index 64acb967f6..9bf3b6e2c2 100644
--- a/tp/t/results/macro/zero_argument_comment.pl
+++ b/tp/t/results/macro/zero_argument_comment.pl
@@ -15,8 +15,9 @@ $result_trees{'zero_argument_comment'} = {
             {
               'contents' => [
                 {
-                  'text' => 'foo',
-                  'type' => 'macro_name'
+                  'text' => ' foo {}@c foo c
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'zero_argument_comment'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'foo',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' foo {}@c foo c
 '
@@ -76,8 +81,9 @@ $result_trees{'zero_argument_comment'} = {
             {
               'contents' => [
                 {
-                  'text' => 'abar',
-                  'type' => 'macro_name'
+                  'text' => ' abar@comment bar comment
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -112,6 +118,10 @@ $result_trees{'zero_argument_comment'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'abar',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' abar@comment bar comment
 '
diff --git 
a/tp/t/results/misc_commands/codequoteundirected_codequotebacktick.pl 
b/tp/t/results/misc_commands/codequoteundirected_codequotebacktick.pl
index 9bcfdb6bc1..d679a504e8 100644
--- a/tp/t/results/misc_commands/codequoteundirected_codequotebacktick.pl
+++ b/tp/t/results/misc_commands/codequoteundirected_codequotebacktick.pl
@@ -17,8 +17,9 @@ $result_trees{'codequoteundirected_codequotebacktick'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'quotes',
-                      'type' => 'macro_name'
+                      'text' => ' quotes
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -84,6 +85,10 @@ $result_trees{'codequoteundirected_codequotebacktick'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'quotes',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' quotes
 '
@@ -103,8 +108,9 @@ $result_trees{'codequoteundirected_codequotebacktick'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'allquotes',
-                      'type' => 'macro_name'
+                      'text' => ' allquotes
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -225,6 +231,10 @@ $result_trees{'codequoteundirected_codequotebacktick'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'allquotes',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' allquotes
 '
diff --git a/tp/t/results/misc_commands/kbdinputstyle.pl 
b/tp/t/results/misc_commands/kbdinputstyle.pl
index ed6aa2f9fd..db6d0a6185 100644
--- a/tp/t/results/misc_commands/kbdinputstyle.pl
+++ b/tp/t/results/misc_commands/kbdinputstyle.pl
@@ -15,8 +15,9 @@ $result_trees{'kbdinputstyle'} = {
             {
               'contents' => [
                 {
-                  'text' => 'codekbdmacro',
-                  'type' => 'macro_name'
+                  'text' => ' codekbdmacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -112,6 +113,10 @@ $result_trees{'kbdinputstyle'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'codekbdmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' codekbdmacro
 '
diff --git a/tp/t/results/misc_commands/kbdinputstyle_in_table.pl 
b/tp/t/results/misc_commands/kbdinputstyle_in_table.pl
index 2701d338fc..51093280f6 100644
--- a/tp/t/results/misc_commands/kbdinputstyle_in_table.pl
+++ b/tp/t/results/misc_commands/kbdinputstyle_in_table.pl
@@ -15,8 +15,9 @@ $result_trees{'kbdinputstyle_in_table'} = {
             {
               'contents' => [
                 {
-                  'text' => 'codekbdmacro',
-                  'type' => 'macro_name'
+                  'text' => ' codekbdmacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -137,6 +138,10 @@ $result_trees{'kbdinputstyle_in_table'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'codekbdmacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' codekbdmacro
 '
diff --git a/tp/t/results/misc_commands/test_allowcodebreaks.pl 
b/tp/t/results/misc_commands/test_allowcodebreaks.pl
index 769e97e960..7b711fda7b 100644
--- a/tp/t/results/misc_commands/test_allowcodebreaks.pl
+++ b/tp/t/results/misc_commands/test_allowcodebreaks.pl
@@ -84,12 +84,9 @@ $result_trees{'test_allowcodebreaks'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testallowcodebreakspara',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'nr',
-                  'type' => 'macro_arg'
+                  'text' => ' testallowcodebreakspara {nr}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -155,6 +152,12 @@ $result_trees{'test_allowcodebreaks'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'testallowcodebreakspara',
+            'misc_args' => [
+              'nr'
+            ]
+          },
           'info' => {
             'arg_line' => ' testallowcodebreakspara {nr}
 '
@@ -174,8 +177,9 @@ $result_trees{'test_allowcodebreaks'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testallowcodebreaksexample',
-                  'type' => 'macro_name'
+                  'text' => ' testallowcodebreaksexample{}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -231,6 +235,10 @@ $result_trees{'test_allowcodebreaks'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'testallowcodebreaksexample',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' testallowcodebreaksexample{}
 '
diff --git a/tp/t/results/paragraph/indent_before_macro_definition_and_other.pl 
b/tp/t/results/paragraph/indent_before_macro_definition_and_other.pl
index 8c460f2f46..9dfe9e7801 100644
--- a/tp/t/results/paragraph/indent_before_macro_definition_and_other.pl
+++ b/tp/t/results/paragraph/indent_before_macro_definition_and_other.pl
@@ -308,12 +308,9 @@ $result_trees{'indent_before_macro_definition_and_other'} 
= {
             {
               'contents' => [
                 {
-                  'text' => 'aaa',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'g',
-                  'type' => 'macro_arg'
+                  'text' => ' aaa {g}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -354,6 +351,12 @@ $result_trees{'indent_before_macro_definition_and_other'} 
= {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'aaa',
+            'misc_args' => [
+              'g'
+            ]
+          },
           'info' => {
             'arg_line' => ' aaa {g}
 '
diff --git a/tp/t/results/plaintext_tests/star_at_command_formatting.pl 
b/tp/t/results/plaintext_tests/star_at_command_formatting.pl
index c5e2a74e9e..00eb468aab 100644
--- a/tp/t/results/plaintext_tests/star_at_command_formatting.pl
+++ b/tp/t/results/plaintext_tests/star_at_command_formatting.pl
@@ -15,8 +15,9 @@ $result_trees{'star_at_command_formatting'} = {
             {
               'contents' => [
                 {
-                  'text' => 'mymacro',
-                  'type' => 'macro_name'
+                  'text' => ' mymacro
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -112,6 +113,10 @@ $result_trees{'star_at_command_formatting'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'mymacro',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' mymacro
 '
diff --git a/tp/t/results/raw/nested_macros.pl 
b/tp/t/results/raw/nested_macros.pl
index e1e553454b..be2b141a92 100644
--- a/tp/t/results/raw/nested_macros.pl
+++ b/tp/t/results/raw/nested_macros.pl
@@ -15,16 +15,9 @@ $result_trees{'nested_macros'} = {
             {
               'contents' => [
                 {
-                  'text' => 'truc',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'ex',
-                  'type' => 'macro_arg'
+                  'text' => ' truc   { arg,  ex}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -90,6 +83,13 @@ $result_trees{'nested_macros'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'truc',
+            'misc_args' => [
+              'arg',
+              'ex'
+            ]
+          },
           'info' => {
             'arg_line' => ' truc   { arg,  ex}
 '
diff --git a/tp/t/results/transformations/protect_colon_source_mark.pl 
b/tp/t/results/transformations/protect_colon_source_mark.pl
index 0752d5376a..fe307e7153 100644
--- a/tp/t/results/transformations/protect_colon_source_mark.pl
+++ b/tp/t/results/transformations/protect_colon_source_mark.pl
@@ -15,12 +15,9 @@ $result_trees{'protect_colon_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'klm',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' klm {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -61,6 +58,12 @@ $result_trees{'protect_colon_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'klm',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' klm {arg}
 '
diff --git a/tp/t/results/transformations/protect_comma_source_mark.pl 
b/tp/t/results/transformations/protect_comma_source_mark.pl
index 8d16f0b5fa..4af1714f7f 100644
--- a/tp/t/results/transformations/protect_comma_source_mark.pl
+++ b/tp/t/results/transformations/protect_comma_source_mark.pl
@@ -15,8 +15,9 @@ $result_trees{'protect_comma_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'vvv',
-                  'type' => 'macro_name'
+                  'text' => ' vvv {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'protect_comma_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'vvv',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' vvv {}
 '
diff --git 
a/tp/t/results/transformations/protect_first_parenthesis_after_parenthesis_source_mark.pl
 
b/tp/t/results/transformations/protect_first_parenthesis_after_parenthesis_source_mark.pl
index 597be14840..d44c0006fb 100644
--- 
a/tp/t/results/transformations/protect_first_parenthesis_after_parenthesis_source_mark.pl
+++ 
b/tp/t/results/transformations/protect_first_parenthesis_after_parenthesis_source_mark.pl
@@ -15,8 +15,9 @@ 
$result_trees{'protect_first_parenthesis_after_parenthesis_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'vvv',
-                  'type' => 'macro_name'
+                  'text' => ' vvv {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ 
$result_trees{'protect_first_parenthesis_after_parenthesis_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'vvv',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' vvv {}
 '
diff --git 
a/tp/t/results/transformations/protect_first_parenthesis_source_mark.pl 
b/tp/t/results/transformations/protect_first_parenthesis_source_mark.pl
index eaa8932a8b..0efcf844c0 100644
--- a/tp/t/results/transformations/protect_first_parenthesis_source_mark.pl
+++ b/tp/t/results/transformations/protect_first_parenthesis_source_mark.pl
@@ -15,8 +15,9 @@ $result_trees{'protect_first_parenthesis_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'vvv',
-                  'type' => 'macro_name'
+                  'text' => ' vvv {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ $result_trees{'protect_first_parenthesis_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'vvv',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' vvv {}
 '
diff --git 
a/tp/t/results/transformations/protect_hashchar_at_line_beginning_source_mark.pl
 
b/tp/t/results/transformations/protect_hashchar_at_line_beginning_source_mark.pl
index 8481b9a544..31821e588e 100644
--- 
a/tp/t/results/transformations/protect_hashchar_at_line_beginning_source_mark.pl
+++ 
b/tp/t/results/transformations/protect_hashchar_at_line_beginning_source_mark.pl
@@ -27,8 +27,9 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
                 {
                   'contents' => [
                     {
-                      'text' => 'vvv',
-                      'type' => 'macro_name'
+                      'text' => ' vvv {}
+',
+                      'type' => 'macro_line'
                     }
                   ],
                   'type' => 'argument'
@@ -70,6 +71,10 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
                   }
                 }
               ],
+              'extra' => {
+                'macro_name' => 'vvv',
+                'misc_args' => []
+              },
               'info' => {
                 'arg_line' => ' vvv {}
 '
@@ -144,8 +149,9 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'machash',
-                  'type' => 'macro_name'
+                  'text' => ' machash {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -187,6 +193,10 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'machash',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' machash {}
 '
@@ -257,12 +267,9 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
             {
               'contents' => [
                 {
-                  'text' => 'numberfileflag',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' numberfileflag {arg}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -304,6 +311,12 @@ 
$result_trees{'protect_hashchar_at_line_beginning_source_mark'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'numberfileflag',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' numberfileflag {arg}
 '
diff --git 
a/tp/t/results/transformations/protect_node_after_label_source_mark_in_protected.pl
 
b/tp/t/results/transformations/protect_node_after_label_source_mark_in_protected.pl
index 4b83176d05..926deb5048 100644
--- 
a/tp/t/results/transformations/protect_node_after_label_source_mark_in_protected.pl
+++ 
b/tp/t/results/transformations/protect_node_after_label_source_mark_in_protected.pl
@@ -15,8 +15,9 @@ 
$result_trees{'protect_node_after_label_source_mark_in_protected'} = {
             {
               'contents' => [
                 {
-                  'text' => 'vvv',
-                  'type' => 'macro_name'
+                  'text' => ' vvv {}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -57,6 +58,10 @@ 
$result_trees{'protect_node_after_label_source_mark_in_protected'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'vvv',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' vvv {}
 '
diff --git a/tp/t/results/value_and_macro/comma_value_in_macro_arg.pl 
b/tp/t/results/value_and_macro/comma_value_in_macro_arg.pl
index 0118cc8868..704fd425df 100644
--- a/tp/t/results/value_and_macro/comma_value_in_macro_arg.pl
+++ b/tp/t/results/value_and_macro/comma_value_in_macro_arg.pl
@@ -37,16 +37,9 @@ $result_trees{'comma_value_in_macro_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'macro1',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg1',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'arg2',
-                  'type' => 'macro_arg'
+                  'text' => ' macro1 { arg1 , arg2 }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -87,6 +80,13 @@ $result_trees{'comma_value_in_macro_arg'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'macro1',
+            'misc_args' => [
+              'arg1',
+              'arg2'
+            ]
+          },
           'info' => {
             'arg_line' => ' macro1 { arg1 , arg2 }
 '
diff --git a/tp/t/results/value_and_macro/macro_in_value.pl 
b/tp/t/results/value_and_macro/macro_in_value.pl
index 4034f0d6af..acc15abad5 100644
--- a/tp/t/results/value_and_macro/macro_in_value.pl
+++ b/tp/t/results/value_and_macro/macro_in_value.pl
@@ -15,8 +15,9 @@ $result_trees{'macro_in_value'} = {
             {
               'contents' => [
                 {
-                  'text' => 'ab',
-                  'type' => 'macro_name'
+                  'text' => ' ab
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -67,6 +68,10 @@ $result_trees{'macro_in_value'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'ab',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' ab
 '
diff --git a/tp/t/results/value_and_macro/value_in_macro_body.pl 
b/tp/t/results/value_and_macro/value_in_macro_body.pl
index 59719ed889..04b592d798 100644
--- a/tp/t/results/value_and_macro/value_in_macro_body.pl
+++ b/tp/t/results/value_and_macro/value_in_macro_body.pl
@@ -37,12 +37,9 @@ $result_trees{'value_in_macro_body'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testvaluebody',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
+                  'text' => ' testvaluebody { arg }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -83,6 +80,12 @@ $result_trees{'value_in_macro_body'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'testvaluebody',
+            'misc_args' => [
+              'arg'
+            ]
+          },
           'info' => {
             'arg_line' => ' testvaluebody { arg }
 '
diff --git a/tp/t/results/value_and_macro/value_in_macro_formal_arg.pl 
b/tp/t/results/value_and_macro/value_in_macro_formal_arg.pl
index 714bc02810..35115cba0b 100644
--- a/tp/t/results/value_and_macro/value_in_macro_formal_arg.pl
+++ b/tp/t/results/value_and_macro/value_in_macro_formal_arg.pl
@@ -37,16 +37,9 @@ $result_trees{'value_in_macro_formal_arg'} = {
             {
               'contents' => [
                 {
-                  'text' => 'testvalue',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'arg',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'the@value{argument',
-                  'type' => 'macro_arg'
+                  'text' => ' testvalue { arg , the@value{argument} }
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -88,7 +81,12 @@ $result_trees{'value_in_macro_formal_arg'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'testvalue',
+            'misc_args' => [
+              'arg',
+              'the@value{argument'
+            ]
           },
           'info' => {
             'arg_line' => ' testvalue { arg , the@value{argument} }
diff --git a/tp/t/results/xml_tests/macro_and_args.pl 
b/tp/t/results/xml_tests/macro_and_args.pl
index 4e4ecd6124..ee27c5d0e8 100644
--- a/tp/t/results/xml_tests/macro_and_args.pl
+++ b/tp/t/results/xml_tests/macro_and_args.pl
@@ -15,16 +15,9 @@ $result_trees{'macro_and_args'} = {
             {
               'contents' => [
                 {
-                  'text' => 'good',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'aaa',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => '2b-bb',
-                  'type' => 'macro_arg'
+                  'text' => ' good { aaa, 2b-bb}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -60,6 +53,13 @@ $result_trees{'macro_and_args'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'good',
+            'misc_args' => [
+              'aaa',
+              '2b-bb'
+            ]
+          },
           'info' => {
             'arg_line' => ' good { aaa, 2b-bb}
 '
@@ -79,20 +79,9 @@ $result_trees{'macro_and_args'} = {
             {
               'contents' => [
                 {
-                  'text' => 'bad',
-                  'type' => 'macro_name'
-                },
-                {
-                  'text' => 'ggg"@@^_ ff',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'nnn_b',
-                  'type' => 'macro_arg'
-                },
-                {
-                  'text' => 'ccc v',
-                  'type' => 'macro_arg'
+                  'text' => ' bad { ggg"@@^_ ff, nnn_b, ccc v}
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -129,7 +118,13 @@ $result_trees{'macro_and_args'} = {
             }
           ],
           'extra' => {
-            'invalid_syntax' => 1
+            'invalid_syntax' => 1,
+            'macro_name' => 'bad',
+            'misc_args' => [
+              'ggg"@@^_ ff',
+              'nnn_b',
+              'ccc v'
+            ]
           },
           'info' => {
             'arg_line' => ' bad { ggg"@@^_ ff, nnn_b, ccc v}
diff --git a/tp/t/results/xtable/table_nested.pl 
b/tp/t/results/xtable/table_nested.pl
index 33654577e5..9ba23f78e0 100644
--- a/tp/t/results/xtable/table_nested.pl
+++ b/tp/t/results/xtable/table_nested.pl
@@ -15,8 +15,9 @@ $result_trees{'table_nested'} = {
             {
               'contents' => [
                 {
-                  'text' => 'myvtable',
-                  'type' => 'macro_name'
+                  'text' => ' myvtable
+',
+                  'type' => 'macro_line'
                 }
               ],
               'type' => 'argument'
@@ -157,6 +158,10 @@ $result_trees{'table_nested'} = {
               }
             }
           ],
+          'extra' => {
+            'macro_name' => 'myvtable',
+            'misc_args' => []
+          },
           'info' => {
             'arg_line' => ' myvtable
 '



reply via email to

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