diff options
author | Hans Hagen <pragma@wxs.nl> | 2020-10-31 00:09:22 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2020-10-31 00:09:22 +0100 |
commit | 7043cd3b7046f6a11112a5d49c4ae5e2dc0c6896 (patch) | |
tree | 92ffcd258fb29e37b4a136eb071fbfd0717be29e /tex/context/base/mkiv/lang-ini.mkxl | |
parent | a0270f13065d116355a953c6f246cbba26289fc2 (diff) | |
download | context-7043cd3b7046f6a11112a5d49c4ae5e2dc0c6896.tar.gz |
2020-10-30 22:27:00
Diffstat (limited to 'tex/context/base/mkiv/lang-ini.mkxl')
-rw-r--r-- | tex/context/base/mkiv/lang-ini.mkxl | 149 |
1 files changed, 79 insertions, 70 deletions
diff --git a/tex/context/base/mkiv/lang-ini.mkxl b/tex/context/base/mkiv/lang-ini.mkxl index f5831a5ea..6d0649fa8 100644 --- a/tex/context/base/mkiv/lang-ini.mkxl +++ b/tex/context/base/mkiv/lang-ini.mkxl @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -%D This module needs a further cleanup (real split between ii/iv). +% We can protect \currentlanguage etc too. % \cldcontext{languages.numbers[tex.count.mainlanguagenumber]} @@ -22,7 +22,7 @@ \writestatus{loading}{ConTeXt Language Macros / Initialization} -\registerctxluafile{lang-ini}{} +\registerctxluafile{lang-ini}{autosuffix} \registerctxluafile{lang-def}{} \registerctxluafile{lang-cnt}{} @@ -74,14 +74,14 @@ \def\currentusedlanguage{\currentlanguage} -\def\defaultlanguage#1% +\permanent\def\defaultlanguage#1% {\ifcsname\??language#1\s!default\endcsname \expandafter\defaultlanguage\lastnamedcs \else #1% \fi} -\def\languageparameter#1% +\permanent\def\languageparameter#1% {\ifcsname\??language\currentlanguage#1\endcsname \lastnamedcs \orelse\ifcsname\??language\currentlanguage\s!default\endcsname @@ -90,7 +90,7 @@ \lastnamedcs \fi} -\def\specificlanguageparameter#1#2% +\permanent\def\specificlanguageparameter#1#2% {\ifcsname\??language#1#2\endcsname \lastnamedcs \orelse\ifcsname\??language#1\s!default\endcsname @@ -99,7 +99,7 @@ \lastnamedcs \fi} -\def\mainlanguageparameter#1% +\permanent\def\mainlanguageparameter#1% {\ifcsname\??language\currentmainlanguage#1\endcsname \lastnamedcs \orelse\ifcsname\??language\currentmainlanguage\s!default\endcsname @@ -108,9 +108,9 @@ \lastnamedcs \fi} -\let\usedlanguageparameter\languageparameter +\aliased\let\usedlanguageparameter\languageparameter -\def\askedlanguageparameter#1% assumes \currentusedlanguage being set +\permanent\def\askedlanguageparameter#1% assumes \currentusedlanguage being set {\ifcsname\??language\currentusedlanguage#1\endcsname \lastnamedcs \orelse\ifcsname\??language\currentusedlanguage\s!default\endcsname @@ -119,25 +119,25 @@ \lastnamedcs \fi} -\unexpanded\def\setusedlanguage#1% +\permanent\protected\def\setusedlanguage#1% {\edef\currentusedlanguage{\reallanguagetag{#1}}% \ifempty\currentusedlanguage \let\currentusedlanguage \currentlanguage - \let\usedlanguageparameter\languageparameter + \enforced\let\usedlanguageparameter\languageparameter \orelse\ifx\currentusedlanguage\v!global \let\currentusedlanguage \currentmainlanguage - \let\usedlanguageparameter\mainlanguageparameter + \enforced\let\usedlanguageparameter\mainlanguageparameter \orelse\ifx\currentusedlanguage\v!local \let\currentusedlanguage \currentlanguage - \let\usedlanguageparameter\languageparameter + \enforced\let\usedlanguageparameter\languageparameter \else - \let\usedlanguageparameter\askedlanguageparameter + \enforced\let\usedlanguageparameter\askedlanguageparameter \fi} -\unexpanded\def\setupcurrentlanguage[#1]% +\permanent\protected\def\setupcurrentlanguage[#1]% {\setcurrentlanguage\currentmainlanguage{#1}} -\unexpanded\def\setcurrentlanguage#1#2% sets modes: **id (currentmain) *id (current) +\permanent\protected\def\setcurrentlanguage#1#2% sets modes: **id (currentmain) *id (current) {\edef\xaskedlanguage{#1}% otherwise clash with \askedlanguage \ifempty\xaskedlanguage \else \ifempty\currentmainlanguage\else\resetsystemmode{\systemmodeprefix\currentmainlanguage}\fi @@ -176,9 +176,9 @@ \newtoks \everysetuplanguage -\def\installedlanguages{\clf_installedlanguages} +\aliased\let\installedlanguages\clf_installedlanguages % no need for \clf_ -\unexpanded\def\doifelselanguage#1% +\permanent\protected\def\doifelselanguage#1% {\ifcsname\??language#1\c!state\endcsname \expandafter\firstoftwoarguments \else @@ -187,15 +187,12 @@ \let\doiflanguageelse\doifelselanguage -\def\reallanguagetag#1% +\permanent\def\reallanguagetag#1% {\ifcsname\??languagelinked#1\endcsname\lastnamedcs\else#1\fi} % \language[#1] gave unwanted side effect of loading language specifics -\unexpanded\def\installlanguage - {\dodoubleargument\lang_basics_install} - -\def\lang_basics_install[#1][#2]% +\permanent\tolerant\protected\def\installlanguage[#1]#*[#2]% {\ifcondition\validassignment{#2}% \doifelselanguage{#1} {\getparameters[\??language#1][#2]} @@ -218,7 +215,7 @@ %D feature is present because we used dutch mnemonics in the dutch version, but %D nowadays conform a standard. -\unexpanded\def\doifelsepatterns#1% +\permanent\protected\def\doifelsepatterns#1% {\begingroup % will change \lang_basics_set_current[#1]% \ifnum\normallanguage>\zerocount @@ -227,7 +224,7 @@ \endgroup\expandafter\secondoftwoarguments \fi} -\let\doifpatternselse\doifelsepatterns +\aliased\let\doifpatternselse\doifelsepatterns %D \macros %D {setuplanguage} @@ -238,27 +235,26 @@ %D %D Beware, this command can only be used when a language is installed. -\unexpanded\def\setuplanguage - {\dodoubleempty\lang_basics_setup} - \ifdefined\lang_basics_synchronize \else \let\lang_basics_synchronize\relax % be nice for setups till we have one \fi \installmacrostack\currentlanguage -\def\lang_basics_setup[#1][#2]% - {\ifsecondargument +\permanent\tolerant\protected\def\setuplanguage[#1]#*[#2]% + {\ifarguments + % only synchronize + \or + \let\currentsetuplanguage\currentlanguage + \getparameters[\??language\currentsetuplanguage][#1]% + \the\everysetuplanguage + \or \push_macro_currentlanguage % can be default \edef\currentsetuplanguage{\reallanguagetag{#1}}% \getparameters[\??language\currentsetuplanguage][#2]% \the\everysetuplanguage \pop_macro_currentlanguage %\doif\currentsetuplanguage\currentlanguage we can have influenced inheritance (default) - \else - \let\currentsetuplanguage\currentlanguage - \getparameters[\??language\currentsetuplanguage][#1]% - \the\everysetuplanguage \fi \lang_basics_synchronize} @@ -316,8 +312,8 @@ %D %D Just to make things easy we can ask for the current date specification by saying: -\def\currentdatespecification{\languageparameter\c!date} -\def\currenttimespecification{\languageparameter\c!time} +\permanent\def\currentdatespecification{\languageparameter\c!date} +\permanent\def\currenttimespecification{\languageparameter\c!time} %D Carefull reading of these macros shows that it's legal to say %D @@ -398,9 +394,9 @@ % This is the old implementation: a hack that sets the min values, because we want % to keep the language set: % -% \unexpanded\def\nohyphens % nicer for url's +% \protected\def\nohyphens % nicer for url's % {\ifx\dohyphens\relax -% \unexpanded\edef\dohyphens +% \protected\edef\dohyphens % {\hyphenminoffset\the\hyphenminoffset\relax % \lang_basics_synchronize_min_max}% % \fi @@ -433,10 +429,10 @@ + \permitmathreplacehyphenationmodecode % and again we're more permissive \relax -\unexpanded\def\dohyphens{\hyphenationmode\completehyphenationmodecode} -\unexpanded\def\nohyphens{\hyphenationmode\zerocount} +\permanent\protected\def\dohyphens{\hyphenationmode\completehyphenationmodecode} +\permanent\protected\def\nohyphens{\hyphenationmode\zerocount} -\unexpanded\def\usehyphensparameter#1% +\permanent\protected\def\usehyphensparameter#1% {\edef\p_hyphens{#1\c!hyphens}% \ifx\p_hyhens\v!no \nohyphens @@ -446,17 +442,17 @@ %D The rest stays the same as in mkiv: -\unexpanded\def\lesshyphens +\permanent\protected\def\lesshyphens {\advance\hyphenminoffset\plusone \lang_basics_synchronize_min_max} -\unexpanded\def\morehyphens +\permanent\protected\def\morehyphens {\ifcase\hyphenminoffset \else \advance\hyphenminoffset\minusone \fi \lang_basics_synchronize_min_max} -\unexpanded\def\lang_basics_synchronize_min_max % maybe store this at the lua end +\protected\def\lang_basics_synchronize_min_max % maybe store this at the lua end {% these values are stored along with glyph nodes \lefthyphenmin \numexpr0\languageparameter\s!lefthyphenmin +\hyphenminoffset\relax \righthyphenmin\numexpr0\languageparameter\s!righthyphenmin+\hyphenminoffset\relax @@ -469,7 +465,7 @@ \lang_basics_synchronize_min_max \to \everylanguage -\unexpanded\def\unhyphenated +\permanent\protected\def\unhyphenated {\groupedcommand{\lefthyphenmin\maxdimen}\donothing} % \appendtoks @@ -509,7 +505,7 @@ % new experimental feature -\unexpanded\def\setuplanguages +\permanent\protected\def\setuplanguages {\setuplanguage[\s!default]} % \setuplanguages[\c!font=\v!auto] @@ -537,36 +533,40 @@ \fi \fi} -\unexpanded\def\uselanguageparameter#1% +\protected\def\uselanguageparameter#1% {\edef\askedlanguage{#1\c!language}% \ifempty\askedlanguage\else\lang_basics_switch_asked\fi} -\unexpanded\def\douselanguageparameter#1% fast setter +\protected\def\douselanguageparameter#1% fast setter {\edef\askedlanguage{#1}% \ifempty\askedlanguage\else\lang_basics_switch_asked\fi} -\unexpanded\def\lang_basics_set_current[#1]% +\protected\def\lang_basics_set_current[#1]% {\edef\askedlanguage{#1}% \ifempty\askedlanguage\else\lang_basics_switch_asked\fi} -\unexpanded\def\language - {\doifelsenextoptionalcs\lang_basics_set_current\normallanguage} +\pushoverloadmode -\let\setlanguage\language % we make these synonyms + \permanent\protected\def\language + {\doifelsenextoptionalcs\lang_basics_set_current\normallanguage} -\let\patterns\gobbleoneargument + \let\setlanguage\language % we make these synonyms + + \let\patterns\gobbleoneargument + +\popoverloadmode \newcount\mainlanguagenumber %D Beware: you might need to use \type {\dontleavehmode} outside and|/|or \type {\par} %D inside the group! -\unexpanded\def\startlanguage +\permanent\protected\def\startlanguage {\begingroup\language} -\let\stoplanguage\endgroup +\permanent\let\stoplanguage\endgroup -\unexpanded\def\mainlanguage[#1]% +\permanent\protected\def\mainlanguage[#1]% {\edef\askedlanguage{#1}% \ifempty\askedlanguage \orelse\ifcsname\??languagelinked\askedlanguage\endcsname @@ -590,10 +590,10 @@ %D Used at all? -\def\splitsequence#1#2% +\permanent\def\splitsequence#1#2% {\doifelse{#1}\v!no{#2}{\doifelse{#1}\v!yes{\languageparameter\c!limittext}{#1}}} -\def\splitsymbol#1% +\permanent\def\splitsymbol#1% {\splitsequence{#1}{\languageparameter\c!limittext}} %D Just like with subsentence boundary symbols, quotes placement depends on the @@ -704,25 +704,22 @@ %D \stoptable %D \protect -\unexpanded\def\nopatterns{\normallanguage\minusone} +\permanent\protected\def\nopatterns{\normallanguage\minusone} %D We default to the language belonging to the interface. This is one of the few %D places outside the interface modules where \type {\startinterface} is used. \setupcurrentlanguage[\s!en] -\unexpanded\def\initializemainlanguage +\permanent\protected\def\initializemainlanguage {\mainlanguage[\currentlanguage]% \showmessage\m!languages9\currentlanguage} %D New: -\let\stopexceptions\relax +\permanent\let\stopexceptions\relax -\unexpanded\def\startexceptions - {\dosingleempty\lang_basics_start_exceptions} - -\def\lang_basics_start_exceptions[#1]#2\stopexceptions % multilingual or not? +\tolerant\permanent\protected\def\startexceptions[#1]#:#2\stopexceptions {\begingroup \edef\askedlanguage{\reallanguagetag{#1}}% \ifempty\askedlanguage @@ -731,26 +728,38 @@ \clf_setlanguageexceptions{\askedlanguage}{#2}% \endgroup} -\unexpanded\def\hyphenation +\pushoverloadmode + +\permanent\protected\def\hyphenation {\clf_setlanguageexceptions{\currentlanguage}} +\popoverloadmode + %D New: -\unexpanded\def\traceddiscretionary#1#% +\permanent\protected\def\traceddiscretionary#1#% {\dontleavehmode\lang_basics_traced_discretionary{#1}} -\unexpanded\def\lang_basics_traced_discretionary#1#2#3#4% +\protected\def\lang_basics_traced_discretionary#1#2#3#4% {\normaldiscretionary#1{\darkred#2}{\darkgreen#3}{\darkblue#4}} \installtextracker {discretionaries} - {\let\discretionary\traceddiscretionary} - {\let\discretionary\normaldiscretionary} + {\enforced\let\discretionary\traceddiscretionary} + {\enforced\let\discretionary\normaldiscretionary} -\unexpanded\def\samplediscretionary +\permanent\protected\def\samplediscretionary {\traceddiscretionary {pre\clf_currentprehyphenchar}% {\clf_currentposthyphenchar post}% {replace}} +%D Also new: + +\immutable\chardef\nokerningcode \numexpr\noleftkerncode +\norightkerncode \relax +\immutable\chardef\noligaturingcode\numexpr\noleftligaturecode+\norightligaturecode\relax + +\permanent\protected\def\nokerning {\bitwiseflip\glyphoptions\nokerningcode} +\permanent\protected\def\noligaturing{\bitwiseflip\glyphoptions\noligaturingcode} + \protect \endinput |