summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/core-env.mkiv
diff options
context:
space:
mode:
authorMojca Miklavec <mojca.miklavec@gmail.com>2012-05-14 17:38:55 +0000
committerMojca Miklavec <mojca.miklavec@gmail.com>2012-05-14 17:38:55 +0000
commit15995e10bfc68edf79970c4ea4fbb6678566c46e (patch)
tree2de7ca2a83f2d37ef043ad7429a5cb945bb79ddb /Master/texmf-dist/tex/context/base/core-env.mkiv
parentc9a39f716f1e5ec820ed3aab2c9aef25c5a9d730 (diff)
ConTeXt 2012.05.14 16:00
git-svn-id: svn://tug.org/texlive/trunk@26371 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-env.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/core-env.mkiv577
1 files changed, 338 insertions, 239 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-env.mkiv b/Master/texmf-dist/tex/context/base/core-env.mkiv
index 2451b59501a..1819d084d0a 100644
--- a/Master/texmf-dist/tex/context/base/core-env.mkiv
+++ b/Master/texmf-dist/tex/context/base/core-env.mkiv
@@ -5,7 +5,7 @@
%D subtitle=New ones,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -40,11 +40,12 @@
%D level style does not want that. Preventing can be
%D considered a permanent disabling on forehand.
-\def\@mode@{@md@}
-\def\@mode@{mode}
-
\def\systemmodeprefix{*}
+% we will have \installcorenamespace{mode} but need some hackery at the lua end then
+
+\installcorenamespace{modestack}
+
% todo: check prevent mode, also at the lua end
\setnewconstant\disabledmode \zerocount
@@ -53,42 +54,42 @@
% fast internal ones
-\def\donewmode#1%
- {\@EA\newcount\csname\@mode@#1\endcsname}
+\def\syst_modes_new#1%
+ {\expandafter\newcount\csname\s!mode#1\endcsname}
-\def\newmode#1%
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi}
+\unexpanded\def\newmode#1%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi}
-\def\setmode#1%
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
- \csname\@mode@#1\endcsname\enabledmode}
+\unexpanded\def\setmode#1%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \csname\s!mode#1\endcsname\enabledmode}
-\def\resetmode#1%
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
- \csname\@mode@#1\endcsname\disabledmode}
+\unexpanded\def\resetmode#1%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \csname\s!mode#1\endcsname\disabledmode}
-\def\newsystemmode#1%
- {\ifcsname\@mode@\systemmodeprefix#1\endcsname\else\donewmode{\systemmodeprefix#1}\fi}
+\unexpanded\def\newsystemmode#1%
+ {\ifcsname\s!mode\systemmodeprefix#1\endcsname\else\syst_modes_new{\systemmodeprefix#1}\fi}
-\def\setsystemmode#1%
- {\ifcsname\@mode@\systemmodeprefix#1\endcsname\else\donewmode{\systemmodeprefix#1}\fi
- \csname\@mode@\systemmodeprefix#1\endcsname\enabledmode}
+\unexpanded\def\setsystemmode#1%
+ {\ifcsname\s!mode\systemmodeprefix#1\endcsname\else\syst_modes_new{\systemmodeprefix#1}\fi
+ \csname\s!mode\systemmodeprefix#1\endcsname\enabledmode}
-\def\resetsystemmode#1%
- {\ifcsname\@mode@\systemmodeprefix#1\endcsname\else\donewmode{\systemmodeprefix#1}\fi
- \csname\@mode@\systemmodeprefix#1\endcsname\disabledmode}
+\unexpanded\def\resetsystemmode#1%
+ {\ifcsname\s!mode\systemmodeprefix#1\endcsname\else\syst_modes_new{\systemmodeprefix#1}\fi
+ \csname\s!mode\systemmodeprefix#1\endcsname\disabledmode}
% \def\dosetsystemmode#1%
-% {\csname\@mode@\systemmodeprefix#1\endcsname\enabledmode}
+% {\csname\s!mode\systemmodeprefix#1\endcsname\enabledmode}
%
% \def\doresetsystemmode#1%
-% {\csname\@mode@\systemmodeprefix#1\endcsname\disabledmode}
+% {\csname\s!mode\systemmodeprefix#1\endcsname\disabledmode}
% demo: trialtypesetting is a systemmode as well as an if
-\newsystemmode{trialtypesetting}
+\newsystemmode{trialtypesetting} % the name of \@@trialtypesetting might change (also at the lua end)
-\expandafter\let\expandafter\@@trialtypesetting\csname\@mode@\systemmodeprefix trialtypesetting\endcsname % private !
+\expandafter\let\expandafter\@@trialtypesetting\csname\s!mode\systemmodeprefix trialtypesetting\endcsname % private !
\appendtoks
\@@trialtypesetting\enabledmode
@@ -100,110 +101,199 @@
% user ones
-\unexpanded\def\preventmode{\unprotect\dopreventmode}
-\unexpanded\def\enablemode {\unprotect\doenablemode }
-\unexpanded\def\disablemode{\unprotect\dodisablemode}
+\unexpanded\def\preventmode{\unprotect\syst_modes_prevent}
+\unexpanded\def\enablemode {\unprotect\syst_modes_enable }
+\unexpanded\def\disablemode{\unprotect\syst_modes_disable}
\let\definemode\disablemode % nicer
-\def\dopreventmode[#1]{\protect\rawprocesscommacommand[#1]\dodopreventmode}
-\def\doenablemode [#1]{\protect\rawprocesscommacommand[#1]\dodoenablemode }
-\def\dodisablemode[#1]{\protect\rawprocesscommacommand[#1]\dododisablemode}
+\def\syst_modes_prevent[#1]{\protect\rawprocesscommacommand[#1]\syst_modes_prevent_indeed}
+\def\syst_modes_enable [#1]{\protect\rawprocesscommacommand[#1]\syst_modes_enable_indeed }
+\def\syst_modes_disable[#1]{\protect\rawprocesscommacommand[#1]\syst_modes_disable_indeed}
-\def\dodopreventmode#1%
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
- \csname\@mode@#1\endcsname\preventedmode}
+\def\syst_modes_prevent_indeed#1%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \csname\s!mode#1\endcsname\preventedmode}
-\def\dodoenablemode#1% we can speed it up by moving the new outside
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
- \ifnum\csname\@mode@#1\endcsname=\preventedmode \else
- \csname\@mode@#1\endcsname\enabledmode
+\def\syst_modes_enable_indeed#1% we can speed it up by moving the new outside
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \ifnum\csname\s!mode#1\endcsname=\preventedmode \else
+ \csname\s!mode#1\endcsname\enabledmode
\fi}
-\def\dododisablemode#1%
- {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
- \ifnum\csname\@mode@#1\endcsname=\preventedmode \else
- \csname\@mode@#1\endcsname\disabledmode
+\def\syst_modes_disable_indeed#1%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \ifnum\csname\s!mode#1\endcsname=\preventedmode \else
+ \csname\s!mode#1\endcsname\disabledmode
\fi}
% handy for mp
\def\booleanmodevalue#1%
- {\ifcsname\@mode@#1\endcsname\ifcase\csname\@mode@#1\endcsname fals\else tru\fi\else fals\fi e}
+ {\ifcsname\s!mode#1\endcsname\ifcase\csname\s!mode#1\endcsname\s!false\else\s!true\fi\else\s!false\fi}
% check macros
-\newif\ifcheckedmode
-
-\def\dodocheckformode#1%
- {\ifcsname\@mode@#1\endcsname\ifcase\csname\@mode@#1\endcsname\else\checkedmodetrue\fi\fi}
-
-\def\docheckformode#1#2#3% will be sped up with a quit
- {\protect\checkedmodefalse\rawprocesscommacommand[#3]\dodocheckformode
- \ifcheckedmode\@EA#1\else\@EA#2\fi}
-
-\def\dodocheckforallmodes#1%
- {\ifcsname\@mode@#1\endcsname\ifcase\csname\@mode@#1\endcsname\checkedmodefalse\fi\else\checkedmodefalse\fi}
-
-\def\docheckforallmodes#1#2#3% will be sped up with a quit
- {\protect\checkedmodetrue\rawprocesscommacommand[#3]\dodocheckforallmodes
- \ifcheckedmode\@EA#1\else\@EA#2\fi}
+% For some reason the older version had an unprotect for grabbing the
+% mode list (only) which does not really make sense any more so that
+% has been removed. One should (un)protect at the outer level instead.
-% simple ones
+\newconditional\c_checked_mode
-\unexpanded\def\doifmodeelse{\unprotect\dodoifmodeelse}
-\unexpanded\def\doifmode {\unprotect\dodoifmode}
-\unexpanded\def\doifnotmode {\unprotect\dodoifnotmode}
-\unexpanded\def\startmode {\unprotect\dostartmode}
-\unexpanded\def\startnotmode{\unprotect\dostartnotmode}
+\def\syst_modes_check_indeed#1%
+ {\ifcsname\s!mode#1\endcsname
+ \ifcase\csname\s!mode#1\endcsname\else
+ \let\syst_modes_check_step\gobbleoneargument
+ \fi
+ \fi}
-\def\dodoifmodeelse
- {\docheckformode\firstoftwoarguments\secondoftwoarguments}
+\def\syst_modes_check#1#2#3%
+ {\let\syst_modes_check_step\syst_modes_check_indeed
+ \rawprocesscommacommand[#3]\syst_modes_check_step
+ \ifx\syst_modes_check_step\gobbleoneargument
+ \expandafter#1%
+ \else
+ \expandafter#2%
+ \fi}
-\def\dodoifmode
- {\docheckformode\firstofoneargument\gobbleoneargument}
+\def\syst_modes_check_all_indeed#1%
+ {\ifcsname\s!mode#1\endcsname
+ \ifcase\csname\s!mode#1\endcsname
+ \let\syst_modes_check_all_step\gobbleoneargument
+ \fi
+ \else
+ \let\syst_modes_check_all_step\gobbleoneargument
+ \fi}
-\def\dodoifnotmode
- {\docheckformode\gobbleoneargument\firstofoneargument}
+\def\syst_modes_check_all#1#2#3%
+ {\let\syst_modes_check_all_step\syst_modes_check_all_indeed
+ \rawprocesscommacommand[#3]\syst_modes_check_all_step
+ \ifx\syst_modes_check_all_step\gobbleoneargument
+ \expandafter#2%
+ \else
+ \expandafter#1%
+ \fi}
-\long\unexpanded\def\dostartmode[#1]%
- {\docheckformode\donothing\dostopmode{#1}}
+\unexpanded\def\doifmodeelse {\syst_modes_check\firstoftwoarguments\secondoftwoarguments}
+\unexpanded\def\doifmode {\syst_modes_check\firstofoneargument\gobbleoneargument}
+\unexpanded\def\doifnotmode {\syst_modes_check\gobbleoneargument\firstofoneargument}
+\unexpanded\def\startmode [#1]{\syst_modes_check\donothing\syst_modes_stop_yes{#1}}
+\unexpanded\def\startnotmode [#1]{\syst_modes_check\syst_modes_stop_nop\donothing{#1}}
+\unexpanded\def\doifallmodeselse {\syst_modes_check_all\firstoftwoarguments\secondoftwoarguments}
+\unexpanded\def\doifallmodes {\syst_modes_check_all\firstofoneargument\gobbleoneargument}
+\unexpanded\def\doifnotallmodes {\syst_modes_check_all\gobbleoneargument\firstofoneargument}
+\unexpanded\def\startallmodes [#1]{\syst_modes_check_all\donothing\syst_modes_stop_all_yes{#1}}
+\unexpanded\def\startnotallmodes[#1]{\syst_modes_check_all\syst_modes_stop_all_nop\donothing{#1}}
+
+\unexpanded\def\stopmode {} % no relax
+\unexpanded\def\stopnotmode {} % no relax
+\unexpanded\def\stopallmodes {} % no relax
+\unexpanded\def\stopnotallmodes {} % no relax
+
+\def\syst_modes_stop_yes #1\stopmode {}
+\def\syst_modes_stop_nop #1\stopnotmode {}
+\def\syst_modes_stop_all_yes#1\stopallmodes {}
+\def\syst_modes_stop_all_nop#1\stopnotallmodes{}
+
+%D Pushing/popping:
+
+\unexpanded\def\pushmode[#1]%
+ {\ifcsname\s!mode#1\endcsname\else\syst_modes_new{#1}\fi
+ \expandafter\edef\csname\??modestack#1\endcsname{\number\csname\s!mode#1\endcsname}%
+ \expandafter\pushmacro\csname\??modestack#1\endcsname}
+
+\unexpanded\def\popmode[#1]%
+ {\ifcsname\??modestack#1\endcsname
+ \expandafter\popmacro\csname\??modestack#1\endcsname
+ \csname\s!mode#1\endcsname\csname\??modestack#1\endcsname\relax
+ \fi}
-\long\def\dostartnotmode[#1]%
- {\docheckformode\dostopnotmode\donothing{#1}}
+\def\pushsystemmode#1%
+ {\ifcsname\s!mode\systemmodeprefix#1\endcsname\else\syst_modes_new{\systemmodeprefix#1}\fi
+ \expandafter\edef\csname\??modestack\systemmodeprefix#1\endcsname{\number\csname\s!mode\systemmodeprefix#1\endcsname}%
+ \expandafter\pushmacro\csname\??modestack\systemmodeprefix#1\endcsname}
-\unexpanded\def\stopmode {} % no relax
-\unexpanded\def\stopnotmode{} % no relax
+\def\popsystemmode#1%
+ {\ifcsname\??modestack\systemmodeprefix#1\endcsname
+ \expandafter\popmacro\csname\??modestack\systemmodeprefix#1\endcsname
+ \csname\s!mode\systemmodeprefix#1\endcsname\csname\??modestack\systemmodeprefix#1\endcsname\relax
+ \fi}
-\long\def\dostopmode #1\stopmode {}
-\long\def\dostopnotmode#1\stopnotmode{}
+%D Here is a relatively new variant of mode checking:
+%D
+%D \starttyping
+%D \enablemode[two]
+%D
+%D \startmodes
+%D [one] {1}
+%D [two] {2}
+%D [two] {2}
+%D [three] {3}
+%D [default] {?}
+%D \stopmodes
+%D
+%D \startmodes
+%D [one] {1}
+%D [three] {3}
+%D [default] {?}
+%D \stopmodes
+%D
+%D \startmodes
+%D [one] {
+%D \input tufte
+%D }
+%D [two] {
+%D \startmodes
+%D [one] {1}
+%D [two] {2}
+%D [two] {2}
+%D [three] {3}
+%D [default] {?}
+%D \stopmodes
+%D }
+%D [three] {
+%D \input zapf
+%D }
+%D [default] {
+%D \input ward
+%D }
+%D \stopmodes
+%D \stoptyping
-\unexpanded\def\doifallmodeselse{\unprotect\dodoifallmodeselse}
-\unexpanded\def\doifallmodes {\unprotect\dodoifallmodes}
-\unexpanded\def\doifnotallmodes {\unprotect\dodoifnotallmodes}
-\unexpanded\def\startallmodes {\unprotect\dostartallmodes}
-\unexpanded\def\startnotallmodes{\unprotect\dostartnotallmodes}
+\newconditional\c_syst_modes_set_done % conditionals can be pushed/popped
-\def\dodoifallmodeselse
- {\docheckforallmodes\firstoftwoarguments\secondoftwoarguments}
+\unexpanded\def\startmodeset
+ {\pushmacro\c_syst_modes_set_done
+ \setfalse\conditionalfalse
+ \doifnextoptionalelse\syst_modes_set_start\syst_modes_set_quit}
-\def\dodoifallmodes
- {\docheckforallmodes\firstofoneargument\gobbleoneargument}
+\def\syst_modes_set_start[#1]%
+ {\edef\m_mode_case{#1}%
+ \ifx\m_mode_case\s!default
+ \ifconditional\c_syst_modes_set_done
+ \doubleexpandafter\syst_modes_set_quit
+ \else
+ \doubleexpandafter\syst_modes_set_yes
+ \fi
+ \else
+ \singleexpandafter\syst_modes_set_check
+ \fi}
-\def\dodoifnotallmodes
- {\docheckforallmodes\gobbleoneargument\firstofoneargument}
+\def\syst_modes_set_check
+ {\syst_modes_check\syst_modes_set_yes\syst_modes_set_nop\m_mode_case}
-\long\def\dostartallmodes[#1]%
- {\docheckforallmodes\donothing\dostopallmodes{#1}}
+\def\syst_modes_set_yes#1%
+ {\settrue\c_syst_modes_set_done
+ #1%
+ \doifnextoptionalelse\syst_modes_set_start\syst_modes_set_quit}
-\long\def\dostartnotallmodes[#1]%
- {\docheckforallmodes\dostopnotallmodes\donothing{#1}}
+\def\syst_modes_set_nop#1%
+ {\doifnextoptionalelse\syst_modes_set_start\syst_modes_set_quit}
-\unexpanded\def\stopallmodes {} % no relax
-\unexpanded\def\stopnotallmodes{} % no relax
+\def\syst_modes_set_quit#1\stopmodeset
+ {\popmacro\c_syst_modes_set_done}
-\long\def\dostopallmodes #1\stopallmodes {}
-\long\def\dostopnotallmodes#1\stopnotallmodes{}
+\let\stopmodeset\relax
%D Lets now set a mode:
@@ -211,38 +301,40 @@
%D Setups:
+\installcorenamespace{setup} % we can probably get rid of some :'s later on
+
\unexpanded\def\startsetups{} % to please dep checker
\unexpanded\def\stopsetups {} % to please dep checker
\expanded % will become obsolete
- {\long\def\@EA\noexpand\csname\e!start\v!setups\endcsname
+ {\def\expandafter\noexpand\csname\e!start\v!setups\endcsname
{\begingroup\noexpand\doifnextoptionalelse
- {\noexpand\dostartsetupsA\@EA\noexpand\csname\e!stop\v!setups\endcsname}
- {\noexpand\dostartsetupsB\@EA\noexpand\csname\e!stop\v!setups\endcsname}}}
+ {\noexpand\dostartsetupsA\expandafter\noexpand\csname\e!stop\v!setups\endcsname}
+ {\noexpand\dostartsetupsB\expandafter\noexpand\csname\e!stop\v!setups\endcsname}}}
\letvalue{\e!stop\v!setups}\relax
-\unexpanded\def\setups{\doifnextbgroupelse\dosetupsA\dosetupsB} % {..} or [..]
-\unexpanded\def\setup {\doifnextbgroupelse\dosetups \dosetupsC} % {..} or [..]
+\unexpanded\def\setups{\doifnextbgroupelse\syst_setups_a\syst_setups_b} % {..} or [..]
+\unexpanded\def\setup {\doifnextbgroupelse\syst_setups \syst_setups_c} % {..} or [..]
-\def\dosetupsA #1{\processcommacommand[#1]\dosetups} % {..}
-\def\dosetupsB[#1]{\processcommacommand[#1]\dosetups} % [..]
-\def\dosetupsC[#1]{\dosetups{#1}} % [..]
+\def\syst_setups_a #1{\processcommacommand[#1]\syst_setups} % {..}
+\def\syst_setups_b[#1]{\processcommacommand[#1]\syst_setups} % [..]
+\def\syst_setups_c[#1]{\syst_setups{#1}} % [..]
-\letvalue{\??su:\letterpercent}\gobbleoneargument
+\letvalue{\??setup:\letterpercent}\gobbleoneargument
-\def\dosetups#1% the grid option will be extended to other main modes
- {\csname\??su
+\def\syst_setups#1% the grid option will be extended to other main modes
+ {\csname\??setup
\ifgridsnapping
- \ifcsname\??su\v!grid:#1\endcsname\v!grid:#1\else\ifcsname\??su:#1\endcsname:#1\else:\letterpercent\fi\fi
+ \ifcsname\??setup\v!grid:#1\endcsname\v!grid:#1\else\ifcsname\??setup:#1\endcsname:#1\else:\letterpercent\fi\fi
\else
- \ifcsname\??su:#1\endcsname:#1\else:\letterpercent\fi
+ \ifcsname\??setup:#1\endcsname:#1\else:\letterpercent\fi
\fi
\endcsname\empty} % takes one argument
% We can consider:
%
-% \setvalue{\??su->\v!auto}#1{\ctxcommand{autosetup("#1")}}
+% \setvalue{\??setup->\v!auto}#1{\ctxcommand{autosetup("#1")}}
%
% ":\letterpercent" => "->\v!auto" with "\endcsname{#1}"
%
@@ -259,7 +351,7 @@
\fi}
% \def\dodoprocesslocalsetups
-% {\@EA\processcommalist\@EA[\tobeprocessedsetups]\dosetups}
+% {\expandafter\processcommalist\expandafter[\tobeprocessedsetups]\syst_setups}
% setups=S1
% setups=lua(S2)
@@ -273,16 +365,34 @@
{\ctxcommand{autosetups("#1")}}
\edef\setupwithargument#1% saves a few expansions
- {\noexpand\csname\??su:\noexpand\ifcsname\??su:#1\endcsname#1\noexpand\else\letterpercent\noexpand\fi\endcsname}
+ {\noexpand\csname\??setup:\noexpand\ifcsname\??setup:#1\endcsname#1\noexpand\else\letterpercent\noexpand\fi\endcsname}
-\let\directsetup\dosetups
-\let\texsetup \dosetups % nicer than \directsetup and more en par with xmlsetup and luasetup
+\let\directsetup\syst_setups
+\let\texsetup \syst_setups % nicer than \directsetup and more en par with xmlsetup and luasetup
+
+\unexpanded\def\doifsetupselse#1% to be done: grid
+ {\ifcsname\??setup:#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
-\def\doifsetupselse#1% to be done: grid
- {\doifdefinedelse{\??su:#1}} % doto: ifcsname
+\unexpanded\def\doifsetups#1% to be done: grid
+ {\ifcsname\??setup:#1\endcsname
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\unexpanded\def\doifnotsetups#1% to be done: grid
+ {\ifcsname\??setup:#1\endcsname
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
% \startluasetups oeps
-% tex.print("DONE")
+% context("DONE")
% a = 1
% b = 1
% \stopluasetups
@@ -302,44 +412,46 @@
% \xmlsetup{123}{zzz}
%
% \startbuffer[what]
-% tex.print("DONE")
+% context("DONE")
% \stopbuffer
%
% \startbuffer
-% tex.print("MORE")
+% context("MORE")
% \stopbuffer
%
% \ctxluabuffer[what]
%
% \ctxluabuffer
-\newtoks\everydefinesetups \appendtoks
+\newtoks\t_syst_setups_tex \appendtoks
\catcode\endoflineasciicode \ignorecatcode
-\to \everydefinesetups
+\to \t_syst_setups_tex
-\newtoks\everydefinelocalsetups \appendtoks
+\newtoks\t_syst_setups_loc \appendtoks
\catcode\endoflineasciicode \ignorecatcode
-\to \everydefinelocalsetups
+\to \t_syst_setups_loc
-\newtoks\everydefinerawsetups \appendtoks
+\newtoks\t_syst_setups_raw \appendtoks
% nothing
-\to \everydefinerawsetups
+\to \t_syst_setups_raw
-\newtoks\everydefinexmlsetups \appendtoks
+\newtoks\t_syst_setups_xml \appendtoks
\catcode\endoflineasciicode\ignorecatcode
\catcode\barasciicode \othercatcode
-\to \everydefinexmlsetups
+\to \t_syst_setups_xml
-\newtoks\everydefineluasetups \appendtoks
+\newtoks\t_syst_setups_lua \appendtoks
\obeylualines
\obeyluatokens
-\to \everydefineluasetups
+\to \t_syst_setups_lua
+
+% Is doglobal still relevant? Maybe always global? Or never? Anyway, it will become obsolete.
-\unexpanded\def\startluasetups {\begingroup\doifnextoptionalelse\dostartluasetupsA \dostartluasetupsB }
-\unexpanded\def\startxmlsetups {\begingroup\doifnextoptionalelse\dostartxmlsetupsA \dostartxmlsetupsB }
-\unexpanded\def\startrawsetups {\begingroup\doifnextoptionalelse\dostartrawsetupsA \dostartrawsetupsB }
-\unexpanded\def\startlocalsetups{\begingroup\doifnextoptionalelse\dostartlocalsetupsA\dostartlocalsetupsB}
-\unexpanded\def\startsetups {\begingroup\doifnextoptionalelse\dostartsetupsA \dostartsetupsB }
+\unexpanded\def\startluasetups {\begingroup\doifnextoptionalelse\syst_setups_start_lua_a\syst_setups_start_lua_b}
+\unexpanded\def\startxmlsetups {\begingroup\doifnextoptionalelse\syst_setups_start_xml_a\syst_setups_start_xml_b}
+\unexpanded\def\startrawsetups {\begingroup\doifnextoptionalelse\syst_setups_start_raw_a\syst_setups_start_raw_b}
+\unexpanded\def\startlocalsetups{\begingroup\doifnextoptionalelse\syst_setups_start_loc_a\syst_setups_start_loc_b}
+\unexpanded\def\startsetups {\begingroup\doifnextoptionalelse\syst_setups_start_tex_a\syst_setups_start_tex_b}
\let\stopluasetups \relax
\let\stopxmlsetups \relax
@@ -347,59 +459,62 @@
\let\stoplocalsetups \relax
\let\stopsetups \relax
-\def\dodostartluasetups #1#2#3\stopluasetups {\endgroup\dodoglobal\long\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
-\def\dodostartxmlsetups #1#2#3\stopxmlsetups {\endgroup\dodoglobal\long\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
-\def\dodostartrawsetups #1#2#3\stoprawsetups {\endgroup\dodoglobal\long\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
-\def\dodostartlocalsetups #1#2#3\stoplocalsetups{\endgroup\dodoglobal\long\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
-\def\dodostartsetups #1#2#3\stopsetups {\endgroup\dodoglobal\long\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
-
-\def\dostartluasetups {\ifsecondargument\@EA\dostartluasetupsC \else\@EA\dostartluasetupsD \fi}
-\def\dostartxmlsetups {\ifsecondargument\@EA\dostartxmlsetupsC \else\@EA\dostartxmlsetupsD \fi}
-\def\dostartrawsetups {\ifsecondargument\@EA\dostartrawsetupsC \else\@EA\dostartrawsetupsD \fi}
-\def\dostartlocalsetups {\ifsecondargument\@EA\dostartlocalsetupsC\else\@EA\dostartlocalsetupsD\fi}
-\def\dostartsetups {\ifsecondargument\@EA\dostartsetupsC \else\@EA\dostartsetupsD \fi}
-
-\def\dostartluasetupsA {\the\everydefineluasetups \dodoubleempty\dostartluasetups} % [ ] delimited
-\def\dostartxmlsetupsA {\the\everydefinexmlsetups \dodoubleempty\dostartxmlsetups} % [ ] delimited
-\def\dostartrawsetupsA {\the\everydefinerawsetups \dodoubleempty\dostartrawsetups} % [ ] delimited
-\def\dostartlocalsetupsA {\the\everydefinelocalsetups\dodoubleempty\dostartlocalsetups} % [ ] delimited
-\def\dostartsetupsA {\the\everydefinesetups \dodoubleempty\dostartsetups} % [ ] delimited
-
-% empty preserves inner {} (is removed by the \@EA{#3})
-
-\def\dostartluasetupsB #1 {\the\everydefineluasetups \dodostartluasetups \empty{#1}\empty} % space delimited
-\def\dostartxmlsetupsB #1 {\the\everydefinexmlsetups \dodostartxmlsetups \empty{#1}\empty} % space delimited
-\def\dostartrawsetupsB #1 {\the\everydefinerawsetups \dodostartrawsetups \empty{#1}\empty} % space delimited
-\def\dostartlocalsetupsB #1 {\the\everydefinelocalsetups\dodostartlocalsetups\empty{#1}\empty} % space delimited
-\def\dostartsetupsB #1 {\the\everydefinesetups \dodostartsetups \empty{#1}\empty} % space delimited
-
-\def\dostartluasetupsC [#1][#2]{\the\everydefineluasetups \dodostartluasetups {#1}{#2}\empty} % [..] [..]
-\def\dostartxmlsetupsC [#1][#2]{\the\everydefinexmlsetups \dodostartxmlsetups {#1}{#2}\empty} % [..] [..]
-\def\dostartrawsetupsC [#1][#2]{\the\everydefinerawsetups \dodostartrawsetups {#1}{#2}\empty} % [..] [..]
-\def\dostartlocalsetupsC[#1][#2]{\the\everydefinelocalsetups\dodostartlocalsetups{#1}{#2}\empty} % [..] [..]
-\def\dostartsetupsC [#1][#2]{\the\everydefinesetups \dodostartsetups {#1}{#2}\empty} % [..] [..]
-
-\def\dostartluasetupsD [#1][#2]{\the\everydefineluasetups \dodostartluasetups \empty{#1}\empty} % [..]
-\def\dostartxmlsetupsD [#1][#2]{\the\everydefinexmlsetups \dodostartxmlsetups \empty{#1}\empty} % [..]
-\def\dostartrawsetupsD [#1][#2]{\the\everydefinerawsetups \dodostartrawsetups \empty{#1}\empty} % [..]
-\def\dostartlocalsetupsD[#1][#2]{\the\everydefinelocalsetups\dodostartlocalsetups\empty{#1}\empty} % [..]
-\def\dostartsetupsD [#1][#2]{\the\everydefinesetups \dodostartsetups \empty{#1}\empty} % [..]
-
-\def\luasetup#1{\ctxlua{\dosetups{#1}}}
+\def\syst_setups_start_lua_indeed#1#2#3\stopluasetups {\endgroup\dodoglobal\expandafter\def\csname\??setup#1:#2\expandafter\endcsname\expandafter##\expandafter1\expandafter{#3}}
+\def\syst_setups_start_xml_indeed#1#2#3\stopxmlsetups {\endgroup\dodoglobal\expandafter\def\csname\??setup#1:#2\expandafter\endcsname\expandafter##\expandafter1\expandafter{#3}}
+\def\syst_setups_start_raw_indeed#1#2#3\stoprawsetups {\endgroup\dodoglobal\expandafter\def\csname\??setup#1:#2\expandafter\endcsname\expandafter##\expandafter1\expandafter{#3}}
+\def\syst_setups_start_loc_indeed#1#2#3\stoplocalsetups{\endgroup\dodoglobal\expandafter\def\csname\??setup#1:#2\expandafter\endcsname\expandafter##\expandafter1\expandafter{#3}}
+\def\syst_setups_start_tex_indeed#1#2#3\stopsetups {\endgroup\dodoglobal\expandafter\def\csname\??setup#1:#2\expandafter\endcsname\expandafter##\expandafter1\expandafter{#3}}
+
+\def\syst_setups_start_lua{\ifsecondargument\expandafter\syst_setups_start_lua_c\else\expandafter\syst_setups_start_lua_d\fi}
+\def\syst_setups_start_xml{\ifsecondargument\expandafter\syst_setups_start_xml_c\else\expandafter\syst_setups_start_xml_d\fi}
+\def\syst_setups_start_raw{\ifsecondargument\expandafter\syst_setups_start_raw_c\else\expandafter\syst_setups_start_raw_d\fi}
+\def\syst_setups_start_loc{\ifsecondargument\expandafter\syst_setups_start_loc_c\else\expandafter\syst_setups_start_loc_d\fi}
+\def\syst_setups_start_tex{\ifsecondargument\expandafter\syst_setups_start_tex_c\else\expandafter\syst_setups_start_tex_d\fi}
+
+\def\syst_setups_start_lua_a{\the\t_syst_setups_lua\dodoubleempty\syst_setups_start_lua} % [ ] delimited
+\def\syst_setups_start_xml_a{\the\t_syst_setups_xml\dodoubleempty\syst_setups_start_xml} % [ ] delimited
+\def\syst_setups_start_raw_a{\the\t_syst_setups_raw\dodoubleempty\syst_setups_start_raw} % [ ] delimited
+\def\syst_setups_start_loc_a{\the\t_syst_setups_loc\dodoubleempty\syst_setups_start_loc} % [ ] delimited
+\def\syst_setups_start_tex_a{\the\t_syst_setups_tex\dodoubleempty\syst_setups_start_tex} % [ ] delimited
+
+% empty preserves inner {} (is removed by the \expandafter{#3})
+
+\def\syst_setups_start_lua_b#1 {\the\t_syst_setups_lua\syst_setups_start_lua_indeed\empty{#1}\empty} % space delimited
+\def\syst_setups_start_xml_b#1 {\the\t_syst_setups_xml\syst_setups_start_xml_indeed\empty{#1}\empty} % space delimited
+\def\syst_setups_start_raw_b#1 {\the\t_syst_setups_raw\syst_setups_start_raw_indeed\empty{#1}\empty} % space delimited
+\def\syst_setups_start_loc_b#1 {\the\t_syst_setups_loc\syst_setups_start_loc_indeed\empty{#1}\empty} % space delimited
+\def\syst_setups_start_tex_b#1 {\the\t_syst_setups_tex\syst_setups_start_tex_indeed\empty{#1}\empty} % space delimited
+
+\def\syst_setups_start_lua_c[#1][#2]{\the\t_syst_setups_lua\syst_setups_start_lua_indeed{#1}{#2}\empty} % [..] [..]
+\def\syst_setups_start_xml_c[#1][#2]{\the\t_syst_setups_xml\syst_setups_start_xml_indeed{#1}{#2}\empty} % [..] [..]
+\def\syst_setups_start_raw_c[#1][#2]{\the\t_syst_setups_raw\syst_setups_start_raw_indeed{#1}{#2}\empty} % [..] [..]
+\def\syst_setups_start_loc_c[#1][#2]{\the\t_syst_setups_loc\syst_setups_start_loc_indeed{#1}{#2}\empty} % [..] [..]
+\def\syst_setups_start_tex_c[#1][#2]{\the\t_syst_setups_tex\syst_setups_start_tex_indeed{#1}{#2}\empty} % [..] [..]
+
+\def\syst_setups_start_lua_d[#1][#2]{\the\t_syst_setups_lua\syst_setups_start_lua_indeed\empty{#1}\empty} % [..]
+\def\syst_setups_start_xml_d[#1][#2]{\the\t_syst_setups_xml\syst_setups_start_xml_indeed\empty{#1}\empty} % [..]
+\def\syst_setups_start_raw_d[#1][#2]{\the\t_syst_setups_raw\syst_setups_start_raw_indeed\empty{#1}\empty} % [..]
+\def\syst_setups_start_loc_d[#1][#2]{\the\t_syst_setups_loc\syst_setups_start_loc_indeed\empty{#1}\empty} % [..]
+\def\syst_setups_start_tex_d[#1][#2]{\the\t_syst_setups_tex\syst_setups_start_tex_indeed\empty{#1}\empty} % [..]
+
+\def\luasetup#1{\ctxlua{\syst_setups{#1}}}
% % % %
\def\systemsetupsprefix{*}
-\def\systemsetups#1{\dosetups{\systemsetupsprefix#1}}
+\def\systemsetups#1{\syst_setups{\systemsetupsprefix#1}}
\def\resetsetups[#1]% see x-fo for usage
- {\ifcsname\??su\ifgridsnapping\v!grid\fi:#1\endcsname
- \dodoglobal\letbeundefined{\??su\ifgridsnapping\v!grid\fi:#1}%
+ {\ifcsname\??setup\ifgridsnapping\v!grid\fi:#1\endcsname
+ \dodoglobal\letbeundefined{\??setup\ifgridsnapping\v!grid\fi:#1}%
\else
- \dodoglobal\letbeundefined{\??su:#1}%
+ \dodoglobal\letbeundefined{\??setup:#1}%
\fi}
-
+
+\def\showsetupsdefinition[#1]%
+ {\showvalue{\??setup:#1}} % temp hack for debugging
+
%D \macros
%D {setvariables,getvariable,getvariabledefault}
%D
@@ -412,40 +527,40 @@
%D \setvariables[xx][titletitel=e]
%D \stoptyping
-\def\??vars{@@vars}
+\installcorenamespace{variables}
-\def\setvariables {\dotripleargument\dosetvariables[\getrawparameters ]}
-\def\setevariables{\dotripleargument\dosetvariables[\getraweparameters]}
-\def\setgvariables{\dotripleargument\dosetvariables[\getrawgparameters]}
-\def\setxvariables{\dotripleargument\dosetvariables[\getrawxparameters]}
+\unexpanded\def\setvariables {\dotripleargument\syst_variables_set[\getrawparameters ]}
+\unexpanded\def\setevariables{\dotripleargument\syst_variables_set[\getraweparameters]}
+\unexpanded\def\setgvariables{\dotripleargument\syst_variables_set[\getrawgparameters]}
+\unexpanded\def\setxvariables{\dotripleargument\syst_variables_set[\getrawxparameters]}
-\def\globalsetvariables % obsolete
- {\dotripleargument\dosetvariables[\globalgetrawparameters]}
+\unexpanded\def\globalsetvariables % obsolete
+ {\dotripleargument\syst_variables_set[\globalgetrawparameters]}
-\long\def\dosetvariables[#1][#2][#3]% tricky, test on s-pre-60
+\def\syst_variables_set[#1][#2][#3]% tricky, test on s-pre-60
{\errorisfataltrue
\doifelse{#2}\currentvariableclass
- {#1[\??vars:#2:][#3]}%
+ {#1[\??variables#2:][#3]}%
{\pushmacro\currentvariableclass
\def\currentvariableclass{#2}%
\getvariable{#2}\s!reset
- #1[\??vars:#2:][#3]%
+ #1[\??variables#2:][#3]%
\getvariable{#2}\s!set
\popmacro\currentvariableclass}%
\errorisfatalfalse}
-\long\def\setvariable #1#2#3{\long\expandafter\def \csname\??vars:#1:#2\endcsname{#3}}
-\long\def\setevariable#1#2#3{\long\expandafter\edef\csname\??vars:#1:#2\endcsname{#3}}
-\long\def\setgvariable#1#2#3{\long\expandafter\gdef\csname\??vars:#1:#2\endcsname{#3}}
-\long\def\setxvariable#1#2#3{\long\expandafter\xdef\csname\??vars:#1:#2\endcsname{#3}}
+\unexpanded\def\setvariable #1#2#3{\expandafter\def \csname\??variables#1:#2\endcsname{#3}}
+\unexpanded\def\setevariable#1#2#3{\expandafter\edef\csname\??variables#1:#2\endcsname{#3}}
+\unexpanded\def\setgvariable#1#2#3{\expandafter\gdef\csname\??variables#1:#2\endcsname{#3}}
+\unexpanded\def\setxvariable#1#2#3{\expandafter\xdef\csname\??variables#1:#2\endcsname{#3}}
\def\getvariable#1#2%
{\csname
- \ifcsname\??vars:#1:#2\endcsname\??vars:#1:#2\else\s!empty\fi
+ \ifcsname\??variables#1:#2\endcsname\??variables#1:#2\else\s!empty\fi
\endcsname}
\def\showvariable#1#2%
- {\showvalue{\ifcsname\??vars:#1:#2\endcsname\??vars:#1:#2\else\s!empty\fi}}
+ {\showvalue{\ifcsname\??variables#1:#2\endcsname\??variables#1:#2\else\s!empty\fi}}
\let\currentvariableclass\empty
@@ -454,20 +569,22 @@
%D
%D I'll probably forget that this on exists.
+\let\m_syst_variables_temp\empty
+
\def\checkvariables
- {\dodoubleargument\docheckvariables}
+ {\dodoubleargument\syst_variables_check}
-\def\docheckvariables
- {\dogetparameters\docheckrawvalue}
+\def\syst_variables_check
+ {\dogetparameters\syst_variables_check_value}
-\long\def\docheckrawvalue#1#2#3%
- {\ifcsname\??vars:#1:#2\endcsname
- \edef\checkedrawvalue{\csname\??vars:#1:#2\endcsname}%
- \ifx\checkedrawvalue\empty
- \long\expandafter\def\csname\??vars:#1:#2\endcsname{#3}%
+\def\syst_variables_check_value#1#2#3%
+ {\ifcsname\??variables#1:#2\endcsname
+ \edef\m_syst_variables_temp{\csname\??variables#1:#2\endcsname}%
+ \ifx\m_syst_variables_temp\empty
+ \expandafter\def\csname\??variables#1:#2\endcsname{#3}%
\fi
\else
- \long\expandafter\def\csname\??vars:#1:#2\endcsname{#3}%
+ \expandafter\def\csname\??variables#1:#2\endcsname{#3}%
\fi}
%D \macros
@@ -475,55 +592,37 @@
%D
%D A few trivial macros:
-\def\doifelsevariable#1#2%
- {\ifcsname\??vars:#1:#2\endcsname
+\unexpanded\def\doifelsevariable#1#2%
+ {\ifcsname\??variables#1:#2\endcsname
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
\fi}
-\def\doifvariable#1#2%
- {\ifcsname\??vars:#1:#2\endcsname
+\unexpanded\def\doifvariable#1#2%
+ {\ifcsname\??variables#1:#2\endcsname
\expandafter\firstofoneargument
\else
\expandafter\gobbleoneargument
\fi}
-\def\doifnotvariable#1#2%
- {\ifcsname\??vars:#1:#2\endcsname
+\unexpanded\def\doifnotvariable#1#2%
+ {\ifcsname\??variables#1:#2\endcsname
\expandafter\gobbleoneargument
\else
\expandafter\firstofoneargument
\fi}
\def\getvariabledefault#1#2% #3% can be command, so no ifcsname here
- {\executeifdefined{\??vars:#1:#2}}% {#3}
-
-% \unexpanded\def\setupenv{\dodoubleargument\rawgetparameters[\??en]}
-%
-% \def\doifenvelse#1{\doifdefinedelse{\??en#1}} % speed up
-% \def\doifenv #1{\doifdefined {\??en#1}} % speed up
-% \def\doifnotenv #1{\doifundefined {\??en#1}} % speed up
-%
-% \def\env#1{\csname\??en#1\endcsname}
-%
-% \def\envvar#1#2%
-% {\ifcsname\??en#1\endcsname
-% \csname\??en#1\endcsname\else#2%
-% \fi}
-%
-% low level change, now also accessible as \getvariable
-% {environment}{...}; the next macros will become obsolete
-% some day in favor of normal variables in the environment
-% namespace
-
-\def\s!environment{environment}
-
-\unexpanded\def\setupenv {\dotripleargument\dosetvariables[\getrawparameters][\s!environment]}
-\def\doifenvelse{\doifelsevariable \s!environment}
-\def\doifenv {\doifvariable \s!environment}
-\def\doifnotenv {\doifnotvariable \s!environment}
-\def\env {\getvariable \s!environment}
-\def\envvar {\getvariabledefault\s!environment}
+ {\executeifdefined{\??variables#1:#2}}% {#3}
+
+\unexpanded\def\setupenv
+ {\dotripleargument\syst_variables_set[\getrawparameters][\s!environment]}
+
+\unexpanded\def\doifenvelse{\doifelsevariable \s!environment}
+\unexpanded\def\doifenv {\doifvariable \s!environment}
+\unexpanded\def\doifnotenv {\doifnotvariable \s!environment}
+\def\env {\getvariable \s!environment}
+\def\envvar {\getvariabledefault\s!environment}
\protect \endinput