summaryrefslogtreecommitdiff
path: root/tex/context/base/core-env.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-env.mkiv')
-rw-r--r--tex/context/base/core-env.mkiv66
1 files changed, 45 insertions, 21 deletions
diff --git a/tex/context/base/core-env.mkiv b/tex/context/base/core-env.mkiv
index 5b23ec121..b095008b5 100644
--- a/tex/context/base/core-env.mkiv
+++ b/tex/context/base/core-env.mkiv
@@ -166,17 +166,17 @@
\def\dodoifnotmode
{\docheckformode\gobbleoneargument\firstofoneargument}
-\long\unexpanded\def\dostartmode[#1]%
+\unexpanded\def\dostartmode[#1]%
{\docheckformode\donothing\dostopmode{#1}}
-\long\def\dostartnotmode[#1]%
+\def\dostartnotmode[#1]%
{\docheckformode\dostopnotmode\donothing{#1}}
\unexpanded\def\stopmode {} % no relax
\unexpanded\def\stopnotmode{} % no relax
-\long\def\dostopmode #1\stopmode {}
-\long\def\dostopnotmode#1\stopnotmode{}
+\def\dostopmode #1\stopmode {}
+\def\dostopnotmode#1\stopnotmode{}
\unexpanded\def\doifallmodeselse{\unprotect\dodoifallmodeselse}
\unexpanded\def\doifallmodes {\unprotect\dodoifallmodes}
@@ -193,17 +193,41 @@
\def\dodoifnotallmodes
{\docheckforallmodes\gobbleoneargument\firstofoneargument}
-\long\def\dostartallmodes[#1]%
+\def\dostartallmodes[#1]%
{\docheckforallmodes\donothing\dostopallmodes{#1}}
-\long\def\dostartnotallmodes[#1]%
+\def\dostartnotallmodes[#1]%
{\docheckforallmodes\dostopnotallmodes\donothing{#1}}
\unexpanded\def\stopallmodes {} % no relax
\unexpanded\def\stopnotallmodes{} % no relax
-\long\def\dostopallmodes #1\stopallmodes {}
-\long\def\dostopnotallmodes#1\stopnotallmodes{}
+\def\dostopallmodes #1\stopallmodes {}
+\def\dostopnotallmodes#1\stopnotallmodes{}
+
+%D Pushing/popping:
+
+\unexpanded\def\pushmode[#1]%
+ {\ifcsname\@mode@#1\endcsname\else\donewmode{#1}\fi
+ \expandafter\edef\csname\@mode@:#1\endcsname{\number\csname\@mode@#1\endcsname}%
+ \expandafter\pushmacro\csname\@mode@:#1\endcsname}
+
+\unexpanded\def\popmode[#1]%
+ {\ifcsname\@mode@:#1\endcsname
+ \expandafter\popmacro\csname\@mode@:#1\endcsname
+ \csname\@mode@#1\endcsname\csname\@mode@:#1\endcsname\relax
+ \fi}
+
+\def\pushsystemmode#1%
+ {\ifcsname\@mode@\systemmodeprefix#1\endcsname\else\donewmode{\systemmodeprefix#1}\fi
+ \expandafter\edef\csname\@mode@:\systemmodeprefix#1\endcsname{\number\csname\@mode@\systemmodeprefix#1\endcsname}%
+ \expandafter\pushmacro\csname\@mode@:\systemmodeprefix#1\endcsname}
+
+\def\resetsystemmode#1%
+ {\ifcsname\@mode@:\systemmodeprefix#1\endcsname
+ \expandafter\popmacro\csname\@mode@:\systemmodeprefix#1\endcsname
+ \csname\@mode@\systemmodeprefix#1\endcsname\csname\@mode@:\systemmodeprefix#1\endcsname\relax
+ \fi}
%D Lets now set a mode:
@@ -215,7 +239,7 @@
\unexpanded\def\stopsetups {} % to please dep checker
\expanded % will become obsolete
- {\long\def\@EA\noexpand\csname\e!start\v!setups\endcsname
+ {\def\@EA\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}}}
@@ -347,11 +371,11 @@
\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\dodostartluasetups #1#2#3\stopluasetups {\endgroup\dodoglobal\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
+\def\dodostartxmlsetups #1#2#3\stopxmlsetups {\endgroup\dodoglobal\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
+\def\dodostartrawsetups #1#2#3\stoprawsetups {\endgroup\dodoglobal\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
+\def\dodostartlocalsetups #1#2#3\stoplocalsetups{\endgroup\dodoglobal\@EA\def\csname\??su#1:#2\@EA\endcsname\@EA##\@EA1\@EA{#3}}
+\def\dodostartsetups #1#2#3\stopsetups {\endgroup\dodoglobal\@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}
@@ -434,10 +458,10 @@
\popmacro\currentvariableclass}%
\errorisfatalfalse}
-\unexpanded\def\setvariable #1#2#3{\long\expandafter\def \csname\??vars:#1:#2\endcsname{#3}}
-\unexpanded\def\setevariable#1#2#3{\long\expandafter\edef\csname\??vars:#1:#2\endcsname{#3}}
-\unexpanded\def\setgvariable#1#2#3{\long\expandafter\gdef\csname\??vars:#1:#2\endcsname{#3}}
-\unexpanded\def\setxvariable#1#2#3{\long\expandafter\xdef\csname\??vars:#1:#2\endcsname{#3}}
+\unexpanded\def\setvariable #1#2#3{\expandafter\def \csname\??vars:#1:#2\endcsname{#3}}
+\unexpanded\def\setevariable#1#2#3{\expandafter\edef\csname\??vars:#1:#2\endcsname{#3}}
+\unexpanded\def\setgvariable#1#2#3{\expandafter\gdef\csname\??vars:#1:#2\endcsname{#3}}
+\unexpanded\def\setxvariable#1#2#3{\expandafter\xdef\csname\??vars:#1:#2\endcsname{#3}}
\def\getvariable#1#2%
{\csname
@@ -460,14 +484,14 @@
\def\docheckvariables
{\dogetparameters\docheckrawvalue}
-\long\def\docheckrawvalue#1#2#3%
+\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}%
+ \expandafter\def\csname\??vars:#1:#2\endcsname{#3}%
\fi
\else
- \long\expandafter\def\csname\??vars:#1:#2\endcsname{#3}%
+ \expandafter\def\csname\??vars:#1:#2\endcsname{#3}%
\fi}
%D \macros