[latex3-commits] [l3svn] r6880 - Speed-up line-wrapping code
noreply at latex-project.org
noreply at latex-project.org
Sat Feb 11 04:16:17 CET 2017
Author: bruno
Date: 2017-02-11 04:16:17 +0100 (Sat, 11 Feb 2017)
New Revision: 6880
Modified:
trunk/l3kernel/l3file.dtx
trunk/l3kernel/l3str.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/m3expl002.luatex.tlg
trunk/l3kernel/testfiles/m3expl002.ptex.tlg
trunk/l3kernel/testfiles/m3expl002.tlg
trunk/l3kernel/testfiles/m3expl002.uptex.tlg
trunk/l3kernel/testfiles/m3expl002.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
trunk/l3kernel/testfiles/m3expl004.luatex.tlg
trunk/l3kernel/testfiles/m3expl004.ptex.tlg
trunk/l3kernel/testfiles/m3expl004.tlg
trunk/l3kernel/testfiles/m3expl004.uptex.tlg
trunk/l3kernel/testfiles/m3expl004.xetex.tlg
trunk/l3kernel/testfiles/m3expl006.luatex.tlg
trunk/l3kernel/testfiles/m3expl006.ptex.tlg
trunk/l3kernel/testfiles/m3expl006.tlg
trunk/l3kernel/testfiles/m3expl006.uptex.tlg
trunk/l3kernel/testfiles/m3expl006.xetex.tlg
trunk/l3kernel/testfiles/m3msg002.tlg
Log:
Speed-up line-wrapping code
This commit speeds up the line-wrapping code by changing the
approach completely: instead of grabbing words one by one and
checking if they fit, we now grab a whole line and chop off
the last word if it does not fit. Unfortunately, the speed-up
is smaller than I hoped. None of the output is changed.
Modified: trunk/l3kernel/l3file.dtx
===================================================================
--- trunk/l3kernel/l3file.dtx 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/l3file.dtx 2017-02-11 03:16:17 UTC (rev 6880)
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3file.dtx Copyright (C) 1990-2016 The LaTeX3 Project
+%% File: l3file.dtx Copyright (C) 1990-2017 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -1464,7 +1464,14 @@
% used by the messaging system, but is designed such that it is
% available for other uses.
%
-% \begin{macro}[var, added = 2012-06-24]{\l_iow_line_count_int}
+% \begin{macro}{\c_catcode_other_space_tl}
+% Create a space with category code $12$: an \enquote{other} space.
+% \begin{macrocode}
+\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_iow_line_count_int}
% This is the \enquote{raw} number of characters in a line which
% can be written to the terminal.
% The standard value is the line length typically used by
@@ -1473,93 +1480,100 @@
\int_new:N \l_iow_line_count_int
\int_set:Nn \l_iow_line_count_int { 78 }
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
-% \begin{macro}[aux]{\l_@@_target_count_int}
+% \begin{variable}{\l_@@_newline_tl}
+% The token list inserted to produce a new line, with the
+% \meta{run-on text}.
+% \begin{macrocode}
+\tl_new:N \l_@@_newline_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_line_target_int, \l_@@_target_int}
% This stores the target line count: the full number of characters
% in a line, minus any part for a leader at the start of each line.
% \begin{macrocode}
-\int_new:N \l_@@_target_count_int
+\int_new:N \l_@@_line_target_int
+\int_new:N \l_@@_target_int
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
-% \begin{macro}[aux]
-% {
-% \l_@@_current_line_int,
-% \l_@@_current_word_int,
-% \l_@@_current_indentation_int
-% }
-% These store the number of characters in the line and word currently
-% being constructed, and the current indentation, respectively.
+% \begin{macro}[aux]{\@@_set_indent:n}
+% \begin{macro}[aux]{\@@_unindent:w}
+% \begin{variable}{\l_@@_one_indent_tl, \l_@@_one_indent_int}
+% The \texttt{one_indent} variables hold one indentation marker and
+% its length. The \cs{@@_unindent:w} auxiliary removes one
+% indentation. The function \cs{@@_set_indent:n} (that could possibly
+% be public) sets the indentation in a consistent way. We set it to
+% four spaces by default.
% \begin{macrocode}
-\int_new:N \l_@@_current_line_int
-\int_new:N \l_@@_current_word_int
-\int_new:N \l_@@_current_indentation_int
+\tl_new:N \l_@@_one_indent_tl
+\int_new:N \l_@@_one_indent_int
+\cs_new:Npn \@@_unindent:w { }
+\cs_new_protected:Npn \@@_set_indent:n #1
+ {
+ \tl_set:Nx \l_@@_one_indent_tl
+ { \exp_args:No \__str_to_other_fast:n { \tl_to_str:n {#1} } }
+ \int_set:Nn \l_@@_one_indent_int { \str_count:N \l_@@_one_indent_tl }
+ \exp_last_unbraced:NNo
+ \cs_set:Npn \@@_unindent:w \l_@@_one_indent_tl { }
+ }
+\exp_args:Nx \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
% \end{macrocode}
+% \end{variable}
% \end{macro}
+% \end{macro}
%
-% \begin{macro}[aux]
-% {
-% \l_@@_current_line_tl,
-% \l_@@_current_word_tl,
-% \l_@@_current_indentation_tl
-% }
-% These hold the current line of text and current word,
-% and a number of spaces for indentation, respectively.
+% \begin{variable}{\l_@@_indent_tl, \l_@@_indent_int}
+% The current indentation (some copies of \cs{l_@@_one_indent_tl}) and
+% its number of characters.
% \begin{macrocode}
-\tl_new:N \l_@@_current_line_tl
-\tl_new:N \l_@@_current_word_tl
-\tl_new:N \l_@@_current_indentation_tl
+\tl_new:N \l_@@_indent_tl
+\int_new:N \l_@@_indent_int
% \end{macrocode}
-%\end{macro}
+% \end{variable}
%
-% \begin{macro}[aux]{\l_@@_wrap_tl}
-% Used for the expansion step before detokenizing, and for the output
-% from wrapping text: fully expanded and with lines which are not
-% overly long.
+% \begin{variable}{\l_@@_line_tl, \l_@@_line_part_tl}
+% These hold the current line of text and a partial line to be added
+% to it, respectively.
% \begin{macrocode}
-\tl_new:N \l_@@_wrap_tl
+\tl_new:N \l_@@_line_tl
+\tl_new:N \l_@@_line_part_tl
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
-% \begin{macro}[aux]{\l_@@_newline_tl}
-% The token list inserted to produce the new line, with the
-% \meta{run-on text}.
+% \begin{variable}{\l_@@_line_break_bool}
+% Indicates whether the line was broken precisely at a chunk boundary.
% \begin{macrocode}
-\tl_new:N \l_@@_newline_tl
+\bool_new:N \l_@@_line_break_bool
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
-% \begin{macro}[aux]{\l_@@_line_start_bool}
-% Boolean to avoid adding a space at the beginning of forced newlines,
-% and to know when to add the indentation.
+% \begin{variable}{\l_@@_wrap_tl}
+% Used for the expansion step before detokenizing, and for the output
+% from wrapping text: fully expanded and with lines which are not
+% overly long.
% \begin{macrocode}
-\bool_new:N \l_@@_line_start_bool
+\tl_new:N \l_@@_wrap_tl
% \end{macrocode}
-% \end{macro}
+% \end{variable}
%
-% \begin{macro}{\c_catcode_other_space_tl}
-% Create a space with category code $12$: an \enquote{other} space.
-% \begin{macrocode}
-\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[aux]{\c_@@_wrap_marker_tl}
-% \begin{macro}[aux]
+% \begin{variable}{\c_@@_wrap_marker_tl}
+% \begin{variable}
% {
% \c_@@_wrap_end_marker_tl,
% \c_@@_wrap_newline_marker_tl,
% \c_@@_wrap_indent_marker_tl,
% \c_@@_wrap_unindent_marker_tl
% }
-% Every special action of the wrapping code is preceded by
+% Every special action of the wrapping code is starts with
% the same recognizable string, \cs{c_@@_wrap_marker_tl}.
% Upon seeing that \enquote{word}, the wrapping code reads
% one space-delimited argument to know what operation to
% perform. The setting of \tn{escapechar} here is not
% very important, but makes \cs{c_@@_wrap_marker_tl} look
-% nicer.
+% marginally nicer.
% \begin{macrocode}
\group_begin:
\int_set:Nn \tex_escapechar:D { - \c_one }
@@ -1571,26 +1585,32 @@
{
\tl_const:cx { c_@@_wrap_ #1 _marker_tl }
{
- \c_catcode_other_space_tl
\c_@@_wrap_marker_tl
- \c_catcode_other_space_tl
#1
\c_catcode_other_space_tl
}
}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{variable}
+% \end{variable}
%
% \begin{macro}{\iow_indent:n}
-% \begin{macro}[aux]{\@@_indent:n, \@@_indent_error:n}
-% We give a (protected) error definition to \cs{iow_indent:n}
-% when outside messages. Within wrapped message, it places
-% the instruction for increasing the indentation before its
-% argument, and the instruction for unindenting afterwards.
-% Note that there will be no forced line-break, so the indentation
-% only changes when the next line is started.
+% \begin{macro}[EXP,aux]{\@@_indent:n}
+% \begin{macro}[EXP,aux]{\@@_indent_error:n}
+% We set \cs{iow_indent:n} to produce an error when outside
+% messages. Within wrapped message, it is set to \cs{@@_indent:n} when
+% valid and otherwise to \cs{@@_indent_error:n}. The first places the
+% instruction for increasing the indentation before its argument, and
+% the instruction for unindenting afterwards. The second produces an
+% error expandably. Note that there will be no forced line-break, so
+% the indentation only changes when the next line is started.
% \begin{macrocode}
+\cs_new_protected:Npn \iow_indent:n #1
+ {
+ \__msg_kernel_error:nnnnn { kernel } { iow-indent }
+ { \iow_wrap:nnnN } { \iow_indent:n } {#1}
+ #1
+ }
\cs_new:Npx \@@_indent:n #1
{
\c_@@_wrap_indent_marker_tl
@@ -1599,31 +1619,23 @@
}
\cs_new:Npn \@@_indent_error:n #1
{
- \__msg_kernel_expandable_error:nn { kernel } { indent-outside-wrapping-code }
+ \__msg_kernel_expandable_error:nnnnn { kernel } { iow-indent }
+ { \iow_wrap:nnnN } { \iow_indent:n } {#1}
#1
}
-\cs_new_protected:Npn \iow_indent:n { \@@_indent_error:n }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\iow_wrap:nnnN}
% \begin{macro}[aux]{\@@_wrap_set:Nx}
% The main wrapping function works as follows. First give |\\|,
% \verb*|\ | and other formatting commands the correct definition for
-% messages, before fully-expanding the input. In package mode, the
-% expansion uses \LaTeXe{}'s \cs{protect} mechanism. Afterwards, set
-% the newline marker (two assignments to fully expand, then convert
-% to a string) and its length, and initialize some registers.
-% There is then a loop over each word in the input, which will do the
-% actual wrapping. After the loop, the resulting text is passed on to
-% the function which has been given as a post-processor.
-% The argument |#4| is available for additional set up steps for
-% the output. The definition of |\\| and \verb*|\ | use an
-% \enquote{other} space rather than a normal space, because the latter
-% might be absorbed by \TeX{} to end a number or other \texttt{f}-type
-% expansions. The \cs{tl_to_str:N} step converts the \enquote{other}
-% space back to a normal space.
+% messages and perform the given setup~|#3|. The definition of
+% \verb*|\ | uses an \enquote{other} space rather than a normal space,
+% because the latter might be absorbed by \TeX{} to end a number or
+% other \texttt{f}-type expansions.
% \begin{macrocode}
\cs_new_protected:Npn \iow_wrap:nnnN #1#2#3#4
{
@@ -1639,48 +1651,39 @@
\cs_set_eq:NN \ \c_catcode_other_space_tl
\cs_set_eq:NN \iow_indent:n \@@_indent:n
#3
-%<*initex>
+% \end{macrocode}
+% Then fully-expand the input: in package mode, the expansion uses
+% \LaTeXe{}'s \cs{protected} mechanism. As soon as the expansion is
+% done, reset \cs{iow_indent:n} to its error definition: it only works
+% in the first argument of \cs{iow_wrap:nnnN}.
+% \begin{macrocode}
+%<*initex>
\tl_set:Nx \l_@@_wrap_tl {#1}
%</initex>
%<*package>
\@@_wrap_set:Nx \l_@@_wrap_tl {#1}
%</package>
+ \cs_set_eq:NN \iow_indent:n \@@_indent_error:n
% \end{macrocode}
-% To warn users that \cs{iow_indent:n} only works in the first argument
-% of \cs{iow_wrap:nnnN} reset \cs{iow_indent:n} to its error
-% definition. Then store a newline character and the run-on text as a
-% string in \cs{l_@@_newline_tl}, and set some variables. The first
-% line's target count is equal to the length of the whole line. The
-% value \cs{l_@@_target_count_int} is altered later on by
-% \cs{@@_wrap_set_target:}.
+% Afterwards, set the newline marker (two assignments to fully expand,
+% then convert to a string) and initialize the target count for lines
+% (the first line has target count \cs{l_iow_line_count_int} instead).
% \begin{macrocode}
- \cs_set_eq:NN \iow_indent:n \@@_indent_error:n
\tl_set:Nx \l_@@_newline_tl { \iow_newline: #2 }
\tl_set:Nx \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
- \int_set_eq:NN \l_@@_target_count_int \l_iow_line_count_int
- \tl_clear:N \l_@@_current_indentation_tl
- \int_zero:N \l_@@_current_line_int
- \tl_set:Nn \l_@@_current_line_tl { \use_none:n }
- \bool_set_true:N \l_@@_line_start_bool
+ \int_set:Nn \l_@@_line_target_int
+ { \l_iow_line_count_int - \str_count:N \l_@@_newline_tl + \c_one }
% \end{macrocode}
-% After some setup above (in particular the odd setting of the current line
-% to \cs{use_none:n}), a loop goes through space-delimited words in the
-% message, recognizing special markers. To make sure that the first line
-% behaves identically to others, start with a newline marker: the
-% \cs{use_none:n} above avoids actually getting a new line in the output.
+% There is then a loop over the input, which will store the wrapped
+% result in \cs{l_@@_wrap_tl}. After the loop, the resulting text is
+% passed on to the function which has been given as a post-processor.
+% The \cs{tl_to_str:N} step converts the \enquote{other} spaces back
+% to normal spaces. The \texttt{f}-expansion removes a leading space
+% from \cs{l_@@_wrap_tl}.
% \begin{macrocode}
- \use:x
- {
- \exp_not:n { \tl_clear:N \l_@@_wrap_tl }
- \@@_wrap_loop:w
- \tl_to_str:N \c_@@_wrap_newline_marker_tl
- \tl_to_str:N \l_@@_wrap_tl
- \tl_to_str:N \c_@@_wrap_end_marker_tl
- \c_space_tl \c_space_tl
- \exp_not:N \q_stop
- }
- \exp_args:NNo \group_end:
- #4 \l_@@_wrap_tl
+ \@@_wrap_do:
+ \exp_args:NNf \group_end:
+ #4 { \tl_to_str:N \l_@@_wrap_tl }
}
% \end{macrocode}
% As using the generic loader will mean that \cs{protected at edef} is
@@ -1694,161 +1697,341 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[aux]{\@@_wrap_set_target:}
-% This is called at the beginning of every line (both those forced by
-% |\\| and those due to line-breaking). The initial call does
-% nothing except redefine \cs{@@_wrap_set_target:} itself (within the
-% group in which \cs{iow_wrap:nnnN} works). The next call (at the
-% beginning of the second line) disables any later call and sets the
-% \cs{l_@@_target_count_int} to the correct value, namely the
-% \cs{l_iow_line_count_int} shortened by the length of the run-on
-% text (the shift by~$1$ is due to the presence of \cs{iow_newline:}
-% in \cs{l_@@_newline_tl}).
-% This is a bit of a hack to measure the string length of the run on text
-% without the \pkg{l3str} module (which is still experimental). This should
-% be replaced once the string module is finalised with something a little
-% cleaner.
+% \begin{macro}[aux]{\@@_wrap_do:, \@@_wrap_start:w}
+% Escape spaces. Set up a few variables, in particular the initial
+% value of \cs{l_@@_wrap_tl}: the space will stop the
+% \texttt{f}-expansion of the main wrapping function and
+% \cs{use_none:n} will remove a newline marker inserted by later code.
+% The main loop consists of repeatedly calling the \texttt{chunk}
+% auxiliary to wrap chunks delimited by (newline or indentation)
+% markers.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_wrap_set_target:
+\cs_new_protected:Npn \@@_wrap_do:
{
- \cs_set_protected:Npn \@@_wrap_set_target:
+ \tl_set:Nx \l_@@_wrap_tl
{
- \cs_set_protected:Npn \@@_wrap_set_target: { }
- \tl_replace_all:Nnn \l_@@_newline_tl { ~ } { \c_space_tl }
- \int_set:Nn \l_@@_target_count_int
- { \l_iow_line_count_int - \tl_count:N \l_@@_newline_tl + \c_one }
+ \exp_args:No \__str_to_other_fast:n \l_@@_wrap_tl
+ \c_@@_wrap_end_marker_tl
}
+ \exp_after:wN \@@_wrap_start:w \l_@@_wrap_tl
}
+\cs_new_protected:Npn \@@_wrap_start:w
+ {
+ \bool_set_false:N \l_@@_line_break_bool
+ \tl_clear:N \l_@@_line_tl
+ \tl_clear:N \l_@@_line_part_tl
+ \tl_set:Nn \l_@@_wrap_tl { ~ \use_none:n }
+ \int_zero:N \l_@@_indent_int
+ \tl_clear:N \l_@@_indent_tl
+ \@@_wrap_chunk:nw { \l_iow_line_count_int }
+ }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[aux]{\@@_wrap_loop:w}
-% The loop grabs one word in the input, and checks whether it is
-% the special marker, or a normal word.
+% \begin{macro}[aux]{\@@_wrap_chunk:nw}
+% This auxiliary is defined indirectly to obtain the expansions of
+% \cs{c_catcode_other_space_tl} and \cs{c_@@_wrap_marker_tl} in its
+% definition. The first argument is a target number of characters.
+% The second is some string to wrap. The third is \texttt{newline} or
+% \texttt{indent} or \texttt{unindent} or \texttt{end} to indicate the
+% type of marker. If there is nothing to wrap then simply call the
+% function corresponding to the type of marker after setting a few
+% variables. Otherwise, set up a call to \cs{@@_wrap_line:nw},
+% including the indentation if the current line is empty, and
+% including a trailing space (|#1|) before the
+% \cs{@@_wrap_end_chunk:w} auxiliary.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_wrap_loop:w #1 ~ %
+\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \tl_set:Nn \l_@@_current_word_tl {#1}
- \tl_if_eq:NNTF \l_@@_current_word_tl \c_@@_wrap_marker_tl
- { \@@_wrap_special:w }
- { \@@_wrap_word: }
+ \cs_new_protected:Npn \@@_wrap_chunk:nw ##1##2 #2 ##3 #1
+ {
+ \tl_if_empty:nTF {##2}
+ {
+ \tl_clear:N \l_@@_line_part_tl
+ \int_set:Nn \l_@@_target_int {##1}
+ }
+ {
+ \tl_if_empty:NTF \l_@@_line_tl
+ {
+ \@@_wrap_line:nw
+ { \l_@@_indent_tl }
+ ##1 - \l_@@_indent_int ;
+ }
+ { \@@_wrap_line:nw { } ##1 ; }
+ ##2 #1
+ \@@_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \q_stop
+ }
+ \use:c { @@_wrap_##3: }
+ }
}
+\exp_args:NVV \@@_tmp:w \c_catcode_other_space_tl \c_@@_wrap_marker_tl
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[aux]{\@@_wrap_word:}
-% \begin{macro}[aux]{\@@_wrap_word_fits:}
-% \begin{macro}[aux]{\@@_wrap_word_newline:}
-% For a normal word, update the line count, then test if the current
-% word would fit in the current line, and call the appropriate function.
-% If the word fits in the current line, add it to the line, preceded by
-% a space unless it is the first word of the line.
-% Otherwise, the current line is added to the result, with the run-on text.
-% The current word (and its character count) are then put in the new line.
+% \begin{macro}[aux]{\@@_wrap_line:nw}
+% \begin{macro}[EXP,aux]
+% {
+% \@@_wrap_line_loop:w,
+% \@@_wrap_line_aux:Nw,
+% \@@_wrap_line_end:NnnnnnnnN,
+% \@@_wrap_line_end:nw,
+% \@@_wrap_end_chunk:w
+% }
+% This is followed by \Arg{string} \meta{intexpr} |;|. It stores the
+% \meta{string} and up to \meta{intexpr} characters from the current
+% chunk into \cs{l_@@_line_part_tl}. Characters are grabbed 8~at a
+% time and left in \cs{l_@@_line_part_tl} by the \texttt{line_loop}
+% auxiliary. When $k<8$ remain to be found, the \texttt{line_aux}
+% auxiliary calls the \texttt{line_end} auxiliary followed by (the
+% single digit) $k$, then $7-k$ empty brace groups, then the chunk's
+% remaining characters. The \texttt{line_end} auxiliary leaves
+% $k$~characters from the chunk in the line part, then ends the
+% assignment. Ignore the \cs{use_none:nnnnn} line for now. If the
+% next character is a space the line can be broken there:
+% store what we found into the result and get the next line.
+% Otherwise some work is needed to find a break-point. So far we have
+% ignored what happens if the chunk is shorter than the requested
+% number of characters: this is dealt with by the \texttt{end_chunk}
+% auxiliary, which gets treated like a character by the rest of the
+% code. It ends up being called either as one of the arguments
+% |#2|--|#9| of the \texttt{line_loop} auxiliary or as one of the
+% arguments |#2|--|#8| of the \texttt{line_end} auxiliary. In both
+% cases stop the assignment and work out how many characters are still
+% needed. The weird \cs{use_none:nnnnn} ensures that the required
+% data is in the right place.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_wrap_word:
+\cs_new_protected:Npn \@@_wrap_line:nw #1
{
- \int_set:Nn \l_@@_current_word_int
- { \exp_args:No \str_count_ignore_spaces:n \l_@@_current_word_tl }
- \int_add:Nn \l_@@_current_line_int { \l_@@_current_word_int }
- \int_compare:nNnTF \l_@@_current_line_int < \l_@@_target_count_int
- { \@@_wrap_word_fits: }
- { \@@_wrap_word_newline: }
- \@@_wrap_loop:w
+ \tex_edef:D \l_@@_line_part_tl { \if_false: } \fi:
+ #1
+ \exp_after:wN \@@_wrap_line_loop:w
+ \__int_value:w \__int_eval:w
}
-\cs_new_protected:Npn \@@_wrap_word_fits:
+\cs_new:Npn \@@_wrap_line_loop:w #1 ; #2#3#4#5#6#7#8#9
{
- \bool_if:NTF \l_@@_line_start_bool
+ \if_int_compare:w #1 < \c_eight
+ \@@_wrap_line_aux:Nw #1
+ \fi:
+ #2 #3 #4 #5 #6 #7 #8 #9
+ \exp_after:wN \@@_wrap_line_loop:w
+ \__int_value:w \__int_eval:w #1 - \c_eight ;
+ }
+\cs_new:Npn \@@_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 ;
+ {
+ #2
+ \exp_after:wN \@@_wrap_line_end:NnnnnnnnN
+ \exp_after:wN #1
+ \exp:w \exp_end_continue_f:w
+ \exp_after:wN \exp_after:wN
+ \if_case:w #1 \exp_stop_f:
+ \prg_do_nothing:
+ \or: \use_none:n
+ \or: \use_none:nn
+ \or: \use_none:nnn
+ \or: \use_none:nnnn
+ \or: \use_none:nnnnn
+ \or: \use_none:nnnnnn
+ \or: \use_none:nnnnnnn
+ \fi:
+ { } { } { } { } { } { } { } #3
+ }
+\cs_new:Npn \@@_wrap_line_end:NnnnnnnnN #1#2#3#4#5#6#7#8#9
+ {
+ #2 #3 #4 #5 #6 #7 #8
+ \use_none:nnnnn \__int_eval:w \c_eight - ; #9
+ \token_if_eq_charcode:NNTF \c_space_token #9
+ { \@@_wrap_line_end:nw { } }
+ { \if_false: { \fi: } \@@_wrap_break:w #9 }
+ }
+\cs_new:Npn \@@_wrap_line_end:nw #1
+ {
+ \if_false: { \fi: }
+ \@@_wrap_store_do:n {#1}
+ \@@_wrap_next_line:w
+ }
+\cs_new:Npn \@@_wrap_end_chunk:w
+ #1 \__int_eval:w #2 - #3 ; #4#5 \q_stop
+ {
+ \if_false: { \fi: }
+ \int_set:Nn \l_@@_target_int { #2 - #4 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP,aux]{\@@_wrap_break:w}
+% \begin{macro}[EXP,aux]
+% {
+% \@@_wrap_break_first:w,
+% \@@_wrap_break_none:w,
+% \@@_wrap_break_loop:w,
+% \@@_wrap_break_end:w,
+% }
+% Functions here are defined indirectly: \cs{@@_tmp:w} is eventually
+% called with an \enquote{other} space as its argument. The goal is
+% to remove from \cs{l_@@_line_part_tl} the part after the last space.
+% In most cases this is done by repeatedly calling the
+% \texttt{break_loop} auxiliary, which leaves \enquote{words}
+% (delimited by spaces) until it hits the trailing space: then its
+% argument |##3| is |?| \cs{@@_wrap_break_end:w} instead of a single
+% token, and that \texttt{break_end} auxiliary leaves in the
+% assignment the line until the last space, then calls
+% \cs{@@_wrap_line_end:nw} to finish up the line and move on to the
+% next. If there is no space in \cs{l_@@_line_part_tl} then the
+% \texttt{break_first} auxiliary calls the \texttt{break_none}
+% auxiliary. In that case, if the current line is empty, the complete
+% word (including |##4|, characters beyond what we had grabbed) is
+% added to the line, making it over-long. Otherwise, the word will be
+% used for the following line (and the last space of the line so far
+% is removed because it was inserted due to the presence of a marker).
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_tmp:w #1
+ {
+ \cs_new:Npn \@@_wrap_break:w
{
- \bool_set_false:N \l_@@_line_start_bool
- \tl_put_right:Nx \l_@@_current_line_tl
- { \l_@@_current_indentation_tl \l_@@_current_word_tl }
- \int_add:Nn \l_@@_current_line_int
- { \l_@@_current_indentation_int }
+ \tex_edef:D \l_@@_line_part_tl
+ { \if_false: } \fi:
+ \exp_after:wN \@@_wrap_break_first:w
+ \l_@@_line_part_tl
+ #1
+ { ? \@@_wrap_break_end:w }
+ \q_mark
}
+ \cs_new:Npn \@@_wrap_break_first:w ##1 #1 ##2
{
- \tl_put_right:Nx \l_@@_current_line_tl
- { ~ \l_@@_current_word_tl }
- \int_incr:N \l_@@_current_line_int
+ \use_none:nn ##2 \@@_wrap_break_none:w
+ \@@_wrap_break_loop:w ##1 #1 ##2
}
- }
-\cs_new_protected:Npn \@@_wrap_word_newline:
- {
- \@@_wrap_set_target:
- \tl_put_right:Nx \l_@@_wrap_tl
- { \l_@@_current_line_tl \l_@@_newline_tl }
- \int_set:Nn \l_@@_current_line_int
+ \cs_new:Npn \@@_wrap_break_none:w ##1##2 #1 ##3 \q_mark ##4 #1
{
- \l_@@_current_word_int
- + \l_@@_current_indentation_int
+ \tl_if_empty:NTF \l_@@_line_tl
+ { ##2 ##4 \@@_wrap_line_end:nw { } }
+ { \@@_wrap_line_end:nw { \@@_wrap_trim:N } ##2 ##4 #1 }
}
- \tl_set:Nx \l_@@_current_line_tl
- { \l_@@_current_indentation_tl \l_@@_current_word_tl }
+ \cs_new:Npn \@@_wrap_break_loop:w ##1 #1 ##2 #1 ##3
+ {
+ \use_none:n ##3
+ ##1 #1
+ \@@_wrap_break_loop:w ##2 #1 ##3
+ }
+ \cs_new:Npn \@@_wrap_break_end:w ##1 #1 ##2 ##3 #1 ##4 \q_mark
+ { ##1 \@@_wrap_line_end:nw { } ##3 }
}
+\exp_args:NV \@@_tmp:w \c_catcode_other_space_tl
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
-% \begin{macro}[aux]{\@@_wrap_special:w}
-% \begin{macro}[aux]{\@@_wrap_newline:w}
-% \begin{macro}[aux]{\@@_wrap_indent:w}
-% \begin{macro}[aux]{\@@_wrap_unindent:w}
-% \begin{macro}[aux]{\@@_wrap_end:w}
-% When the \enquote{special} marker is encountered,
-% read what operation to perform, as a space-delimited
-% argument, perform it, and remember to loop.
-% In fact, to avoid spurious spaces when two special
-% actions follow each other, we look ahead for another
-% copy of the marker.
-% Forced newlines are almost identical to those caused by overflow,
-% except that here the word is empty.
-% To indent more, add four spaces to the start of the indentation
-% token list. To reduce indentation, rebuild the indentation token
-% list using \cs{prg_replicate:nn}.
-% At the end, we simply save the last line (without the run-on text),
-% and prevent the loop.
+% \begin{macro}[aux]{\@@_wrap_next_line:w}
+% The special case where the end of a line coincides with the end of a
+% chunk is detected here, to avoid a spurious empty line. Otherwise,
+% call \cs{@@_wrap_line:nw} to find characters for the next line
+% (remembering to account for the indentation).
% \begin{macrocode}
-\cs_new_protected:Npn \@@_wrap_special:w #1 ~ #2 ~ #3 ~ %
+\cs_new_protected:Npn \@@_wrap_next_line:w #1#2 \q_stop
{
- \use:c { @@_wrap_#1: }
- \str_if_eq_x:nnTF { #2~#3 } { ~ \c_@@_wrap_marker_tl }
- { \@@_wrap_special:w }
- { \@@_wrap_loop:w #2 ~ #3 ~ }
+ \tl_clear:N \l_@@_line_tl
+ \token_if_eq_meaning:NNTF #1 \@@_wrap_end_chunk:w
+ {
+ \tl_clear:N \l_@@_line_part_tl
+ \bool_set_true:N \l_@@_line_break_bool
+ \int_set_eq:NN \l_@@_target_int \l_@@_line_target_int
+ }
+ {
+ \@@_wrap_line:nw
+ { \l_@@_indent_tl }
+ \l_@@_line_target_int - \l_@@_indent_int ;
+ #1 #2 \q_stop
+ }
}
-\cs_new_protected:Npn \@@_wrap_newline:
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux]{\@@_wrap_indent:, \@@_wrap_unindent:}
+% These functions are called after a chunk has been wrapped, when
+% encountering \texttt{indent}/\texttt{unindent} markers. Add the
+% line part (last line part of the previous chunk) to the line so far
+% and reset a boolean denoting the presence of a line-break. Most
+% importantly, add or remove one indent from the current indent (both
+% the integer and the token list). Finally, continue wrapping.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_wrap_indent:
{
- \@@_wrap_set_target:
- \tl_put_right:Nx \l_@@_wrap_tl
- { \l_@@_current_line_tl \l_@@_newline_tl }
- \int_zero:N \l_@@_current_line_int
- \tl_clear:N \l_@@_current_line_tl
- \bool_set_true:N \l_@@_line_start_bool
+ \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+ \bool_set_false:N \l_@@_line_break_bool
+ \int_add:Nn \l_@@_indent_int { \l_@@_one_indent_int }
+ \tl_put_right:No \l_@@_indent_tl { \l_@@_one_indent_tl }
+ \@@_wrap_chunk:nw { \l_@@_target_int }
}
-\cs_new_protected:Npx \@@_wrap_indent:
+\cs_new_protected:Npn \@@_wrap_unindent:
{
- \int_add:Nn \l_@@_current_indentation_int \c_four
- \tl_put_right:Nx \exp_not:N \l_@@_current_indentation_tl
- { \c_space_tl \c_space_tl \c_space_tl \c_space_tl }
+ \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+ \bool_set_false:N \l_@@_line_break_bool
+ \int_sub:Nn \l_@@_indent_int { \l_@@_one_indent_int }
+ \tl_set:Nx \l_@@_indent_tl
+ { \exp_after:wN \@@_unindent:w \l_@@_indent_tl }
+ \@@_wrap_chunk:nw { \l_@@_target_int }
}
-\cs_new_protected:Npn \@@_wrap_unindent:
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[aux]{\@@_wrap_newline:, \@@_wrap_end:}
+% These functions are called after a chunk has been line-wrapped, when
+% encountering a \texttt{newline}/\texttt{end} marker. Unless we just
+% took a line-break, store the line part and the line so far into the
+% whole \cs{l_@@_wrap_tl}, trimming a trailing space. In the
+% \texttt{newline} case look for a new line (of length
+% \cs{l_@@_line_target_int}) in a new chunk.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_wrap_newline:
{
- \int_sub:Nn \l_@@_current_indentation_int \c_four
- \tl_set:Nx \l_@@_current_indentation_tl
- { \prg_replicate:nn \l_@@_current_indentation_int { ~ } }
+ \bool_if:NF \l_@@_line_break_bool
+ { \@@_wrap_store_do:n { \@@_wrap_trim:N } }
+ \bool_set_false:N \l_@@_line_break_bool
+ \@@_wrap_chunk:nw { \l_@@_line_target_int }
}
\cs_new_protected:Npn \@@_wrap_end:
{
- \tl_put_right:Nx \l_@@_wrap_tl
- { \l_@@_current_line_tl }
- \use_none_delimit_by_q_stop:w
+ \bool_if:NF \l_@@_line_break_bool
+ { \@@_wrap_store_do:n { \@@_wrap_trim:N } }
+ \bool_set_false:N \l_@@_line_break_bool
}
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}[aux]{\@@_wrap_store_do:n}
+% First add the last line part to the line, then append it to
+% \cs{l_@@_wrap_tl} with the appropriate new line (with
+% \enquote{run-on} text), possibly with its last space removed (|#1|
+% is empty or \cs{@@_wrap_trim:N}).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_wrap_store_do:n #1
+ {
+ \tl_set:Nx \l_@@_line_tl
+ { \l_@@_line_tl \l_@@_line_part_tl }
+ \tl_set:Nx \l_@@_wrap_tl
+ {
+ \l_@@_wrap_tl
+ \l_@@_newline_tl
+ #1 \l_@@_line_tl
+ }
+ \tl_clear:N \l_@@_line_tl
+ }
+% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}[EXP, aux]{\@@_wrap_trim:N, \@@_wrap_trim:w}
+% Remove one trailing \enquote{other} space from the argument.
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_tmp:w #1
+ {
+ \cs_new:Npn \@@_wrap_trim:N ##1
+ { \tl_if_empty:NF ##1 { \exp_after:wN \@@_wrap_trim:w ##1 \q_stop } }
+ \cs_new:Npn \@@_wrap_trim:w ##1 #1 \q_stop {##1}
+ }
+\exp_args:NV \@@_tmp:w \c_catcode_other_space_tl
+% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \end{macro}
%
% \subsection{Messages}
%
@@ -1878,8 +2061,13 @@
{
File~names~must~contain~balanced~numbers~of~quotes~(").
}
-\__msg_kernel_new:nnn { kernel } { indent-outside-wrapping-code }
- { Only~\iow_wrap:nnnN~(arg~1)~allows~\iow_indent:n }
+\__msg_kernel_new:nnnn { kernel } { iow-indent }
+ { Only~#1 (arg~1)~allows~#2 }
+ {
+ The~command~#2 can~only~be~used~in~messages~
+ which~will~be~wrapped~using~#1.~
+ It~was~called~with~argument~'#3'.
+ }
% \end{macrocode}
%
% \subsection{Deprecated functions}
Modified: trunk/l3kernel/l3str.dtx
===================================================================
--- trunk/l3kernel/l3str.dtx 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/l3str.dtx 2017-02-11 03:16:17 UTC (rev 6880)
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3str.dtx Copyright (C) 2011-2016 The LaTeX3 Project
+%% File: l3str.dtx Copyright (C) 2011-2017 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -612,6 +612,15 @@
% time quadratic in the character count of the string.
% \end{function}
%
+% \begin{function}[rEXP]{\__str_to_other_fast:n}
+% \begin{syntax}
+% \cs{__str_to_other_fast:n} \Arg{token list}
+% \end{syntax}
+% Same behaviour \cs{__str_to_other:n} but only restricted-expandable.
+% It takes a time linear in the character count of the string.
+% It is used for \cs{iow_wrap:nnnN}.
+% \end{function}
+%
% \begin{function}[EXP]{\__str_count:n}
% \begin{syntax}
% \cs{__str_count:n} \Arg{other string}
@@ -976,6 +985,38 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[rEXP, int]{\@@_to_other_fast:n}
+% \begin{macro}[rEXP, aux]{\@@_to_other_fast_loop:w, \@@_to_other_fast_end:w}
+% The difference with \cs{@@_to_other:n} is that the converted part is
+% left in the input stream, making these commands only
+% restricted-expandable.
+% \begin{macrocode}
+\cs_new:Npn \@@_to_other_fast:n #1
+ {
+ \exp_after:wN \@@_to_other_fast_loop:w \tl_to_str:n {#1} ~
+ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \q_stop
+ }
+\group_begin:
+\tex_lccode:D `\* = `\ %
+\tex_lccode:D `\A = `\A
+\tex_lowercase:D
+ {
+ \group_end:
+ \cs_new:Npn \@@_to_other_fast_loop:w
+ #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 ~ #7 ~ #8 ~ #9 ~
+ {
+ \if_meaning:w A #9
+ \@@_to_other_fast_end:w
+ \fi:
+ #1 * #2 * #3 * #4 * #5 * #6 * #7 * #8 * #9
+ \@@_to_other_fast_loop:w *
+ }
+ \cs_new:Npn \@@_to_other_fast_end:w #1 * A #2 \q_stop {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}[EXP]
% {\str_item:Nn, \str_item:cn, \str_item:nn, \str_item_ignore_spaces:nn}
% \begin{macro}[EXP, aux]{\@@_item:nn, \@@_item:w}
Modified: trunk/l3kernel/testfiles/m3expl001.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -717,6 +717,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2854,48 +2857,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2842,48 +2845,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count119
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count120
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count121
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count122
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count123
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count120
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count121
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count122
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count123
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl001.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2842,48 +2845,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2842,48 +2845,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count119
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count120
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count121
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count122
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count123
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count120
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count121
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count122
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count123
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2852,48 +2855,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl002.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl002.luatex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl002.luatex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl002.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl002.ptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl002.ptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl002.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl002.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl002.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl002.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl002.uptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl002.uptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl002.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl002.xetex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl002.xetex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl003.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -717,6 +717,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2855,48 +2858,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2843,48 +2846,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count119
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count120
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count121
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count122
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count123
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count120
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count121
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count122
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count123
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl003.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2843,48 +2846,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2843,48 +2846,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count119
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count120
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count121
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count122
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count123
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count120
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count121
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count122
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count123
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -715,6 +715,9 @@
Defining \__str_to_other:n on line ...
Defining \__str_to_other_loop:w on line ...
Defining \__str_to_other_end:w on line ...
+Defining \__str_to_other_fast:n on line ...
+Defining \__str_to_other_fast_loop:w on line ...
+Defining \__str_to_other_fast_end:w on line ...
Defining \str_item:Nn on line ...
Defining \str_item:cn on line ...
Defining \str_item:nn on line ...
@@ -2853,48 +2856,63 @@
Defining \iow_term:n on line ...
Defining \iow_newline: on line ...
Defining \iow_char:N on line ...
+Defining \c_catcode_other_space_tl on line ...
Defining \l_iow_line_count_int on line ...
\l_iow_line_count_int=\count118
-Defining \l__iow_target_count_int on line ...
-\l__iow_target_count_int=\count119
-Defining \l__iow_current_line_int on line ...
-\l__iow_current_line_int=\count120
-Defining \l__iow_current_word_int on line ...
-\l__iow_current_word_int=\count121
-Defining \l__iow_current_indentation_int on line ...
-\l__iow_current_indentation_int=\count122
-Defining \l__iow_current_line_tl on line ...
-Defining \l__iow_current_word_tl on line ...
-Defining \l__iow_current_indentation_tl on line ...
+Defining \l__iow_newline_tl on line ...
+Defining \l__iow_line_target_int on line ...
+\l__iow_line_target_int=\count119
+Defining \l__iow_target_int on line ...
+\l__iow_target_int=\count120
+Defining \l__iow_one_indent_tl on line ...
+Defining \l__iow_one_indent_int on line ...
+\l__iow_one_indent_int=\count121
+Defining \__iow_unindent:w on line ...
+Defining \__iow_set_indent:n on line ...
+Defining \l__iow_indent_tl on line ...
+Defining \l__iow_indent_int on line ...
+\l__iow_indent_int=\count122
+Defining \l__iow_line_tl on line ...
+Defining \l__iow_line_part_tl on line ...
+Defining \l__iow_line_break_bool on line ...
Defining \l__iow_wrap_tl on line ...
-Defining \l__iow_newline_tl on line ...
-Defining \l__iow_line_start_bool on line ...
-Defining \c_catcode_other_space_tl on line ...
Defining c__iow_wrap_marker_tl on line ...
Defining \c__iow_wrap_end_marker_tl on line ...
Defining \c__iow_wrap_newline_marker_tl on line ...
Defining \c__iow_wrap_indent_marker_tl on line ...
Defining \c__iow_wrap_unindent_marker_tl on line ...
+Defining \iow_indent:n on line ...
Defining \__iow_indent:n on line ...
Defining \__iow_indent_error:n on line ...
-Defining \iow_indent:n on line ...
Defining \iow_wrap:nnnN on line ...
Defining \__iow_wrap_set:Nx on line ...
-Defining \__iow_wrap_set_target: on line ...
-Defining \__iow_wrap_loop:w on line ...
-Defining \__iow_wrap_word: on line ...
-Defining \__iow_wrap_word_fits: on line ...
-Defining \__iow_wrap_word_newline: on line ...
-Defining \__iow_wrap_special:w on line ...
-Defining \__iow_wrap_newline: on line ...
+Defining \__iow_wrap_do: on line ...
+Defining \__iow_wrap_start:w on line ...
+Defining \__iow_wrap_chunk:nw on line ...
+Defining \__iow_wrap_line:nw on line ...
+Defining \__iow_wrap_line_loop:w on line ...
+Defining \__iow_wrap_line_aux:Nw on line ...
+Defining \__iow_wrap_line_end:NnnnnnnnN on line ...
+Defining \__iow_wrap_line_end:nw on line ...
+Defining \__iow_wrap_end_chunk:w on line ...
+Defining \__iow_wrap_break:w on line ...
+Defining \__iow_wrap_break_first:w on line ...
+Defining \__iow_wrap_break_none:w on line ...
+Defining \__iow_wrap_break_loop:w on line ...
+Defining \__iow_wrap_break_end:w on line ...
+Defining \__iow_wrap_next_line:w on line ...
Defining \__iow_wrap_indent: on line ...
Defining \__iow_wrap_unindent: on line ...
+Defining \__iow_wrap_newline: on line ...
Defining \__iow_wrap_end: on line ...
+Defining \__iow_wrap_store_do:n on line ...
+Defining \__iow_wrap_trim:N on line ...
+Defining \__iow_wrap_trim:w on line ...
Defining message LaTeX/kernel/file-not-found on line ...
Defining message LaTeX/kernel/input-streams-exhausted on line ...
Defining message LaTeX/kernel/output-streams-exhausted on line ...
Defining message LaTeX/kernel/unbalanced-quote-in-filename on line ...
-Defining message LaTeX/kernel/indent-outside-wrapping-code on line ...
+Defining message LaTeX/kernel/iow-indent on line ...
Defining \ior_get_str:NN on line ...
Defining \if_dim:w on line ...
Defining \__dim_eval:w on line ...
Modified: trunk/l3kernel/testfiles/m3expl004.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl004.luatex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl004.luatex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl004.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl004.ptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl004.ptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl004.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl004.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl004.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl004.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl004.uptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl004.uptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl004.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl004.xetex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl004.xetex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -9,10 +9,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl006.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl006.luatex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl006.luatex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -11,10 +11,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl006.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl006.ptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl006.ptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl006.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl006.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl006.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl006.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl006.uptex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl006.uptex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count117
\g__prg_map_int=\count118
\l_iow_line_count_int=\count119
-\l__iow_target_count_int=\count120
-\l__iow_current_line_int=\count121
-\l__iow_current_word_int=\count122
-\l__iow_current_indentation_int=\count123
+\l__iow_line_target_int=\count120
+\l__iow_target_int=\count121
+\l__iow_one_indent_int=\count122
+\l__iow_indent_int=\count123
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3expl006.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl006.xetex.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3expl006.xetex.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -10,10 +10,10 @@
\g_tmpb_int=\count116
\g__prg_map_int=\count117
\l_iow_line_count_int=\count118
-\l__iow_target_count_int=\count119
-\l__iow_current_line_int=\count120
-\l__iow_current_word_int=\count121
-\l__iow_current_indentation_int=\count122
+\l__iow_line_target_int=\count119
+\l__iow_target_int=\count120
+\l__iow_one_indent_int=\count121
+\l__iow_indent_int=\count122
\c_zero_dim=\dimen132
\c_max_dim=\dimen133
\l_tmpa_dim=\dimen134
Modified: trunk/l3kernel/testfiles/m3msg002.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3msg002.tlg 2017-02-11 03:01:59 UTC (rev 6879)
+++ trunk/l3kernel/testfiles/m3msg002.tlg 2017-02-11 03:16:17 UTC (rev 6880)
@@ -176,15 +176,21 @@
TEST 7: Misused indentation
============================================================
1
-! Undefined control sequence.
-<argument> \LaTeX3 error:
- Only \iow_wrap:nnnN (arg 1) allows \iow_indent:n
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/iow-indent"
+!
+! Only \iow_wrap:nnnN (arg 1) allows \iow_indent:n
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
l. ... }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| The command \iow_indent:n can only be used in messages which will be wrapped
+| using \iow_wrap:nnnN . It was called with argument '\TYPE {2}'.
+|...............................................
2
! Undefined control sequence.
<argument> \LaTeX3 error:
More information about the latex3-commits
mailing list