summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/catc-act.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/catc-act.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/catc-act.mkiv59
1 files changed, 33 insertions, 26 deletions
diff --git a/Master/texmf-dist/tex/context/base/catc-act.mkiv b/Master/texmf-dist/tex/context/base/catc-act.mkiv
index 2cde28e44f1..df228c20322 100644
--- a/Master/texmf-dist/tex/context/base/catc-act.mkiv
+++ b/Master/texmf-dist/tex/context/base/catc-act.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Catcode Tables,
%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
@@ -14,17 +14,22 @@
%D This module deals with some active character handling. Use
%D with care.
+\unprotect
+
%D \macros
%D {installactivecharacter}
-\def\installactivecharacter#1 %
- {\edef\temp{\detokenize{#1}}%
- \cctcounterc\expandafter`\temp\relax % relax needed
+\let\m_syst_catcodes_temp\empty
+
+\normalprotected\def\installactivecharacter#1 %
+ {\edef\m_syst_catcodes_temp{\detokenize{#1}}%
+ \c_syst_catcodes_c\expandafter`\m_syst_catcodes_temp\relax % relax needed
\expandafter\startextendcatcodetable
- \expandafter\ctxcatcodes\expandafter\catcode\the\cctcounterc\activecatcode
+ \expandafter\ctxcatcodes\expandafter\catcode\the\c_syst_catcodes_c\activecatcode
\stopextendcatcodetable
- \letcatcodecommand \ctxcatcodes \cctcounterc \temp \relax
- \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi}
+ \letcatcodecommand \ctxcatcodes \c_syst_catcodes_c \m_syst_catcodes_temp \relax
+ \ifnum\currentcatcodetable=\ctxcatcodes \setcatcodetable\ctxcatcodes \fi
+ \let\m_syst_catcodes_temp\empty}
%D \macros
%D {defineactivecharacter}
@@ -32,34 +37,36 @@
%D Use this one with care, esp in combination with catcode
%D vectors. There are better ways now.
-\chardef\activehackcode=`~
+\setnewconstant\c_syst_catcodes_hack\tildeasciicode % also defined in catc-ini.mkiv
-\def\defineactivecharacter #1#2 #3%
- {\cctcounterc\uccode\activehackcode
- \if#1"\uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty #1#2\else
- \uccode\activehackcode\expandafter\doifnumberelse\expandafter{\string#1#2}\empty`#1#2\fi
- \catcode\uccode\activehackcode\activecatcode
- \uppercase{\def\next{~}}%
- \uccode\activehackcode\cctcounterc
- \expandafter\expandafter\expandafter\def\expandafter\next\expandafter
- {\expandafter\dohandleactivecharacter\next{#3}}}
+\normalprotected\def\defineactivecharacter #1#2 #3% uses \doifnumberelse which is not yet defined
+ {\c_syst_catcodes_c\uccode\c_syst_catcodes_hack
+ \if#1"\uccode\c_syst_catcodes_hack\expandafter\doifnumberelse\expandafter{\string#1#2}\empty #1#2\else
+ \uccode\c_syst_catcodes_hack\expandafter\doifnumberelse\expandafter{\string#1#2}\empty`#1#2\fi
+ \catcode\uccode\c_syst_catcodes_hack\activecatcode
+ \uppercase{\def\m_syst_catcodes_temp{~}}% brrr
+ \uccode\c_syst_catcodes_hack\c_syst_catcodes_c
+ \expandafter\expandafter\expandafter\def\expandafter\m_syst_catcodes_temp\expandafter
+ {\expandafter\syst_catcodes_handle\m_syst_catcodes_temp{#3}}%
+ \let\m_syst_catcodes_temp\empty}
\chardef\activecharactermode\plusone % overloading still backward compatible
-\def\dodohandleactivecharacter#1#2{#2}
-\def\donthandleactivecharacter#1#2{\noexpand#1}
-
-\def\dohandleactivecharacter
+\def\syst_catcodes_handle
{\ifcase\activecharactermode
- \expandafter\donthandleactivecharacter
+ \expandafter\syst_catcodes_handle_nop
\else
- \expandafter\dodohandleactivecharacter
+ \expandafter\syst_catcodes_handle_yes
\fi}
-\def\makecharacteractive #1 {\catcode`#1\active}
+\def\syst_catcodes_handle_yes#1#2{#2}
+\def\syst_catcodes_handle_nop#1#2{\noexpand#1}
+
+\normalprotected\def\makecharacteractive #1 %
+ {\catcode`#1\activecatcode}
-\def\installanddefineactivecharacter #1 % #2%
+\normalprotected\def\installanddefineactivecharacter #1 % #2%
{\normalexpanded{\noexpand\installactivecharacter \utfchar{#1} }%
\defineactivecharacter #1 }% {#2}}
-\endinput
+\protect \endinput