From 5c6685e3821a3ed3e6724abfc3b664668218e83e Mon Sep 17 00:00:00 2001 From: Frank Mittelbach Date: Mon, 19 Apr 2021 09:51:16 +0200 Subject: [PATCH] state from last night, with renames and reworks (still a lot to do) --- base/ltcmdhooks.dtx | 4 +- base/lthooks.dtx | 229 ++++++++++++------ base/testfiles-lthooks/ltcmdhooks-010.lvt | 80 ++++++ base/testfiles-lthooks/ltcmdhooks-010.tlg | 62 +++++ base/testfiles/github-0479-often.luatex.tlg | 56 ++--- ...latexrelease-rollback-003-often.luatex.tlg | 46 ++-- .../tlb-rollback-004-often.luatex.tlg | 46 ++-- 7 files changed, 377 insertions(+), 146 deletions(-) create mode 100644 base/testfiles-lthooks/ltcmdhooks-010.lvt create mode 100644 base/testfiles-lthooks/ltcmdhooks-010.tlg diff --git a/base/ltcmdhooks.dtx b/base/ltcmdhooks.dtx index d3d0a11d7..05bfdb3e2 100644 --- a/base/ltcmdhooks.dtx +++ b/base/ltcmdhooks.dtx @@ -14,7 +14,7 @@ %%% From File: ltcmdhooks.dtx % \def\ltcmdhooksversion{v0.9d} -\def\ltcmdhooksdate{2021/04/17} +\def\ltcmdhooksdate{2021/04/18} % % % @@ -410,7 +410,7 @@ { \@@_debug:n { \iow_term:x { ->~\string\begin{document}~try~cmd / #1 / #2. } } - \@@_if_created:nTF { cmd / #1 / #2 } + \@@_if_declared:nTF { cmd / #1 / #2 } { \@@_debug:n { \iow_term:n { .->~Giving~up:~hook~already~created. } } diff --git a/base/lthooks.dtx b/base/lthooks.dtx index d6fb23393..d35d4bc9e 100644 --- a/base/lthooks.dtx +++ b/base/lthooks.dtx @@ -32,7 +32,7 @@ % % \begin{macrocode} \def\lthooksversion{v1.0k} -\def\lthooksdate{2021/04/17} +\def\lthooksdate{2021/04/18} % \end{macrocode} % %<*driver> @@ -993,9 +993,9 @@ % A leading |.| is treated literally. % \end{function} % -% \begin{function}[pTF]{\@@_if_declared:n} +% \begin{function}[pTF]{\@@_if_usable:n} % \begin{syntax} -% \cs{@@_if_declared:nTF} \Arg{hook} \Arg{true code} \Arg{false code} +% \cs{@@_if_usable:nTF} \Arg{hook} \Arg{true code} \Arg{false code} % \end{syntax} % Tests if the \meta{hook} exists (if it was created with either % \cs{NewHook}, \cs{NewReversedHook}, or \cs{NewMirroredHookPair}), and @@ -1009,7 +1009,7 @@ % sparingly. % % Generic hooks are declared at the time code is added to them, so the -% result of \cs{@@_if_declared:n} will change once code is added to +% result of \cs{@@_if_usable:n} will change once code is added to % said hook (unless the hook was previously declared). % % The \meta{hook} \emph{cannot} be specified using the dot-syntax. @@ -2054,44 +2054,133 @@ % different states are distinguished. The actual implementation % then follows in the next sections. % +% One problem we have to solve is, that we need to be able to add +% code to hooks (e.g., with \cs{AddToHook}) even if that code has +% not been declared yet. For example, one package needs to write +% into a hook of another package, but that package ay not get +% loaded or only loaded later. Another problem most hooks require +% declaration but this is not the case for the generic hooks. +% +% We therefore distinguish the following states for a hook and they +% are managed with four different tests: structure existence (\cs{@@_if_structure_exist:nTF}), +% creation (\cs{@@_if_usable:nTF}), declaration +% (\cs{@@_if_declared:nTF}) and disabled or not (\cs{@@_if_disabled:nTF}) +% \begin{description} +% \setlist[itemize]{leftmargin=5cm,format=\cs} +% \item[not existing] +% +% Nothing is known about the hook so far. This state can be +% detected with \cs{@@_if_structure_exist:nTF} +% (which uses the false branch). +% +% In this state the hook can be declared, disabled, rules can be +% defined or code could be added to it, but it is not possible +% to use the hook (with \cs{UseHook}). + +% \item[basic data structure set up] +% +% A hook is this state when its basic data structure has been +% set up (using \cs{@@_setup_structure:n}). The data structure setup happens +% automatically when commands such as \cs{AddToHook} are used +% and the hook is at that point in state \enquote{not existing}. +% +% In this state the four tests give the following results: +% \begin{itemize} +% \item [@@_if_structure_exist:nTF] returns |true|. +% \item [@@_if_usable:nTF] returns |false|. +% \item [@@_if_declared:nTF] returns |false|. +% \item [@@_if_disabled:nTF] returns |false|. +% \end{itemize} +% +% The allowed acctions are the same as in the \enquote{not +% existing} state. +% +% \item[declared] +% +% A hook is in this state it is not disabled and was explicity declared (e.g., +% with \cs{NewHook}). In this case the four tests give the +% following results: +% \begin{itemize} +% \item [@@_if_structure_exist:nTF] returns |true|. +% \item [@@_if_usable:nTF] returns |true|. +% \item [@@_if_declared:nTF] returns |true|. +% \item [@@_if_disabled:nTF] returns |false|. +% \end{itemize} +% +% \item[usable] +% A hook is in this state is not disabled, was not explicitly +% declared but nevertheless is allowed to be used (with +% \cs{UseHook} or \cs{hook_use:n}). This state is only possible +% for generic hooks as they do not need to be +% declared. Therefore such hooks move directly from state \enquote{not +% existing} to \enquote{usable} the moment a declaration such as +% \cs{AddToHook} wants to add to the hook data structure. +% In this state the tests give the following results: +% \begin{itemize} +% \item [@@_if_structure_exist:nTF] returns |true|. +% \item [@@_if_usable:nTF] returns |true|. +% \item [@@_if_declared:nTF] returns |false|. +% \item [@@_if_disabled:nTF] returns |false|. +% \end{itemize} +% +% +% \item[disabled] +% A hook in any state is changed to this state by using +% \cs{DisableHook}. This changes the tests to give the following results: +% \begin{itemize} +% \item [@@_if_structure_exist:nTF] \emph{unchanged}. +% \item [@@_if_usable:nTF] returns |false|. +% \item [@@_if_declared:nTF] returns |true|. +% \item [@@_if_disabled:nTF] returns |true|. +% \end{itemize} +% The structure test is unchanged (if the hook was unknown before it is +% false otherwise true). The usable test returns false so that +% any \cs{UseHook} will bypass the hook from now on. The +% declared test returns true so that any further \cs{NewHook} +% generates an error and the disabled test returns true so that +% \cs{AddToHook} can return an error. +% \fmiinline{maybe it should do this only after begin document?} +% +% \end{description} +% % \fmi{reorder presentation of commands: new first} % % \begin{description}[format=\cs] % \setlist[itemize]{leftmargin=5cm,format=\cs} -% \item[@@_declare:n] initializes the basic data structure for the +% \item[@@_setup_structure:n] initializes the basic data structure for the % hook so that it may contain code. It creates the hook code pool % (\cs[no-index]{g_@@_\meta{hook}_code_prop}) and the |top-level| % and |next| token lists. A hook is implicitly declared with -% \cs{@@_declare:n} when any is added to it. A hook declared only -% with \cs{@@_declare:n} will not be usable with \cs{hook_use:n}. -% This state is detected by \cs{@@_if_exist:n} by +% \cs{@@_setup_structure:n} when any is added to it. A hook declared only +% with \cs{@@_setup_structure:n} will not be usable with \cs{hook_use:n}. +% This state is detected by \cs{@@_if_structure_exist:n} by % \cs[no-index]{g_@@_\meta{hook}_code_prop} being defined. % \begin{itemize} -% \item [@@_if_exist:n] returns |true|. -% \item [@@_if_declared:nTF] returns |false|. -% \item [@@_if_created:nTF] returns |false|. +% \item [@@_if_structure_exist:n] returns |true|. +% \item [@@_if_usable:nTF] returns |false|. +% \item [@@_if_declared:nTF] returns |false|. % \item [@@_if_disabled:nTF] returns |false|. % \end{itemize} -% \item[@@_create:n] initializes all hook data structures, as done +% \item[@@_make_usable:n] initializes all hook data structures, as done % by \cs{hook_new:n}, except that doing \cs{hook_new:n} on that % hook will not result in an error. This is done implicitly by % \cs{hook_gput_code:n} when adding code to a generic hook. -% This state is detected by \cs{@@_if_declared:n} by +% This state is detected by \cs{@@_if_usable:n} by % \cs[no-index]{@@~\meta{hook}} being defined. % \begin{itemize} -% \item [@@_if_exist:n] returns |true|. -% \item [@@_if_declared:nTF] returns |true|. -% \item [@@_if_created:nTF] returns |false|. +% \item [@@_if_structure_exist:n] returns |true|. +% \item [@@_if_usable:nTF] returns |true|. +% \item [@@_if_declared:nTF] returns |false|. % \item [@@_if_disabled:nTF] returns |false|. % \end{itemize} -% \item[hook_new:n] same as \cs{@@_create:n} except it also doesn't +% \item[hook_new:n] same as \cs{@@_make_usable:n} except it also doesn't % allow the hook to be declared again with \cs{hook_new:n}. -% This state is detected by \cs{@@_if_created:n} by -% \cs[no-index]{g_@@_\meta{hook}_created_tl} being defined. +% This state is detected by \cs{@@_if_declared:n} by +% \cs[no-index]{g_@@_\meta{hook}_declared_tl} being defined. % \begin{itemize} -% \item [@@_if_exist:n] returns |true|. -% \item [@@_if_declared:nTF] returns |true|. -% \item [@@_if_created:nTF] returns |true|. +% \item [@@_if_structure_exist:n] returns |true|. +% \item [@@_if_usable:nTF] returns |true|. +% \item [@@_if_declared:nTF] returns |true|. % \item [@@_if_disabled:nTF] returns |false|. % \end{itemize} % \end{description} @@ -2099,19 +2188,19 @@ % \begin{description}[format=\cs] % \setlist[itemize]{leftmargin=5cm,format=\cs} % \item[hook_disable:n] This forces the creation of the -% \cs[no-index]{g_@@_\meta{hook}_created_tl} so that the hook +% \cs[no-index]{g_@@_\meta{hook}_declared_tl} so that the hook % errors when used with \cs{hook_new:n}, then it undefines % \cs[no-index]{@@~\meta{hook}} so that it may not be executed. % Since by using the normal hook declaration commands from above % we can't get this combination, if a hook has a -% \cs[no-index]{g_@@_\meta{hook}_created_tl} and not a +% \cs[no-index]{g_@@_\meta{hook}_declared_tl} and not a % \cs[no-index]{@@~\meta{hook}} then it is disabled. % \cs{@@_if_disabled:n} uses that to check if the hook is % disabled. % \begin{itemize} -% \item [@@_if_exist:n] may return |true| or |false|. -% \item [@@_if_declared:nTF] returns |false|. -% \item [@@_if_created:nTF] returns |true|. +% \item [@@_if_structure_exist:n] may return |true| or |false|. +% \item [@@_if_usable:nTF] returns |false|. +% \item [@@_if_declared:nTF] returns |true|. % \item [@@_if_disabled:nTF] returns |true|. % \end{itemize} % \end{description} @@ -2121,7 +2210,7 @@ % \subsubsection{Setting hooks up} % % -% \begin{macro}{\hook_new:n,\@@_new:n,\@@_create:n} +% \begin{macro}{\hook_new:n,\@@_new:n,\@@_make_usable:n} % The \cs{hook_new:n} declaration declare a new hook and expects % the hook \meta{name} as its argument, e.g., % \hook{begindocument}. @@ -2139,17 +2228,17 @@ % the \enquote{created} flag for the hook so that it errors next time % \cs{hook_new:n} is used. % \begin{macrocode} - \@@_if_created:nTF {#1} + \@@_if_declared:nTF {#1} { \msg_error:nnn { hooks } { exists } {#1} } { - \tl_new:c { g_@@_#1_created_tl } - \@@_create:n {#1} + \tl_new:c { g_@@_#1_declared_tl } + \@@_make_usable:n {#1} } } % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_create:n #1 +\cs_new_protected:Npn \@@_make_usable:n #1 { % \end{macrocode} % Now we check if the hook's data structure can be safely created @@ -2169,7 +2258,7 @@ % \end{macrocode} % Now ensure that the base data structure for the hook exists: % \begin{macrocode} - \@@_declare:n {#1} + \@@_setup_structure:n {#1} % \end{macrocode} % The \cs{g_@@_\meta{hook}_labels_clist} holds the sorted list of % labels (once it got sorted). This is used only for debugging. @@ -2203,16 +2292,16 @@ % % % -% \begin{macro}{\@@_declare:n} +% \begin{macro}{\@@_setup_structure:n} % This function declares the basic data structures for a hook without % actually declaring the hook itself. This is needed to allow adding % to undeclared hooks. Here it is unnecessary to check whether all % variables exist, since all three are declared at the same time % (either all of them exist, or none). % \begin{macrocode} -\cs_new_protected:Npn \@@_declare:n #1 +\cs_new_protected:Npn \@@_setup_structure:n #1 { - \@@_if_exist:nF {#1} + \@@_if_structure_exist:nF {#1} { \prop_new:c { g_@@_#1_code_prop } \tl_new:c { @@_toplevel~#1 } @@ -2299,7 +2388,7 @@ % \begin{macro}{\hook_disable:n} % \begin{macro}[pTF]{\@@_if_disabled:n} % Disables a hook by creating its -% \cs[no-index]{g_@@_\meta{hook}_created_tl} and undefining its +% \cs[no-index]{g_@@_\meta{hook}_declared_tl} and undefining its % \cs[no-index]{@@~\meta{hook}} token list. This does not clear any % code that may be already stored in the hook's structure, but doesn't % allow adding more code. \cs{@@_if_disabled:nTF} uses that specific @@ -2307,13 +2396,13 @@ % \begin{macrocode} \cs_new_protected:Npn \hook_disable:n #1 { - \tl_gclear_new:c { g_@@_#1_created_tl } + \tl_gclear_new:c { g_@@_#1_declared_tl } \cs_undefine:c { @@~#1 } } \prg_new_conditional:Npnn \@@_if_disabled:n #1 { p, T, F, TF } { \bool_lazy_and:nnTF - { \tl_if_exist_p:c { g_@@_#1_created_tl } } + { \tl_if_exist_p:c { g_@@_#1_declared_tl } } { ! \tl_if_exist_p:c { @@~#1 } } { \prg_return_true: } { \prg_return_false: } @@ -2509,7 +2598,7 @@ % If no removal is queued, we are free to add. Start by checking if % the hook exists. % \begin{macrocode} - \@@_if_declared:nTF {#1} + \@@_if_usable:nTF {#1} % \end{macrocode} % If so we simply add (or append) the new code to the property list % holding different chunks for the hook. At \verb=\begin{document}= @@ -2552,7 +2641,7 @@ % However, first some debugging info if debugging is enabled: % \begin{macrocode} \@@_debug:n{\iow_term:x{****~ Add~ to~ - \@@_if_declared:nF {#1} { undeclared~ } + \@@_if_usable:nF {#1} { undeclared~ } hook~ #1~ (#2) \on@line\space <-~ \tl_to_str:n{#3}} } % \end{macrocode} @@ -2570,9 +2659,9 @@ { % \end{macrocode} % If the hook's basic structure does not exist, we need to declare it -% with \cs{@@_declare:n}. +% with \cs{@@_setup_structure:n}. % \begin{macrocode} - \@@_declare:n {#1} + \@@_setup_structure:n {#1} \@@_tl_gput_right:cn { @@_toplevel~#1 } {#3} } { \msg_error:nnn { hooks } { misused-top-level } {#1} } @@ -2597,7 +2686,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_gput_undeclared_hook:nnn #1 #2 #3 { - \@@_declare:n {#1} + \@@_setup_structure:n {#1} \@@_hook_gput_code_do:nnn {#1} {#2} {#3} } % \end{macrocode} @@ -2675,7 +2764,7 @@ { \prop_if_in:NnTF \c_@@_generics_prop {#1} { - \@@_if_declared:nF {#5} + \@@_if_usable:nF {#5} { % \end{macrocode} % If the hook doesn't exist yet we check if it is a \texttt{cmd} @@ -2693,10 +2782,10 @@ % Declare the hook always even if it can't really be used (error % message generated elsewhere). % -% Here we use \cs{@@_create:n}, so that a \cs{hook_new:n} is still +% Here we use \cs{@@_make_usable:n}, so that a \cs{hook_new:n} is still % possible later. % \begin{macrocode} - \@@_create:n {#5} + \@@_make_usable:n {#5} } \prop_if_in:NnTF \c_@@_generics_reversed_ii_prop {#2} { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } @@ -2823,11 +2912,11 @@ \cs_new_protected:Npn \@@_gremove_code:nn #1 #2 { % \end{macrocode} -% First check that the hook code pool exists. \cs{@@_if_declared:nTF} +% First check that the hook code pool exists. \cs{@@_if_usable:nTF} % isn't used here because it should be possible to remove code from a % hook before its defined (see section~\ref{sec:querying}). % \begin{macrocode} - \@@_if_exist:nTF {#1} + \@@_if_structure_exist:nTF {#1} { % \end{macrocode} % Then remove the chunk and run \cs{@@_update_hook_code:n} so @@ -2874,7 +2963,7 @@ % \end{macrocode} % Finally update the code, if the hook exists. % \begin{macrocode} - \@@_if_declared:nT {#1} + \@@_if_usable:nT {#1} { \@@_update_hook_code:n {#1} } } % \end{macrocode} @@ -3015,7 +3104,7 @@ % \end{macrocode} % First we ensure the basic data structure of the hook exists: % \begin{macrocode} - \@@_declare:n {#1} + \@@_setup_structure:n {#1} % \end{macrocode} % Then we clear any previous relationship between both labels. % \begin{macrocode} @@ -3239,7 +3328,7 @@ % as they are needed several times inside. This way we save a bit % on processing time if we do that up front. % \begin{macrocode} - \@@_if_declared:nT {#1} + \@@_if_usable:nT {#1} { \prop_if_empty:cTF {g_@@_#1_code_prop} { @@ -3778,7 +3867,7 @@ % \end{macrocode} % % \begin{macrocode} - \@@_if_declared:nF {#1} + \@@_if_usable:nF {#1} { \@@_log_line:x { The~hook~is~not~declared. } } \@@_if_disabled:nT {#1} { \@@_log_line:x { The~hook~is~disabled. } } @@ -3799,7 +3888,7 @@ \@@_log_line:x { Document-level~(top-level)~code - \@@_if_declared:nT {#1} + \@@_if_usable:nT {#1} { ~(executed~\@@_if_reversed:nTF {#1} {first} {last} ) } : } \@@_log_line_indent:x @@ -3850,7 +3939,7 @@ % to that hook) and not empty % \begin{macrocode} \bool_lazy_and:nnTF - { \@@_if_declared_p:n {#1} } + { \@@_if_usable_p:n {#1} } { ! \hook_if_empty_p:n {#1} } { \@@_log_line:x @@ -3874,7 +3963,7 @@ { #2 { - Hook~ \@@_if_declared:nTF {#1} + Hook~ \@@_if_usable:nTF {#1} {code~pool~empty} {not~declared} } } @@ -3984,8 +4073,8 @@ \@@_if_disabled:nTF {#1} { \msg_error:nnn { hooks } { hook-disabled } {#1} } { - \@@_declare:n {#1} - \@@_if_declared:nTF {#1} + \@@_setup_structure:n {#1} + \@@_if_usable:nTF {#1} { \@@_gput_next_do:nn {#1} {#2} } { \@@_try_declaring_generic_next_hook:nn {#1} {#2} } } @@ -4184,7 +4273,7 @@ % \begin{macrocode} \prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF } { - \@@_if_exist:nTF {#1} + \@@_if_structure_exist:nTF {#1} { \bool_lazy_and:nnTF { \prop_if_empty_p:c { g_@@_#1_code_prop } } @@ -4201,7 +4290,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[pTF]{\@@_if_declared:n} +% \begin{macro}[pTF]{\@@_if_usable:n} % A canonical way to test if a hook exists. A hook exists if the % token list that stores the sorted code for that hook, % \cs[no-index]{@@~\meta{hook}}, exists. The property list @@ -4211,7 +4300,7 @@ % (for example, in case the package that defines it isn't loaded). %\fmi{docu update?} % \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_declared:n #1 { p , T , F , TF } +\prg_new_conditional:Npnn \@@_if_usable:n #1 { p , T , F , TF } { \tl_if_exist:cTF { @@~#1 } { \prg_return_true: } @@ -4220,14 +4309,14 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[pTF]{\@@_if_exist:n} +% \begin{macro}[pTF]{\@@_if_structure_exist:n} % An internal check if the hook has already been declared with -% \cs{@@_declare:n}. This means that the hook was already used somehow +% \cs{@@_setup_structure:n}. This means that the hook was already used somehow % (a code chunk or rule was added to it), but it still wasn't declared % with \cs{hook_new:n}. %\fmi{docu update?} % \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_exist:n #1 { p , T , F , TF } +\prg_new_conditional:Npnn \@@_if_structure_exist:n #1 { p , T , F , TF } { \prop_if_exist:cTF { g_@@_#1_code_prop } { \prg_return_true: } @@ -4238,16 +4327,16 @@ % % % -% \begin{macro}[pTF]{\@@_if_created:n} +% \begin{macro}[pTF]{\@@_if_declared:n} % -% I used \cs{@@_if_created:n} because \cs{@@_if_exist:n} seems a +% I used \cs{@@_if_declared:n} because \cs{@@_if_structure_exist:n} seems a % bit misleading (and it already exists, to check if a hook was -% already declared with \cs{@@_declare:n}). +% already declared with \cs{@@_setup_structure:n}). %\fmi{docu update?} % \begin{macrocode} -\prg_new_conditional:Npnn \@@_if_created:n #1 { p, T, F, TF } +\prg_new_conditional:Npnn \@@_if_declared:n #1 { p, T, F, TF } { - \tl_if_exist:cTF { g_@@_#1_created_tl } + \tl_if_exist:cTF { g_@@_#1_declared_tl } { \prg_return_true: } { \prg_return_false: } } @@ -4692,7 +4781,7 @@ % internal conditional for a while. Regardless, those packages' use for % \cs{IfHookExistsTF} is not really correct and can be changed.} % \begin{macrocode} -\cs_new_eq:NN \IfHookExistsTF \@@_if_declared:nTF +\cs_new_eq:NN \IfHookExistsTF \@@_if_usable:nTF % \end{macrocode} % \end{macro} % diff --git a/base/testfiles-lthooks/ltcmdhooks-010.lvt b/base/testfiles-lthooks/ltcmdhooks-010.lvt new file mode 100644 index 000000000..90b8562ad --- /dev/null +++ b/base/testfiles-lthooks/ltcmdhooks-010.lvt @@ -0,0 +1,80 @@ +% Testing various hook states + +\RequirePackage[enable-debug]{expl3} +\ExplSyntaxOn +\debug_on:n { check-declarations , deprecation } +\ExplSyntaxOff + +\documentclass{article} +\input{regression-test} + +\DebugHooksOn + +\START + +\ExplSyntaxOn + +\cs_new_protected:Npn \test:nn #1 #2 + { + \iow_term:n { -------- ~ #1 ~ -------------- } + \__hook_if_structure_exist:nTF {#2} + { \iow_term:n {Hook~`#2'~structure~exists.} } + { \iow_term:n {Hook~`#2'~structure~doesn't~exist.} } + \__hook_if_usable:nTF {#2} + { \iow_term:n {Hook~`#2'~is~usable.} } + { \iow_term:n {Hook~`#2'~isn't~usable.} } + \__hook_if_declared:nTF {#2} + { \iow_term:n {Hook~`#2'~is~declared.} } + { \iow_term:n {Hook~`#2'~isn't~declared.} } + \__hook_if_disabled:nTF {#2} + { \iow_term:n {Hook~`#2'~is~disabled.} } + { \iow_term:n {Hook~`#2'~isn't~disabled.} } + \hook_if_empty:nTF {#2} + { \iow_term:n {Hook~`#2'~is~empty.} } + { \iow_term:n {Hook~`#2'~is~not~empty.} } + } + +\test:nn { doesn't~ exist~ and~ is~ empty } { unknown-hook } + +\typeout{============================} + +\hook_new:n { known-hook } +\test:nn { declared~ with~ NewHook } { known-hook } + + +\AddToHook { known-hook }{add something} +\test:nn { and~ added~ to } { known-hook } + +\typeout{============================} + + +\__hook_make_usable:n { created-hook } +\test:nn { just~ made~ usable} { created-hook } + +\typeout{============================} + +% State 4: just setup +\__hook_setup_structure:n { just-setup-hook } +\test:nn { } { just-setup-hook } + +\typeout{============================} + +% State 5: +\AddToHook{normal-hook} [X] { just added to } +\test:nn { normal~ hook~ undeclared~ but~ added~ to} { normal-hook } + +\typeout{============================} + + +\AddToHook{cmd/section/before} [Y] { added to } +\test:nn { cmd~ hook~ just~ added~ to } { cmd/section/before } + + +\typeout{============================} + +\test:nn { virgin~ cmd~ hook~ } { cmd/textbf/before } + + +\ExplSyntaxOff + +\END diff --git a/base/testfiles-lthooks/ltcmdhooks-010.tlg b/base/testfiles-lthooks/ltcmdhooks-010.tlg new file mode 100644 index 000000000..56a072193 --- /dev/null +++ b/base/testfiles-lthooks/ltcmdhooks-010.tlg @@ -0,0 +1,62 @@ +This is a generated file for the l3build validation system. +Don't change this file in any respect. +-------- doesn't exist and is empty -------------- +Hook `unknown-hook' structure doesn't exist. +Hook `unknown-hook' isn't usable. +Hook `unknown-hook' isn't declared. +Hook `unknown-hook' isn't disabled. +Hook `unknown-hook' is empty. +============================ +-------- declared with NewHook -------------- +Hook `known-hook' structure exists. +Hook `known-hook' is usable. +Hook `known-hook' is declared. +Hook `known-hook' isn't disabled. +Hook `known-hook' is empty. +**** Add to hook known-hook (top-level) on input line ... <- addsomething +-------- and added to -------------- +Hook `known-hook' structure exists. +Hook `known-hook' is usable. +Hook `known-hook' is declared. +Hook `known-hook' isn't disabled. +Hook `known-hook' is not empty. +============================ +-------- just made usable -------------- +Hook `created-hook' structure exists. +Hook `created-hook' is usable. +Hook `created-hook' isn't declared. +Hook `created-hook' isn't disabled. +Hook `created-hook' is empty. +============================ +-------- -------------- +Hook `just-setup-hook' structure exists. +Hook `just-setup-hook' isn't usable. +Hook `just-setup-hook' isn't declared. +Hook `just-setup-hook' isn't disabled. +Hook `just-setup-hook' is empty. +============================ +**** Add to undeclared hook normal-hook (X) on input line ... <- justaddedto +-------- normal hook undeclared but added to -------------- +Hook `normal-hook' structure exists. +Hook `normal-hook' isn't usable. +Hook `normal-hook' isn't declared. +Hook `normal-hook' isn't disabled. +Hook `normal-hook' is not empty. +============================ +-> Adding cmd hook to 'section' (before): +-> Add generic cmd hook for section (before). +! In the preamble: delaying. +**** Add to hook cmd/section/before (Y) on input line ... <- addedto +-------- cmd hook just added to -------------- +Hook `cmd/section/before' structure exists. +Hook `cmd/section/before' is usable. +Hook `cmd/section/before' isn't declared. +Hook `cmd/section/before' isn't disabled. +Hook `cmd/section/before' is not empty. +============================ +-------- virgin cmd hook -------------- +Hook `cmd/textbf/before' structure doesn't exist. +Hook `cmd/textbf/before' isn't usable. +Hook `cmd/textbf/before' isn't declared. +Hook `cmd/textbf/before' isn't disabled. +Hook `cmd/textbf/before' is empty. diff --git a/base/testfiles/github-0479-often.luatex.tlg b/base/testfiles/github-0479-often.luatex.tlg index 79489d472..fad34eee1 100644 --- a/base/testfiles/github-0479-often.luatex.tlg +++ b/base/testfiles/github-0479-often.luatex.tlg @@ -141,13 +141,13 @@ Already applied: [....-..-..] Add calc support on input line .... Applying: [....-..-..] \newline calc support on input line .... Already applied: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] hyphenation and nobreak after space hack on input line ... -393. +394. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5411. + line 5412. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5425. + line 5426. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5437. + line 5438. Applying: [....-..-..] hyphenation after space hack on input line .... Already applied: [....-..-..] hyphenation after space hack on input line .... Applying: [....-..-..] \addvspace calc support on input line .... @@ -187,7 +187,7 @@ Already applied: [....-..-..] Quote file names on input line .... Already applied: [....-..-..] Quote file names on input line .... Applying: [....-..-..] Do not load missing file immediately on input line .... Already applied: [....-..-..] Do not load missing file immediately on input lin -e 6165. +e 6166. Applying: [....-..-..] test for undeclared accent on input line .... Already applied: [....-..-..] test for undeclared accent on input line .... Applying: [....-..-..] Make commands robust on input line .... @@ -214,7 +214,7 @@ Already applied: [....-..-..] Maybe drop one m on input line .... Applying: [....-..-..] Arbitrary units in \DeclareMathSizes on input line ... . Already applied: [....-..-..] Arbitrary units in \DeclareMathSizes on input li -ne 6498. +ne 6499. Applying: [....-..-..] Drop m in usefont on input line .... LaTeX Info: Redefining \usefont on input line .... Already applied: [....-..-..] Drop m in usefont on input line .... @@ -229,7 +229,7 @@ Already applied: [....-..-..] Font substitution in preamble on input line .... Applying: [....-..-..] XeTeX support for \showhyphens on input line .... LaTeX Info: Redefining \showhyphens on input line .... Already applied: [....-..-..] XeTeX support for \showhyphens on input line ... -1. +2. Applying: [....-..-..] Series change rules on input line .... Already applied: [....-..-..] Series change rules on input line .... Skipping: [....-..-..] delay fontseries update on input line .... @@ -343,7 +343,7 @@ Already applied: [....-..-..] Make commands robust on input line .... Already applied: [....-..-..] Make commands robust on input line .... Applying: [....-..-..] Disable hyphenation in verbatim on input line .... Already applied: [....-..-..] Disable hyphenation in verbatim on input line ... -0. +1. Applying: [....-..-..] Setup visible space for \verb on input line .... LaTeX Info: Redefining \asciispace on input line .... LaTeX Info: Redefining \verbvisiblespace on input line .... @@ -445,16 +445,16 @@ Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -335. +336. Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -434. +435. Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -454. +455. Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... @@ -463,18 +463,18 @@ Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] Make commands robust on input line .... LaTeX Info: The control sequence `\bezier' is already robust on input line ... -0. -LaTeX Info: The control sequence `\circle' is already robust on input line ... 1. +LaTeX Info: The control sequence `\circle' is already robust on input line ... +2. LaTeX Info: The control sequence `\linethickness' is already robust on input li -ne 10624. +ne 10625. LaTeX Info: The control sequence `\oval' is already robust on input line .... LaTeX Info: The control sequence `\qbezier' is already robust on input line ... -28. +29. LaTeX Info: The control sequence `\shortstack' is already robust on input line ... -10629. +10630. LaTeX Info: The control sequence `\thinlines' is already robust on input line ... -0630. +0631. Already applied: [....-..-..] Make commands robust on input line .... Applying: [....-..-..] Make commands robust on input line .... LaTeX Info: Redefining \title on input line .... @@ -536,14 +536,14 @@ Applying: [....-..-..] Spaces in option clash check on input line .... Already applied: [....-..-..] Spaces in option clash check on input line .... Applying: [....-..-..] Check name with \strcmp on input line .... Already applied: [....-..-..] Undo: check name with \strcmp on input line ... -5. +6. Applying: [....-..-..] Allow for package substitution on input line .... Already applied: [....-..-..] Protection for package info on input line .... Already applied: [....-..-..] Protection for package info on input line .... Applying: [....-..-..] Track \ProvidesPackage on input line .... Skipping: [....-..-..] Raw option lists on input line .... Applying: [....-..-..] Add file replacement in \@pass@ptions on input line ... -83. +84. Already applied: [....-..-..] \@pass@ptions on input line .... Skipping: [....-..-..] filter unused option list on input line .... Applying: [....-..-..] filter unused option list on input line .... @@ -559,22 +559,22 @@ Applying: [....-..-..] Unused options issue on input line .... Already applied: [....-..-..] Unused options issue on input line .... Applying: [....-..-..] ifx tests in \@fileswith@pti@ns on input line .... Already applied: [....-..-..] ifx tests in \@fileswith@pti@ns on input line ... -570. +571. Already applied: [....-..-..] ifx tests in \@fileswith@pti@ns on input line ... -597. +598. Applying: [....-..-..] Hooks and unused options issue on input line .... Already applied: [....-..-..] Hooks and unused options issue on input line ... -8. +9. Applying: [....-..-..] Use hook system on input line .... LaTeX Info: Redefining \AtBeginDocument on input line .... LaTeX Info: Redefining \AtEndDocument on input line .... Already applied: [....-..-..] Use hook system on input line .... Applying: [....-..-..] Define \q@curr@file directly (gh/220) on input line ... -7. +8. Already applied: [....-..-..] Spaces in file names + optional arg on input line - 11946. + 11947. Already applied: [....-..-..] Spaces in file names + optional arg on input line - 12077. + 12078. Applying: [....-..-..] Hook management file on input line .... Already applied: [....-..-..] Hook management file on input line .... Applying: [....-..-..] File helpers on input line .... @@ -646,7 +646,7 @@ Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] Reset language for hyphenation on input line .... Already applied: [....-..-..] Reset language for hyphenation on input line ... -8. +9. Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] float order in 2-column on input line .... @@ -671,9 +671,9 @@ Applying: [....-..-..] Extended Allocation on input line .... Already applied: [....-..-..] Extended Allocation on input line .... Applying: [....-..-..] Start of XeTeX class allocator on input line .... Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -3. +4. Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -0. +1. Applying: [....-..-..] XeTeX character classes on input line .... Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-latexrelease-rollback-003-often.luatex.tlg b/base/testfiles/tlb-latexrelease-rollback-003-often.luatex.tlg index eefdee5ea..1b097b687 100644 --- a/base/testfiles/tlb-latexrelease-rollback-003-often.luatex.tlg +++ b/base/testfiles/tlb-latexrelease-rollback-003-often.luatex.tlg @@ -105,13 +105,13 @@ Applying: [....-..-..] Add calc support on input line .... Skipping: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] \newline calc support on input line .... Skipping: [....-..-..] hyphenation and nobreak after space hack on input line ... -393. +394. Skipping: [....-..-..] hyphenation and nobreak after space hack on input line ... -411. +412. Skipping: [....-..-..] hyphenation and nobreak after space hack on input line ... -425. +426. Applying: [....-..-..] hyphenation and nobreak after space hack on input line ... -437. +438. Skipping: [....-..-..] hyphenation after space hack on input line .... Applying: [....-..-..] hyphenation after space hack on input line .... Skipping: [....-..-..] \addvspace calc support on input line .... @@ -427,7 +427,7 @@ Applying: [....-..-..] Protection for package info on input line .... Applying: [....-..-..] Track \ProvidesPackage on input line .... Skipping: [....-..-..] Raw option lists on input line .... Skipping: [....-..-..] Add file replacement in \@pass@ptions on input line ... -83. +84. Applying: [....-..-..] \@pass@ptions on input line .... Skipping: [....-..-..] filter unused option list on input line .... Applying: [....-..-..] filter unused option list on input line .... @@ -451,7 +451,7 @@ Applying: [....-..-..] Use hook system on input line .... LaTeX Info: Redefining \AtBeginDocument on input line .... LaTeX Info: Redefining \AtEndDocument on input line .... Skipping: [....-..-..] Define \q@curr@file directly (gh/220) on input line ... -7. +8. Skipping: [....-..-..] Spaces in file names + optional arg on input line .... Applying: [....-..-..] Spaces in file names + optional arg on input line .... Skipping: [....-..-..] Hook management file on input line .... @@ -640,13 +640,13 @@ Applying: [....-..-..] Add calc support on input line .... Skipping: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] hyphenation and nobreak after space hack on input line ... -393. +394. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5411. + line 5412. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5425. + line 5426. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5437. + line 5438. Applying: [....-..-..] hyphenation after space hack on input line .... Already applied: [....-..-..] hyphenation after space hack on input line .... Skipping: [....-..-..] \addvspace calc support on input line .... @@ -712,7 +712,7 @@ Applying: [....-..-..] Maybe drop one m on input line .... Applying: [....-..-..] Arbitrary units in \DeclareMathSizes on input line ... . Already applied: [....-..-..] Arbitrary units in \DeclareMathSizes on input li -ne 6498. +ne 6499. Skipping: [....-..-..] Drop m in usefont on input line .... Applying: [....-..-..] Drop m in usefont on input line .... LaTeX Info: Redefining \usefont on input line .... @@ -727,7 +727,7 @@ Already applied: [....-..-..] Font substitution in preamble on input line .... Applying: [....-..-..] XeTeX support for \showhyphens on input line .... LaTeX Info: Redefining \showhyphens on input line .... Already applied: [....-..-..] XeTeX support for \showhyphens on input line ... -1. +2. Skipping: [....-..-..] Series change rules on input line .... Applying: [....-..-..] Series change rules on input line .... Skipping: [....-..-..] delay fontseries update on input line .... @@ -832,7 +832,7 @@ LaTeX Info: Redefining \raggedleft on input line .... Already applied: [....-..-..] Make commands robust on input line .... Applying: [....-..-..] Disable hyphenation in verbatim on input line .... Already applied: [....-..-..] Disable hyphenation in verbatim on input line ... -0. +1. Applying: [....-..-..] Setup visible space for \verb on input line .... \@verbvisiblespacebox=\box... Already applied: [....-..-..] Setup visible space for \verb on input line ... @@ -928,16 +928,16 @@ Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -335. +336. Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -434. +435. Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -454. +455. Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Skipping: [....-..-..] default units on input line .... @@ -1012,7 +1012,7 @@ Applying: [....-..-..] Protection for package info on input line .... Applying: [....-..-..] Track \ProvidesPackage on input line .... Skipping: [....-..-..] Raw option lists on input line .... Skipping: [....-..-..] Add file replacement in \@pass@ptions on input line ... -83. +84. Applying: [....-..-..] \@pass@ptions on input line .... Skipping: [....-..-..] filter unused option list on input line .... Applying: [....-..-..] filter unused option list on input line .... @@ -1029,7 +1029,7 @@ Applying: [....-..-..] Unused options issue on input line .... Skipping: [....-..-..] ifx tests in \@fileswith@pti@ns on input line .... Applying: [....-..-..] ifx tests in \@fileswith@pti@ns on input line .... Already applied: [....-..-..] ifx tests in \@fileswith@pti@ns on input line ... -597. +598. Skipping: [....-..-..] Hooks and unused options issue on input line .... Applying: [....-..-..] Hooks and unused options issue on input line .... Skipping: [....-..-..] Use hook system on input line .... @@ -1037,10 +1037,10 @@ Applying: [....-..-..] Use hook system on input line .... LaTeX Info: Redefining \AtBeginDocument on input line .... LaTeX Info: Redefining \AtEndDocument on input line .... Skipping: [....-..-..] Define \q@curr@file directly (gh/220) on input line ... -7. +8. Applying: [....-..-..] Spaces in file names + optional arg on input line .... Already applied: [....-..-..] Spaces in file names + optional arg on input line - 12077. + 12078. Skipping: [....-..-..] Hook management file on input line .... Applying: [....-..-..] Hook management file on input line .... Skipping: [....-..-..] File helpers on input line .... @@ -1113,7 +1113,7 @@ Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] Reset language for hyphenation on input line .... Already applied: [....-..-..] Reset language for hyphenation on input line ... -8. +9. Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] float order in 2-column on input line .... @@ -1138,9 +1138,9 @@ Applying: [....-..-..] Extended Allocation on input line .... Already applied: [....-..-..] Extended Allocation on input line .... Applying: [....-..-..] Start of XeTeX class allocator on input line .... Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -3. +4. Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -0. +1. Applying: [....-..-..] XeTeX character classes on input line .... Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line .... diff --git a/base/testfiles/tlb-rollback-004-often.luatex.tlg b/base/testfiles/tlb-rollback-004-often.luatex.tlg index 4d94d855b..639c7d8df 100644 --- a/base/testfiles/tlb-rollback-004-often.luatex.tlg +++ b/base/testfiles/tlb-rollback-004-often.luatex.tlg @@ -142,13 +142,13 @@ Applying: [....-..-..] Add calc support on input line .... Skipping: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] \newline calc support on input line .... Applying: [....-..-..] hyphenation and nobreak after space hack on input line ... -393. +394. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5411. + line 5412. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5425. + line 5426. Already applied: [....-..-..] hyphenation and nobreak after space hack on input - line 5437. + line 5438. Applying: [....-..-..] hyphenation after space hack on input line .... Already applied: [....-..-..] hyphenation after space hack on input line .... Skipping: [....-..-..] \addvspace calc support on input line .... @@ -214,7 +214,7 @@ Already applied: [....-..-..] Maybe drop one m on input line .... Applying: [....-..-..] Arbitrary units in \DeclareMathSizes on input line ... . Already applied: [....-..-..] Arbitrary units in \DeclareMathSizes on input li -ne 6498. +ne 6499. Applying: [....-..-..] Drop m in usefont on input line .... LaTeX Info: Redefining \usefont on input line .... Already applied: [....-..-..] Drop m in usefont on input line .... @@ -229,7 +229,7 @@ Already applied: [....-..-..] Font substitution in preamble on input line .... Applying: [....-..-..] XeTeX support for \showhyphens on input line .... LaTeX Info: Redefining \showhyphens on input line .... Already applied: [....-..-..] XeTeX support for \showhyphens on input line ... -1. +2. Applying: [....-..-..] Series change rules on input line .... Already applied: [....-..-..] Series change rules on input line .... Skipping: [....-..-..] delay fontseries update on input line .... @@ -342,7 +342,7 @@ LaTeX Info: Redefining \raggedleft on input line .... Already applied: [....-..-..] Make commands robust on input line .... Applying: [....-..-..] Disable hyphenation in verbatim on input line .... Already applied: [....-..-..] Disable hyphenation in verbatim on input line ... -0. +1. Applying: [....-..-..] Setup visible space for \verb on input line .... LaTeX Info: Redefining \asciispace on input line .... LaTeX Info: Redefining \verbvisiblespace on input line .... @@ -439,16 +439,16 @@ Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -335. +336. Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Already applied: [....-..-..] default units on input line .... Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -434. +435. Applying: [....-..-..] Avoid almost zero length leaders on input line .... Already applied: [....-..-..] Avoid almost zero length leaders on input line ... -454. +455. Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Skipping: [....-..-..] default units on input line .... @@ -457,18 +457,18 @@ Skipping: [....-..-..] default units on input line .... Applying: [....-..-..] default units on input line .... Applying: [....-..-..] Make commands robust on input line .... LaTeX Info: The control sequence `\bezier' is already robust on input line ... -0. -LaTeX Info: The control sequence `\circle' is already robust on input line ... 1. +LaTeX Info: The control sequence `\circle' is already robust on input line ... +2. LaTeX Info: The control sequence `\linethickness' is already robust on input li -ne 10624. +ne 10625. LaTeX Info: The control sequence `\oval' is already robust on input line .... LaTeX Info: The control sequence `\qbezier' is already robust on input line ... -28. +29. LaTeX Info: The control sequence `\shortstack' is already robust on input line ... -10629. +10630. LaTeX Info: The control sequence `\thinlines' is already robust on input line ... -0630. +0631. Already applied: [....-..-..] Make commands robust on input line .... Applying: [....-..-..] Make commands robust on input line .... LaTeX Info: Redefining \title on input line .... @@ -536,7 +536,7 @@ Already applied: [....-..-..] Protection for package info on input line .... Applying: [....-..-..] Track \ProvidesPackage on input line .... Skipping: [....-..-..] Raw option lists on input line .... Skipping: [....-..-..] Add file replacement in \@pass@ptions on input line ... -83. +84. Applying: [....-..-..] \@pass@ptions on input line .... Skipping: [....-..-..] filter unused option list on input line .... Applying: [....-..-..] filter unused option list on input line .... @@ -553,7 +553,7 @@ Applying: [....-..-..] Unused options issue on input line .... Skipping: [....-..-..] ifx tests in \@fileswith@pti@ns on input line .... Applying: [....-..-..] ifx tests in \@fileswith@pti@ns on input line .... Already applied: [....-..-..] ifx tests in \@fileswith@pti@ns on input line ... -597. +598. Skipping: [....-..-..] Hooks and unused options issue on input line .... Applying: [....-..-..] Hooks and unused options issue on input line .... Skipping: [....-..-..] Use hook system on input line .... @@ -561,10 +561,10 @@ Applying: [....-..-..] Use hook system on input line .... LaTeX Info: Redefining \AtBeginDocument on input line .... LaTeX Info: Redefining \AtEndDocument on input line .... Skipping: [....-..-..] Define \q@curr@file directly (gh/220) on input line ... -7. +8. Applying: [....-..-..] Spaces in file names + optional arg on input line .... Already applied: [....-..-..] Spaces in file names + optional arg on input line - 12077. + 12078. Skipping: [....-..-..] Hook management file on input line .... Applying: [....-..-..] Hook management file on input line .... Skipping: [....-..-..] File helpers on input line .... @@ -637,7 +637,7 @@ Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] Reset language for hyphenation on input line .... Already applied: [....-..-..] Reset language for hyphenation on input line ... -8. +9. Applying: [....-..-..] float order in 2-column on input line .... Already applied: [....-..-..] float order in 2-column on input line .... Applying: [....-..-..] float order in 2-column on input line .... @@ -662,9 +662,9 @@ Applying: [....-..-..] Extended Allocation on input line .... Already applied: [....-..-..] Extended Allocation on input line .... Applying: [....-..-..] Start of XeTeX class allocator on input line .... Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -3. +4. Already applied: [....-..-..] Start of XeTeX class allocator on input line ... -0. +1. Applying: [....-..-..] XeTeX character classes on input line .... Already applied: [....-..-..] XeTeX character classes on input line .... Applying: [....-..-..] Save language for hyphenation on input line ....