summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mult-ini.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mult-ini.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/mult-ini.tex318
1 files changed, 113 insertions, 205 deletions
diff --git a/Master/texmf-dist/tex/context/base/mult-ini.tex b/Master/texmf-dist/tex/context/base/mult-ini.tex
index 444edcfeef6..53a1014c5ba 100644
--- a/Master/texmf-dist/tex/context/base/mult-ini.tex
+++ b/Master/texmf-dist/tex/context/base/mult-ini.tex
@@ -77,8 +77,10 @@
\def\c!prefix!{c!} \def\e!prefix!{e!} \def\f!prefix!{f!}
\def\k!prefix!{k!} \def\l!prefix!{l!} \def\m!prefix!{m!}
\def\p!prefix!{p!} \def\r!prefix!{r!} \def\s!prefix!{s!}
-\def\v!prefix!{v!} \def\x!prefix!{x!} \def\y!prefix!{y!}
-\def\t!prefix!{t!}
+\def\v!prefix!{v!} \def\t!prefix!{t!}
+
+% \def\x!prefix!{x!} % obsolete
+% \def\y!prefix!{y!} % obsolete
%D \macros
%D [constants,variables,commands]
@@ -381,121 +383,11 @@
%D are a bit more complicated than neccessary. The \NEWLINE\
%D token is used as message separator.
%D
-%D For internal purposes one can use \type {\dogetmessage},
+%D For internal purposes one can use \type {\setmessagetext},
%D which puts the message text asked for in \type
%D {\currentmessagetext}.
-\def\findinterfacemessage#1#2%
- {\let#2\empty
- \def\dofindinterfacemessage##1 #1: ##2\relax##3\end{\def#2{##2}}%
- \edef\!!stringa{\getvalue{\??ms\currentmessagelibrary} #1: \relax}%
- \expandafter\dofindinterfacemessage\!!stringa\end}
-
-\def\composemessagetext#1--#2--#3--#4--#5--#6--#7--#8--#9\\%
- {\def\docomposemessagetext##1,##2,##3,##4,##5,##6,##7,##8,##9\\%
- {\edef\currentmessagetext{#1##1#2##2#3##3#4##4#5##5#6##6#7##7#8##8}}%
- \docomposemessagetext}
-
-\def\dogetmessage#1#2%
- {\def\currentmessagelibrary{#1}%
- \findinterfacemessage{#2}\currentmessagetext}
-
-\unexpanded\def\getmessage#1#2%
- {\def\currentmessagelibrary{#1}%
- \findinterfacemessage{#2}\currentmessagetext
- \currentmessagetext}
-
-\unexpanded\def\makemessage#1#2#3%
- {\def\currentmessagelibrary{#1}%
- \findinterfacemessage{#2}\currentmessagetext
- \@EA\composemessagetext\currentmessagetext----------------\\#3,,,,,,,,\\%
- \currentmessagetext}
-
-\def\showmessage#1#2#3%
- {\def\currentmessagelibrary{#1}%
- \findinterfacemessage{#2}\currentmessagetext
- \findinterfacemessage{title}\currentmessagetitle
- \ifx\currentmessagetext\empty
- \def\currentmessagetext{<unknown message #2>}%
- \else
- \@EA\composemessagetext\currentmessagetext----------------\\#3,,,,,,,,\\%
- \fi
- \@EA\writestatus\@EA{\currentmessagetitle}{\currentmessagetext}}
-
-\def\doaddinterfacemessage#1#2%
- {\findinterfacemessage{#1}\currentmessagetext
- \doifelsenothing\currentmessagetext
- {\setxvalue{\??ms\currentmessagelibrary}%
- {\getvalue{\??ms\currentmessagelibrary} #1: #2\relax}}
- {\debuggerinfotrue % we consider this an important error
- \debuggerinfo
- {message}
- {duplicate tag #1
- in library \currentmessagelibrary\space
- of interface \currentresponses}}%
- \futurelet\next\getinterfacemessage}
-
-\bgroup
-\obeylines
-\gdef\addinterfacemessage#1: #2
- {\doaddinterfacemessage{#1}{#2}}%
-\egroup
-
-\def\getinterfacemessage
- {\ifx\next\stopmessages
- \egroup\expandafter\gobbleoneargument
- \else
- \expandafter\addinterfacemessage
- \fi}
-
-\let\stopmessages\undefined % for dep checker
-
-\def\startmessages #1 library: #2
- {\definemessageconstant{#2}% handy for modules
- \bgroup
- \obeylines
- \doifinsetelse{#1}{\currentresponses,all}
- {\def\next
- {\def\currentmessagelibrary{#2}%
- \doifundefined{\??ms\currentmessagelibrary}
- {\letgvalueempty{\??ms\currentmessagelibrary}}%
- \futurelet\next\getinterfacemessage}}
- {\long\def\next##1\stopmessages{\egroup}}%
- \next}
-
-%D Here, the messages are stored in a way that saves hash
-%D entries, i.e. they are packed in one macro per library.
-%D This was important in the days when we used \TEX's with
-%D hash tables of about 10.000. The next, less efficient way
-%D of storing the message, makes \CONTEXT\ run upto 5\%
-%D faster by storing each message in a macro. In July 2000,
-%D this costs some 185 additional hash entries, and since
-%D we run large \TEX's, let do it!
-
-\def\startmessages #1 library: #2
- {\definemessageconstant{#2}% handy for modules
- \bgroup
- \obeylines
- \doifinsetelse{#1}{\currentresponses,all}
- {\def\next
- {\def\currentmessagelibrary{#2}%
- \futurelet\next\getinterfacemessage}}
- {\long\def\next##1\stopmessages{\egroup}}%
- \next}
-
-\def\findinterfacemessage#1#2%
- {\edef#2{\getvalue{\??ms\currentmessagelibrary#1}}}
-
-\def\doaddinterfacemessage#1#2%
- {\doifdefined{\??ms\currentmessagelibrary#1}
- {\debuggerinfotrue % we consider this an important error
- \debuggerinfo
- {message}
- {duplicate tag #1
- in library \currentmessagelibrary\space
- of interface \currentresponses}}%
- \setxvalue{\??ms\currentmessagelibrary#1}{#2}%
- \futurelet\next\getinterfacemessage}
+\loadmarkfile{mult-ini}
%D \macros
%D {ifshowwarnings, ifshowmessages}
@@ -512,6 +404,8 @@
%D Turning off messages also turns off warnings, which is
%D quote logical because they are less important.
+% not yet mkiv
+
\newif\ifshowwarnings \showwarningstrue
\newif\ifshowmessages \showmessagestrue
@@ -1280,20 +1174,35 @@
\def\c!internal!n {-}
\let\c!internal! \c!internal!y
+% \def\setinterfaceconstant#1#2%
+% {\setvalue{\c!prefix!#1}{\c!internal!#1}%
+% \doifelse{#2}\nointerfaceobject % ?
+% {\debuggerinfo{constant}{#1 defined as #1 by default}%
+% }% \setvalue{\k!prefix!#1}{#1}} % was #2 -> #1
+% {\debuggerinfo{constant}{#1 defined as #2}%
+% \ifinterfacetranslation
+% \setvalue{\x!prefix!#1}{#2}%
+% \fi
+% \checksetvalue{\k!prefix!#2}{#1}%
+% \setvalue{\k!prefix!#2}{#1}}}
+
+% temporary mkiv hack
+
+\ifx\dowithinterfaceconstant\undefined \let\dowithinterfaceconstant\gobbletwoarguments \fi
+\ifx\dowithinterfacevariable\undefined \let\dowithinterfacevariable\gobbletwoarguments \fi
+
\def\setinterfaceconstant#1#2%
- {\setvalue{\c!prefix!#1}{\c!internal!#1}%
+ {\dowithinterfaceconstant{#1}{#2}%
+ \setvalue{\c!prefix!#1}{\c!internal!#1}%
\doifelse{#2}\nointerfaceobject % ?
- {\debuggerinfo{constant}{#1 defined as #1 by default}%
- }% \setvalue{\k!prefix!#1}{#1}} % was #2 -> #1
+ {\debuggerinfo{constant}{#1 defined as #1 by default}}%
{\debuggerinfo{constant}{#1 defined as #2}%
- \ifinterfacetranslation
- \setvalue{\x!prefix!#1}{#2}%
- \fi
\checksetvalue{\k!prefix!#2}{#1}%
\setvalue{\k!prefix!#2}{#1}}}
\def\setinterfacevariable#1#2%
- {\doifelse{#2}\nointerfaceobject
+ {\dowithinterfacevariable{#1}{#2}%
+ \doifelse{#2}\nointerfaceobject
{\debuggerinfo{variable}{#1 defined as #1 by default}%
\checksetvalue{\v!prefix!#1}{#1}%
\setvalue{\v!prefix!#1}{#1}}
@@ -1305,6 +1214,17 @@
{\doifdefined{#1}{\doifvaluesomething{#1}{\doifnotvalue{#1}{#2}
{\writestatus{problems}{set #1 to #2 overloads \getvalue{#1}}}}}}
+% \def\checksetvalue#1#2%
+% {\expandafter\ifx\csname#1\endcsname\relax\else
+% \expandafter\ifx\csname#1\endcsname\empty\else
+% \def\!!stringa{#1}%
+% \def\!!stringb{#2}%
+% \ifx\!!stringa\!!stringb\else
+% \writestatus{problems}{set #1 to #2 overloads \getvalue{#1}}%
+% \fi
+% \fi
+% \fi}
+
\def\startvariables{\startinterfaceobjects\setinterfacevariable\stopvariables}
\def\startconstants{\startinterfaceobjects\setinterfaceconstant\stopconstants}
@@ -1319,40 +1239,43 @@
%D in these situations we could use the c||version, but for
%D documentation purposes the x||alternative comes in handy.
-\def\defineinterfaceconstant#1#2%
- {\setvalue{\c!prefix!#1}{#2}%
- \ifinterfacetranslation
- \setvalue{\x!prefix!#1}{#2}%
- \fi}
-
-%D \macros
-%D {startinterfacesetupconstant}
-%D
-%D The next command, \type{\startinterfacesetupconstant}, which
-%D behavior also depends on the boolean, is used for constants
-%D that are only needed in these quick reference macro's. The
-%D following, more efficient approach does not work here,
-%D because it sometimes generates spaces.
-%D
-%D \starttyping
-%D \def\setinterfacesetupconstant
-%D {\ifinterfacetranslation
-%D \expandafter\setinterfaceconstant
-%D \fi}
-%D \stoptyping
-%D
-%D We therefore use the more redundant but robust method:
-
-\def\setinterfacesetupvariable#1#2%
- {\ifinterfacetranslation
- \doifelse{#2}\nointerfaceobject
- {\setvalue{\y!prefix!#1}{#1}}
- {\setvalue{\y!prefix!#1}{#2}}%
- \fi}
-
-\def\startsetupvariables{\startinterfaceobjects\setinterfacesetupvariable\stopsetupvariables}
+% \def\defineinterfaceconstant#1#2%
+% {\setvalue{\c!prefix!#1}{#2}%
+% \ifinterfacetranslation
+% \setvalue{\x!prefix!#1}{#2}%
+% \fi}
-\let\stopsetupvariables\relax
+\def\defineinterfaceconstant#1#2%
+ {\setvalue{\c!prefix!#1}{#2}}
+
+% %D \macros
+% %D {startinterfacesetupconstant}
+% %D
+% %D The next command, \type{\startinterfacesetupconstant}, which
+% %D behavior also depends on the boolean, is used for constants
+% %D that are only needed in these quick reference macro's. The
+% %D following, more efficient approach does not work here,
+% %D because it sometimes generates spaces.
+% %D
+% %D \starttyping
+% %D \def\setinterfacesetupconstant
+% %D {\ifinterfacetranslation
+% %D \expandafter\setinterfaceconstant
+% %D \fi}
+% %D \stoptyping
+% %D
+% %D We therefore use the more redundant but robust method:
+
+% \def\setinterfacesetupvariable#1#2%
+% {\ifinterfacetranslation
+% \doifelse{#2}\nointerfaceobject
+% {\setvalue{\y!prefix!#1}{#1}}
+% {\setvalue{\y!prefix!#1}{#2}}%
+% \fi}
+%
+% \def\startsetupvariables{\startinterfaceobjects\setinterfacesetupvariable\stopsetupvariables}
+%
+% \let\stopsetupvariables\relax
%D \macros
%D {startelements}
@@ -1421,83 +1344,68 @@
%D
%D \stopcommands
%D \stoptyping
-%D
-%D Here we also have to take care of the optional translation
-%D needed for reference cards.
-% \ifx\doifdefinedascommandelse\undefined
-% \let\doifdefinedascommandelse\thirdofthreearguments
-% \else
-% % this one will be defined in the encoding modules
-% \fi
+% %D Here we also have to take care of the optional translation
+% %D needed for reference cards.
+
+% \def\setinterfacecommand#1#2%
+% {\doifelse{#2}\nointerfaceobject
+% {\debuggerinfo{command}{no link to #1}%
+% \setinterfacesetupvariable{#1}{#1}}
+% {\doifelse{#1}{#2}
+% {\debuggerinfo{command}{#1 remains #1}}
+% {\doifdefinedelse{#2}
+% {\debuggerinfo{command}{core command #2 redefined as #1}}%
+% {\debuggerinfo{command}{#2 defined as #1}}%
+% %\@EAEAEA\def\@EA\csname\@EA#2\@EA\endcsname\@EA{\csname#1\endcsname}}%
+% \@EA\def\csname#2\@EA\endcsname\@EA{\csname#1\endcsname}}% ugly but faster
+% \setinterfacesetupvariable{#1}{#2}}}
\def\setinterfacecommand#1#2%
{\doifelse{#2}\nointerfaceobject
- {\debuggerinfo{command}{no link to #1}%
- \setinterfacesetupvariable{#1}{#1}}
+ {\debuggerinfo{command}{no link to #1}}
{\doifelse{#1}{#2}
{\debuggerinfo{command}{#1 remains #1}}
{\doifdefinedelse{#2}
{\debuggerinfo{command}{core command #2 redefined as #1}}%
{\debuggerinfo{command}{#2 defined as #1}}%
- %\@EAEAEA\def\@EA\csname\@EA#2\@EA\endcsname\@EA{\csname#1\endcsname}}%
- \@EA\def\csname#2\@EA\endcsname\@EA{\csname#1\endcsname}}% ugly but faster
- \setinterfacesetupvariable{#1}{#2}}}
+ \@EA\def\csname#2\@EA\endcsname\@EA{\csname#1\endcsname}}}}
\def\startcommands{\startinterfaceobjects\setinterfacecommand\stopcommands}
\let\stopcommands\relax
-%D \macros
-%D {getinterfaceconstant, getinterfacevariable}
-%D
-%D Generating the interface translation macro's that are used
-%D in the reference lists, is enabled by setting the boolean:
-%D
-%D \starttyping
-%D \interfacetranslationtrue
-%D \stoptyping
-%D
-%D Keep in mind that enabling interfacetranslation costs a
-%D bit of hash space.
+% %D \macros
+% %D {getinterfaceconstant, getinterfacevariable}
+% %D
+% %D Generating the interface translation macro's that are used
+% %D in the reference lists, is enabled by setting the boolean:
+% %D
+% %D \starttyping
+% %D \interfacetranslationtrue
+% %D \stoptyping
+% %D
+% %D Keep in mind that enabling interfacetranslation costs a
+% %D bit of hash space.
+%
+% %D Interface translation is obsolete now that we use an \XML\
+% %D definition base.
-\newif\ifinterfacetranslation
+% \newif\ifinterfacetranslation
-% for a long time:
-%
% \def\getinterfaceconstant#1%
% {\ifinterfacetranslation
-% \doifdefinedelse{\x!prefix!#1}
-% {\getvalue{\x!prefix!#1}}
-% {#1}%
+% \executeifdefined{\x!prefix!#1}{#1}%
% \else
% #1%
% \fi}
-%
+
% \def\getinterfacevariable#1%
% {\ifinterfacetranslation
-% \doifdefinedelse{\y!prefix!#1}
-% {\getvalue{\y!prefix!#1}}
-% {#1}%
+% \executeifdefined{\y!prefix!#1}{#1}%
% \else
% #1%
% \fi}
-%
-% more compact
-
-\def\getinterfaceconstant#1%
- {\ifinterfacetranslation
- \executeifdefined{\x!prefix!#1}{#1}%
- \else
- #1%
- \fi}
-
-\def\getinterfacevariable#1%
- {\ifinterfacetranslation
- \executeifdefined{\y!prefix!#1}{#1}%
- \else
- #1%
- \fi}
%D When a reference list is generated, one does not need to
%D generate a new format. Just reloading the relevant