summaryrefslogtreecommitdiff
path: root/tex/context/base/syst-gen.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/syst-gen.tex')
-rw-r--r--tex/context/base/syst-gen.tex68
1 files changed, 56 insertions, 12 deletions
diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex
index f65eaf75f..f5643fcbd 100644
--- a/tex/context/base/syst-gen.tex
+++ b/tex/context/base/syst-gen.tex
@@ -162,33 +162,69 @@
\chardef\protectionthreshold=2
+% \def\unprotect
+% {\ifcase\protectionlevel
+% \edef\doprotectcharacters%
+% {\catcode`\noexpand @=\the\catcode`@
+% \catcode`\noexpand !=\the\catcode`!
+% \catcode`\noexpand ?=\the\catcode`? }%
+% \let\protect\doprotect
+% \fi
+% \catcode`@=11
+% \catcode`!=11
+% \catcode`?=11
+% \advance\protectionlevel 1
+% \ifnum\protectionlevel>\protectionthreshold
+% \message{<unprotect \the\protectionlevel>}%
+% \fi}
+%
+% \def\doprotect%
+% {\ifnum\protectionlevel=1
+% \doprotectcharacters
+% \let\doprotectcharacters\relax
+% \let\protect\normalprotect
+% \fi
+% \ifnum\protectionlevel>\protectionthreshold
+% \message{<protect \the\protectionlevel>}%
+% \fi
+% \advance\protectionlevel -1 }
+
+\def\saveprotectedcharacters
+ {\edef\doprotectcharacters
+ {\catcode`\noexpand @\the\catcode`@
+ \catcode`\noexpand !\the\catcode`!
+ \catcode`\noexpand ?\the\catcode`? }}
+
+\def\setprotectedcharacters
+ {\catcode`@=11
+ \catcode`!=11
+ \catcode`?=11 }
+
\def\unprotect
{\ifcase\protectionlevel
- \edef\doprotectcharacters%
- {\catcode`\noexpand @=\the\catcode`@
- \catcode`\noexpand !=\the\catcode`!
- \catcode`\noexpand ?=\the\catcode`? }%
+ \saveprotectedcharacters
\let\protect\doprotect
\fi
- \catcode`@=11
- \catcode`!=11
- \catcode`?=11
+ \setprotectedcharacters
\advance\protectionlevel 1
- \ifnum\protectionlevel>\protectionthreshold
- \message{<unprotect \the\protectionlevel>}%
+ \ifnum\protectionlevel>\protectionthreshold
+ \reportunprotection
\fi}
-\def\doprotect%
- {\ifnum\protectionlevel=1
+\def\doprotect
+ {\ifcase\protectionlevel\or
\doprotectcharacters
\let\doprotectcharacters\relax
\let\protect\normalprotect
\fi
\ifnum\protectionlevel>\protectionthreshold
- \message{<protect \the\protectionlevel>}%
+ \reportprotection
\fi
\advance\protectionlevel -1 }
+\def\reportunprotection{\message{<unprotect \the\protectionlevel>}}
+\def\reportprotection {\message{<protect \the\protectionlevel>}}
+
\ifx\everyeof\undefined
\let\checkprotection\relax
@@ -205,6 +241,14 @@
\unprotect
+%D So, now we can redefine a previously defined macro as
+%D follows:
+
+\def\setprotectedcharacters
+ {\catcode`@\@@letter
+ \catcode`!\@@letter
+ \catcode`?\@@letter}
+
%D \macros
%D {@@escape,@@begingroup,@@endgroup,@@mathshift,@@alignment,
%D @@endofline,@@parameter,@@superscript,@@subscript,