catc-sym.mkxl /size: 5044 b    last modification: 2021-10-28 13:50
1%D \module
2%D   [       file=catc-sym,
3%D        version=1997.01.03, % moved code
4%D          title=\CONTEXT\ Catcode Macros,
5%D       subtitle=Some Handy Constants,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14%D The following definitions can be used for mapping special characters onto
15%D letters, although we cheat a bit: they actually are of category other but
16%D for users that distinction doesn't matter here. The definitions in \MKII\
17%D and \MKIV\ look more impressive but here we use a \LUAMETATEX\ feature
18%D that permits a more direct definition (that also looks nice with the
19%D \CONTEXT\ syntax highlighting):
20
21\immutable\edef\letterleftbrace        {\expandtoken \othercatcode \leftbraceasciicode}
22\immutable\edef\letterrightbrace       {\expandtoken \othercatcode \rightbraceasciicode}
23\immutable\edef\letterampersand        {\expandtoken \othercatcode \ampersandasciicode}
24\immutable\edef\letterless             {\expandtoken \othercatcode \lessthanasciicode}
25\immutable\edef\lettermore             {\expandtoken \othercatcode \morethanasciicode}
26\immutable\edef\letterhash             {\expandtoken \othercatcode \hashasciicode}
27\immutable\edef\letterdoublequote      {\expandtoken \othercatcode \doublequoteasciicode}
28\immutable\edef\lettersinglequote      {\expandtoken \othercatcode \singlequoteasciicode}
29\immutable\edef\letterdollar           {\expandtoken \othercatcode \dollarasciicode}
30\immutable\edef\letterpercent          {\expandtoken \othercatcode \percentasciicode}
31\immutable\edef\letterhat              {\expandtoken \othercatcode \circumflexasciicode}
32\immutable\edef\letterunderscore       {\expandtoken \othercatcode \underscoreasciicode}
33\immutable\edef\letterbar              {\expandtoken \othercatcode \barasciicode}
34\immutable\edef\lettertilde            {\expandtoken \othercatcode \tildeasciicode}
35\immutable\edef\letterbackslash        {\expandtoken \othercatcode \backslashasciicode}
36\immutable\edef\letterslash            {\expandtoken \othercatcode \forwardslashasciicode}
37\immutable\edef\letterquestionmark     {\expandtoken \othercatcode \questionmarkasciicode}
38\immutable\edef\letterexclamationmark  {\expandtoken \othercatcode \exclamationmarkasciicode}
39\immutable\edef\letterat               {\expandtoken \othercatcode \atsignasciicode}
40\immutable\edef\lettercolon            {\expandtoken \othercatcode \colonasciicode}
41\immutable\edef\letterhyphen           {\expandtoken \othercatcode \hyphenasciicode}
42
43\immutable\edef\letterleftparenthesis  {\expandtoken \othercatcode \leftparentasciicode}
44\immutable\edef\letterrightparenthesis {\expandtoken \othercatcode \rightparentasciicode}
45\immutable\edef\letterleftbracket      {\expandtoken \othercatcode \leftbracketasciicode}
46\immutable\edef\letterrightbracket     {\expandtoken \othercatcode \rightbracketasciicode}
47
48\aliased\let\letterescape    \letterbackslash
49\aliased\let\letterbgroup    \letterleftbrace
50\aliased\let\letteregroup    \letterrightbrace
51\aliased\let\letteropenbrace \letterleftbrace
52\aliased\let\letterclosebrace\letterrightbrace
53
54\unprotect
55
56%immutable\edef\s!n_u_l_token{\expandtoken \othercatcode \zerocount} % nul(l)
57%immutable\edef\s!s_o_h_token{\expandtoken \othercatcode \plusone  } % start of header       ^^^^0001
58%immutable\edef\s!s_t_x_token{\expandtoken \othercatcode \plustwo  } % start of text         ^^^^0002
59%immutable\edef\s!e_t_x_token{\expandtoken \othercatcode \plusthree} % end of text           ^^^^0003
60\immutable\edef\s!e_o_t_token{\expandtoken \othercatcode \plusfour } % end of transmission   ^^^^0004
61%immutable\edef\s!e_n_q_token{\expandtoken \othercatcode \plusfive } % enquiry
62%immutable\edef\s!a_c_k_token{\expandtoken \othercatcode \plussix  } % aknowledgement
63
64\protect
65
66%D \macros
67%D   {setnormalcatcodes,uncatcodespacetokens}
68%D
69%D The following macros are more or less replaced by switching to a catcode table
70%D (which we simulate in \MKII) but we keep them for convenience and compatibility.
71%D Some old engine code has been removed. A few ar still used a few times so I need
72%D to clean that up.
73
74\permanent\protected\def\setnormalcatcodes
75  {\setcatcodetable\ctxcatcodes} % maybe \texcatcodes
76
77\permanent\protected\def\uncatcodespacetokens
78  {\catcode\spaceasciicode    \spacecatcode
79   \catcode\tabasciicode      \spacecatcode
80   \catcode\formfeedasciicode \endoflinecatcode
81   \catcode\endoflineasciicode\endoflinecatcode
82   \catcode\delasciicode      \ignorecatcode}
83
84%D These two are probably no longer needed, but we keep them for a while. Some more
85%D explanation can be foun din the mkiv variant of this module, where we also
86%D discuss side effects. It's time to move on, so these might go away some day.
87
88\aliased  \let\rescan              \scantextokens
89\permanent\def\rescanwithsetup#1#2{\begingroup\directsetup{#1}\scantextokens{#2}\endgroup}
90
91\endinput
92