[latex3-commits] [l3svn] r7384 - Use different functions to patch definitions of conditionals
noreply at latex-project.org
noreply at latex-project.org
Mon Jul 17 02:38:38 CEST 2017
Author: bruno
Date: 2017-07-17 02:38:38 +0200 (Mon, 17 Jul 2017)
New Revision: 7384
Modified:
trunk/l3kernel/expl3.dtx
trunk/l3kernel/l3basics.dtx
trunk/l3kernel/l3box.dtx
trunk/l3kernel/l3candidates.dtx
trunk/l3kernel/l3expan.dtx
trunk/l3kernel/l3flag.dtx
trunk/l3kernel/l3fp-convert.dtx
trunk/l3kernel/l3int.dtx
trunk/l3kernel/l3keys.dtx
trunk/l3kernel/l3msg.dtx
trunk/l3kernel/l3prg.dtx
trunk/l3kernel/l3skip.dtx
trunk/l3kernel/l3str.dtx
trunk/l3kernel/l3tl.dtx
trunk/l3kernel/l3token.dtx
trunk/l3kernel/testfiles/m3expl001.luatex.tlg
trunk/l3kernel/testfiles/m3expl001.ptex.tlg
trunk/l3kernel/testfiles/m3expl001.tlg
trunk/l3kernel/testfiles/m3expl001.uptex.tlg
trunk/l3kernel/testfiles/m3expl001.xetex.tlg
trunk/l3kernel/testfiles/m3expl003.luatex.tlg
trunk/l3kernel/testfiles/m3expl003.ptex.tlg
trunk/l3kernel/testfiles/m3expl003.tlg
trunk/l3kernel/testfiles/m3expl003.uptex.tlg
trunk/l3kernel/testfiles/m3expl003.xetex.tlg
Log:
Use different functions to patch definitions of conditionals
That removes the need to test things in the patching code.
Also give the sensible signature to patching functions.
Modified: trunk/l3kernel/expl3.dtx
===================================================================
--- trunk/l3kernel/expl3.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/expl3.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1465,7 +1465,7 @@
}
\cs_set_protected:Npn \box_rotate:Nn #1#2
{ \hbox_set:Nn #1 { \rotatebox {#2} { \box_use:N #1 } } }
- \__debug_patch_args:nNw { {#1} { (#2) } { (#3) } }
+ \__debug_patch_args:nNNpn { {#1} { (#2) } { (#3) } }
\cs_set_protected:Npn \box_resize_to_wd_and_ht_plus_dp:Nnn #1#2#3
{
\hbox_set:Nn #1
@@ -1476,7 +1476,7 @@
{ \box_use:N #1 }
}
}
- \__debug_patch_args:nNw { {#1} { (#2) } }
+ \__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_set_protected:Npn \box_resize_to_ht_plus_dp:Nn #1#2
{
\hbox_set:Nn #1
@@ -1485,7 +1485,7 @@
{ \box_use:N #1 }
}
}
- \__debug_patch_args:nNw { {#1} { (#2) } }
+ \__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_set_protected:Npn \box_resize_to_wd:Nn #1#2
{
\hbox_set:Nn #1
Modified: trunk/l3kernel/l3basics.dtx
===================================================================
--- trunk/l3kernel/l3basics.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3basics.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1261,42 +1261,57 @@
% nested. These functions are only created if debugging is enabled.
% \end{function}
%
-% \begin{function}{\__debug_patch:nnNw}
+% \begin{function}{\__debug_patch:nnNNpn}
% \begin{syntax}
-% \cs{__debug_patch:nnNw} \Arg{before} \Arg{after} \meta{definition} \ldots{}
+% \cs{__debug_patch:nnNNpn} \Arg{before} \Arg{after}
+% \meta{definition} \meta{function} \meta{parameters} \Arg{code}
% \end{syntax}
% If debugging is not enabled, this function ignores the \meta{before}
% and \meta{after} code and performs the \meta{definition} with no
-% patching. Otherwise it adds the \meta{before} and \meta{after}
-% tokens (which can involve |#1| and so on) in the \meta{definition}
-% that follows. The \meta{definition} must start with \cs{cs_new:Npn}
-% or \cs{cs_set:Npn} or \cs{cs_gset:Npn} or
-% \cs{prg_new_conditional:Npnn} or their protected counterparts.
-% Other cases can be added as needed.
+% patching. Otherwise it replaces \meta{code} by \meta{before}
+% \meta{code} \meta{after} (which can involve |#1| and so on) in the
+% \meta{definition} that follows. The \meta{definition} must start
+% with \cs{cs_new:Npn} or \cs{cs_set:Npn} or \cs{cs_gset:Npn} or their
+% \texttt{_protected} counterparts. Other cases can be added as
+% needed.
% \end{function}
%
-% \begin{function}{\__debug_patch_args:nNw}
+% \begin{function}{\__debug_patch_conditional:nNNpnn}
% \begin{syntax}
-% \cs{__debug_patch_args:nNw} \Arg{arguments} \meta{definition} \ldots{}
+% \cs{__debug_patch_conditional:nNNpn} \Arg{before}
+% \meta{definition} \meta{conditional} \meta{parameters} \Arg{type} \Arg{code}
% \end{syntax}
-% Like \cs{__debug_patch:nnNw}, this tweaks the following definition,
-% but from the \enquote{inside out} (and if debugging is not enabled,
-% the \meta{arguments} are ignored). Namely, it replaces |#1|, |#2|
-% and so on in the \meta{replacement text} of the definition as
-% indicated by the \meta{arguments}. More precisely, a temporary
-% function is defined using the \meta{definition} with the
-% \meta{parameter text} and \meta{replacement text}, then the result
-% of expanding that function once in front of the \meta{arguments} is
-% used as \meta{parameter text} when defining the actual function.
-% For instance,
+% Similar to \cs{__debug_patch:nnNNpn} for conditionals, namely
+% \meta{definition} must be \cs{prg_new_conditional:Npnn} or its
+% \texttt{_protected} counterpart. There is no \meta{after} code
+% because that would interfere with the action of the conditional.
+% \end{function}
+%
+% \begin{function}
+% {\__debug_patch_args:nNNpn, \__debug_patch_conditional_args:nNNpnn}
+% \begin{syntax}
+% \cs{__debug_patch_args:nNNpn} \Arg{arguments}
+% \meta{definition} \meta{function} \meta{parameters} \Arg{code}
+% \end{syntax}
+% Like \cs{__debug_patch:nnNNpn}, this tweaks the following
+% definition, but from the \enquote{inside out} (and if debugging is
+% not enabled, the \meta{arguments} are ignored). It replaces |#1|,
+% |#2| and so on in the \meta{code} of the definition as indicated by
+% the \meta{arguments}. More precisely, a temporary function is
+% defined using the \meta{definition} with the \meta{parameters} and
+% \meta{code}, then the result of expanding that function once in
+% front of the \meta{arguments} is used instead of the \meta{code}
+% when defining the actual function. For instance,
% \begin{quote}
-% \cs{__debug_patch_args:nNw} |{ { (#1) } }| \\
+% \cs{__debug_patch_args:nNNpn} |{ { (#1) } }| \\
% \cs{cs_new:Npn} \cs{int_eval:n} |#1| \\
% ~~|{ \__int_value:w \__int_eval:w #1 \__int_eval_end: }|
% \end{quote}
% replaces |#1| by |(#1)| in the definition of \cs{int_eval:n} when
-% debugging is enabled.
-% This fails if the \meta{replacement text} contains~|##|.
+% debugging is enabled. This fails if the \meta{code} contains~|##|.
+% The \cs{__debug_patch_conditional_args:nNNpnn} function is for use
+% before \cs{prg_new_conditional:Npnn} or its \texttt{_protected}
+% counterpart.
% \end{function}
%
% \begin{function}{\__kernel_register_show:N, \__kernel_register_show:c}
@@ -1927,73 +1942,45 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[int]{\__debug_patch:nnNw}
-% \begin{macro}[aux,EXP]{\__debug_patch_case:N}
+% \begin{macro}[int]
+% {\__debug_patch:nnNNpn, \__debug_patch_conditional:nNNpnn}
% \begin{macro}[aux]
-% {
-% \__debug_patch_param:NNnnNnp,
-% \__debug_patch_cs:nnNNnn,
-% \__debug_patch_conditional:nnNNnnn
-% }
-% When debugging is not enabled, \cs{__debug_patch:nnNw} throws the
-% patch away. Otherwise it can be followed by \cs{cs_new:Npn} or
-% \cs{prg_new_conditional:Npnn} or their protected counterparts. In
-% each case, grab the name of the function to be defined and its
-% parameters using \cs{__debug_patch_param:w} then insert tokens
-% before and after the definition. Of course for a conditional one
-% should likely not insert anything after the code.
+% {\__debug_patch_aux:nnNNnn, \__debug_patch_aux:nNNnnn}
+% When debugging is not enabled, \cs{__debug_patch:nnNNpn} and
+% \cs{__debug_patch_conditional:nNNpnn} throw the patch away.
+% Otherwise they can be followed by \cs{cs_new:Npn} (or similar), and
+% \cs{prg_new_conditional:Npnn} (or similar), respectively. In each
+% case, grab the name of the function to be defined and its parameters
+% then insert tokens before and/or after the definition.
% \begin{macrocode}
\__debug:TF
{
- \cs_set_protected:Npn \__debug_patch:nnNw #1#2#3
- {
- \tex_ifcase:D \__debug_patch_case:N #3
- \or:
- \exp_after:wN \__debug_patch_param:NNnnNnp
- \exp_after:wN \__debug_patch_cs:nnNNnn
- \else:
- \exp_after:wN \__debug_patch_param:NNnnNnp
- \exp_after:wN \__debug_patch_conditional:nnNNnnn
- \fi:
- \use_none:nn {#1} {#2} #3
- }
- \cs_set:Npn \__debug_patch_case:N #1
- {
- \if_meaning:w #1 \cs_new_protected:Npn 1~ \fi:
- \if_meaning:w #1 \cs_new:Npn 1~ \fi:
- \if_meaning:w #1 \cs_set_protected:Npn 1~ \fi:
- \if_meaning:w #1 \cs_set:Npn 1~ \fi:
- \if_meaning:w #1 \cs_gset_protected:Npn 1~ \fi:
- \if_meaning:w #1 \cs_gset:Npn 1~ \fi:
- \if_meaning:w #1 \prg_new_protected_conditional:Npnn 2~ \fi:
- \if_meaning:w #1 \prg_new_conditional:Npnn 2~ \fi:
- 0~ %
- \__msg_kernel_error:nnx { kernel } { debug-unpatchable }
- { \token_to_str:N #1 }
- }
- \cs_set_protected:Npn \__debug_patch_param:NNnnNnp #1#2#3#4#5#6#7#
- { #1 {#3} {#4} #5 #6 {#7} }
- \cs_set_protected:Npn \__debug_patch_cs:nnNNnn #1#2#3#4#5#6
+ \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2#3#4#5#
+ { \__debug_patch_aux:nnNNnn {#1} {#2} #3 #4 {#5} }
+ \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1#2#3#4#
+ { \__debug_patch_aux:nNNnnn {#1} #2 #3 {#4} }
+ \cs_set_protected:Npn \__debug_patch_aux:nnNNnn #1#2#3#4#5#6
{ #3 #4 #5 { #1 #6 #2 } }
- \cs_set_protected:Npn \__debug_patch_conditional:nnNNnnn
- #1#2#3#4#5#6#7
- { #3 #4 #5 {#6} { #1 #7 #2 } }
+ \cs_set_protected:Npn \__debug_patch_aux:nNNnnn #1#2#3#4#5#6
+ { #2 #3 #4 {#5} { #1 #6 } }
}
- { \cs_set_protected:Npn \__debug_patch:nnNw #1#2 { } }
+ {
+ \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2 { }
+ \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1 { }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
-% \begin{macro}[int]{\__debug_patch_args:nNw}
+% \begin{macro}[int]
+% {\__debug_patch_args:nNNpn, \__debug_patch_conditional_args:nNNpnn}
% \begin{macro}[aux]
% {
% \__debug_tmp:w,
-% \__debug_patch_args_param:NNnNnp,
-% \__debug_patch_args_cs:nNNnn,
-% \__debug_patch_args_conditional:nNNnnn
+% \__debug_patch_args_aux:nNNnn,
+% \__debug_patch_args_aux:nNNnnn
% }
-% See \cs{__debug_patch:nnNw}. The first argument is something like
+% See \cs{__debug_patch:nnNNpn}. The first argument is something like
% |{#1}{(#2)}|. Define a temporary macro using the \meta{parameters}
% and \meta{code} of the definition that follows, then expand that
% temporary macro in front of the first argument to obtain new
@@ -2003,35 +1990,27 @@
% \begin{macrocode}
\__debug:TF
{
- \cs_set_protected:Npn \__debug_patch_args:nNw #1#2
+ \cs_set_protected:Npn \__debug_patch_args:nNNpn #1#2#3#4#
+ { \__debug_patch_args_aux:nNNnn {#1} #2 #3 {#4} }
+ \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1#2#3#4#
+ { \__debug_patch_args_aux:nNNnnn {#1} #2 #3 {#4} }
+ \cs_set_protected:Npn \__debug_patch_args_aux:nNNnn #1#2#3#4#5
{
- \tex_ifcase:D \__debug_patch_case:N #2
- \or:
- \exp_after:wN \__debug_patch_args_param:NNnNnp
- \exp_after:wN \__debug_patch_args_cs:nNNnn
- \else:
- \exp_after:wN \__debug_patch_args_param:NNnNnp
- \exp_after:wN \__debug_patch_args_conditional:nNNnnn
- \fi:
- \use_none:n {#1} #2
- }
- \cs_set_protected:Npn \__debug_patch_args_param:NNnNnp #1#2#3#4#5#6#
- { #1 {#3} #4 #5 {#6} }
- \cs_set_protected:Npn \__debug_patch_args_cs:nNNnn #1#2#3#4#5
- {
\cs_set:Npn \__debug_tmp:w #4 {#5}
- \exp_after:wN \__debug_patch_cs:nnNNnn \exp_after:wN
+ \exp_after:wN \__debug_patch_aux:nnNNnn \exp_after:wN
{ \__debug_tmp:w #1 } { } #2 #3 {#4} { }
}
- \cs_set_protected:Npn \__debug_patch_args_conditional:nNNnnn
- #1#2#3#4#5#6
+ \cs_set_protected:Npn \__debug_patch_args_aux:nNNnnn #1#2#3#4#5#6
{
\cs_set:Npn \__debug_tmp:w #4 {#6}
- \exp_after:wN \__debug_patch_conditional:nnNNnnn \exp_after:wN
- { \__debug_tmp:w #1 } { } #2 #3 {#4} {#5} { }
+ \exp_after:wN \__debug_patch_aux:nNNnnn \exp_after:wN
+ { \__debug_tmp:w #1 } #2 #3 {#4} {#5} { }
}
}
- { \cs_set_protected:Npn \__debug_patch_args:nNw #1 { } }
+ {
+ \cs_set_protected:Npn \__debug_patch_args:nNNpn #1 { }
+ \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1 { }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2366,19 +2345,19 @@
#5 {#1} {#2} {#3} {#4}
\__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5
}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{ \__debug_chk_cs_exist:c { #5 _p : #6 } } { }
\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6
{ #2 { #3 _p : #4 } { #5 _p : #6 } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{ \__debug_chk_cs_exist:c { #5 : #6 TF } } { }
\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6
{ #2 { #3 : #4 TF } { #5 : #6 TF } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{ \__debug_chk_cs_exist:c { #5 : #6 T } } { }
\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6
{ #2 { #3 : #4 T } { #5 : #6 T } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{ \__debug_chk_cs_exist:c { #5 : #6 F } } { }
\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6
{ #2 { #3 : #4 F } { #5 : #6 F } }
@@ -2714,7 +2693,7 @@
% issued. We have to make sure we don't put the argument into the
% conditional processing since it may be an |\if...| type function!
% \begin{macrocode}
-\__debug_patch:nnNw { }
+\__debug_patch:nnNNpn { }
{ \__debug_log:x { Defining~\token_to_str:N #1~ \msg_line_context: } }
\cs_set_protected:Npn \__chk_if_free_cs:N #1
{
Modified: trunk/l3kernel/l3box.dtx
===================================================================
--- trunk/l3kernel/l3box.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3box.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -949,13 +949,13 @@
% When debugging, the dimension expression |#2| is surrounded by
% parentheses to catch early termination.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \box_set_dp:Nn #1#2
{ \box_dp:N #1 \__dim_eval:w #2 \__dim_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \box_set_ht:Nn #1#2
{ \box_ht:N #1 \__dim_eval:w #2 \__dim_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \box_set_wd:Nn #1#2
{ \box_wd:N #1 \__dim_eval:w #2 \__dim_eval_end: }
\cs_generate_variant:Nn \box_set_ht:Nn { c }
@@ -988,16 +988,16 @@
% When debugging, the dimension expression |#1| is surrounded by
% parentheses to catch early termination.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \box_move_left:nn #1#2
{ \tex_moveleft:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \box_move_right:nn #1#2
{ \tex_moveright:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \box_move_up:nn #1#2
{ \tex_raise:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \box_move_down:nn #1#2
{ \tex_lower:D \__dim_eval:w #1 \__dim_eval_end: #2 }
% \end{macrocode}
@@ -1196,7 +1196,7 @@
% Storing material in a horizontal box with a specified width.
% Again, put the dimension expression in parentheses when debugging.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} }
\cs_new_protected:Npn \hbox_set_to_wd:Nnn #1#2#3
{
\tex_setbox:D #1 \tex_hbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1242,7 +1242,7 @@
% \begin{macro}{\hbox_gset_to_wd:Nnw, \hbox_gset_to_wd:cnw}
% Combining the above ideas.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \hbox_set_to_wd:Nnw #1#2
{
\tex_setbox:D #1 \tex_hbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1262,7 +1262,7 @@
% \testfile*
% Put a horizontal box directly into the input stream.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \hbox_to_wd:nn #1#2
{
\tex_hbox:D to \__dim_eval:w #1 \__dim_eval_end:
@@ -1323,7 +1323,7 @@
% \testfile*
% Put a vertical box directly into the input stream.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
\cs_new_protected:Npn \vbox_to_ht:nn #1#2
{
\tex_vbox:D to \__dim_eval:w #1 \__dim_eval_end:
@@ -1379,7 +1379,7 @@
% \testfile*
% Storing material in a vertical box with a specified height.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} }
\cs_new_protected:Npn \vbox_set_to_ht:Nnn #1#2#3
{
\tex_setbox:D #1 \tex_vbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1426,7 +1426,7 @@
% \begin{macro}{\vbox_gset_to_ht:Nnw, \vbox_gset_to_ht:cnw}
% A combination of the above ideas.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \vbox_set_to_ht:Nnw #1#2
{
\tex_setbox:D #1 \tex_vbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1458,7 +1458,7 @@
% \testfile*
% Splitting a vertical box in two.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} {#2} { (#3) } }
+\__debug_patch_args:nNNpn { {#1} {#2} { (#3) } }
\cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
{ \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:w #3 \__dim_eval_end: }
% \end{macrocode}
Modified: trunk/l3kernel/l3candidates.dtx
===================================================================
--- trunk/l3kernel/l3candidates.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3candidates.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1038,7 +1038,7 @@
% Trimming from the left- and right-hand edges of the box is easy: kern the
% appropriate parts off each side.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} { (#4) } {#5} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} }
\cs_new_protected:Npn \box_trim:Nnnnn #1#2#3#4#5
{
\hbox_set:Nn \l_@@_internal_box
@@ -1105,7 +1105,7 @@
% dimensions. As a result, there are some things to watch out for in the
% vertical direction.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} { (#4) } {#5} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} }
\cs_new_protected:Npn \box_viewport:Nnnnn #1#2#3#4#5
{
\hbox_set:Nn \l_@@_internal_box
@@ -1804,7 +1804,7 @@
% \begin{macrocode}
\cs_if_exist:NTF \pdftex_uniformdeviate:D
{
- \__debug_patch_args:nNw { { (#1) } { (#2) } }
+ \__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \int_rand:nn #1#2
{
\exp_after:wN \@@_rand:ww
@@ -2179,7 +2179,7 @@
% \begin{macro}{\sys_gset_rand_seed:n}
% The primitive always assigns the seed globally.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new_protected:Npn \sys_gset_rand_seed:n #1
{ \pdftex_setrandomseed:D \__int_eval:w #1 \__int_eval_end: }
% \end{macrocode}
Modified: trunk/l3kernel/l3expan.dtx
===================================================================
--- trunk/l3kernel/l3expan.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3expan.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1476,7 +1476,7 @@
% iterate through the comma list of variant argument specifiers, which
% we first convert to a string: the reason is explained later.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_cs_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_cs_exist:N #1 } { }
\cs_new_protected:Npn \cs_generate_variant:Nn #1#2
{
\@@_generate_variant:N #1
@@ -1788,7 +1788,7 @@
% \cs{cs_new_protected:Npx}. Then define the variant by
% combining the |\exp_args:N #3| variant and the base function.
% \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{
\cs_if_free:NF #4
{
Modified: trunk/l3kernel/l3flag.dtx
===================================================================
--- trunk/l3kernel/l3flag.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3flag.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -196,7 +196,7 @@
% When the option \texttt{check-declarations} is used, check for the
% function defined by \cs{flag_new:n}.
% \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{ \exp_args:Nc \__debug_chk_var_exist:N { flag~#1 } } { }
\cs_new_protected:Npn \flag_clear:n #1 { \@@_clear:wn 0 ; {#1} }
\cs_new_protected:Npn \@@_clear:wn #1 ; #2
@@ -275,7 +275,7 @@
% \begin{macro}[EXP, pTF]{\flag_if_raised:n}
% Test if the flag has a non-zero height, by checking the |0| control sequence.
% \begin{macrocode}
-\__debug_patch:nnNw { \@@_chk_exist:n {#1} } { }
+\__debug_patch_conditional:nNNpnn { \@@_chk_exist:n {#1} }
\prg_new_conditional:Npnn \flag_if_raised:n #1 { p , T , F , TF }
{
\if_cs_exist:w flag~#1~0 \cs_end:
@@ -292,7 +292,7 @@
% Extract the value of the flag by going through all of the
% control sequences starting from |0|.
% \begin{macrocode}
-\__debug_patch:nnNw { \@@_chk_exist:n {#1} } { }
+\__debug_patch:nnNNpn { \@@_chk_exist:n {#1} } { }
\cs_new:Npn \flag_height:n #1 { \@@_height_loop:wn 0; {#1} }
\cs_new:Npn \@@_height_loop:wn #1 ; #2
{
Modified: trunk/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/l3kernel/l3fp-convert.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3fp-convert.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -390,7 +390,7 @@
% performed by \cs{@@_mul_npos_o:Nww}, and cancelled by
% \cs{prg_do_nothing:} here.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \dim_to_fp:n #1
{
\exp_after:wN \@@_from_dim_test:ww
Modified: trunk/l3kernel/l3int.dtx
===================================================================
--- trunk/l3kernel/l3int.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3int.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1010,7 +1010,7 @@
% or directly in the input stream.
% When debugging, use parentheses to catch early termination.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \int_eval:n #1
{ \@@_value:w \@@_eval:w #1 \@@_eval_end: }
% \end{macrocode}
@@ -1028,7 +1028,7 @@
% evaluation. The absolute value is obtained by removing a leading
% sign if any. All three functions expand in two steps.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \int_abs:n #1
{
\@@_value:w \exp_after:wN \@@_abs:N
@@ -1037,7 +1037,7 @@
}
\cs_new:Npn \@@_abs:N #1
{ \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_set:Npn \int_max:nn #1#2
{
\@@_value:w \exp_after:wN \@@_maxmin:wwN
@@ -1046,7 +1046,7 @@
>
\exp_stop_f:
}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_set:Npn \int_min:nn #1#2
{
\@@_value:w \exp_after:wN \@@_maxmin:wwN
@@ -1091,7 +1091,7 @@
% truncating behaviour that we want. The details are thanks to Heiko
% Oberdiek: getting things right in all cases is not so easy.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \int_div_truncate:nn #1#2
{
\@@_value:w \@@_eval:w
@@ -1121,7 +1121,7 @@
% \end{macrocode}
% Finally there's the modulus operation.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \int_mod:nn #1#2
{
\@@_value:w \@@_eval:w \exp_after:wN \@@_mod:ww
@@ -1274,10 +1274,10 @@
% \UnitTested
% Adding and subtracting to and from a counter \ldots
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \int_add:Nn #1#2
{ \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \int_sub:Nn #1#2
{ \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: }
\cs_new_protected:Npn \int_gadd:Nn
@@ -1331,7 +1331,7 @@
% if they are not defined. Thus there is no need for the checking
% code seen with token list variables.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \int_set:Nn #1#2
{ #1 ~ \@@_eval:w #2 \@@_eval_end: }
\cs_new_protected:Npn \int_gset:Nn { \tex_global:D \int_set:Nn }
@@ -1536,7 +1536,7 @@
% \UnitTested
% More efficient but less natural in typing.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) \@@_eval_end: } {#2} { (#3) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } }
\prg_new_conditional:Npnn \int_compare:nNn #1#2#3 { p , T , F , TF }
{
\if_int_compare:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end:
@@ -1595,7 +1595,7 @@
% \UnitTested
% A predicate function.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) } }
\prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF}
{
\if_int_odd:w \@@_eval:w #1 \@@_eval_end:
@@ -1604,7 +1604,7 @@
\prg_return_false:
\fi:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) } }
\prg_new_conditional:Npnn \int_if_even:n #1 { p , T , F , TF}
{
\if_int_odd:w \@@_eval:w #1 \@@_eval_end:
@@ -1720,7 +1720,7 @@
% step size of zero before checking the sign, but we optimize for the
% most frequent case (positive step).
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } { (#3) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } { (#3) } }
\cs_new:Npn \int_step_function:nnnN #1#2#3
{
\exp_after:wN \@@_step:wwwN
Modified: trunk/l3kernel/l3keys.dtx
===================================================================
--- trunk/l3kernel/l3keys.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3keys.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1514,7 +1514,7 @@
% Setting the code for a key first logs if appropriate that we are
% defining a new key, then saves the code.
% \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{
\cs_if_exist:cF { \c_@@_code_root_tl #1 }
{ \__debug_log:x { Defining~key~#1~\msg_line_context: } }
Modified: trunk/l3kernel/l3msg.dtx
===================================================================
--- trunk/l3kernel/l3msg.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3msg.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -833,7 +833,7 @@
% This auxiliary is similar to \cs{__chk_if_free_cs:N}, and is used when
% defining messages with \cs{msg_new:nnnn}.
% \begin{macrocode}
-\__debug_patch:nnNw { }
+\__debug_patch:nnNNpn { }
{ \__debug_log:x { Defining~message~ #1 / #2 ~\msg_line_context: } }
\cs_new_protected:Npn \__chk_if_free_msg:nn #1#2
{
@@ -1952,8 +1952,6 @@
%<*package>
\bool_if:NTF \l at expl@enable at debug@bool
{
- \@@_kernel_new:nnn { kernel } { debug-unpatchable }
- { Only~some~definitions~can~be~patched;~'#3'~cannot. }
\@@_kernel_new:nnnn { check } { non-declared-variable }
{ The~variable~#1~has~not~been~declared~\msg_line_context:. }
{
Modified: trunk/l3kernel/l3prg.dtx
===================================================================
--- trunk/l3kernel/l3prg.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3prg.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -811,16 +811,16 @@
% make sure the boolean exists. This is needed because booleans are
% not based on token lists nor on \TeX{} registers.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_set_true:N #1
{ \cs_set_eq:NN #1 \c_true_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_set_false:N #1
{ \cs_set_eq:NN #1 \c_false_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_gset_true:N #1
{ \cs_gset_eq:NN #1 \c_true_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_gset_false:N #1
{ \cs_gset_eq:NN #1 \c_false_bool }
\cs_generate_variant:Nn \bool_set_true:N { c }
@@ -855,10 +855,10 @@
% argument the meaning \cs{c_true_bool} or \cs{c_false_bool}.
% Again, we include some checking code.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_set:Nn #1#2
{ \tex_chardef:D #1 = \bool_if_p:n {#2} }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \bool_gset:Nn #1#2
{ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} }
\cs_generate_variant:Nn \bool_set:Nn { c }
@@ -1384,7 +1384,7 @@
% pool. Also, it is considerably slower than what we use here so the
% few extra csnames are well spent I would say.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \prg_replicate:nn #1
{
\exp:w
Modified: trunk/l3kernel/l3skip.dtx
===================================================================
--- trunk/l3kernel/l3skip.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3skip.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1110,7 +1110,7 @@
% \begin{macro}{\dim_gset:Nn, \dim_gset:cn}
% Setting dimensions is easy enough.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \dim_set:Nn #1#2
{ #1 ~ \@@_eval:w #2 \@@_eval_end: }
\cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn }
@@ -1141,13 +1141,13 @@
% \begin{macro}{\dim_gsub:Nn, \dim_gsub:cn}
% Using |by| here deals with the (incorrect) case |\dimen123|.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \dim_add:Nn #1#2
{ \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: }
\cs_new_protected:Npn \dim_gadd:Nn { \tex_global:D \dim_add:Nn }
\cs_generate_variant:Nn \dim_add:Nn { c }
\cs_generate_variant:Nn \dim_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \dim_sub:Nn #1#2
{ \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: }
\cs_new_protected:Npn \dim_gsub:Nn { \tex_global:D \dim_sub:Nn }
@@ -1172,7 +1172,7 @@
% Functions for $\min$, $\max$, and absolute value with only one evaluation.
% The absolute value is evaluated by removing a leading~|-| if present.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \dim_abs:n #1
{
\exp_after:wN \@@_abs:N
@@ -1180,7 +1180,7 @@
}
\cs_new:Npn \@@_abs:N #1
{ \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \dim_max:nn #1#2
{
\dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
@@ -1189,7 +1189,7 @@
>
\@@_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \dim_min:nn #1#2
{
\dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
@@ -1233,7 +1233,7 @@
% \begin{macro}[pTF, EXP]{\dim_compare:nNn}
% Simple comparison.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) \@@_eval_end: } {#2} { (#3) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } }
\prg_new_conditional:Npnn \dim_compare:nNn #1#2#3 { p , T , F , TF }
{
\if_dim:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end:
@@ -1433,7 +1433,7 @@
% \begin{macro}{\dim_eval:n}
% Evaluating a dimension expression expandably.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \dim_eval:n #1
{ \dim_use:N \@@_eval:w #1 \@@_eval_end: }
% \end{macrocode}
@@ -1460,7 +1460,7 @@
% terminating early and leaving extra tokens lying around. This is
% used a lot by low-level manipulations.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \dim_to_decimal:n #1
{
\exp_after:wN
@@ -1495,7 +1495,7 @@
% Another hard-coded conversion: this one is necessary to avoid things going
% off-scale.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \dim_to_decimal_in_sp:n #1
{ \int_eval:n { \@@_eval:w #1 \@@_eval_end: } }
% \end{macrocode}
@@ -1645,7 +1645,7 @@
% \begin{macro}{\skip_gset:Nn, \skip_gset:cn}
% Much the same as for dimensions.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \skip_set:Nn #1#2
{ #1 ~ \etex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn }
@@ -1677,13 +1677,13 @@
% \begin{macro}{\skip_gsub:Nn, \skip_gsub:cn}
% Using |by| here deals with the (incorrect) case |\skip123|.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \skip_add:Nn #1#2
{ \tex_advance:D #1 by \etex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gadd:Nn { \tex_global:D \skip_add:Nn }
\cs_generate_variant:Nn \skip_add:Nn { c }
\cs_generate_variant:Nn \skip_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \skip_sub:Nn #1#2
{ \tex_advance:D #1 by - \etex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gsub:Nn { \tex_global:D \skip_sub:Nn }
@@ -1726,7 +1726,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \__cs_tmp:w #1
{
- \__debug_patch_args:nNw { { (##1) } }
+ \__debug_patch_conditional_args:nNNpnn { { (##1) } }
\prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF }
{
\exp_after:wN \__skip_if_finite:wwNw
@@ -1745,7 +1745,7 @@
% \begin{macro}{\skip_eval:n}
% Evaluating a skip expression expandably.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \skip_eval:n #1
{ \skip_use:N \etex_glueexpr:D #1 \scan_stop: }
% \end{macrocode}
@@ -1767,11 +1767,11 @@
% Inserting skips.
% \begin{macrocode}
\cs_new_eq:NN \skip_horizontal:N \tex_hskip:D
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \skip_horizontal:n #1
{ \skip_horizontal:N \etex_glueexpr:D #1 \scan_stop: }
\cs_new_eq:NN \skip_vertical:N \tex_vskip:D
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \skip_vertical:n #1
{ \skip_vertical:N \etex_glueexpr:D #1 \scan_stop: }
\cs_generate_variant:Nn \skip_horizontal:N { c }
@@ -1909,7 +1909,7 @@
% \begin{macro}{\muskip_gset:Nn, \muskip_gset:cn}
% This should be pretty familiar.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \muskip_set:Nn #1#2
{ #1 ~ \etex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn }
@@ -1947,13 +1947,13 @@
% \begin{macro}{\muskip_gsub:Nn, \muskip_gsub:cn}
% Using |by| here deals with the (incorrect) case |\muskip123|.
% \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \muskip_add:Nn #1#2
{ \tex_advance:D #1 by \etex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gadd:Nn { \tex_global:D \muskip_add:Nn }
\cs_generate_variant:Nn \muskip_add:Nn { c }
\cs_generate_variant:Nn \muskip_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new_protected:Npn \muskip_sub:Nn #1#2
{ \tex_advance:D #1 by - \etex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gsub:Nn { \tex_global:D \muskip_sub:Nn }
@@ -1970,7 +1970,7 @@
% \begin{macro}{\muskip_eval:n}
% Evaluating a muskip expression expandably.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \muskip_eval:n #1
{ \muskip_use:N \etex_muexpr:D #1 \scan_stop: }
% \end{macrocode}
Modified: trunk/l3kernel/l3str.dtx
===================================================================
--- trunk/l3kernel/l3str.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3str.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1049,7 +1049,7 @@
}
\cs_new:Npn \str_item_ignore_spaces:nn #1
{ \exp_args:No \@@_item:nn { \tl_to_str:n {#1} } }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
\cs_new:Npn \@@_item:nn #1#2
{
\exp_after:wN \@@_item:w
@@ -1146,7 +1146,7 @@
}
\cs_new:Npn \str_range_ignore_spaces:nnn #1
{ \exp_args:No \@@_range:nnn { \tl_to_str:n {#1} } }
-\__debug_patch_args:nNw { {#1} { (#2) } { (#3) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } { (#3) } }
\cs_new:Npn \@@_range:nnn #1#2#3
{
\exp_after:wN \@@_range:w
Modified: trunk/l3kernel/l3tl.dtx
===================================================================
--- trunk/l3kernel/l3tl.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3tl.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1186,7 +1186,7 @@
% three arguments must be checked: a token list |#2| or |#3| equal to
% \cs{scan_stop:} would lead to problems later on.
% \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{
\__debug_chk_var_exist:N #1
\__debug_chk_var_exist:N #2
@@ -1195,7 +1195,7 @@
{ }
\cs_new_protected:Npn \tl_concat:NNN #1#2#3
{ \tl_set:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
{
\__debug_chk_var_exist:N #1
\__debug_chk_var_exist:N #2
@@ -1252,25 +1252,25 @@
% which makes the token list registers provided by \TeX{}
% more or less redundant. The \cs{tl_set:No} version is done
% \enquote{by hand} as it is used quite a lot. Each definition is
-% prefixed by a call to \cs{__debug_patch:nnNw} which adds an
+% prefixed by a call to \cs{__debug_patch:nnNNpn} which adds an
% existence check to the definition.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_set:Nn #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_set:No #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_set:Nx #1#2
{ \cs_set_nopar:Npx #1 {#2} }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gset:Nn #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gset:No #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gset:Nx #1#2
{ \cs_gset_nopar:Npx #1 {#2} }
\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Nf }
@@ -1295,28 +1295,28 @@
% }
% Adding to the left is done directly to gain a little performance.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_left:Nn #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_left:NV #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_left:No #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_left:Nx #1#2
{ \cs_set_nopar:Npx #1 { #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_left:Nn #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_left:NV #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_left:No #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_left:Nx #1#2
{ \cs_gset_nopar:Npx #1 { #2 \exp_not:o {#1} } }
\cs_generate_variant:Nn \tl_put_left:Nn { c }
@@ -1345,28 +1345,28 @@
% }
% The same on the right.
% \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_right:Nn #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_right:NV #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_right:No #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_put_right:Nx #1#2
{ \cs_set_nopar:Npx #1 { \exp_not:o #1 #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_right:Nn #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_right:NV #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_right:No #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
\cs_new_protected:Npn \tl_gput_right:Nx #1#2
{ \cs_gset_nopar:Npx #1 { \exp_not:o {#1} #2 } }
\cs_generate_variant:Nn \tl_put_right:Nn { c }
Modified: trunk/l3kernel/l3token.dtx
===================================================================
--- trunk/l3kernel/l3token.dtx 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3token.dtx 2017-07-17 00:38:38 UTC (rev 7384)
@@ -1131,13 +1131,13 @@
% \begin{macro}{\char_show_value_catcode:n}
% Simple wrappers around the primitives.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new_protected:Npn \char_set_catcode:nn #1#2
{
\tex_catcode:D \__int_eval:w #1 \__int_eval_end:
= \__int_eval:w #2 \__int_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \char_value_catcode:n #1
{ \tex_the:D \tex_catcode:D \__int_eval:w #1 \__int_eval_end: }
\cs_new_protected:Npn \char_show_value_catcode:n #1
@@ -1271,46 +1271,46 @@
% \begin{macro}{\char_show_value_sfcode:n}
% Pretty repetitive, but necessary!
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new_protected:Npn \char_set_mathcode:nn #1#2
{
\tex_mathcode:D \__int_eval:w #1 \__int_eval_end:
= \__int_eval:w #2 \__int_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \char_value_mathcode:n #1
{ \tex_the:D \tex_mathcode:D \__int_eval:w #1 \__int_eval_end: }
\cs_new_protected:Npn \char_show_value_mathcode:n #1
{ \__msg_show_wrap:n { > ~ \char_value_mathcode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new_protected:Npn \char_set_lccode:nn #1#2
{
\tex_lccode:D \__int_eval:w #1 \__int_eval_end:
= \__int_eval:w #2 \__int_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \char_value_lccode:n #1
{ \tex_the:D \tex_lccode:D \__int_eval:w #1 \__int_eval_end: }
\cs_new_protected:Npn \char_show_value_lccode:n #1
{ \__msg_show_wrap:n { > ~ \char_value_lccode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new_protected:Npn \char_set_uccode:nn #1#2
{
\tex_uccode:D \__int_eval:w #1 \__int_eval_end:
= \__int_eval:w #2 \__int_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \char_value_uccode:n #1
{ \tex_the:D \tex_uccode:D \__int_eval:w #1 \__int_eval_end: }
\cs_new_protected:Npn \char_show_value_uccode:n #1
{ \__msg_show_wrap:n { > ~ \char_value_uccode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new_protected:Npn \char_set_sfcode:nn #1#2
{
\tex_sfcode:D \__int_eval:w #1 \__int_eval_end:
= \__int_eval:w #2 \__int_eval_end:
}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
\cs_new:Npn \char_value_sfcode:n #1
{ \tex_the:D \tex_sfcode:D \__int_eval:w #1 \__int_eval_end: }
\cs_new_protected:Npn \char_show_value_sfcode:n #1
@@ -1395,7 +1395,7 @@
% the interface layer, turn the two arguments into integers up-front so
% this is only done once.
% \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
\cs_new:Npn \char_generate:nn #1#2
{
\exp:w \exp_after:wN \@@_generate_aux:w
Modified: trunk/l3kernel/testfiles/m3expl001.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2800,7 +2800,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2798,7 +2798,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2800,7 +2800,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-07-17 00:38:38 UTC (rev 7384)
@@ -2798,7 +2798,6 @@
Defining message LaTeX/kernel/variable-not-defined on line ...
Defining message LaTeX/kernel/variant-too-long on line ...
Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
Defining message LaTeX/check/non-declared-variable on line ...
Defining message LaTeX/kernel/bad-variable on line ...
Defining message LaTeX/kernel/misused-sequence on line ...
More information about the latex3-commits
mailing list