summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/core-var.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-var.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/core-var.tex87
1 files changed, 67 insertions, 20 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-var.tex b/Master/texmf-dist/tex/context/base/core-var.tex
index 2317d7bf75a..61a8c87e799 100644
--- a/Master/texmf-dist/tex/context/base/core-var.tex
+++ b/Master/texmf-dist/tex/context/base/core-var.tex
@@ -232,7 +232,7 @@
{\docheckforallmodes\donothing\dostopallmodes{#1}}
\long\def\dostartnotallmodes[#1]%
- {\docheckforallmodes\dostopallmodes\donothing{#1}}
+ {\docheckforallmodes\dostopnotallmodes\donothing{#1}}
\let\stopallmodes \donothing
\let\stopnotallmodes\donothing
@@ -264,24 +264,38 @@
%newevery \everybeforeutilitywrite \relax
-\newevery \everycleanupfeatures \relax
-\newevery \everyinsidefloat \relax
-\newevery \everyheadstart \relax
-\newevery \everyendoftextbody \relax
-\newevery \everybeginofpar \relax
-\newevery \everyendofpar \relax
-\newevery \everylistentry \relax
-\newevery \everymarking \relax
-\newevery \everysavesortkeys \relax
-
-\newevery \everyfont \relax
-\newevery \everybodyfont \EveryBodyFont
-\newevery \everyfontswitch \EveryFontSwitch
-\newevery \everydefinedfont \relax
+\newevery \everycleanupfeatures \relax
+\newevery \everyinsidefloat \relax
+\newevery \everyheadstart \relax
+\newevery \everyendoftextbody \relax
+\newevery \everybeginofpar \relax
+\newevery \everyendofpar \relax
+\newevery \everylistentry \relax
+\newevery \everymarking \relax
+\newevery \everysavesortkeys \relax
+
+\newevery \everyfont \relax
+\newevery \everybodyfont \EveryBodyFont
+\newevery \everyglobalbodyfont \relax
+\newevery \everyfontswitch \EveryFontSwitch
+\newevery \everydefinedfont \relax
+
+\newevery \everybeforeoutput \relax
+\newevery \everyafteroutput \relax
+
+\newevery \everybeforedisplayformula \relax
\def\cleanupfeatures{\the\everycleanupfeatures}
\def\forgetall {\the\everyforgetall}
+%D State mess:
+
+\newtoks \everypushsomestate
+\newtoks \everypopsomestate
+
+\def\pushsomestates{\the\everypushsomestate}
+\def\popsomestates {\the\everypopsomestate }
+
%D For shared \type {\everymath} and \type {\everydisplay}:
\newevery \everymathematics \relax
@@ -366,6 +380,8 @@
%D This boolean can be used to bypass certain
%D initializations.
+\ifx\protectionlevel\undefined \newcount\protectionlevel \fi
+
\newif\ifproductionrun \appendtoks \productionruntrue \to \everydump
\appendtoks \ifcase\protectionlevel\else\reportunprotection\fi \to \everydump
@@ -443,12 +459,43 @@
\def\globalsetvariables % obsolete
{\dotripleargument\dosetvariables[\globalgetrawparameters]}
-\long\def\dosetvariables[#1][#2][#3]%
+% \long\def\dosetvariables[#1][#2][#3]%
+% {\errorisfataltrue
+% \def\currentvariableclass{#2}%
+% \getvariable{#2}\s!reset
+% #1[\??vars:#2:][#3]%
+% \getvariable{#2}\s!set
+% \errorisfatalfalse}
+%
+% permit nested definitions while preventing nested set/reset
+%
+% wrong:
+%
+% \long\def\dosetvariables[#1][#2][#3]%
+% {\errorisfataltrue
+% \getrawparameters[\??vars:*:][\s!reset=*,\s!set=*,#3]%
+% \doifelse{\getvalue{\??vars:*:\s!reset}\getvalue{\??vars:*:\s!set}}{**}
+% {\doifelse{#2}\currentvariableclass
+% {#1[\??vars:#2:][#3]}
+% {\pushmacro\currentvariableclass
+% \def\currentvariableclass{#2}%
+% \getvariable{#2}\s!reset
+% #1[\??vars:#2:][#3]%
+% \getvariable{#2}\s!set
+% \popmacro\currentvariableclass}}%
+% {#1[\??vars:#2:][#3]}%
+% \errorisfatalfalse}
+
+\long\def\dosetvariables[#1][#2][#3]% tricky, test on s-pre-60
{\errorisfataltrue
- \def\currentvariableclass{#2}%
- \getvariable{#2}\s!reset
- #1[\??vars:#2:][#3]%
- \getvariable{#2}\s!set
+ \doifelse{#2}\currentvariableclass
+ {#1[\??vars:#2:][#3]}%
+ {\pushmacro\currentvariableclass
+ \def\currentvariableclass{#2}%
+ \getvariable{#2}\s!reset
+ #1[\??vars:#2:][#3]%
+ \getvariable{#2}\s!set
+ \popmacro\currentvariableclass}%
\errorisfatalfalse}
\long\def\setvariable #1#2#3{\long\setvalue {\??vars:#1:#2}{#3}}