summaryrefslogtreecommitdiff
path: root/tex/context/base/enco-ini.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/enco-ini.tex')
-rw-r--r--tex/context/base/enco-ini.tex65
1 files changed, 56 insertions, 9 deletions
diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex
index d77150059..79649501d 100644
--- a/tex/context/base/enco-ini.tex
+++ b/tex/context/base/enco-ini.tex
@@ -418,6 +418,13 @@
{\mappingtoks\@EA{\the\mappingtoks\setcasemap #1 #2 #3 }}%
\ignorespaces}
+%D Saves a few tokens
+
+\def\definecaseself #1 % lower=upper=self
+ {\setmappingtoks
+ \mappingtoks\@EA{\the\mappingtoks\setcaseself #1 }%
+ \ignorespaces}
+
%D Watch the \type {\definecasemap 127 to 255} option!
%D Dedicated to Taco there is also:
@@ -469,6 +476,7 @@
%D \starttyping
%D \definecasemaps 128 to 156 lc 32 uc 0
%D \definecasemaps 160 to 188 lc -32 uc 0
+%D \definecasemaps 160 to 188 lc -32 uc 0
%D \definecasemaps 192 to 255 lc 32 uc 0
%D \stoptyping
%D
@@ -538,6 +546,11 @@
\lccode #1=#2
\uccode #1=#3 }
+\def\setcaseself #1 %
+ {\setregimecode{#1}\@@letter
+ \lccode #1=#1
+ \uccode #1=#1 }
+
% \def\definespacemap #1 #2 % code sfcode
% {\setmappingtoks
% \appendtoks\setspacemap #1 #2 \to\mappingtoks
@@ -547,13 +560,13 @@
\def\definespacemap #1 #2 % code sfcode
{\setmappingtoks
- \expandafter\mappingtoks{\the\mappingtoks\setspacemap #1 #2 }%
+ \mappingtoks\expandafter{\the\mappingtoks\setspacemap #1 #2 }%
\ignorespaces}
\def\setspacemap #1 #2 %
{\setregimecode{#1}\@@other
- \lccode #1=\zerocount
- \uccode #1=\zerocount
+ %\lccode #1=\zerocount
+ %\uccode #1=\zerocount
\sfcode #1=#2 }
% \def\defineuppercasecom#1#2%
@@ -590,6 +603,7 @@
\ifx\enabledmapping\charactermapping \else
\doifdefined{\@map@\charactermapping}
{\the\csname\@map@\charactermapping\endcsname}%
+ % == \the\executeifdefined{\@map@\charactermapping}\emptytoks
\edef\enabledmapping{\charactermapping}%
\enablelanguagespecifics[\currentlanguage]% new
% \edef\enabledmapping{\charactermapping\currentlanguage}% can be comma list
@@ -604,6 +618,7 @@
\@EA\ifx\csname\@map@\charactermapping\endcsname\relax\else
\the\csname\@map@\charactermapping\endcsname
\fi
+ % == \the\executeifdefined{\@map@\charactermapping}\emptytoks
\let\enabledmapping\charactermapping
\enablelanguagespecifics[\currentlanguage]% to faster
\fi}
@@ -769,7 +784,7 @@
{\doifelsenothing{#1}
{\let\stopencoding\relax}
{%\protectfontcharacters % problematic in language loading
- \showmessage\m!encodings1{#1}%
+ %\showmessage\m!encodings1{#1}%
\pushmacro\dohandleaccent % still needed?
\pushmacro\dohandlecommand % still needed?
\pushmacro\definesortkey
@@ -915,17 +930,34 @@
%D In patterns, characters have to be bytes. These will be
%D mapped onto the compact pattern arrays.
-\let\normaldohandleaccent\dohandleaccent
+\def\patternchar#1 {\rawcharacter{#1}} % space is part of character definition !
-\def\patternchar#1 {\rawcharacter{#1}}
+\ifx \enablepatterntokens\undefined
+ \def\handlepatterntoken#1]{\csname#1\endcsname}
+\fi
-\def\startpatternaccents
- {\let\savedpatternchar\char
+\def\startpatternaccents#1#2% % used grouped
+ {\bgroup
\let\char\patternchar
+ \doifelsenothing{#1}{\enableencoding[ec]}{\enableencoding[#1]}%
+ \doifelsenothing{#2}{\enablemapping [ec]}{\enablemapping [#2]}%
+ \ifx \enablepatterntokens\undefined
+ \defineactivecharacter [ {\handlepatterntoken}%
+ \else
+ \enablepatterntokens
+ \fi
+ \ifx \enablepatternxml\undefined \else
+ \enablepatternxml
+ \fi
+ \catcode16 =\@@letter\lccode16=16 % brrr, extra quote in ec (turkish)
+ \catcode17 =\@@letter\lccode17=17 % brrr, extra quote in ec (turkish)
+ \catcode`\"=\@@letter\lccode`\"=`\"
+ \catcode`\'=\@@letter\lccode`\'=`\'
+ \catcode`\-=\@@letter\lccode`\-=`\-
\let\dohandleaccent\normaldohandleaccent}
\def\stoppatternaccents
- {\let\char\savedpatternchar}
+ {\egroup}
\def\definecharacter#1 #2 %
{\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi
@@ -952,6 +984,10 @@
{\csname\characterprefix\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax
\nocharacterencoding\else\characterencoding\fi#1\endcsname}
+% \def\dopatterncharacter#1%
+% {\csname\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax
+% \strippedcsname\fallbackpatternchar\else\characterprefix\characterencoding#1\fi\endcsname}
+
\endTEX
\beginETEX \ifcsname
@@ -960,8 +996,14 @@
{\csname\characterprefix\ifcsname\characterprefix\characterencoding#1\endcsname
\characterencoding\else\nocharacterencoding\fi#1\endcsname}
+% \def\dopatterncharacter#1%
+% {\csname\ifcsname\characterprefix\characterencoding#1\endcsname
+% \characterprefix\characterencoding#1\else\strippedcsname\fallbackpatternchar\fi\endcsname}
+
\endETEX
+% \def\fallbackpatternchar{x} % makes no sense, duplicate patterns
+
\def\defaultcharacter#1%
{\csname\characterprefix\nocharacterencoding\strippedcsname#1\endcsname}
@@ -1663,6 +1705,11 @@
\keepencodedtokens
\to \everysafeexpanded
+%D Now we will not redefine any more, so:
+
+\let\normaldohandleaccent \dohandleaccent
+\let\normaldohandlecharacter\dohandlecharacter
+
%D We preload several encodings:
\useencoding[def,acc,raw,com,cas,mis] % mis should come first