summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-10-08 20:46:55 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-10-08 20:46:55 +0200
commit778f381ba6a448ab00d67994a412dd4226d43238 (patch)
treed9dade45016a572e6c22521bfb165f9829ac3192
parent2073fe5d88215dddd9a9e6421afaea7ab7db955a (diff)
downloadcontext-778f381ba6a448ab00d67994a412dd4226d43238.tar.gz
2021-10-08 20:07:00
-rw-r--r--context/data/scite/context/documents/scite-context-readme.pdfbin212528 -> 135520 bytes
-rw-r--r--context/data/scite/context/documents/scite-context-readme.tex83
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/lexers/lexer.lua3
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-bibtex.lua42
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-bnf.lua34
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cld.lua19
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua22
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cpp.lua77
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-dummy.lua23
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-json.lua67
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua21
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-lua.lua199
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-mps.lua127
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-pdf.lua41
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-sas.lua59
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-sql.lua51
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-tex-web.lua17
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-tex.lua322
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-txt.lua63
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua13
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-web.lua65
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua18
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua18
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-script.lua18
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml.lua107
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer.lua3252
-rw-r--r--context/data/scite/context/lexers/themes/scite-context-theme.lua63
-rw-r--r--context/data/scite/context/scite-context-data-context.properties2
-rw-r--r--context/data/scite/context/scite-context-external.properties98
-rw-r--r--context/data/scite/context/scite-context.properties78
-rw-r--r--context/data/scite/context/scite-ctx.lua2259
-rw-r--r--context/data/scite/context/scite-ctx.properties47
-rw-r--r--context/data/scite/context/scite-pragma.properties7
-rw-r--r--context/data/textadept/context/data/scite-context-data-bidi.lua10357
-rw-r--r--context/data/textadept/context/data/scite-context-data-context.lua4
-rw-r--r--context/data/textadept/context/data/scite-context-data-interfaces.lua4
-rw-r--r--context/data/textadept/context/data/scite-context-data-metafun.lua4
-rw-r--r--context/data/textadept/context/data/scite-context-data-metapost.lua9
-rw-r--r--context/data/textadept/context/data/scite-context-data-tex.lua9
-rw-r--r--context/data/textadept/context/init.lua147
-rw-r--r--context/data/textadept/context/lexers/lexer.lua2686
-rw-r--r--context/data/textadept/context/lexers/lexer.rme1
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-bibtex.lua195
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-bidi.lua598
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-bnf.lua99
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-cld.lua23
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-cpp-web.lua23
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-cpp.lua199
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-dummy.lua35
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-json.lua101
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-lua-longstring.lua31
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-lua.lua396
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-mps.lua189
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-pdf-object.lua136
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-pdf-xref.lua43
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-pdf.lua218
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-sas.lua102
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-sql.lua238
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-tex-web.lua23
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-tex.lua588
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-txt.lua80
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-web-snippets.lua132
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-web.lua67
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-xml-cdata.lua33
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-xml-comment.lua33
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-xml-script.lua33
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer-xml.lua350
-rw-r--r--context/data/textadept/context/lexers/scite-context-lexer.lua2686
-rw-r--r--context/data/textadept/context/lexers/text.lua35
-rw-r--r--context/data/textadept/context/modules/textadept-context-files.lua826
-rw-r--r--context/data/textadept/context/modules/textadept-context-runner.lua1100
-rw-r--r--context/data/textadept/context/modules/textadept-context-settings.lua152
-rw-r--r--context/data/textadept/context/modules/textadept-context-types.lua175
-rw-r--r--context/data/textadept/context/textadept-context.cmd56
-rw-r--r--context/data/textadept/context/textadept-context.sh12
-rw-r--r--context/data/textadept/context/themes/scite-context-theme.lua159
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json2
-rw-r--r--doc/context/documents/general/manuals/lowlevel-alignments.pdfbin74011 -> 74661 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-compactfonts.pdfbin0 -> 56466 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-compactfonts.tex609
-rw-r--r--doc/context/presentations/context/2021/context-2021-localcontrol.pdfbin0 -> 35875 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-localcontrol.tex369
-rw-r--r--doc/context/presentations/context/2021/context-2021-luametafun.pdfbin0 -> 37579 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-luametafun.tex362
-rw-r--r--doc/context/presentations/context/2021/context-2021-math.pdfbin0 -> 21605 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-math.tex236
-rw-r--r--doc/context/presentations/context/2021/context-2021-overloadprotection.pdfbin0 -> 32849 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-overloadprotection.tex298
-rw-r--r--doc/context/presentations/context/2021/context-2021-paragraphs.pdfbin0 -> 24329 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-paragraphs.tex162
-rw-r--r--doc/context/presentations/context/2021/context-2021-programming.pdfbin0 -> 32433 bytes
-rw-r--r--doc/context/presentations/context/2021/context-2021-programming.tex325
-rw-r--r--doc/context/scripts/mkiv/mtx-pdf.html1
-rw-r--r--doc/context/scripts/mkiv/mtx-pdf.man3
-rw-r--r--doc/context/scripts/mkiv/mtx-pdf.xml2
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex43
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex10
-rw-r--r--doc/context/sources/general/manuals/metafun/metafun-examples.tex2
-rw-r--r--metapost/context/base/mpxl/mp-luas.mpxl4
-rw-r--r--metapost/context/base/mpxl/mp-tool.mpxl36
-rw-r--r--scripts/context/lua/mtx-context.lua12
-rw-r--r--scripts/context/lua/mtx-fonts.lua4
-rw-r--r--scripts/context/lua/mtx-pdf.lua25
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-cs.mkii1
-rw-r--r--tex/context/base/mkiv/char-def.lua2
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-otr.lua3
-rw-r--r--tex/context/base/mkiv/math-fbk.lua30
-rw-r--r--tex/context/base/mkiv/mult-def.lua3
-rw-r--r--tex/context/base/mkiv/mult-low.lua2
-rw-r--r--tex/context/base/mkiv/publ-aut.lua16
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24914 -> 24847 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin253654 -> 253894 bytes
-rw-r--r--tex/context/base/mkiv/typo-drp.lua13
-rw-r--r--tex/context/base/mkiv/util-sci.lua19
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/lang-ini.mkxl3
-rw-r--r--tex/context/base/mkxl/lpdf-ini.lmt10
-rw-r--r--tex/context/base/mkxl/lpdf-pde.lmt225
-rw-r--r--tex/context/base/mkxl/mlib-lmp.lmt15
-rw-r--r--tex/context/base/mkxl/mlib-pdf.lmt1
-rw-r--r--tex/context/base/mkxl/page-mix.mkxl1
-rw-r--r--tex/context/base/mkxl/spac-ali.mkxl3
-rw-r--r--tex/context/base/mkxl/strc-itm.mklx30
-rw-r--r--tex/context/base/mkxl/strc-mar.mkxl12
-rw-r--r--tex/context/base/mkxl/strc-not.lmt6
-rw-r--r--tex/context/base/mkxl/typo-drp.lmt13
-rw-r--r--tex/context/interface/mkii/cont-cs.xml10394
-rw-r--r--tex/context/interface/mkii/keys-cs.xml1
-rw-r--r--tex/context/modules/mkiv/m-scite.mkiv10
-rw-r--r--tex/context/modules/mkxl/m-openstreetmap.lmt127
-rw-r--r--tex/context/modules/mkxl/m-openstreetmap.mkxl50
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua3
138 files changed, 5791 insertions, 37423 deletions
diff --git a/context/data/scite/context/documents/scite-context-readme.pdf b/context/data/scite/context/documents/scite-context-readme.pdf
index 834cd54da..8de9c69d0 100644
--- a/context/data/scite/context/documents/scite-context-readme.pdf
+++ b/context/data/scite/context/documents/scite-context-readme.pdf
Binary files differ
diff --git a/context/data/scite/context/documents/scite-context-readme.tex b/context/data/scite/context/documents/scite-context-readme.tex
index fe5120264..df25db367 100644
--- a/context/data/scite/context/documents/scite-context-readme.tex
+++ b/context/data/scite/context/documents/scite-context-readme.tex
@@ -102,7 +102,8 @@
frame=off,
foregroundcolor=gray]
{\definedfont[SerifBold sa 10]SciTE\endgraf
- \definedfont[SerifBold sa 2.48]IN CONTEXT MkIV\kern.25\bodyfontsize}
+% \definedfont[SerifBold sa 2.48]IN CONTEXT MkIV\kern.25\bodyfontsize}
+ \definedfont[SerifBold sa 1.60]IN CONTEXT MkIV & LMTX\kern.25\bodyfontsize}
\startTEXpage
\tightlayer[TitlePage]
@@ -110,21 +111,14 @@
% main text
-\startsubject[title={Warning}]
-
-\SCITE\ version 3.61 works ok but 3.62 crashes. It'a a real pity that \SCITE\
-doesn't have the scintillua lexer built in, which would also make integration a
-bit nicer by sharing the \LUA\ instance. The \CONTEXT\ lexing discussed here is
-the lexing I assume when using \CONTEXT\ \MKIV, but alas it's not easy to get it
-running on \UNIX\ and on \MACOSX\ there is no \LUA\ lexing available.
-
\startsubject[title={About \SCITE}]
For a long time at \PRAGMA\ we used \TEXEDIT, an editor we'd written in \MODULA.
It had some project management features and recognized the project structure in
\CONTEXT\ documents. Later we rewrote this to a platform independent
reimplementation called \TEXWORK\ written in \PERLTK\ (not to be confused with
-the editor with the plural name).
+the editor with the plural name) that when I checked last still works okay, which
+is proof that \PERLTK\ has been stable for decades.
In the beginning of the century I can into \SCITE, written by Neil Hodgson.
Although the mentioned editors provide some functionality not present in \SCITE\
@@ -142,8 +136,15 @@ a \TEX/\LUA\ hybrid, it made sense to look into this. The result is a couple of
lexers that suit \TEX, \METAPOST\ and \LUA\ usage in \CONTEXT\ \MKIV. As we also
use \XML\ as input and output format a lexer for \XML\ is also provided. And
because \PDF\ is one of the backend formats lexing of \PDF\ is also implemented.
-\footnote {In the process some of the general lexing framework was adapted to
-suit our demands for speed. We ship these files as well.}
+In the process some of the general lexing framework were adapted to suit our
+demands for speed. For a long time we shipped these files as well but at point I
+decided that it made no sense to keep adapting to the relatively frequent changes
+in the \API. The last version in the 3.* series worked okay, in the 4.* series
+things failed but we didn't adapt, and when series 5.* showed up I decided to
+drop the old lexer compatibility. I assume that a version of \SCITE\ is run that
+has \LPEG\ available in the main \LUA\ instance and that also supports copying
+text fragments using the editor object. (Till that is the case, we provide binaries
+with the \CONTEXT\ distribution.)
In the \CONTEXT\ (standalone) distribution you will find the relevant files
under:
@@ -227,57 +228,43 @@ Where the second path is the path we will put more files.
\stopsubject
-\startsubject[title={Installing \type {scintillua}}]
-
-Next you need to install the lpeg lexers. \footnote {Versions later than 2.11
-will not run on \MSWINDOWS\ 2K. In that case you need to comment the external
-lexer import.} The library is part of the \type {textadept} editor by Mitchell
-(\hyphenatedurl {mitchell.att.foicica.com}) which is also based on scintilla:
-The archive can be fetched from:
-
-\starttyping
-http://foicica.com/scintillua/
-\stoptyping
+\startsubject[title={Binaries}]
-On \MSWINDOWS\ you need to copy the files to the \type {wscite} folder (so we end
-up with a \type {lexers} subfolder there). For \LINUX\ the place depends on the
-distribution, for instance \type {/usr/share/scite}; this is the place where the
-regular properties files live. \footnote {If you update, don't do so without
-testing first. Sometimes there are changes in \SCITE\ that influence the lexers
-in which case you have to wait till we have update them to suit those changes.}
-
-So, you end up, on \MSWINDOWS\ with:
+When you compile binaries yourself or get them from somewhere you need to make
+sure that they en dup in te right place (see previous section): When you're on
+\MSWINDOWS\ they fly to:
\starttyping
-c:\data\system\scite\wscite\lexers
+wscite/scite.exe
+wscite/scilexer.dll
\stoptyping
-And on \LINUX:
+And on \LINUX\ then end up in:
\starttyping
-/usr/share/scite/lexers
+/usr/bin/SciTE
+/usr/bin/libscintilla.so
+/usr/bin/liblexilla.so
\stoptyping
-Beware: if you're on a 64 bit system, you need to rename the 64 bit \type {so}
-library into one without a number. Unfortunately the 64 bit library is now always
-available which can give surprises when the operating system gets updates. In such
-a case you should downgrade or use \type {wine} with the \MSWINDOWS\ binaries
-instead. After installation you need to restart \SCITE\ in order to see if things
-work out as expected.
+Because we only use the official \LUA\ interface methods the lexers should just work,
+assuming that you have imported the \typ {context/scite-context-user} properties file.
\stopsubject
\startsubject[title={Installing the \CONTEXT\ lexers}]
-When we started using this nice extension, we ran into issues and as a
-consequence shipped a patched \LUA\ code. We also needed some more control as we
-wanted to provide more features and complex nested lexers. Because the library
-\API\ changed a couple of times, we now have our own variant which will be
-cleaned up over time to be more consistent with our other \LUA\ code (so that we
-can also use it in \CONTEXT\ as variant verbatim lexer). We hope to be able to
-use the \type {scintillua} library as it does the job.
+% When we started using this nice extension, we ran into issues and as a
+% consequence shipped a patched \LUA\ code. We also needed some more control as we
+% wanted to provide more features and complex nested lexers. Because the library
+% \API\ changed a couple of times, we now have our own variant which will be
+% cleaned up over time to be more consistent with our other \LUA\ code (so that we
+% can also use it in \CONTEXT\ as variant verbatim lexer). We hope to be able to
+% use the \type {scintillua} library as it does the job.
+%
+% Anyway, if you want to use \CONTEXT, you need to copy the relevant files from
-Anyway, if you want to use \CONTEXT, you need to copy the relevant files from
+If you want to use \CONTEXT, you need to copy the relevant files from
\starttyping
<texroot>/tex/texmf-context/context/data/scite
diff --git a/context/data/scite/context/lexers/data/scite-context-data-context.lua b/context/data/scite/context/lexers/data/scite-context-data-context.lua
index 315e98bef..5ddc01b38 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-context.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua
@@ -1,4 +1,4 @@
return {
- ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "allfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "accentitalickernmathcontrolcode", "delimiteritalickernmathcontrolcode", "orditalickernmathcontrolcode", "charitalicwidthmathcontrolcode", "charitalicnoreboxmathcontrolcode", "boxednoitalickernmathcontrolcode", "nostaircasekernmathcontrolcode", "textitalickernmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationmcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continuewhenlmtxmode" },
+ ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "allfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "accentitalickernmathcontrolcode", "delimiteritalickernmathcontrolcode", "orditalickernmathcontrolcode", "charitalicwidthmathcontrolcode", "charitalicnoreboxmathcontrolcode", "boxednoitalickernmathcontrolcode", "nostaircasekernmathcontrolcode", "textitalickernmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continuewhenlmtxmode" },
["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "lessboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" },
} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/lexer.lua b/context/data/scite/context/lexers/lexer.lua
deleted file mode 100644
index 9582f6a76..000000000
--- a/context/data/scite/context/lexers/lexer.lua
+++ /dev/null
@@ -1,3 +0,0 @@
--- this works ok:
-
-return require("scite-context-lexer")
diff --git a/context/data/scite/context/lexers/scite-context-lexer-bibtex.lua b/context/data/scite/context/lexers/scite-context-lexer-bibtex.lua
index b53da82ea..09c67548f 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-bibtex.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-bibtex.lua
@@ -10,15 +10,13 @@ local global, string, table, lpeg = _G, string, table, lpeg
local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
local type = type
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local bibtexlexer = lexer.new("bib","scite-context-lexer-bibtex")
-local whitespace = bibtexlexer.whitespace
+local bibtexlexer = lexers.new("bib","scite-context-lexer-bibtex")
+local bibtexwhitespace = bibtexlexer.whitespace
local escape, left, right = P("\\"), P('{'), P('}')
@@ -52,8 +50,8 @@ local d_quoted = ((escape*double) + (1-double))^0
local balanced = patterns.balanced
-local t_spacing = token(whitespace, space^1)
-local t_optionalws = token("default", space^1)^0
+local t_spacing = token(bibtexwhitespace,space^1)
+local t_optionalws = token("default",space^1)^0
local t_equal = token("operator",equal)
local t_left = token("grouping",left)
@@ -127,18 +125,18 @@ local t_rest = token("default",anything)
-- to some extend but not in all cases (e.g. editing inside line fails) .. maybe i need to
-- patch the dll ... (better not)
-local dummylexer = lexer.load("scite-context-lexer-dummy","bib-dum")
+local dummylexer = lexers.load("scite-context-lexer-dummy","bib-dum")
local dummystart = token("embedded",P("\001")) -- an unlikely to be used character
local dummystop = token("embedded",P("\002")) -- an unlikely to be used character
-lexer.embed_lexer(bibtexlexer,dummylexer,dummystart,dummystop)
+lexers.embed(bibtexlexer,dummylexer,dummystart,dummystop)
-- maybe we need to define each functional block as lexer (some 4) so i'll do that when
-- this issue is persistent ... maybe consider making a local lexer options (not load,
--- just lexer.new or so) .. or maybe do the reverse, embed the main one in a dummy child
+-- just lexers.new or so) .. or maybe do the reverse, embed the main one in a dummy child
-bibtexlexer._rules = {
+bibtexlexer.rules = {
{ "whitespace", t_spacing },
{ "forget", t_forget },
{ "shortcut", t_shortcut },
@@ -165,7 +163,7 @@ bibtexlexer._rules = {
-- * t_optionalws
-- * t_comma
--
--- bibtexlexer._rules = {
+-- bibtexlexer.rules = {
-- { "whitespace", t_spacing },
-- { "assignment", t_assignment },
-- { "definition", t_definition },
@@ -177,19 +175,9 @@ bibtexlexer._rules = {
-- { "rest", t_rest },
-- }
-bibtexlexer._tokenstyles = context.styleset
-
-bibtexlexer._foldpattern = P("{") + P("}")
-
-bibtexlexer._foldsymbols = {
- _patterns = {
- "{",
- "}",
- },
- ["grouping"] = {
- ["{"] = 1,
- ["}"] = -1,
- },
+bibtexlexer.folding = {
+ ["{"] = { ["grouping"] = 1 },
+ ["}"] = { ["grouping"] = -1 },
}
return bibtexlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-bnf.lua b/context/data/scite/context/lexers/scite-context-lexer-bnf.lua
index ce57642ba..9a5483850 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-bnf.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-bnf.lua
@@ -8,18 +8,16 @@ local info = {
-- will replace the one in metafun
-local global, lpeg = _G, lpeg
+local lpeg = lpeg
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local bnflexer = lexer.new("bnf","scite-context-lexer-bnf")
-local whitespace = bnflexer.whitespace
+local bnflexer = lexers.new("bnf","scite-context-lexer-bnf")
+local bnfwhitespace = bnflexer.whitespace
-- from wikipedia:
--
@@ -58,7 +56,7 @@ local extra = P("|")
local single = P("'")
local double = P('"')
-local t_spacing = token(whitespace,space^1)
+local t_spacing = token(bnfwhitespace,space^1)
local t_term = token("command",left)
* token("text",name)
* token("command",right)
@@ -72,7 +70,7 @@ local t_becomes = token("operator",becomes)
local t_extra = token("extra",extra)
local t_rest = token("default",anything)
-bnflexer._rules = {
+bnflexer.rules = {
{ "whitespace", t_spacing },
{ "term", t_term },
{ "text", t_text },
@@ -81,19 +79,9 @@ bnflexer._rules = {
{ "rest", t_rest },
}
-bnflexer._tokenstyles = context.styleset
-
-bnflexer._foldpattern = left + right
-
-bnflexer._foldsymbols = {
- _patterns = {
- "<",
- ">",
- },
- ["grouping"] = {
- ["<"] = 1,
- [">"] = -1,
- },
+bnflexer.folding = {
+ ["<"] = { ["grouping"] = 1 },
+ [">"] = { ["grouping"] = -1 },
}
return bnflexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-cld.lua b/context/data/scite/context/lexers/scite-context-lexer-cld.lua
index 7bda7800e..fe0fc9c43 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-cld.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-cld.lua
@@ -6,18 +6,19 @@ local info = {
license = "see context related readme files",
}
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local cldlexer = lexer.new("cld","scite-context-lexer-cld")
-local lualexer = lexer.load("scite-context-lexer-lua")
+local patterns = lexers.patterns
+local token = lexers.token
+
+local cldlexer = lexers.new("cld","scite-context-lexer-cld")
+local lualexer = lexers.load("scite-context-lexer-lua")
-- can probably be done nicer now, a bit of a hack
-cldlexer._rules = lualexer._rules_cld
-cldlexer._tokenstyles = lualexer._tokenstyles
-cldlexer._foldsymbols = lualexer._foldsymbols
-cldlexer._directives = lualexer._directives
+cldlexer.rules = lualexer.rules_cld
+cldlexer.embedded = lualexer.embedded
+cldlexer.folding = lualexer.folding
+cldlexer.directives = lualexer.directives
return cldlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua b/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua
index 631a802fe..994634fe5 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua
@@ -6,18 +6,22 @@ local info = {
license = "see context related readme files",
}
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local cppweblexer = lexer.new("cpp-web","scite-context-lexer-cpp")
-local cpplexer = lexer.load("scite-context-lexer-cpp")
+local patterns = lexers.patterns
+local token = lexers.token
+
+local cppweblexer = lexers.new("cpp-web","scite-context-lexer-cpp")
+local cpplexer = lexers.load("scite-context-lexer-cpp")
-- can probably be done nicer now, a bit of a hack
-cppweblexer._rules = cpplexer._rules_web
-cppweblexer._tokenstyles = cpplexer._tokenstyles
-cppweblexer._foldsymbols = cpplexer._foldsymbols
-cppweblexer._directives = cpplexer._directives
+-- setmetatable(cppweblexer, { __index = cpplexer })
+
+cppweblexer.rules = cpplexer.rules_web
+cppweblexer.embedded = cpplexer.embedded
+-- cppweblexer.whitespace = cpplexer.whitespace
+cppweblexer.folding = cpplexer.folding
+cppweblexer.directives = cpplexer.directives
return cppweblexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-cpp.lua b/context/data/scite/context/lexers/scite-context-lexer-cpp.lua
index a50cdaa17..c77843c3b 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-cpp.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-cpp.lua
@@ -10,15 +10,13 @@ local info = {
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local cpplexer = lexer.new("cpp","scite-context-lexer-cpp")
-local whitespace = cpplexer.whitespace
+local cpplexer = lexers.new("cpp","scite-context-lexer-cpp")
+local cppwhitespace = cpplexer.whitespace
local keywords = { -- copied from cpp.lua
-- c
@@ -56,6 +54,7 @@ local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local restofline = patterns.restofline
local startofline = patterns.startofline
+local exactmatch = patterns.exactmatch
local squote = P("'")
local dquote = P('"')
@@ -71,7 +70,7 @@ local decimal = patterns.decimal
local float = patterns.float
local integer = P("-")^-1 * (hexadecimal + decimal) -- also in patterns ?
-local spacing = token(whitespace, space^1)
+local spacing = token(cppwhitespace, space^1)
local rest = token("default", any)
local shortcomment = token("comment", slashes * restofline^0)
@@ -93,10 +92,10 @@ local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
----- optionalspace = spacing^0
-local p_keywords = exact_match(keywords)
-local p_datatypes = exact_match(datatypes)
-local p_macros = exact_match(macros)
-local p_luatexs = exact_match(luatexs)
+local p_keywords = exactmatch(keywords)
+local p_datatypes = exactmatch(datatypes)
+local p_macros = exactmatch(macros)
+local p_luatexs = exactmatch(luatexs)
local keyword = token("keyword", p_keywords)
local datatype = token("keyword", p_datatypes)
@@ -105,7 +104,7 @@ local luatex = token("command", p_luatexs)
local macro = token("data", #P("#") * startofline * P("#") * S("\t ")^0 * p_macros)
-cpplexer._rules = {
+cpplexer.rules = {
{ "whitespace", spacing },
{ "keyword", keyword },
{ "type", datatype },
@@ -120,13 +119,13 @@ cpplexer._rules = {
{ "rest", rest },
}
-local web = lexer.loadluafile("scite-context-lexer-web-snippets")
+local web = lexers.loadluafile("scite-context-lexer-web-snippets")
if web then
- lexer.inform("supporting web snippets in cpp lexer")
+ -- lexers.report("supporting web snippets in cpp lexer")
- cpplexer._rules_web = {
+ cpplexer.rules_web = {
{ "whitespace", spacing },
{ "keyword", keyword },
{ "type", datatype },
@@ -144,9 +143,9 @@ if web then
else
- lexer.report("not supporting web snippets in cpp lexer")
+ -- lexers.report("not supporting web snippets in cpp lexer")
- cpplexer._rules_web = {
+ cpplexer.rules_web = {
{ "whitespace", spacing },
{ "keyword", keyword },
{ "type", datatype },
@@ -163,37 +162,17 @@ else
end
-cpplexer._tokenstyles = context.styleset
-
-cpplexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference (singular?)
-
-cpplexer._foldsymbols = {
- _patterns = {
- "[{}]",
- "/%*",
- "%*/",
- },
- -- ["data"] = { -- macro
- -- ["region"] = 1,
- -- ["endregion"] = -1,
- -- ["if"] = 1,
- -- ["ifdef"] = 1,
- -- ["ifndef"] = 1,
- -- ["endif"] = -1,
- -- },
- ["special"] = { -- operator
- ["{"] = 1,
- ["}"] = -1,
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
+cpplexer.folding = {
+ -- ["region"] = { ["data"] = 1 },
+ -- ["endregion"] = { ["data"] = -1 },
+ -- ["if"] = { ["data"] = 1 },
+ -- ["ifdef"] = { ["data"] = 1 },
+ -- ["ifndef"] = { ["data"] = 1 },
+ -- ["endif"] = { ["data"] = -1 },
+ ["{"] = { ["special"] = 1 },
+ ["}"] = { ["special"] = -1 },
+ ["/*"] = { ["comment"] = 1 },
+ ["*/"] = { ["comment"] = -1 },
}
--- -- by indentation:
-
-cpplexer._foldpatterns = nil
-cpplexer._foldsymbols = nil
-
return cpplexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-dummy.lua b/context/data/scite/context/lexers/scite-context-lexer-dummy.lua
index 5d3096b7d..d54ffec22 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-dummy.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-dummy.lua
@@ -10,26 +10,23 @@ local info = {
-- we need to trigger that, for instance in the bibtex lexer, but still
-- we get failed lexing
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
-local dummylexer = lexer.new("dummy","scite-context-lexer-dummy")
-local whitespace = dummylexer.whitespace
+local dummylexer = lexers.new("dummy","scite-context-lexer-dummy")
+local dummywhitespace = dummylexer.whitespace
-local space = patterns.space
-local nospace = (1-space)
+local space = patterns.space
+local nospace = (1-space)
-local t_spacing = token(whitespace, space ^1)
-local t_rest = token("default", nospace^1)
+local t_spacing = token(dummywhitespace, space^1)
+local t_rest = token("default", nospace^1)
-dummylexer._rules = {
+dummylexer.rules = {
{ "whitespace", t_spacing },
{ "rest", t_rest },
}
-dummylexer._tokenstyles = context.styleset
-
return dummylexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-json.lua b/context/data/scite/context/lexers/scite-context-lexer-json.lua
index ca7add07d..c648b132a 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-json.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-json.lua
@@ -6,19 +6,16 @@ local info = {
license = "see context related readme files",
}
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-local type = type
+local lpeg = lpeg
+local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local jsonlexer = lexer.new("json","scite-context-lexer-json")
-local whitespace = jsonlexer.whitespace
+local jsonlexer = lexers.new("json","scite-context-lexer-json")
+local jsonwhitespace = jsonlexer.whitespace
local anything = patterns.anything
local comma = P(",")
@@ -48,31 +45,31 @@ local reserved = P("true")
local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal)
local float = patterns.float
-local t_number = token("number", float + integer)
- * (token("error",R("AZ","az","__")^1))^0
+local t_number = token("number", float + integer)
+ * (token("error", R("AZ","az","__")^1))^0
-local t_spacing = token(whitespace, space^1)
-local t_optionalws = token("default", space^1)^0
+local t_spacing = token("whitespace", space^1)
+local t_optionalws = token("default", space^1)^0
-local t_operator = token("special", operator)
+local t_operator = token("special", operator)
-local t_string = token("operator",double)
- * token("string",content)
- * token("operator",double)
+local t_string = token("operator", double)
+ * token("string", content)
+ * token("operator", double)
-local t_key = token("operator",double)
- * token("text",content)
- * token("operator",double)
+local t_key = token("operator", double)
+ * token("text", content)
+ * token("operator", double)
* t_optionalws
- * token("operator",colon)
+ * token("operator", colon)
-local t_fences = token("operator",fence) -- grouping
+local t_fences = token("operator", fence) -- grouping
-local t_reserved = token("primitive",reserved)
+local t_reserved = token("primitive", reserved)
-local t_rest = token("default",anything)
+local t_rest = token("default", anything)
-jsonlexer._rules = {
+jsonlexer.rules = {
{ "whitespace", t_spacing },
{ "reserved", t_reserved },
{ "key", t_key },
@@ -83,19 +80,11 @@ jsonlexer._rules = {
{ "rest", t_rest },
}
-jsonlexer._tokenstyles = context.styleset
-
-jsonlexer._foldpattern = fence
-
-jsonlexer._foldsymbols = {
- _patterns = {
- "{", "}",
- "[", "]",
- },
- ["grouping"] = {
- ["{"] = 1, ["}"] = -1,
- ["["] = 1, ["]"] = -1,
- },
+jsonlexer.folding = {
+ ["{"] = { ["grouping"] = 1 },
+ ["}"] = { ["grouping"] = -1 },
+ ["["] = { ["grouping"] = 1 },
+ ["]"] = { ["grouping"] = -1 },
}
return jsonlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua b/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua
index b1304f65c..5e7fa1256 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua
@@ -6,26 +6,25 @@ local info = {
license = "see context related readme files",
}
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+-- This one is needed because we have spaces in strings and partial lexing depends
+-- on them being different.
-local token = lexer.token
+local lexers = require("scite-context-lexer")
-local stringlexer = lexer.new("lua-longstring","scite-context-lexer-lua-longstring")
-local whitespace = stringlexer.whitespace
+local patterns = lexers.patterns
+local token = lexers.token
+
+local stringlexer = lexers.new("lua-longstring","scite-context-lexer-lua-longstring")
local space = patterns.space
local nospace = 1 - space
-local p_spaces = token(whitespace, space ^1)
-local p_string = token("string", nospace^1)
+local p_spaces = token("whitespace", space^1)
+local p_string = token("string", nospace^1)
-stringlexer._rules = {
+stringlexer.rules = {
{ "whitespace", p_spaces },
{ "string", p_string },
}
-stringlexer._tokenstyles = context.styleset
-
return stringlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-lua.lua b/context/data/scite/context/lexers/scite-context-lexer-lua.lua
index 0e54d56ba..41219b66e 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-lua.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-lua.lua
@@ -6,33 +6,23 @@ local info = {
license = "see context related readme files",
}
--- beware: all multiline is messy, so even if it's no lexer, it should be an embedded lexer
--- we probably could use a local whitespace variant but this is cleaner
-
local P, R, S, C, Cmt, Cp = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cmt, lpeg.Cp
local match, find = string.match, string.find
local setmetatable = setmetatable
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-local just_match = lexer.just_match
+local lexers = require("scite-context-lexer")
-local lualexer = lexer.new("lua","scite-context-lexer-lua")
-local whitespace = lualexer.whitespace
+local patterns = lexers.patterns
+local token = lexers.token
-local stringlexer = lexer.load("scite-context-lexer-lua-longstring")
------ labellexer = lexer.load("scite-context-lexer-lua-labelstring")
+local lualexer = lexers.new("lua","scite-context-lexer-lua")
-local directives = { } -- communication channel
+local luawhitespace = lualexer.whitespace
--- this will be extended
+local stringlexer = lexers.load("scite-context-lexer-lua-longstring")
+----- labellexer = lexers.load("scite-context-lexer-lua-labelstring")
--- we could combine some in a hash that returns the class that then makes the token
--- this can save time on large files
+local directives = { } -- communication channel
local keywords = {
"and", "break", "do", "else", "elseif", "end", "false", "for", "function", -- "goto",
@@ -61,12 +51,6 @@ local constants = {
"<const>", "<toclose>",
}
--- local tokenmappings = { }
---
--- for i=1,#keywords do tokenmappings[keywords [i]] = "keyword" }
--- for i=1,#functions do tokenmappings[functions[i]] = "function" }
--- for i=1,#constants do tokenmappings[constants[i]] = "constant" }
-
local internals = { -- __
"add", "call", "concat", "div", "idiv", "eq", "gc", "index",
"le", "lt", "metatable", "mode", "mul", "newindex",
@@ -113,16 +97,16 @@ local longtwostring = P(function(input,index)
end
end)
- local longtwostring_body = longtwostring
+local longtwostring_body = longtwostring
- local longtwostring_end = P(function(input,index)
- if level then
- -- local sentinel = "]" .. level .. "]"
- local sentinel = sentinels[level]
- local _, stop = find(input,sentinel,index,true)
- return stop and stop + 1 or #input + 1
- end
- end)
+local longtwostring_end = P(function(input,index)
+ if level then
+ -- local sentinel = "]" .. level .. "]"
+ local sentinel = sentinels[level]
+ local _, stop = find(input,sentinel,index,true)
+ return stop and stop + 1 or #input + 1
+ end
+end)
local longcomment = Cmt(#("[[" + ("[" * C(equals) * "[")), function(input,index,level)
-- local sentinel = "]" .. level .. "]"
@@ -134,14 +118,16 @@ end)
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local eol = patterns.eol
+local exactmatch = patterns.exactmatch
+local justmatch = patterns.justmatch
local squote = P("'")
local dquote = P('"')
local escaped = P("\\") * P(1)
local dashes = P("--")
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
+local spacing = token(luawhitespace, space^1)
+local rest = token("default", any)
local shortcomment = token("comment", dashes * (1-eol)^0)
local longcomment = token("comment", dashes * longcomment)
@@ -166,7 +152,7 @@ local shortstring = token("quote", dquote)
local string = shortstring
----- + longstring
-lexer.embed_lexer(lualexer, stringlexer, token("quote",longtwostart), token("string",longtwostring_body) * token("quote",longtwostring_end))
+lexers.embed(lualexer, stringlexer, token("quote",longtwostart), token("string",longtwostring_body) * token("quote",longtwostring_end))
local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal)
local number = token("number", patterns.float + integer)
@@ -187,8 +173,6 @@ local identifier = token("default",validword)
----- operator = token("special", S('+-*/%^#=<>;:,{}[]().') + P('~=') ) -- no ^1 because of nested lexers
local operator = token("special", S('+-*/%^#=<>;:,{}[]().|~')) -- no ^1 because of nested lexers
-local structure = token("special", S('{}[]()'))
-
local optionalspace = spacing^0
local hasargument = #S("{([")
@@ -203,20 +187,15 @@ local gotolabel = token("keyword", P("::"))
* (spacing + shortcomment)^0
* token("keyword", P("::"))
------ p_keywords = exact_match(keywords)
------ p_functions = exact_match(functions)
------ p_constants = exact_match(constants)
------ p_internals = P("__")
------ * exact_match(internals)
+local p_keywords = exactmatch(keywords)
+local p_functions = exactmatch(functions)
+local p_constants = exactmatch(constants)
+local p_internals = P("__")
+ * exactmatch(internals)
local p_finish = #(1-R("az","AZ","__"))
-local p_keywords = lexer.helpers.utfchartabletopattern(keywords) * p_finish -- exact_match(keywords)
-local p_functions = lexer.helpers.utfchartabletopattern(functions) * p_finish -- exact_match(functions)
-local p_constants = lexer.helpers.utfchartabletopattern(constants) * p_finish -- exact_match(constants)
-local p_internals = P("__")
- * lexer.helpers.utfchartabletopattern(internals) * p_finish -- exact_match(internals)
-local p_csnames = lexer.helpers.utfchartabletopattern(csnames) -- * p_finish -- just_match(csnames)
+local p_csnames = justmatch(csnames)
local p_ctnames = P("ctx") * R("AZ","az","__")^0
local keyword = token("keyword", p_keywords)
local builtin = token("plain", p_functions)
@@ -237,23 +216,11 @@ local identifier = token("default", validword)
token("default", validword )
) )^0
--- local t = { } for k, v in next, tokenmappings do t[#t+1] = k end t = table.concat(t)
--- -- local experimental = (S(t)^1) / function(s) return tokenmappings[s] end * Cp()
---
--- local experimental = Cmt(S(t)^1, function(_,i,s)
--- local t = tokenmappings[s]
--- if t then
--- return true, t, i
--- end
--- end)
-
-lualexer._rules = {
+lualexer.rules = {
{ "whitespace", spacing },
{ "keyword", keyword }, -- can be combined
- -- { "structure", structure },
{ "function", builtin }, -- can be combined
{ "constant", constant }, -- can be combined
- -- { "experimental", experimental }, -- works but better split
{ "csname", csname },
{ "goto", gotokeyword },
{ "identifier", identifier },
@@ -266,82 +233,29 @@ lualexer._rules = {
{ "rest", rest },
}
--- -- experiment
---
--- local idtoken = R("az","AZ","__")
---
--- function context.one_of_match(specification)
--- local pattern = idtoken -- the concat catches _ etc
--- local list = { }
--- for i=1,#specification do
--- local style = specification[i][1]
--- local words = specification[i][2]
--- pattern = pattern + S(table.concat(words))
--- for i=1,#words do
--- list[words[i]] = style
--- end
--- end
--- return Cmt(pattern^1, function(_,i,s)
--- local style = list[s]
--- if style then
--- return true, { style, i } -- and i or nil
--- else
--- -- fail
--- end
--- end)
--- end
---
--- local whatever = context.one_of_match {
--- { "keyword", keywords }, -- keyword
--- { "plain", functions }, -- builtin
--- { "data", constants }, -- constant
--- }
---
--- lualexer._rules = {
--- { "whitespace", spacing },
--- { "whatever", whatever },
--- { "csname", csname },
--- { "goto", gotokeyword },
--- { "identifier", identifier },
--- { "string", string },
--- { "number", number },
--- { "longcomment", longcomment },
--- { "shortcomment", shortcomment },
--- { "label", gotolabel },
--- { "operator", operator },
--- { "rest", rest },
--- }
-
-lualexer._tokenstyles = context.styleset
-
--- lualexer._foldpattern = R("az")^2 + S("{}[]") -- separate entry else interference
-
-lualexer._foldpattern = (P("end") + P("if") + P("do") + P("function") + P("repeat") + P("until")) * P(#(1 - R("az")))
- + S("{}[]")
-
-lualexer._foldsymbols = {
- _patterns = {
- "[a-z][a-z]+",
- "[{}%[%]]",
+lualexer.folding = {
+ -- challenge: if=0 then=1 else=-1 elseif=-1
+ ["if"] = { ["keyword"] = 1 }, -- if .. [then|else] .. end
+ ["do"] = { ["keyword"] = 1 }, -- [while] do .. end
+ ["function"] = { ["keyword"] = 1 }, -- function .. end
+ ["repeat"] = { ["keyword"] = 1 }, -- repeat .. until
+ ["until"] = { ["keyword"] = -1 },
+ ["end"] = { ["keyword"] = -1 },
+ -- ["else"] = { ["keyword"] = 1 },
+ -- ["elseif"] = { ["keyword"] = 1 }, -- already catched by if
+ -- ["elseif"] = { ["keyword"] = 0 },
+ ["["] = {
+ ["comment"] = 1,
+ -- ["quote"] = 1, -- confusing
},
- ["keyword"] = { -- challenge: if=0 then=1 else=-1 elseif=-1
- ["if"] = 1, -- if .. [then|else] .. end
- ["do"] = 1, -- [while] do .. end
- ["function"] = 1, -- function .. end
- ["repeat"] = 1, -- repeat .. until
- ["until"] = -1,
- ["end"] = -1,
- },
- ["comment"] = {
- ["["] = 1, ["]"] = -1,
- },
- -- ["quote"] = { -- confusing
- -- ["["] = 1, ["]"] = -1,
- -- },
- ["special"] = {
- -- ["("] = 1, [")"] = -1,
- ["{"] = 1, ["}"] = -1,
+ ["]"] = {
+ ["comment"] = -1
+ -- ["quote"] = -1, -- confusing
},
+ -- ["("] = { ["special"] = 1 },
+ -- [")"] = { ["special"] = -1 },
+ ["{"] = { ["special"] = 1 },
+ ["}"] = { ["special"] = -1 },
}
-- embedded in tex:
@@ -360,24 +274,15 @@ local texstring = token("quote", longthreestart)
* token("string", longthreestring)
* token("quote", longthreestop)
------ texcommand = token("user", texcsname)
local texcommand = token("warning", texcsname)
--- local texstring = token("quote", longthreestart)
--- * (texcommand + token("string",P(1-texcommand-longthreestop)^1) - longthreestop)^0 -- we match long non-\cs sequences
--- * token("quote", longthreestop)
-
--- local whitespace = "whitespace"
--- local spacing = token(whitespace, space^1)
-
-lualexer._directives = directives
+lualexer.directives = directives
-lualexer._rules_cld = {
+lualexer.rules_cld = {
{ "whitespace", spacing },
{ "texstring", texstring },
{ "texcomment", texcomment },
{ "texcommand", texcommand },
- -- { "structure", structure },
{ "keyword", keyword },
{ "function", builtin },
{ "csname", csname },
diff --git a/context/data/scite/context/lexers/scite-context-lexer-mps.lua b/context/data/scite/context/lexers/scite-context-lexer-mps.lua
index 356bf1f6b..ddf62ecb0 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-mps.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-mps.lua
@@ -10,15 +10,13 @@ local global, string, table, lpeg = _G, string, table, lpeg
local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
local type = type
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local metafunlexer = lexer.new("mps","scite-context-lexer-mps")
-local whitespace = metafunlexer.whitespace
+local metafunlexer = lexers.new("mps","scite-context-lexer-mps")
+local metafunwhitespace = metafunlexer.whitespace
local metapostprimitives = { }
local metapostinternals = { }
@@ -34,7 +32,7 @@ local mergedinternals = { }
do
- local definitions = context.loaddefinitions("scite-context-data-metapost")
+ local definitions = lexers.loaddefinitions("scite-context-data-metapost")
if definitions then
metapostprimitives = definitions.primitives or { }
@@ -43,7 +41,7 @@ do
metapostcommands = definitions.commands or { }
end
- local definitions = context.loaddefinitions("scite-context-data-metafun")
+ local definitions = lexers.loaddefinitions("scite-context-data-metafun")
if definitions then
metafuninternals = definitions.internals or { }
@@ -69,6 +67,7 @@ end
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
+local exactmatch = patterns.exactmatch
local dquote = P('"')
local cstoken = patterns.idtoken
@@ -81,43 +80,44 @@ local cstokentex = R("az","AZ","\127\255") + S("@!?_")
-- we could collapse as in tex
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-local comment = token("comment", P("%") * (1-S("\n\r"))^0)
-local internal = token("reserved", exact_match(mergedshortcuts,false))
-local shortcut = token("data", exact_match(mergedinternals))
-
-local helper = token("command", exact_match(metafuncommands))
-local plain = token("plain", exact_match(metapostcommands))
-local quoted = token("quote", dquote)
- * token("string", P(1-dquote)^0)
- * token("quote", dquote)
+local spacing = token(metafunwhitespace, space^1)
+
+local rest = token("default", any)
+local comment = token("comment", P("%") * (1-S("\n\r"))^0)
+local internal = token("reserved", exactmatch(mergedshortcuts))
+local shortcut = token("data", exactmatch(mergedinternals))
+
+local helper = token("command", exactmatch(metafuncommands))
+local plain = token("plain", exactmatch(metapostcommands))
+local quoted = token("quote", dquote)
+ * token("string", P(1-dquote)^0)
+ * token("quote", dquote)
local separator = P(" ") + S("\n\r")^1
local btex = (P("btex") + P("verbatimtex")) * separator
local etex = separator * P("etex")
-local texstuff = token("quote", btex)
- * token("string", (1-etex)^0)
- * token("quote", etex)
-local primitive = token("primitive", exact_match(metapostprimitives))
-local identifier = token("default", cstoken^1)
-local number = token("number", number)
-local grouping = token("grouping", S("()[]{}")) -- can be an option
-local suffix = token("number", P("#@") + P("@#") + P("#"))
-local special = token("special", P("#@") + P("@#") + S("#()[]{}<>=:\"")) -- or else := <> etc split
-local texlike = token("warning", P("\\") * cstokentex^1)
-local extra = token("extra", P("+-+") + P("++") + S("`~%^&_-+*/\'|\\"))
+local texstuff = token("quote", btex)
+ * token("string", (1-etex)^0)
+ * token("quote", etex)
+local primitive = token("primitive", exactmatch(metapostprimitives))
+local identifier = token("default", cstoken^1)
+local number = token("number", number)
+local grouping = token("grouping", S("()[]{}")) -- can be an option
+local suffix = token("number", P("#@") + P("@#") + P("#"))
+local special = token("special", P("#@") + P("@#") + S("#()[]{}<>=:\"")) -- or else := <> etc split
+local texlike = token("warning", P("\\") * cstokentex^1)
+local extra = token("extra", P("+-+") + P("++") + S("`~%^&_-+*/\'|\\"))
local nested = P { leftbrace * (V(1) + (1-rightbrace))^0 * rightbrace }
-local texlike = token("embedded", P("\\") * (P("MP") + P("mp")) * mptoken^1)
+local texlike = token("embedded", P("\\") * (P("MP") + P("mp")) * mptoken^1)
* spacing^0
- * token("grouping", leftbrace)
- * token("default", (nested + (1-rightbrace))^0 )
- * token("grouping", rightbrace)
- + token("warning", P("\\") * cstokentex^1)
+ * token("grouping", leftbrace)
+ * token("default", (nested + (1-rightbrace))^0 )
+ * token("grouping", rightbrace)
+ + token("warning", P("\\") * cstokentex^1)
-- lua: we assume: lua ( "lua code" )
-local cldlexer = lexer.load("scite-context-lexer-cld","mps-cld")
+local cldlexer = lexers.load("scite-context-lexer-cld","mps-cld")
local startlua = P("lua") * space^0 * P('(') * space^0 * P('"')
local stoplua = P('"') * space^0 * P(')')
@@ -125,13 +125,13 @@ local stoplua = P('"') * space^0 * P(')')
local startluacode = token("embedded", startlua)
local stopluacode = #stoplua * token("embedded", stoplua)
-lexer.embed_lexer(metafunlexer, cldlexer, startluacode, stopluacode)
+lexers.embed(metafunlexer, cldlexer, startluacode, stopluacode)
local luacall = token("embedded",P("lua") * ( P(".") * R("az","AZ","__")^1 )^1)
local keyword = token("default", (R("AZ","az","__")^1) * # P(space^0 * P("=")))
-metafunlexer._rules = {
+metafunlexer.rules = {
{ "whitespace", spacing },
{ "comment", comment },
{ "keyword", keyword }, -- experiment, maybe to simple
@@ -153,37 +153,24 @@ metafunlexer._rules = {
{ "rest", rest },
}
-metafunlexer._tokenstyles = context.styleset
-
-metafunlexer._foldpattern = patterns.lower^2 -- separate entry else interference
-
-metafunlexer._foldsymbols = {
- _patterns = {
- "[a-z][a-z]+",
- },
- ["plain"] = {
- ["beginfig"] = 1,
- ["endfig"] = -1,
- ["beginglyph"] = 1,
- ["endglyph"] = -1,
- -- ["begingraph"] = 1,
- -- ["endgraph"] = -1,
- },
- ["primitive"] = {
- ["def"] = 1,
- ["vardef"] = 1,
- ["primarydef"] = 1,
- ["secondarydef" ] = 1,
- ["tertiarydef"] = 1,
- ["enddef"] = -1,
- ["if"] = 1,
- ["fi"] = -1,
- ["for"] = 1,
- ["forever"] = 1,
- ["endfor"] = -1,
- }
+metafunlexer.folding = {
+ ["beginfig"] = { ["plain"] = 1 },
+ ["endfig"] = { ["plain"] = -1 },
+ ["beginglyph"] = { ["plain"] = 1 },
+ ["endglyph"] = { ["plain"] = -1 },
+ -- ["begingraph"] = { ["plain"] = 1 },
+ -- ["endgraph"] = { ["plain"] = -1 },
+ ["def"] = { ["primitive"] = 1 },
+ ["vardef"] = { ["primitive"] = 1 },
+ ["primarydef"] = { ["primitive"] = 1 },
+ ["secondarydef" ] = { ["primitive"] = 1 },
+ ["tertiarydef"] = { ["primitive"] = 1 },
+ ["enddef"] = { ["primitive"] = -1 },
+ ["if"] = { ["primitive"] = 1 },
+ ["fi"] = { ["primitive"] = -1 },
+ ["for"] = { ["primitive"] = 1 },
+ ["forever"] = { ["primitive"] = 1 },
+ ["endfor"] = { ["primitive"] = -1 },
}
--- if inspect then inspect(metafunlexer) end
-
return metafunlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-pdf.lua b/context/data/scite/context/lexers/scite-context-lexer-pdf.lua
index 1956071b7..2d691143d 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-pdf.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-pdf.lua
@@ -11,17 +11,16 @@ local info = {
local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
-local pdflexer = lexer.new("pdf","scite-context-lexer-pdf")
-local whitespace = pdflexer.whitespace
+local pdflexer = lexers.new("pdf","scite-context-lexer-pdf")
+local pdfwhitespace = pdflexer.whitespace
------ pdfobjectlexer = lexer.load("scite-context-lexer-pdf-object")
------ pdfxreflexer = lexer.load("scite-context-lexer-pdf-xref")
+----- pdfobjectlexer = lexers.load("scite-context-lexer-pdf-object")
+----- pdfxreflexer = lexers.load("scite-context-lexer-pdf-xref")
local anything = patterns.anything
local space = patterns.space
@@ -30,10 +29,10 @@ local nospacing = patterns.nospacing
local anything = patterns.anything
local restofline = patterns.restofline
-local t_whitespace = token(whitespace, spacing)
-local t_spacing = token("default", spacing)
------ t_rest = token("default", nospacing)
-local t_rest = token("default", anything)
+local t_whitespace = token(pdfwhitespace, spacing)
+local t_spacing = token("default", spacing)
+----- t_rest = token("default", nospacing)
+local t_rest = token("default", anything)
local p_comment = P("%") * restofline
local t_comment = token("comment", p_comment)
@@ -187,7 +186,7 @@ local t_number = token("number", cardinal)
-- t_number = token("number", cardinal * spacing * cardinal * spacing)
-- * token("keyword", S("fn"))
-pdflexer._rules = {
+pdflexer.rules = {
{ "whitespace", t_whitespace },
{ "object", t_object },
{ "comment", t_comment },
@@ -198,21 +197,15 @@ pdflexer._rules = {
{ "rest", t_rest },
}
-pdflexer._tokenstyles = context.styleset
-
-- lexer.inspect(pdflexer)
-- collapser: obj endobj stream endstream
-pdflexer._foldpattern = p_obj + p_endobj + p_stream + p_endstream
-
-pdflexer._foldsymbols = {
- ["keyword"] = {
- ["obj"] = 1,
- ["endobj"] = -1,
- ["stream"] = 1,
- ["endstream"] = -1,
- },
+pdflexer.folding = {
+ ["obj"] = { ["keyword"] = 1 },
+ ["endobj"] = { ["keyword"] = -1 },
+ ["stream"] = { ["keyword"] = 1 },
+ ["endstream"] = { ["keyword"] = -1 },
}
return pdflexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-sas.lua b/context/data/scite/context/lexers/scite-context-lexer-sas.lua
index e36569911..051918bbf 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-sas.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-sas.lua
@@ -10,28 +10,27 @@ local info = {
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local saslexer = lexer.new("sas","scite-context-lexer-sAs")
-local whitespace = saslexer.whitespace
+local saslexer = lexers.new("sas","scite-context-lexer-sAs")
+local saswhitespace = saslexer.whitespace
local keywords_standard = {
- "anova" , "data", "run", "proc",
+ "anova", "data", "run", "proc",
}
local keywords_dialects = {
- "class" , "do", "end" , "int" , "for" , "model" , "rannor" , "to" , "output"
+ "class", "do", "end", "int", "for", "model", "rannor", "to", "output",
}
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local restofline = patterns.restofline
local startofline = patterns.startofline
+local exactmatch = patterns.exactmatch
local squote = P("'")
local dquote = P('"')
@@ -45,48 +44,42 @@ local decimal = patterns.decimal
local float = patterns.float
local integer = P("-")^-1 * decimal
-local spacing = token(whitespace, space^1)
+local spacing = token(saswhitespace, space^1)
+
local rest = token("default", any)
local shortcomment = token("comment", (P("#") + P("--")) * restofline^0)
local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomment^-1)
-local identifier = token("default",lexer.helpers.utfidentifier)
+local identifier = token("default", lexer.helpers.utfidentifier)
-local shortstring = token("quote", dquote) -- can be shared
+local shortstring = token("quote", dquote) -- can be shared
* token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
+ * token("quote", dquote)
+ + token("quote", squote)
* token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
- + token("quote", bquote)
+ * token("quote", squote)
+ + token("quote", bquote)
* token("string", (escaped + (1-bquote))^0)
- * token("quote", bquote)
+ * token("quote", bquote)
+
+local p_keywords_s = exactmatch(keywords_standard,true)
+local p_keywords_d = exactmatch(keywords_dialects,true)
-local p_keywords_s = exact_match(keywords_standard,nil,true)
-local p_keywords_d = exact_match(keywords_dialects,nil,true)
local keyword_s = token("keyword", p_keywords_s)
local keyword_d = token("command", p_keywords_d)
local number = token("number", float + integer)
local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-saslexer._tokenstyles = context.styleset
-
-saslexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference
-
-saslexer._foldsymbols = {
- _patterns = {
- "/%*",
- "%*/",
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
+saslexer.folding = {
+ ["/*"] = { ["comment"] = 1 },
+ ["*/"] = { ["comment"] = -1 },
+ -- ["{"] = { ["operator"] = 1 },
+ -- ["}"] = { ["operator"] = -1 },
}
-saslexer._rules = {
+saslexer.rules = {
{ "whitespace", spacing },
{ "keyword-s", keyword_s },
{ "keyword-d", keyword_d },
diff --git a/context/data/scite/context/lexers/scite-context-lexer-sql.lua b/context/data/scite/context/lexers/scite-context-lexer-sql.lua
index cf0a03331..97a2ea07b 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-sql.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-sql.lua
@@ -8,15 +8,13 @@ local info = {
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local sqllexer = lexer.new("sql","scite-context-lexer-sql")
-local whitespace = sqllexer.whitespace
+local sqllexer = lexers.new("sql","scite-context-lexer-sql")
+local sqlwhitespace = sqllexer.whitespace
-- ANSI SQL 92 | 99 | 2003
@@ -167,6 +165,7 @@ local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local restofline = patterns.restofline
local startofline = patterns.startofline
+local exactmatch = patterns.exactmatch
local squote = P("'")
local dquote = P('"')
@@ -180,7 +179,7 @@ local decimal = patterns.decimal
local float = patterns.float
local integer = P("-")^-1 * decimal
-local spacing = token(whitespace, space^1)
+local spacing = token(sqlwhitespace, space^1)
local rest = token("default", any)
local shortcomment = token("comment", (P("#") + P("--")) * restofline^0)
@@ -189,40 +188,32 @@ local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomm
local p_validword = R("AZ","az","__") * R("AZ","az","__","09")^0
local identifier = token("default",p_validword)
-local shortstring = token("quote", dquote) -- can be shared
+local shortstring = token("quote", dquote) -- can be shared
* token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
+ * token("quote", dquote)
+ + token("quote", squote)
* token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
- + token("quote", bquote)
+ * token("quote", squote)
+ + token("quote", bquote)
* token("string", (escaped + (1-bquote))^0)
- * token("quote", bquote)
+ * token("quote", bquote)
-local p_keywords_s = exact_match(keywords_standard,nil,true)
-local p_keywords_d = exact_match(keywords_dialects,nil,true)
+local p_keywords_s = exactmatch(keywords_standard,true)
+local p_keywords_d = exactmatch(keywords_dialects,true)
local keyword_s = token("keyword", p_keywords_s)
local keyword_d = token("command", p_keywords_d)
local number = token("number", float + integer)
local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-sqllexer._tokenstyles = context.styleset
-
-sqllexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference
-
-sqllexer._foldsymbols = {
- _patterns = {
- "/%*",
- "%*/",
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
+sqllexer.folding = {
+ ["/*"] = { ["comment"] = 1 },
+ ["*/"] = { ["comment"] = -1 },
+ -- ["{"] = { ["operator"] = 1 },
+ -- ["}"] = { ["operator"] = -1 },
}
-sqllexer._rules = {
+sqllexer.rules = {
{ "whitespace", spacing },
{ "keyword-s", keyword_s },
{ "keyword-d", keyword_d },
diff --git a/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua b/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua
index 88499a9c2..8f0e5daa8 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua
@@ -6,18 +6,17 @@ local info = {
license = "see context related readme files",
}
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local texweblexer = lexer.new("tex-web","scite-context-lexer-tex")
-local texlexer = lexer.load("scite-context-lexer-tex")
+local texweblexer = lexers.new("tex-web","scite-context-lexer-tex")
+local texlexer = lexers.load("scite-context-lexer-tex")
-- can probably be done nicer now, a bit of a hack
-texweblexer._rules = texlexer._rules_web
-texweblexer._tokenstyles = texlexer._tokenstyles
-texweblexer._foldsymbols = texlexer._foldsymbols
-texweblexer._directives = texlexer._directives
+texweblexer.rules = texlexer.rules_web
+texweblexer.embedded = texlexer.embedded
+-- texweblexer.whitespace = texlexer.whitespace
+texweblexer.folding = texlexer.folding
+texweblexer.directives = texlexer.directives
return texweblexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-tex.lua b/context/data/scite/context/lexers/scite-context-lexer-tex.lua
index 71cfce0f5..a4aa83aa0 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-tex.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-tex.lua
@@ -6,55 +6,34 @@ local info = {
license = "see context related readme files",
}
--- maybe: _LINEBYLINE variant for large files (no nesting)
--- maybe: protected_macros
-
---[[
-
- experiment dd 2009/10/28 .. todo:
-
- -- figure out if tabs instead of splits are possible
- -- locate an option to enter name in file dialogue (like windows permits)
- -- figure out why loading a file fails
- -- we cannot print to the log pane
- -- we cannot access props["keywordclass.macros.context.en"]
- -- lexer.get_property only handles integers
- -- we cannot run a command to get the location of mult-def.lua
-
- -- local interface = props["keywordclass.macros.context.en"]
- -- local interface = lexer.get_property("keywordclass.macros.context.en","")
-
-]]--
-
-local global, string, table, lpeg = _G, string, table, lpeg
+local string, table, lpeg = string, table, lpeg
local P, R, S, V, C, Cmt, Cp, Cc, Ct = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cmt, lpeg.Cp, lpeg.Cc, lpeg.Ct
local type, next = type, next
local find, match, lower, upper = string.find, string.match, string.lower, string.upper
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-local inform = context.inform
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
+local report = lexers.report
-local contextlexer = lexer.new("tex","scite-context-lexer-tex")
-local whitespace = contextlexer.whitespace
+local contextlexer = lexers.new("tex","scite-context-lexer-tex")
+local texwhitespace = contextlexer.whitespace
-local cldlexer = lexer.load("scite-context-lexer-cld")
-local mpslexer = lexer.load("scite-context-lexer-mps")
+local cldlexer = lexers.load("scite-context-lexer-cld")
+-- local cldlexer = lexers.load("scite-context-lexer-lua")
+local mpslexer = lexers.load("scite-context-lexer-mps")
-local commands = { en = { } }
-local primitives = { }
-local helpers = { }
-local constants = { }
+local commands = { en = { } }
+local primitives = { }
+local helpers = { }
+local constants = { }
do -- todo: only once, store in global
-- commands helpers primitives
- local definitions = context.loaddefinitions("scite-context-data-interfaces")
+ local definitions = lexers.loaddefinitions("scite-context-data-interfaces")
if definitions then
local used = { }
@@ -86,10 +65,10 @@ do -- todo: only once, store in global
end
end
table.sort(used)
- inform("context user interfaces '%s' supported",table.concat(used," "))
+ report("context user interfaces '%s' supported",table.concat(used," "))
end
- local definitions = context.loaddefinitions("scite-context-data-context")
+ local definitions = lexers.loaddefinitions("scite-context-data-context")
local overloaded = { }
if definitions then
@@ -103,7 +82,7 @@ do -- todo: only once, store in global
end
end
- local definitions = context.loaddefinitions("scite-context-data-tex")
+ local definitions = lexers.loaddefinitions("scite-context-data-tex")
if definitions then
local function add(data,normal)
@@ -140,87 +119,48 @@ local knowncommand = Cmt(cstoken^1, function(_,i,s)
return currentcommands[s] and i
end)
-local utfchar = context.utfchar
-local wordtoken = context.patterns.wordtoken
-local iwordtoken = context.patterns.iwordtoken
-local wordpattern = context.patterns.wordpattern
-local iwordpattern = context.patterns.iwordpattern
-local invisibles = context.patterns.invisibles
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
+local utfchar = lexers.helpers.utfchar
+local wordtoken = lexers.patterns.wordtoken
+local iwordtoken = lexers.patterns.iwordtoken
+local wordpattern = lexers.patterns.wordpattern
+local iwordpattern = lexers.patterns.iwordpattern
+local invisibles = lexers.patterns.invisibles
+local styleofword = lexers.styleofword
+local setwordlist = lexers.setwordlist
+
local validwords = false
local validminimum = 3
--- % language=uk
-
--- fails (empty loop message) ... latest lpeg issue?
-
--- todo: Make sure we only do this at the beginning .. a pitty that we
--- can't store a state .. now is done too often.
-
-local knownpreamble = Cmt(P("% "), function(input,i,_) -- todo : utfbomb, was #P("% ")
- if i < 10 then
- validwords, validminimum = false, 3
- local s, e, word = find(input,"^(.-)[\n\r]",i) -- combine with match
- if word then
- local interface = match(word,"interface=([a-z][a-z]+)")
- if interface and #interface == 2 then
- inform("enabling context user interface '%s'",interface)
- currentcommands = commands[interface] or commands.en or { }
- end
- local language = match(word,"language=([a-z][a-z]+)")
+-- % language=uk (space before key is mandate)
+
+contextlexer.preamble = Cmt(P("% ") + P(true), function(input,i)
+ currentcommands = false
+ validwords = false
+ validminimum = 3
+ local s, e, line = find(input,"^(.-)[\n\r]",1) -- combine with match
+ if line then
+ local interface = match(line," interface=([a-z][a-z]+)")
+ local language = match(line," language=([a-z][a-z]+)")
+ if interface and #interface == 2 then
+ -- report("enabling context user interface '%s'",interface)
+ currentcommands = commands[interface]
+ end
+ if language then
validwords, validminimum = setwordlist(language)
end
end
- return false
+ if not currentcommands then
+ currentcommands = commands.en or { }
+ end
+ return false -- so we go back and now handle the line as comment
end)
--- -- the token list contains { "style", endpos } entries
--- --
--- -- in principle this is faster but it is also crash sensitive for large files
-
--- local constants_hash = { } for i=1,#constants do constants_hash [constants [i]] = true end
--- local helpers_hash = { } for i=1,#helpers do helpers_hash [helpers [i]] = true end
--- local primitives_hash = { } for i=1,#primitives do primitives_hash[primitives[i]] = true end
-
--- local specialword = Ct( P("\\") * Cmt( C(cstoken^1), function(input,i,s)
--- if currentcommands[s] then
--- return true, "command", i
--- elseif constants_hash[s] then
--- return true, "data", i
--- elseif helpers_hash[s] then
--- return true, "plain", i
--- elseif primitives_hash[s] then
--- return true, "primitive", i
--- else -- if starts with if then primitive
--- return true, "user", i
--- end
--- end) )
-
--- local specialword = P("\\") * Cmt( C(cstoken^1), function(input,i,s)
--- if currentcommands[s] then
--- return true, { "command", i }
--- elseif constants_hash[s] then
--- return true, { "data", i }
--- elseif helpers_hash[s] then
--- return true, { "plain", i }
--- elseif primitives_hash[s] then
--- return true, { "primitive", i }
--- else -- if starts with if then primitive
--- return true, { "user", i }
--- end
--- end)
-
--- experiment: keep space with whatever ... less tables
-
--- 10pt
-
local commentline = P("%") * (1-S("\n\r"))^0
local endline = S("\n\r")^1
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
+local exactmatch = patterns.exactmatch
local backslash = P("\\")
local hspace = S(" \t")
@@ -230,16 +170,16 @@ local p_rest = any
local p_preamble = knownpreamble
local p_comment = commentline
----- p_command = backslash * knowncommand
------ p_constant = backslash * exact_match(constants)
------ p_helper = backslash * exact_match(helpers)
------ p_primitive = backslash * exact_match(primitives)
+----- p_constant = backslash * exactmatch(constants)
+----- p_helper = backslash * exactmatch(helpers)
+----- p_primitive = backslash * exactmatch(primitives)
local p_csdone = #(1-cstoken) + P(-1)
-local p_command = backslash * lexer.helpers.utfchartabletopattern(currentcommands) * p_csdone
-local p_constant = backslash * lexer.helpers.utfchartabletopattern(constants) * p_csdone
-local p_helper = backslash * lexer.helpers.utfchartabletopattern(helpers) * p_csdone
-local p_primitive = backslash * lexer.helpers.utfchartabletopattern(primitives) * p_csdone
+local p_command = backslash * lexers.helpers.utfchartabletopattern(currentcommands) * p_csdone
+local p_constant = backslash * lexers.helpers.utfchartabletopattern(constants) * p_csdone
+local p_helper = backslash * lexers.helpers.utfchartabletopattern(helpers) * p_csdone
+local p_primitive = backslash * lexers.helpers.utfchartabletopattern(primitives) * p_csdone
local p_ifprimitive = P("\\if") * cstoken^1
local p_csname = backslash * (cstoken^1 + P(1))
@@ -252,28 +192,15 @@ local p_reserved = backslash * (
P("??") + R("az") * P("!")
) * cstoken^1
-local p_number = context.patterns.real
-local p_unit = P("pt") + P("bp") + P("sp") + P("mm") + P("cm") + P("cc") + P("dd")
+local p_number = lexers.patterns.real
+----- p_unit = P("pt") + P("bp") + P("sp") + P("mm") + P("cm") + P("cc") + P("dd") + P("dk")
+local p_unit = lexers.helpers.utfchartabletopattern { "pt", "bp", "sp", "mm", "cm", "cc", "dd", "dk" }
-- no looking back = #(1-S("[=")) * cstoken^3 * #(1-S("=]"))
--- This one gives stack overflows:
---
--- local p_word = Cmt(iwordpattern, function(_,i,s)
--- if validwords then
--- return checkedword(validwords,validminimum,s,i)
--- else
--- -- return true, { "text", i }
--- return true, "text", i
--- end
--- end)
---
--- So we use this one instead:
-
------ p_word = Ct( iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() ) -- the function can be inlined
-local p_word = iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
+local p_word = C(iwordpattern) * Cp() / function(s,p) return styleofword(validwords,validminimum,s,p) end -- a bit of a hack
------ p_text = (1 - p_grouping - p_special - p_extra - backslash - space + hspace)^1
+----- p_text = (1 - p_grouping - p_special - p_extra - backslash - space + hspace)^1
-- keep key pressed at end-of syst-aux.mkiv:
--
@@ -319,30 +246,29 @@ end
local p_invisible = invisibles^1
-local spacing = token(whitespace, p_spacing )
-
-local rest = token("default", p_rest )
-local preamble = token("preamble", p_preamble )
-local comment = token("comment", p_comment )
-local command = token("command", p_command )
-local constant = token("data", p_constant )
-local helper = token("plain", p_helper )
-local primitive = token("primitive", p_primitive )
-local ifprimitive = token("primitive", p_ifprimitive)
-local reserved = token("reserved", p_reserved )
-local csname = token("user", p_csname )
-local grouping = token("grouping", p_grouping )
-local number = token("number", p_number )
- * token("constant", p_unit )
-local special = token("special", p_special )
-local reserved = token("reserved", p_reserved ) -- reserved internal preproc
-local extra = token("extra", p_extra )
-local invisible = token("invisible", p_invisible )
-local text = token("default", p_text )
+local spacing = token(texwhitespace, p_spacing )
+
+local rest = token("default", p_rest )
+local comment = token("comment", p_comment )
+local command = token("command", p_command )
+local constant = token("data", p_constant )
+local helper = token("plain", p_helper )
+local primitive = token("primitive", p_primitive )
+local ifprimitive = token("primitive", p_ifprimitive)
+local reserved = token("reserved", p_reserved )
+local csname = token("user", p_csname )
+local grouping = token("grouping", p_grouping )
+local number = token("number", p_number )
+ * token("constant", p_unit )
+local special = token("special", p_special )
+local reserved = token("reserved", p_reserved ) -- reserved internal preproc
+local extra = token("extra", p_extra )
+local invisible = token("invisible", p_invisible )
+local text = token("default", p_text )
local word = p_word
------ startluacode = token("grouping", P("\\startluacode"))
------ stopluacode = token("grouping", P("\\stopluacode"))
+----- startluacode = token("grouping", P("\\startluacode"))
+----- stopluacode = token("grouping", P("\\stopluacode"))
local luastatus = false
local luatag = nil
@@ -351,14 +277,14 @@ local lualevel = 0
local function startdisplaylua(_,i,s)
luatag = s
luastatus = "display"
- cldlexer._directives.cld_inline = false
+ cldlexer.directives.cld_inline = false
return true
end
local function stopdisplaylua(_,i,s)
local ok = luatag == s
if ok then
- cldlexer._directives.cld_inline = false
+ cldlexer.directives.cld_inline = false
luastatus = false
end
return ok
@@ -369,7 +295,7 @@ local function startinlinelua(_,i,s)
return false
elseif not luastatus then
luastatus = "inline"
- cldlexer._directives.cld_inline = true
+ cldlexer.directives.cld_inline = true
lualevel = 1
return true
else-- if luastatus == "inline" then
@@ -396,7 +322,7 @@ local function stopinlinelua_e(_,i,s) -- }
lualevel = lualevel - 1
local ok = lualevel <= 0 -- was 0
if ok then
- cldlexer._directives.cld_inline = false
+ cldlexer.directives.cld_inline = false
luastatus = false
end
return ok
@@ -405,7 +331,7 @@ local function stopinlinelua_e(_,i,s) -- }
end
end
-contextlexer._reset_parser = function()
+contextlexer.resetparser = function()
luastatus = false
luatag = nil
lualevel = 0
@@ -462,17 +388,11 @@ local stopmetafuncode = token("embedded", stopmetafun)
local callers = token("embedded", P("\\") * metafuncall) * metafunarguments
+ token("embedded", P("\\") * luacall)
-lexer.embed_lexer(contextlexer, mpslexer, startmetafuncode, stopmetafuncode)
-lexer.embed_lexer(contextlexer, cldlexer, startluacode, stopluacode)
-
--- preamble is inefficient as it probably gets called each time (so some day I really need to
--- patch the plugin)
+lexers.embed(contextlexer, mpslexer, startmetafuncode, stopmetafuncode)
+lexers.embed(contextlexer, cldlexer, startluacode, stopluacode)
-contextlexer._preamble = preamble
-
-contextlexer._rules = {
+contextlexer.rules = {
{ "whitespace", spacing },
- -- { "preamble", preamble },
{ "word", word },
{ "text", text }, -- non words
{ "comment", comment },
@@ -499,13 +419,11 @@ contextlexer._rules = {
-- Watch the text grabber, after all, we're talking mostly of text (beware,
-- no punctuation here as it can be special). We might go for utf here.
-local web = lexer.loadluafile("scite-context-lexer-web-snippets")
+local web = lexers.loadluafile("scite-context-lexer-web-snippets")
if web then
- lexer.inform("supporting web snippets in tex lexer")
-
- contextlexer._rules_web = {
+ contextlexer.rules_web = {
{ "whitespace", spacing },
{ "text", text }, -- non words
{ "comment", comment },
@@ -527,9 +445,7 @@ if web then
else
- lexer.report("not supporting web snippets in tex lexer")
-
- contextlexer._rules_web = {
+ contextlexer.rules_web = {
{ "whitespace", spacing },
{ "text", text }, -- non words
{ "comment", comment },
@@ -550,39 +466,31 @@ else
end
-contextlexer._tokenstyles = context.styleset
-
-local environment = {
- ["\\start"] = 1, ["\\stop"] = -1,
- -- ["\\begin"] = 1, ["\\end" ] = -1,
-}
-
--- local block = {
--- ["\\begin"] = 1, ["\\end" ] = -1,
--- }
-
-local group = {
- ["{"] = 1, ["}"] = -1,
-}
-
-contextlexer._foldpattern = P("\\" ) * (P("start") + P("stop")) + S("{}") -- separate entry else interference
-
-contextlexer._foldsymbols = { -- these need to be style references .. todo: multiple styles
- _patterns = {
- "\\start", "\\stop", -- regular environments
- -- "\\begin", "\\end", -- (moveable) blocks
- "[{}]",
+contextlexer.folding = {
+ ["\\start"] = {
+ ["command"] = 1,
+ ["constant"] = 1,
+ ["data"] = 1,
+ ["user"] = 1,
+ ["embedded"] = 1,
+ -- ["helper"] = 1,
+ ["plain"] = 1,
+ },
+ ["\\stop"] = {
+ ["command"] = -1,
+ ["constant"] = -1,
+ ["data"] = -1,
+ ["user"] = -1,
+ ["embedded"] = -1,
+ -- ["helper"] = -1,
+ ["plain"] = -1,
+ },
+ ["{"] = {
+ ["grouping"] = 1,
+ },
+ ["}"] = {
+ ["grouping"] = -1,
},
- ["command"] = environment,
- ["constant"] = environment,
- ["data"] = environment,
- ["user"] = environment,
- ["embedded"] = environment,
- ["helper"] = environment,
- ["plain"] = environment,
- ["grouping"] = group,
}
--- context.inspect(contextlexer)
-
return contextlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-txt.lua b/context/data/scite/context/lexers/scite-context-lexer-txt.lua
index 8ecfff7cb..5b48657a9 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-txt.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-txt.lua
@@ -9,53 +9,45 @@ local info = {
local P, S, Cmt, Cp = lpeg.P, lpeg.S, lpeg.Cmt, lpeg.Cp
local find, match = string.find, string.match
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
+local styleofword = lexers.styleofword
+local setwordlist = lexers.setwordlist
-local textlexer = lexer.new("txt","scite-context-lexer-txt")
-local whitespace = textlexer.whitespace
+local textlexer = lexers.new("txt","scite-context-lexer-txt")
+local textwhitespace = textlexer.whitespace
+
+local space = patterns.space
+local any = patterns.any
+local wordtoken = patterns.wordtoken
+local wordpattern = patterns.wordpattern
-local space = patterns.space
-local any = patterns.any
-local wordtoken = patterns.wordtoken
-local wordpattern = patterns.wordpattern
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
local validwords = false
local validminimum = 3
--- local styleset = context.newstyleset {
--- "default",
--- "text", "okay", "error", "warning",
--- "preamble",
--- }
-
--- [#!-%] language=uk
-
-local p_preamble = Cmt((S("#!-%") * P(" ")), function(input,i,_) -- todo: utf bomb no longer #
- if i == 1 then -- < 10 then
- validwords, validminimum = false, 3
- local s, e, line = find(input,"^[#!%-%%](.+)[\n\r]",i)
- if line then
- local language = match(line,"language=([a-z]+)")
- if language then
- validwords, validminimum = setwordlist(language)
- end
+-- [#!-%] language=uk (space before key is mandate)
+
+local p_preamble = Cmt((S("#!-%") * P(" ") + P(true)), function(input,i)
+ validwords = false
+ validminimum = 3
+ local s, e, line = find(input,"^[#!%-%%](.+)[\n\r]",1)
+ if line then
+ local language = match(line," language=([a-z]+)")
+ if language then
+ validwords, validminimum = setwordlist(language)
end
end
- return false
+ return false -- so we go back and now handle the line as text
end)
local t_preamble =
token("preamble", p_preamble)
local t_word =
- wordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
+ C(wordpattern) * Cp() / function(s,p) return styleofword(validwords,validminimum,s,p) end -- a bit of a hack
local t_text =
token("default", wordtoken^1)
@@ -64,9 +56,9 @@ local t_rest =
token("default", (1-wordtoken-space)^1)
local t_spacing =
- token(whitespace, space^1)
+ token(textwhitespace, space^1)
-textlexer._rules = {
+textlexer.rules = {
{ "whitespace", t_spacing },
{ "preamble", t_preamble },
{ "word", t_word }, -- words >= 3
@@ -74,7 +66,4 @@ textlexer._rules = {
{ "rest", t_rest },
}
-textlexer._LEXBYLINE = true -- new (needs testing, not yet as the system changed in 3.24)
-textlexer._tokenstyles = context.styleset
-
return textlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua b/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua
index 5121030cc..2ef661e2e 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua
@@ -8,11 +8,10 @@ local info = {
local P, R, S, C, Cg, Cb, Cs, Cmt, lpegmatch = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cg, lpeg.Cb, lpeg.Cs, lpeg.Cmt, lpeg.match
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
local websnippets = { }
@@ -25,9 +24,9 @@ local squote = P("'")
local dquote = P('"')
local period = P(".")
-local t_whitespace = token(whitespace, space^1)
-local t_spacing = token("default", space^1)
-local t_rest = token("default", any)
+local t_whitespace = token("whitespace", space^1)
+local t_spacing = token("default", space^1)
+local t_rest = token("default", any)
-- the web subset
diff --git a/context/data/scite/context/lexers/scite-context-lexer-web.lua b/context/data/scite/context/lexers/scite-context-lexer-web.lua
index 81a6f90df..6325e3693 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-web.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-web.lua
@@ -8,25 +8,23 @@ local info = {
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local weblexer = lexer.new("web","scite-context-lexer-web")
-local whitespace = weblexer.whitespace
+local weblexer = lexers.new("web","scite-context-lexer-web")
+local webwhitespace = weblexer.whitespace
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local restofline = patterns.restofline
-local startofline = patterns.startofline
+local eol = patterns.eol
local period = P(".")
local percent = P("%")
-local spacing = token(whitespace, space^1)
+local spacing = token(webwhitespace, space^1)
local rest = token("default", any)
local eop = P("@>")
@@ -35,33 +33,54 @@ local eos = eop * P("+")^-1 * P("=")
-- we can put some of the next in the web-snippets file
-- is f okay here?
-local texcomment = token("comment", percent * restofline^0)
+-- This one is hard to handle partial because trailing spaces are part of the tex part as well
+-- as the c part so they are bound to that. We could have some special sync signal like a label
+-- with space-like properties (more checking then) or styles that act as boundary (basically any
+-- style + 128 or so). A sunday afternoon challenge. Maybe some newline trickery? Or tag lines
+-- which is possible in scite. Or how about a function hook: foolexer.backtracker(str) where str
+-- matches at the beginning of a line: foolexer.backtracker("@ @c") or a pattern, maybe even a
+-- match from start.
-local texpart = token("label",P("@")) * #spacing
+-- local backtracker = ((lpeg.Cp() * lpeg.P("@ @c")) / function(p) n = p end + lpeg.P(1))^1
+-- local c = os.clock() print(#s) print(lpeg.match(backtracker,s)) print(n) print(c)
+
+-- local backtracker = (lpeg.Cmt(lpeg.P("@ @c"),function(_,p) n = p end) + lpeg.P(1))^1
+-- local c = os.clock() print(#s) print(lpeg.match(backtracker,s)) print(n) print(c)
+
+----- somespace = spacing
+----- somespace = token("whitespace",space^1)
+local somespace = space^1
+
+local texpart = token("label",P("@")) * #somespace
+ token("label",P("@") * P("*")^1) * token("function",(1-period)^1) * token("label",period)
-local midpart = token("label",P("@d")) * #spacing
- + token("label",P("@f")) * #spacing
-local cpppart = token("label",P("@c")) * #spacing
- + token("label",P("@p")) * #spacing
+local midpart = token("label",P("@d")) * #somespace
+ + token("label",P("@f")) * #somespace
+local cpppart = token("label",P("@c")) * #somespace
+ + token("label",P("@p")) * #somespace
+ token("label",P("@") * S("<(")) * token("function",(1-eop)^1) * token("label",eos)
local anypart = P("@") * ( P("*")^1 + S("dfcp") + space^1 + S("<(") * (1-eop)^1 * eos )
local limbo = 1 - anypart - percent
-local texlexer = lexer.load("scite-context-lexer-tex-web")
-local cpplexer = lexer.load("scite-context-lexer-cpp-web")
+weblexer.backtracker = eol^1 * P("@ @c")
+-- weblexer.foretracker = (space-eol)^0 * eol^1 * P("@") * space + anypart
+weblexer.foretracker = anypart
-lexer.embed_lexer(weblexer, texlexer, texpart + limbo, #anypart)
-lexer.embed_lexer(weblexer, cpplexer, cpppart + midpart, #anypart)
+local texlexer = lexers.load("scite-context-lexer-tex-web")
+local cpplexer = lexers.load("scite-context-lexer-cpp-web")
-local texcomment = token("comment", percent * restofline^0)
+-- local texlexer = lexers.load("scite-context-lexer-tex")
+-- local cpplexer = lexers.load("scite-context-lexer-cpp")
-weblexer._rules = {
+lexers.embed(weblexer, texlexer, texpart + limbo, #anypart)
+lexers.embed(weblexer, cpplexer, cpppart + midpart, #anypart)
+
+local texcomment = token("comment", percent * restofline^0)
+
+weblexer.rules = {
{ "whitespace", spacing },
{ "texcomment", texcomment }, -- else issues with first tex section
{ "rest", rest },
}
-weblexer._tokenstyles = context.styleset
-
return weblexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua
index f5ca86cb2..af0570f68 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua
@@ -8,26 +8,22 @@ local info = {
local P = lpeg.P
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
-local xmlcdatalexer = lexer.new("xml-cdata","scite-context-lexer-xml-cdata")
-local whitespace = xmlcdatalexer.whitespace
+local xmlcdatalexer = lexers.new("xml-cdata","scite-context-lexer-xml-cdata")
local space = patterns.space
local nospace = 1 - space - P("]]>")
-local t_spaces = token(whitespace, space ^1)
-local t_cdata = token("comment", nospace^1)
+local t_spaces = token("whitespace", space^1)
+local t_cdata = token("comment", nospace^1)
-xmlcdatalexer._rules = {
+xmlcdatalexer.rules = {
{ "whitespace", t_spaces },
{ "cdata", t_cdata },
}
-xmlcdatalexer._tokenstyles = context.styleset
-
return xmlcdatalexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua
index 40de8f603..8b14d8295 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua
@@ -8,26 +8,22 @@ local info = {
local P = lpeg.P
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
-local xmlcommentlexer = lexer.new("xml-comment","scite-context-lexer-xml-comment")
-local whitespace = xmlcommentlexer.whitespace
+local xmlcommentlexer = lexers.new("xml-comment","scite-context-lexer-xml-comment")
local space = patterns.space
local nospace = 1 - space - P("-->")
-local t_spaces = token(whitespace, space ^1)
-local t_comment = token("comment", nospace^1)
+local t_spaces = token("whitespace", space^1)
+local t_comment = token("comment", nospace^1)
-xmlcommentlexer._rules = {
+xmlcommentlexer.rules = {
{ "whitespace", t_spaces },
{ "comment", t_comment },
}
-xmlcommentlexer._tokenstyles = context.styleset
-
return xmlcommentlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua
index a1b717a6a..38788f5fe 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua
@@ -8,26 +8,22 @@ local info = {
local P = lpeg.P
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
+local patterns = lexers.patterns
+local token = lexers.token
-local xmlscriptlexer = lexer.new("xml-script","scite-context-lexer-xml-script")
-local whitespace = xmlscriptlexer.whitespace
+local xmlscriptlexer = lexers.new("xml-script","scite-context-lexer-xml-script")
local space = patterns.space
local nospace = 1 - space - (P("</") * P("script") + P("SCRIPT")) * P(">")
-local t_spaces = token(whitespace, space ^1)
-local t_script = token("default", nospace^1)
+local t_spaces = token("whitespace", space^1)
+local t_script = token("default", nospace^1)
-xmlscriptlexer._rules = {
+xmlscriptlexer.rules = {
{ "whitespace", t_spaces },
{ "script", t_script },
}
-xmlscriptlexer._tokenstyles = context.styleset
-
return xmlscriptlexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-xml.lua b/context/data/scite/context/lexers/scite-context-lexer-xml.lua
index bbdb3febc..e635d4019 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-xml.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml.lua
@@ -17,20 +17,19 @@ local P, R, S, C, Cmt, Cp = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cmt, lpeg.Cp
local type = type
local match, find = string.match, string.find
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local xmllexer = lexer.new("xml","scite-context-lexer-xml")
-local whitespace = xmllexer.whitespace
+local xmllexer = lexers.new("xml","scite-context-lexer-xml")
+local xmlwhitespace = xmllexer.whitespace
+
+local xmlcommentlexer = lexers.load("scite-context-lexer-xml-comment")
+local xmlcdatalexer = lexers.load("scite-context-lexer-xml-cdata")
+local xmlscriptlexer = lexers.load("scite-context-lexer-xml-script")
+local lualexer = lexers.load("scite-context-lexer-lua")
-local xmlcommentlexer = lexer.load("scite-context-lexer-xml-comment")
-local xmlcdatalexer = lexer.load("scite-context-lexer-xml-cdata")
-local xmlscriptlexer = lexer.load("scite-context-lexer-xml-script")
-local lualexer = lexer.load("scite-context-lexer-lua")
local space = patterns.space
local any = patterns.any
@@ -70,15 +69,14 @@ local closelua = "?>"
local entity = ampersand * (1-semicolon)^1 * semicolon
-local utfchar = context.utfchar
-local wordtoken = context.patterns.wordtoken
-local iwordtoken = context.patterns.iwordtoken
-local wordpattern = context.patterns.wordpattern
-local iwordpattern = context.patterns.iwordpattern
-local invisibles = context.patterns.invisibles
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
+local utfchar = lexers.helpers.utfchar
+local wordtoken = patterns.wordtoken
+local iwordtoken = patterns.iwordtoken
+local wordpattern = patterns.wordpattern
+local iwordpattern = patterns.iwordpattern
+local invisibles = patterns.invisibles
+local styleofword = lexers.styleofword
+local setwordlist = lexers.setwordlist
local validwords = false
local validminimum = 3
@@ -86,23 +84,18 @@ local validminimum = 3
--
-- <?context-directive editor language us ?>
-local t_preamble = Cmt(P("<?xml "), function(input,i,_) -- todo: utf bomb, no longer #
- if i < 200 then
- validwords, validminimum = false, 3
- local language = match(input,"^<%?xml[^>]*%?>%s*<%?context%-directive%s+editor%s+language%s+(..)%s+%?>")
- -- if not language then
- -- language = match(input,"^<%?xml[^>]*language=[\"\'](..)[\"\'][^>]*%?>",i)
- -- end
- if language then
- validwords, validminimum = setwordlist(language)
- end
+xmllexer.preamble = Cmt(P("<?xml " + P(true)), function(input,i) -- todo: utf bomb, no longer #
+ validwords = false
+ validminimum = 3
+ local language = match(input,"^<%?xml[^>]*%?>%s*<%?context%-directive%s+editor%s+language%s+(..)%s+%?>")
+ if language then
+ validwords, validminimum = setwordlist(language)
end
- return false
+ return false -- so we go back and now handle the line as processing instruction
end)
local t_word =
--- Ct( iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() ) -- the function can be inlined
- iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
+ C(iwordpattern) * Cp() / function(s,p) return styleofword(validwords,validminimum,s,p) end -- a bit of a hack
local t_rest =
token("default", any)
@@ -111,7 +104,7 @@ local t_text =
token("default", (1-S("<>&")-space)^1)
local t_spacing =
- token(whitespace, space^1)
+ token(xmlwhitespace, space^1)
local t_optionalwhitespace =
token("default", space^1)^0
@@ -227,10 +220,10 @@ local t_doctype = token("command",P("<!DOCTYPE"))
* t_optionalwhitespace
* token("command",P(">"))
-lexer.embed_lexer(xmllexer, lualexer, token("command", openlua), token("command", closelua))
-lexer.embed_lexer(xmllexer, xmlcommentlexer, token("command", opencomment), token("command", closecomment))
-lexer.embed_lexer(xmllexer, xmlcdatalexer, token("command", opencdata), token("command", closecdata))
-lexer.embed_lexer(xmllexer, xmlscriptlexer, token("command", openscript), token("command", closescript))
+lexers.embed(xmllexer, lualexer, token("command", openlua), token("command", closelua))
+lexers.embed(xmllexer, xmlcommentlexer, token("command", opencomment), token("command", closecomment))
+lexers.embed(xmllexer, xmlcdatalexer, token("command", opencdata), token("command", closecdata))
+lexers.embed(xmllexer, xmlscriptlexer, token("command", openscript), token("command", closescript))
-- local t_name =
-- token("plain",name)
@@ -303,12 +296,8 @@ local t_instruction =
local t_invisible =
token("invisible",invisibles^1)
--- local t_preamble =
--- token("preamble", t_preamble )
-
-xmllexer._rules = {
+xmllexer.rules = {
{ "whitespace", t_spacing },
- { "preamble", t_preamble },
{ "word", t_word },
-- { "text", t_text },
-- { "comment", t_comment },
@@ -322,29 +311,15 @@ xmllexer._rules = {
{ "rest", t_rest },
}
-xmllexer._tokenstyles = context.styleset
-
-xmllexer._foldpattern = P("</") + P("<") + P("/>") -- separate entry else interference
-+ P("<!--") + P("-->")
-
-xmllexer._foldsymbols = {
- _patterns = {
- "</",
- "/>",
- "<",
- },
- ["keyword"] = {
- ["</"] = -1,
- ["/>"] = -1,
- ["<"] = 1,
- },
- ["command"] = {
- ["</"] = -1,
- ["/>"] = -1,
- ["<!--"] = 1,
- ["-->"] = -1,
- ["<"] = 1,
- },
+xmllexer.folding = {
+ ["</"] = { ["keyword"] = -1 },
+ ["/>"] = { ["keyword"] = -1 },
+ ["<"] = { ["keyword"] = 1 },
+ ["<?"] = { ["command"] = 1 },
+ ["<!--"] = { ["command"] = 1 },
+ ["?>"] = { ["command"] = -1 },
+ ["-->"] = { ["command"] = -1 },
+ [">"] = { ["command"] = -1 },
}
return xmllexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer.lua b/context/data/scite/context/lexers/scite-context-lexer.lua
index 289697b72..fd74ba55a 100644
--- a/context/data/scite/context/lexers/scite-context-lexer.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer.lua
@@ -8,441 +8,128 @@ local info = {
}
--- We need a copy of this file to lexer.lua in the same path. This was not needed
--- before version 10 but I can't figure out what else to do. It looks like there
--- is some loading of lexer.lua but I can't see where.
-
--- For a while it looked like we're stuck with scite 3 because there would be no
--- update of scintillua for the newer versions (c++ changes) but now it looks that
--- there will be updates (2021). There is a dll for scite >= 5 but it doesn't
--- work (yet). In version 5.20+ the scintillua dll makes scite crash (alsl when I
--- use the recommended import). In an early 5.02 loading the (shipped) lpeg lexer
--- does nothing at all. There have been changes in the lua interface too but I need
--- to compare the old and new lib. For now I gave up and got back to version 3+. It
--- would be nice if error messages would go to the log pane so that wget an idea
--- what happens. After all the code involved (below) is not that much and not that
--- complex either.
+-- There is some history behind these lexers. When LPEG came around, we immediately adopted that in CONTEXT
+-- and one of the first things to show up were the verbatim plugins. There we have several models: line based
+-- and syntax based. The way we visualize the syntax for TEX, METAPOST and LUA relates closely to the way the
+-- CONTEXT user interface evolved. We have LPEG all over the place.
--
--- Actually, scite 5.22 also crashed when a program was launched so better wait
--- for a while. (In the worst case, when it all stops working, we need to migrate
--- to visual code, which is out backup/fallback plan.) I didn't test if the latest
--- textadept still works with our lexer variant. In the meantime that editor has
--- grown to some 30 MB so it is no longer a lightweight option (scite with scintilla
--- is still quite small).
-
-if lpeg.setmaxstack then lpeg.setmaxstack(1000) end
-
-local log = false
-local trace = false
-local detail = false
-local show = false -- nice for tracing (also for later)
-local collapse = false -- can save some 15% (maybe easier on scintilla)
-local inspect = false -- can save some 15% (maybe easier on scintilla)
-
--- local log = true
--- local trace = true
-
--- GET GOING
---
--- You need to copy this file over lexer.lua. In principle other lexers could work
--- too but not now. Maybe some day. All patterns will move into the patterns name
--- space. I might do the same with styles. If you run an older version of SciTE you
--- can take one of the archives. Pre 3.41 versions can just be copied to the right
--- path, as there we still use part of the normal lexer. Below we mention some
--- issues with different versions of SciTE. We try to keep up with changes but best
--- check careful if the version that yuou install works as expected because SciTE
--- and the scintillua dll need to be in sync.
---
--- REMARK
---
--- We started using lpeg lexing as soon as it came available. Because we had rather
--- demanding files and also wanted to use nested lexers, we ended up with our own
--- variant. At least at that time this was more robust and also much faster (as we
--- have some pretty large Lua data files and also work with large xml files). As a
--- consequence successive versions had to be adapted to changes in the (at that time
--- still unstable) api. In addition to lexing we also have spell checking and such.
--- Around version 3.60 things became more stable so I don't expect to change much.
---
--- LEXING
---
--- When pc's showed up we wrote our own editor (texedit) in MODULA 2. It was fast,
--- had multiple overlapping (text) windows, could run in the at most 1M memory at
--- that time, etc. The realtime file browsing with lexing that we had at that time
--- is still on my current wish list. The color scheme and logic that we used related
--- to the logic behind the ConTeXt user interface that evolved.
---
--- Later I rewrote the editor in perl/tk. I don't like the perl syntax but tk
--- widgets are very powerful and hard to beat. In fact, TextAdept reminds me of
--- that: wrap your own interface around a framework (tk had an edit control that one
--- could control completely not that different from scintilla). Last time I checked
--- it still ran fine so I might try to implement something like its file handling in
--- TextAdept.
---
--- In the end I settled for SciTE for which I wrote TeX and MetaPost lexers that
--- could handle keyword sets. With respect to lexing (syntax highlighting) ConTeXt
--- has a long history, if only because we need it for manuals. Anyway, in the end we
--- arrived at lpeg based lexing (which is quite natural as we have lots of lpeg
--- usage in ConTeXt). The basic color schemes haven't changed much. The most
--- prominent differences are the nested lexers.
---
--- In the meantime I made the lexer suitable for typesetting sources which was no
--- big deal as we already had that in place (ConTeXt used lpeg from the day it
--- showed up so we have several lexing options there too).
---
--- Keep in mind that in ConTeXt (typesetting) lexing can follow several approaches:
--- line based (which is handy for verbatim mode), syntax mode (which is nice for
--- tutorials), and tolerant mode (so that one can also show bad examples or errors).
--- These demands can clash.
---
--- HISTORY
---
--- The remarks below are more for myself so that I keep track of changes in the
--- way we adapt to the changes in the scintillua and scite.
---
--- The fold and lex functions are copied and patched from original code by Mitchell
--- (see lexer.lua) in the scintillua distribution. So whatever I say below, assume
--- that all errors are mine. The ability to use lpeg in scintilla is a real nice
--- addition and a brilliant move. The code is a byproduct of the (mainly Lua based)
--- TextAdept which at the time I ran into it was a rapidly moving target so I
--- decided to stick ot SciTE. When I played with it, it had no realtime output pane
--- although that seems to be dealt with now (2017). I need to have a look at it in
--- more detail but a first test again made the output hang and it was a bit slow too
--- (and I also want the log pane as SciTE has it, on the right, in view). So, for
--- now I stick to SciTE even when it's somewhat crippled by the fact that we cannot
--- hook our own (language dependent) lexer into the output pane (somehow the
--- errorlist lexer is hard coded into the editor). Hopefully that will change some
--- day. The ConTeXt distribution has cmd runner for textdept that will plug in the
--- lexers discussed here as well as a dedicated runner. Considere it an experiment.
---
--- The basic code hasn't changed much but we had to adapt a few times to changes in
--- the api and/or work around bugs. Starting with SciTE version 3.20 there was an
--- issue with coloring. We still lacked a connection with SciTE itself (properties
--- as well as printing to the log pane) and we could not trace this (on windows).
--- However on unix we can see messages! As far as I can see, there are no
--- fundamental changes in lexer.lua or LexLPeg.cxx so it must be/have been in
--- Scintilla itself. So we went back to 3.10. Indicators of issues are: no lexing of
--- 'next' and 'goto <label>' in the Lua lexer and no brace highlighting either.
--- Interesting is that it does work ok in the cld lexer (so the Lua code is okay).
--- All seems to be ok again in later versions, so, when you update best check first
--- and just switch back to an older version as normally a SciTE update is not
--- critital. When char-def.lua lexes real fast this is a signal that the lexer quits
--- somewhere halfway. Maybe there are some hard coded limitations on the amount of
--- styles and/or length of names.
---
--- Anyway, after checking 3.24 and adapting to the new lexer tables things are okay
--- again. So, this version assumes 3.24 or higher. In 3.24 we have a different token
--- result, i.e. no longer a { tag, pattern } but just two return values. I didn't
--- check other changes but will do that when I run into issues. I had already
--- optimized these small tables by hashing which was much more efficient (and maybe
--- even more efficient than the current approach) but this is no longer needed. For
--- the moment we keep some of that code around as I don't know what happens in
--- future versions. I'm anyway still happy with this kind of lexing.
---
--- In 3.31 another major change took place: some helper constants (maybe they're no
--- longer constants) and functions were moved into the lexer modules namespace but
--- the functions are assigned to the Lua module afterward so we cannot alias them
--- beforehand. We're probably getting close to a stable interface now. At that time
--- for the first time I considered making a whole copy and patch the other functions
--- too as we need an extra nesting model. However, I don't want to maintain too
--- much. An unfortunate change in 3.03 is that no longer a script can be specified.
--- This means that instead of loading the extensions via the properties file, we now
--- need to load them in our own lexers, unless of course we replace lexer.lua
--- completely (which adds another installation issue).
---
--- Another change has been that _LEXERHOME is no longer available. It looks like
--- more and more functionality gets dropped so maybe at some point we need to ship
--- our own dll/so files. For instance, I'd like to have access to the current
--- filename and other SciTE properties. We could then cache some info with each
--- file, if only we had knowledge of what file we're dealing with. This all makes a
--- nice installation more complex and (worse) makes it hard to share files between
--- different editors usign s similar directory structure.
---
--- For huge files folding can be pretty slow and I do have some large ones that I
--- keep open all the time. Loading is normally no ussue, unless one has remembered
--- the status and the cursor is at the last line of a 200K line file. Optimizing the
--- fold function brought down loading of char-def.lua from 14 sec => 8 sec.
--- Replacing the word_match function and optimizing the lex function gained another
--- 2+ seconds. A 6 second load is quite ok for me. The changed lexer table structure
--- (no subtables) brings loading down to a few seconds.
+-- When at some point it became possible to have an LPEG lexer in SCITE (by using the TEXTADEPT dll) I figured
+-- out a mix of what we had and what is needed there. The lexers that came with the dll were quite slow so in
+-- order to deal with the large \LUA\ data files I rewrote the lexing so that it did work with the dll but was
+-- useable otherwise too. There are quite some comments in the older files that explain these steps. However, it
+-- never became pretty and didn't always looked the way I wanted (read: more in tune with how we use LUA in
+-- CONTEXT). Over time the plugin evolved and the code was adapted (to some extend it became more like we already
+-- had) but when SCITE moved to version 5 (as part of a C++ update) and the dll again changed it became clear
+-- that we had to come up with a different approach. Not only the dll had to be kept in sync, but we also had to
+-- keep adapting interfaces. When SCITE changed to a new lexer framework some of the properties setup changed
+-- but after adapting that it still failed to load. I noticed some new directory scanning in the dll code which
+-- probably interferes with the weay we load. (I probably need to look into that but adapting the directory
+-- structure and adding some cheats is not what I like to do.)
--
--- When the lexer path is copied to the TextAdept lexer path, and the theme
--- definition to theme path (as lexer.lua), the lexer works there as well. Although
--- ... when I decided to check the state of TextAdept I had to adapt some loader
--- code. The solution is not pretty but works and also permits overloading. When I
--- have time and motive I will make a proper setup file to tune the look and feel a
--- bit more than we do now. The TextAdept editor nwo has tabs and a console so it
--- has become more useable for me (it's still somewhat slower than SciTE).
--- Interesting is that the jit version of TextAdept crashes on lexing large files
--- (and does not feel faster either; maybe a side effect of known limitations as we
--- know that Luajit is more limited than stock Lua).
+-- The original plan was to have TEXTADEPT as fallback but at the pace it was evolving it was not something we
+-- could use yet. Because it was meant to be configurable we even had a stripped down, tuned for CONTEXT related
+-- document processing, interface defined. After all it is good to have a fallback in case SCITE fails. But keeping
+-- up with the changing interfaces made clear that it was not really meant for this (replacing components is hard
+-- and I assume it's more about adding stuff to the shipped editor, but more and more features is not what we need:
+-- editors quickly become too loaded by confusing features that make no sense when editing documents. We need
+-- something that is easy to use for novice (and occasional) users and SCITE always has been perfect for that. The
+-- nice thing about TEXTADEPT is that it supports more platforms, the nice thing about SCITE is that it is stable
+-- and small. I understand that the interplay between the scintilla and lexzilla and lexlpeg is subtle but because
+-- of that using it generic (other than texadept) is hard.
--
--- Function load(lexer_name) starts with _lexers.WHITESPACE = lexer_name ..
--- '_whitespace' which means that we need to have it frozen at the moment we load
--- another lexer. Because spacing is used to revert to a parent lexer we need to
--- make sure that we load children as late as possible in order not to get the wrong
--- whitespace trigger. This took me quite a while to figure out (not being that
--- familiar with the internals). The lex and fold functions have been optimized. It
--- is a pitty that there is no proper print available. Another thing needed is a
--- default style in our own theme style definition, as otherwise we get wrong nested
--- lexers, especially if they are larger than a view. This is the hardest part of
--- getting things right.
+-- So, the question was: how to proceed. The main component missing in SCITE's LUA interface is LPEG. By adding
+-- that, plus a few bytewise styler helpers, I was able to use the lexers without the dll. The advantage of using
+-- the built in methods is that we (1) can use the same LUA instance that other script use, (2) have access to all
+-- kind of properties, (3) can have a cleaner implementation (for loading), (4) can make the code look better. In
+-- retrospect I should have done that long ago. In the end it turned out that the new implementaion is just as
+-- fast but also more memory efficient (the dll could occasionally crash on many open files and loading many files
+-- when restarting was pretty slow too probably because of excessive immediate lexing).
--
--- It's a pitty that there is no scintillua library for the OSX version of SciTE.
--- Even better would be to have the scintillua library as integral part of SciTE as
--- that way I could use OSX alongside windows and linux (depending on needs). Also
--- nice would be to have a proper interface to SciTE then because currently the
--- lexer is rather isolated and the Lua version does not provide all standard
--- libraries. It would also be good to have lpeg support in the regular SciTE Lua
--- extension (currently you need to pick it up from someplace else). I keep hoping.
+-- It will take a while to strip out all the artifacts needed for the dll based lexer but we'll get there. Because
+-- we also supported the regular lexers that came with the dll some keys got the names needed there but it no
+-- longer makes sense: we can use the built-in SCITE lexers for those. One of the things that is gone is the
+-- whitespace trickery: we always lex the whole document, as we already did most of the time (the only possible
+-- gain is when one is at the end of a document and then we observed side effects of not enough backtracking).
--
--- With 3.41 the interface changed again so it became time to look into the C++ code
--- and consider compiling and patching myself, something that I like to avoid.
--- Loading is more complicated now as the lexer gets loaded automatically so we have
--- little control over extending the code now. After a few days trying all kind of
--- solutions I decided to follow a different approach: drop in a complete
--- replacement. This of course means that I need to keep track of even more changes
--- (which for sure will happen) but at least I get rid of interferences. Till 3.60
--- the api (lexing and configuration) was simply too unstable across versions which
--- is a pitty because we expect authors to install SciTE without hassle. Maybe in a
--- few years things will have stabelized. Maybe it's also not really expected that
--- one writes lexers at all. A side effect is that I now no longer will use shipped
--- lexers for languages that I made no lexer for, but just the built-in ones in
--- addition to the ConTeXt lpeg lexers. Not that it matters much as the ConTeXt
--- lexers cover what I need (and I can always write more). For editing TeX files one
--- only needs a limited set of lexers (TeX, MetaPost, Lua, BibTeX, C/W, PDF, SQL,
--- etc). I can add more when I want.
+-- I will keep the old files archived so we can always use the (optimized) helpers from those if we ever need
+-- them. I could go back to the code we had before the dll came around but it makes no sense, so for now I just
+-- pruned and rewrote. The lexer definitions are still such that we could load other lexers but that compatbility
+-- has now been dropped so I might clean up that bit too. It's not that hard to write additional lexers if I need
+-- them.
--
--- In fact, the transition to 3.41 was triggered by an unfateful update of Ubuntu
--- which left me with an incompatible SciTE and lexer library and updating was not
--- possible due to the lack of 64 bit libraries. We'll see what the future brings.
--- For now I can use SciTE under wine on linux. The fact that scintillua ships
--- independently is a showstopper.
+-- We assume at least LUA 5.3 now (tests with LUA 5.4 demonstrated a 10% performance gain). I will also make a
+-- helper module that has all the nice CONTEXT functions available. Logging to file is gone because in SCITE we
+-- can write to the output pane. Actually: I'm still waiting for scite to overload that output pain lexer.
--
--- Promissing is that the library now can use another Lua instance so maybe some day
--- it will get properly in SciTE and we can use more clever scripting.
+-- As mentioned, the dll based lexer uses whitespace to determine where to start and then only lexes what comes
+-- after it. In the mixed lexing that we use that hardly makes sense, because editing before the end still needs
+-- to backtrack. The question then becomes if we really save runtime. Also, we can be nested inside nested which
+-- never worked well but we can do that now. We also use one thems so there is no need to be more clever. We no
+-- longer keep the styles in a lexer simply because we use a consistent set and have plenty of styles in SCITE now.
--
--- In some lexers we use embedded ones even if we could do it directly, The reason
--- is that when the end token is edited (e.g. -->), backtracking to the space before
--- the begin token (e.g. <!--) results in applying the surrounding whitespace which
--- in turn means that when the end token is edited right, backtracking doesn't go
--- back. One solution (in the dll) would be to backtrack several space categories.
--- After all, lexing is quite fast (applying the result is much slower).
+-- The previous versions had way more code because we also could load the lexers shipped with the dll, had quite
+-- some optimizations and caching for older dll's and SCITE limitations, so the real tricks are in these old files.
--
--- For some reason the first blob of text tends to go wrong (pdf and web). It would
--- be nice to have 'whole doc' initial lexing. Quite fishy as it makes it impossible
--- to lex the first part well (for already opened documents) because only a partial
--- text is passed.
+-- We now can avoid the intermediate tables in SCITE and only use them when we lex in CONTEXT. So in the end we're
+-- back where we started more than a decade ago. It's a pitty that we dropped TEXTADEPT support but it was simply
+-- too hard to keep up. So be it. Maybe some day ... after all we still have the old code.
--
--- So, maybe I should just write this from scratch (assuming more generic usage)
--- because after all, the dll expects just tables, based on a string. I can then
--- also do some more aggressive resource sharing (needed when used generic).
+-- We had the lexers namespace plus additional tables and functions in the lexerx.context namespace in order not to
+-- overload 'original' functionality but the context subtable could go away.
--
--- I think that nested lexers are still bugged (esp over longer ranges). It never
--- was robust or maybe it's simply not meant for too complex cases (well, it
--- probably *is* tricky material). The 3.24 version was probably the best so far.
--- The fact that styles bleed between lexers even if their states are isolated is an
--- issue. Another issus is that zero characters in the text passed to the lexer can
--- mess things up (pdf files have them in streams).
---
--- For more complex 'languages', like web or xml, we need to make sure that we use
--- e.g. 'default' for spacing that makes up some construct. Ok, we then still have a
--- backtracking issue but less.
---
--- Good news for some ConTeXt users: there is now a scintillua plugin for notepad++
--- and we ship an ini file for that editor with some installation instructions
--- embedded. Also, TextAdept has a console so that we can run realtime. The spawner
--- is still not perfect (sometimes hangs) but it was enough reason to spend time on
--- making our lexer work with TextAdept and create a setup.
---
--- Some bad news. The interface changed (again) in textadept 10, some for the better
--- (but a bit different from what happens here) and some for the worse, especially
--- moving some code to the init file so we now need some bad hacks. I decided to
--- stay with the old method of defining lexers and because the lexer cannot be run
--- in parallel any more (some change in the binary?) I will probably also cleanup
--- code below as we no longer need to be compatible. Unfortunately textadept is too
--- much a moving target to simply kick in some (tex related) production flow (apart
--- from the fact that it doesn't yet have the scite like realtime console). I'll
--- keep an eye on it. Because we don't need many added features I might as well decide
--- to make a lean and mean instance (after all the license permits forking).
-
--- TRACING
---
--- The advantage is that we now can check more easily with regular Lua(TeX). We can
--- also use wine and print to the console (somehow stdout is intercepted there.) So,
--- I've added a bit of tracing. Interesting is to notice that each document gets its
--- own instance which has advantages but also means that when we are spellchecking
--- we reload the word lists each time. (In the past I assumed a shared instance and
--- took some precautions. But I can fix this.)
---
--- TODO
---
--- It would be nice if we could load some ConTeXt Lua modules (the basic set) and
--- then use resolvers and such. But it might not work well with scite.
---
--- The current lexer basics are still a mix between old and new. Maybe I should redo
--- some more. This is probably easier in TextAdept than in SciTE.
---
--- We have to make sure we don't overload ConTeXt definitions when this code is used
--- in ConTeXt. I still have to add some of the goodies that we have there in lexers
--- into these.
---
--- Maybe I should use a special stripped on the one hand and extended version of the
--- dll (stable api) and at least add a bit more interfacing to scintilla.
---
--- I need to investigate if we can use the already built in Lua instance so that we
--- can combine the power of lexing with extensions.
---
--- I need to play with hotspot and other properties like indicators (whatever they
--- are).
---
--- I want to get rid of these lexers.STYLE_XX and lexers.XX things. This is possible
--- when we give up compatibility. Generalize the helpers that I wrote for SciTE so
--- that they also can be used TextAdept.
---
--- I can make an export to ConTeXt, but first I'll redo the code that makes the
--- grammar, as we only seem to need
---
--- lexer._TOKENSTYLES : table
--- lexer._CHILDREN : flag
--- lexer._EXTRASTYLES : table
--- lexer._GRAMMAR : flag
---
--- lexers.load : function
--- lexers.lex : function
---
--- So, if we drop compatibility with other lex definitions, we can make things
--- simpler. However, in the meantime one can just do this:
---
--- context --extra=listing --scite [--compact --verycompact] somefile.tex
---
--- and get a printable document. So, this todo is a bit obsolete.
---
--- Properties is an ugly mess ... due to chages in the interface we're now left
--- with some hybrid that sort of works ok
+-- Performance: I decided to go for whole document lexing every time which is fast enough for what we want. If a
+-- file is very (!) large one can always choose to "none" lexer in the interface. The advantage of whole parsing
+-- is that it is more robust than wildguessing on whitespace (which can fail occasionally), that we are less likely
+-- to crash after being in the editor for a whole day, and that preamble scanning etc is now more reliable. If
+-- needed I can figure out some gain (but a new and faster machine makes more sense). There is optional partial
+-- document lexing (under testing). In any case, the former slow loading many documents at startup delay is gone
+-- now (somehow it looked like all tabs were lexed when a document was opened).
--- textadept: buffer:colourise(0,-1)
+local global = _G
local lpeg = require("lpeg")
-local global = _G
-local find, gmatch, match, lower, upper, gsub, sub, format, byte = string.find, string.gmatch, string.match, string.lower, string.upper, string.gsub, string.sub, string.format, string.byte
+if lpeg.setmaxstack then lpeg.setmaxstack(1000) end
+
+local gmatch, match, lower, upper, gsub, format = string.gmatch, string.match, string.lower, string.upper, string.gsub, string.format
local concat, sort = table.concat, table.sort
-local type, next, setmetatable, rawset, tonumber, tostring = type, next, setmetatable, rawset, tonumber, tostring
-local R, P, S, V, C, Cp, Cs, Ct, Cmt, Cc, Cf, Cg, Carg = lpeg.R, lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Cp, lpeg.Cs, lpeg.Ct, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Carg
+local type, next, setmetatable, tostring = type, next, setmetatable, tostring
+local R, P, S, C, Cp, Ct, Cmt, Cc, Cf, Cg, Cs = lpeg.R, lpeg.P, lpeg.S, lpeg.C, lpeg.Cp, lpeg.Ct, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Cs
local lpegmatch = lpeg.match
-local usage = (textadept and "textadept") or (resolvers and "context") or "scite"
-local nesting = 0
-local output = nil
-
------ print = textadept and ui and ui.print or print -- crashes when ui is not yet defined
-
-local function print(...)
- if not output then
- output = io.open("lexer.log","w")
- end
- output:write(...,"\n")
- output:flush()
-end
-
-local function report(fmt,str,...)
- if log then
- if str then
- fmt = format(fmt,str,...)
- end
- print(format("scite lpeg lexer > %s > %s",nesting == 0 and "-" or nesting,fmt))
- end
-end
-
-local function inform(...)
- if log and trace then
- report(...)
- end
-end
-
-inform("loading context lexer module (global table: %s)",tostring(global))
-
-do
-
- local floor = math and math.floor
- local format = format
- local tonumber = tonumber
-
- if not floor then
-
- if tonumber(string.match(_VERSION,"%d%.%d")) < 5.3 then
- floor = function(n)
- return tonumber(format("%d",n))
- end
- else
- -- 5.3 has a mixed number system and format %d doesn't work with
- -- floats any longer ... no fun
- floor = function(n)
- return (n - n % 1)
- end
- end
-
- math = math or { }
-
- math.floor = floor
-
- end
-
-end
+local usage = resolvers and "context" or "scite"
+local trace = false
+local collapse = false -- can save some 15% (maybe easier on scintilla)
-local floor = math.floor
+local lexers = { }
+local styles = { }
+local numbers = { }
+local helpers = { }
+local patterns = { }
+local usedlexers = { }
-if not package.searchpath then
+lexers.usage = usage
- -- Unfortunately the io library is only available when we end up
- -- in this branch of code.
+lexers.helpers = helpers
+lexers.styles = styles
+lexers.numbers = numbers
+lexers.patterns = patterns
- inform("using adapted function 'package.searchpath' (if used at all)")
+-- Maybe at some point I will just load the basic mtx toolkit which gives a lot of benefits but for now we
+-- do with poor mans copies.
+--
+-- Some basic reporting.
- function package.searchpath(name,path)
- local tried = { }
- for part in gmatch(path,"[^;]+") do
- local filename = gsub(part,"%?",name)
- local f = io.open(filename,"r")
- if f then
- inform("file found on path: %s",filename)
- f:close()
- return filename
- end
- tried[#tried + 1] = format("no file '%s'",filename)
- end
- -- added: local path .. for testing
- local f = io.open(filename,"r")
- if f then
- inform("file found on current path: %s",filename)
- f:close()
- return filename
- end
- --
- tried[#tried + 1] = format("no file '%s'",filename)
- return nil, concat(tried,"\n")
+local report = logs and logs.reporter("scite lpeg lexer") or function(fmt,str,...)
+ if str then
+ fmt = format(fmt,str,...)
end
-
+ print(format("scite lpeg lexer > %s",fmt))
end
-local lexers = { }
-local context = { }
-local helpers = { }
-lexers.context = context
-lexers.helpers = helpers
-
-local patterns = { }
-context.patterns = patterns -- todo: lexers.patterns
+report("loading context lexer module")
-context.report = report
-context.inform = inform
-
-lexers.LEXERPATH = package.path -- can be multiple paths separated by ;
-
-if resolvers then
- -- todo: set LEXERPATH
- -- todo: set report
-end
+lexers.report = report
local function sortedkeys(hash) -- simple version, good enough for here
local t, n = { }, 0
@@ -459,505 +146,7 @@ end
helpers.sortedkeys = sortedkeys
-local usedlexers = { }
-local parent_lexer = nil
-
--- The problem with styles is that there is some nasty interaction with scintilla
--- and each version of lexer dll/so has a different issue. So, from now on we will
--- just add them here. There is also a limit on some 30 styles. Maybe I should
--- hash them in order to reuse.
-
--- todo: work with proper hashes and analyze what styles are really used by a
--- lexer
-
-local default = {
- "nothing", "whitespace", "comment", "string", "number", "keyword",
- "identifier", "operator", "error", "preprocessor", "constant", "variable",
- "function", "type", "label", "embedded",
- "quote", "special", "extra", "reserved", "okay", "warning",
- "command", "internal", "preamble", "grouping", "primitive", "plain",
- "user",
- -- not used (yet) .. we cross the 32 boundary so had to patch the initializer, see (1)
- "char", "class", "data", "definition", "invisible", "regex",
- "standout", "tag",
- "text",
-}
-
-local predefined = {
- "default", "linenumber", "bracelight", "bracebad", "controlchar",
- "indentguide", "calltip",
- -- seems new
- "folddisplaytext"
-}
-
--- Bah ... ugly ... nicer would be a proper hash .. we now have properties
--- as well as STYLE_* and some connection between them ... why .. ok, we
--- could delay things but who cares. Anyway, at this moment the properties
--- are still unknown.
-
-local function preparestyles(list)
- local reverse = { }
- for i=1,#list do
- local k = list[i]
- local K = upper(k)
- local s = "style." .. k
- lexers[K] = k -- is this used
- lexers["STYLE_"..K] = "$(" .. k .. ")"
- reverse[k] = true
- end
- return reverse
-end
-
-local defaultstyles = preparestyles(default)
-local predefinedstyles = preparestyles(predefined)
-
--- These helpers are set afterwards so we delay their initialization ... there
--- is no need to alias each time again and this way we can more easily adapt
--- to updates.
-
--- These keep changing (values, functions, tables ...) so we nee to check these
--- with each update. Some of them are set in the loader (the require 'lexer' is
--- in fact not a real one as the lexer code is loaded in the dll). It's also not
--- getting more efficient.
-
--- FOLD_BASE = lexers.FOLD_BASE or SC_FOLDLEVELBASE
--- FOLD_HEADER = lexers.FOLD_HEADER or SC_FOLDLEVELHEADERFLAG
--- FOLD_BLANK = lexers.FOLD_BLANK or SC_FOLDLEVELWHITEFLAG
--- get_style_at = lexers.get_style_at or GetStyleAt
--- get_indent_amount = lexers.get_indent_amount or GetIndentAmount
--- get_property = lexers.get_property or GetProperty
--- get_fold_level = lexers.get_fold_level or GetFoldLevel
-
--- It needs checking: do we have access to all properties now? I'll clean
--- this up anyway as I want a simple clean and stable model.
-
--- This is somewhat messy. The lexer dll provides some virtual fields:
---
--- + property
--- + property_int
--- + style_at
--- + fold_level
--- + indent_amount
---
--- but for some reasons not:
---
--- + property_expanded
---
--- As a consequence we need to define it here because otherwise the
--- lexer will crash. The fuzzy thing is that we don't have to define
--- the property and property_int tables but we do have to define the
--- expanded beforehand. The folding properties are no longer interfaced
--- so the interface to scite is now rather weak (only a few hard coded
--- properties).
-
-local FOLD_BASE = 0
-local FOLD_HEADER = 0
-local FOLD_BLANK = 0
-
-local style_at = { }
-local indent_amount = { }
-local fold_level = { }
-
-local function check_main_properties()
- if not lexers.property then
- lexers.property = { }
- end
- if not lexers.property_int then
- lexers.property_int = setmetatable({ }, {
- __index = function(t,k)
- -- why the tostring .. it relies on lua casting to a number when
- -- doing a comparison
- return tonumber(lexers.property[k]) or 0 -- tostring removed
- end,
- -- __newindex = function(t,k,v)
- -- report("properties are read-only, '%s' is not changed",k)
- -- end,
- })
- end
-end
-
-lexers.property_expanded = setmetatable({ }, {
- __index = function(t,k)
- -- better be safe for future changes .. what if at some point this is
- -- made consistent in the dll ... we need to keep an eye on that
- local property = lexers.property
- if not property then
- check_main_properties()
- end
- --
--- return gsub(property[k],"[$%%]%b()", function(k)
--- return t[sub(k,3,-2)]
--- end)
- local v = property[k]
- if v then
- v = gsub(v,"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end
- return v
- end,
- __newindex = function(t,k,v)
- report("properties are read-only, '%s' is not changed",k)
- end,
-})
-
--- A downward compatible feature but obsolete:
-
--- local function get_property(tag,default)
--- return lexers.property_int[tag] or lexers.property[tag] or default
--- end
-
--- We still want our own properties (as it keeps changing so better play
--- safe from now on). At some point I can freeze them.
-
-local function check_properties(lexer)
- if lexer.properties then
- return lexer
- end
- check_main_properties()
- -- we use a proxy
- local mainproperties = lexers.property
- local properties = { }
- local expanded = setmetatable({ }, {
- __index = function(t,k)
- return gsub(properties[k] or mainproperties[k],"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end,
- })
- lexer.properties = setmetatable(properties, {
- __index = mainproperties,
- __call = function(t,k,default) -- expands
- local v = expanded[k]
- local t = type(default)
- if t == "number" then
- return tonumber(v) or default
- elseif t == "boolean" then
- return v == nil and default or v
- else
- return v or default
- end
- end,
- })
- return lexer
-end
-
--- do
--- lexers.property = { foo = 123, red = "R" }
--- local a = check_properties({}) print("a.foo",a.properties.foo)
--- a.properties.foo = "bar" print("a.foo",a.properties.foo)
--- a.properties.foo = "bar:$(red)" print("a.foo",a.properties.foo) print("a.foo",a.properties("foo"))
--- end
-
-local function set(value,default)
- if value == 0 or value == false or value == "0" then
- return false
- elseif value == 1 or value == true or value == "1" then
- return true
- else
- return default
- end
-end
-
-local function check_context_properties()
- local property = lexers.property -- let's hope that this stays
- log = set(property["lexer.context.log"], log)
- trace = set(property["lexer.context.trace"], trace)
- detail = set(property["lexer.context.detail"], detail)
- show = set(property["lexer.context.show"], show)
- collapse = set(property["lexer.context.collapse"],collapse)
- inspect = set(property["lexer.context.inspect"], inspect)
-end
-
-function context.registerproperties(p) -- global
- check_main_properties()
- local property = lexers.property -- let's hope that this stays
- for k, v in next, p do
- property[k] = v
- end
- check_context_properties()
-end
-
-context.properties = setmetatable({ }, {
- __index = lexers.property,
- __newindex = function(t,k,v)
- check_main_properties()
- lexers.property[k] = v
- check_context_properties()
- end,
-})
-
--- We want locals to we set them delayed. Once.
-
-local function initialize()
- FOLD_BASE = lexers.FOLD_BASE
- FOLD_HEADER = lexers.FOLD_HEADER
- FOLD_BLANK = lexers.FOLD_BLANK
- --
- style_at = lexers.style_at -- table
- indent_amount = lexers.indent_amount -- table
- fold_level = lexers.fold_level -- table
- --
- check_main_properties()
- --
- initialize = nil
-end
-
--- Style handler.
---
--- The property table will be set later (after loading) by the library. The
--- styleset is not needed any more as we predefine all styles as defaults
--- anyway (too bug sensitive otherwise).
-
-local function tocolors(colors)
- local colorset = { }
- local property_int = lexers.property_int or { }
- for k, v in next, colors do
- if type(v) == "table" then
- local r, g, b = v[1], v[2], v[3]
- if r and g and b then
- v = tonumber(format("%02X%02X%02X",b,g,r),16) or 0 -- hm
- elseif r then
- v = tonumber(format("%02X%02X%02X",r,r,r),16) or 0
- else
- v = 0
- end
- end
- colorset[k] = v
- property_int["color."..k] = v
- end
- return colorset
-end
-
-local function toproperty(specification)
- local serialized = { }
- for key, value in next, specification do
- if value == true then
- serialized[#serialized+1] = key
- elseif type(value) == "table" then
- local r, g, b = value[1], value[2], value[3]
- if r and g and b then
- value = format("#%02X%02X%02X",r,g,b) or "#000000"
- elseif r then
- value = format("#%02X%02X%02X",r,r,r) or "#000000"
- else
- value = "#000000"
- end
- serialized[#serialized+1] = key .. ":" .. value
- else
- serialized[#serialized+1] = key .. ":" .. tostring(value)
- end
- end
- return concat(serialized,",")
-end
-
-local function tostyles(styles)
- local styleset = { }
- local property = lexers.property or { }
- for k, v in next, styles do
- v = toproperty(v)
- styleset[k] = v
- property["style."..k] = v
- end
- return styleset
-end
-
-context.toproperty = toproperty
-context.tostyles = tostyles
-context.tocolors = tocolors
-
--- If we had one instance/state of Lua as well as all regular libraries
--- preloaded we could use the context base libraries. So, let's go poor-
--- mans solution now.
-
-function context.registerstyles(styles)
- local styleset = tostyles(styles)
- context.styles = styles
- context.styleset = styleset
- if detail then
- local t, n = sortedkeys(styleset)
- local template = " %-" .. n .. "s : %s"
- report("initializing styleset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,styleset[k])
- end
- elseif trace then
- report("initializing styleset")
- end
-end
-
-function context.registercolors(colors) -- needed for textadept
- local colorset = tocolors(colors)
- context.colors = colors
- context.colorset = colorset
- if detail then
- local t, n = sortedkeys(colorset)
- local template = " %-" .. n .. "s : %i"
- report("initializing colorset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,colorset[k])
- end
- elseif trace then
- report("initializing colorset")
- end
-end
-
--- Some spell checking related stuff. Unfortunately we cannot use a path set
--- by property. This will get a hook for resolvers.
-
-local locations = {
- "context/lexers", -- context lexers
- "context/lexers/data", -- context lexers
- "../lexers", -- original lexers
- "../lexers/data", -- original lexers
- ".", -- whatever
- "./data", -- whatever
-}
-
--- local function collect(name)
--- local root = gsub(lexers.LEXERPATH or ".","/.-lua$","") .. "/" -- this is a horrible hack
--- -- report("module '%s' locating '%s'",tostring(lexers),name)
--- for i=1,#locations do
--- local fullname = root .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
--- if trace then
--- report("attempt to locate '%s'",fullname)
--- end
--- local okay, result = pcall(function () return dofile(fullname) end)
--- if okay then
--- return result, fullname
--- end
--- end
--- end
-
-local collect
-
-if usage == "context" then
-
- collect = function(name)
- return require(name), name
- end
-
-else
-
- collect = function(name)
- local rootlist = lexers.LEXERPATH or "."
- for root in gmatch(rootlist,"[^;]+") do
- local root = gsub(root,"/[^/]-lua$","")
- for i=1,#locations do
- local fullname = root .. "/" .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
- if trace then
- report("attempt to locate '%s'",fullname)
- end
- local okay, result = pcall(function () return dofile(fullname) end)
- if okay then
- return result, fullname
- end
- end
- end
- -- return require(name), name
- end
-
-end
-
-function context.loadluafile(name)
- local data, fullname = collect(name)
- if data then
- if trace then
- report("lua file '%s' has been loaded",fullname)
- end
- return data, fullname
- end
- if not textadept then
- report("unable to load lua file '%s'",name)
- end
-end
-
--- in fact we could share more as we probably process the data but then we need
--- to have a more advanced helper
-
-local cache = { }
-
-function context.loaddefinitions(name)
- local data = cache[name]
- if data then
- if trace then
- report("reusing definitions '%s'",name)
- end
- return data
- elseif trace and data == false then
- report("definitions '%s' were not found",name)
- end
- local data, fullname = collect(name)
- if not data then
- if not textadept then
- report("unable to load definition file '%s'",name)
- end
- data = false
- elseif trace then
- report("definition file '%s' has been loaded",fullname)
- if detail then
- local t, n = sortedkeys(data)
- local template = " %-" .. n .. "s : %s"
- for i=1,#t do
- local k = t[i]
- local v = data[k]
- if type(v) ~= "table" then
- report(template,k,tostring(v))
- elseif #v > 0 then
- report(template,k,#v)
- else
- -- no need to show hash
- end
- end
- end
- end
- cache[name] = data
- return type(data) == "table" and data
-end
-
--- A bit of regression in textadept > 10 so updated ... done a bit different.
--- We don't use this in the context lexers anyway.
-
-function context.word_match(words,word_chars,case_insensitive)
- -- used to be proper tables ...
- if type(words) == "string" then
- local clean = gsub(words,"%-%-[^\n]+","")
- local split = { }
- for s in gmatch(clean,"%S+") do
- split[#split+1] = s
- end
- words = split
- end
- local list = { }
- for i=1,#words do
- list[words[i]] = true
- end
- if case_insensitive then
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- local chars = S(word_chars or "")
- for i=1,#words do
- chars = chars + S(words[i])
- end
- local match = case_insensitive and
- function(input,index,word)
- -- We can speed mixed case if needed.
- return (list[word] or list[lower(word)]) and index or nil
- end
- or
- function(input,index,word)
- return list[word] and index or nil
- end
- return Cmt(chars^1,match)
-end
-
--- Patterns are grouped in a separate namespace but the regular lexers expect
--- shortcuts to be present in the lexers library. Maybe I'll incorporate some
--- of l-lpeg later.
+-- begin of patterns (we should take them from l-lpeg.lua)
do
@@ -1031,1226 +220,48 @@ do
return (index == 1 or lpegmatch(endof,input,index-1)) and index
end)
- -- These are the expected ones for other lexers. Maybe all in own namespace
- -- and provide compatibility layer. or should I just remove them?
-
- lexers.any = anything
- lexers.ascii = ascii
- lexers.extend = extend
- lexers.alpha = alpha
- lexers.digit = digit
- lexers.alnum = alpha + digit
- lexers.lower = lower
- lexers.upper = upper
- lexers.xdigit = hexdigit
- lexers.cntrl = control
- lexers.graph = R("!~")
- lexers.print = R(" ~")
- lexers.punct = R("!/", ":@", "[\'", "{~")
- lexers.space = space
- lexers.newline = S("\r\n\f")^1
- lexers.nonnewline = 1 - lexers.newline
- lexers.nonnewline_esc = 1 - (lexers.newline + '\\') + backslash * anything
- lexers.dec_num = decimal
- lexers.oct_num = octal
- lexers.hex_num = hexadecimal
- lexers.integer = integer
- lexers.float = float
- lexers.word = (alpha + "_") * (alpha + digit + "_")^0 -- weird, why digits
-
-end
-
--- end of patterns
-
-function context.exact_match(words,word_chars,case_insensitive)
- local characters = concat(words)
- local pattern -- the concat catches _ etc
- if word_chars == true or word_chars == false or word_chars == nil then
- word_chars = ""
- end
- if type(word_chars) == "string" then
- pattern = S(characters) + patterns.idtoken
- if case_insensitive then
- pattern = pattern + S(upper(characters)) + S(lower(characters))
- end
- if word_chars ~= "" then
- pattern = pattern + S(word_chars)
- end
- elseif word_chars then
- pattern = word_chars
- end
- if case_insensitive then
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[lower(k)] = v
- end
- else
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[lower(s)] -- and i or nil
- end)
- else
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[k] = v
- end
- else
- for i=1,#words do
- list[words[i]] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[s] -- and i or nil
- end)
- end
-end
-
-function context.just_match(words)
- local p = P(words[1])
- for i=2,#words do
- p = p + P(words[i])
- end
- return p
-end
-
--- spell checking (we can only load lua files)
---
--- return {
--- min = 3,
--- max = 40,
--- n = 12345,
--- words = {
--- ["someword"] = "someword",
--- ["anotherword"] = "Anotherword",
--- },
--- }
-
-local lists = { }
-local disabled = false
-
-function context.disablewordcheck()
- disabled = true
-end
-
-function context.setwordlist(tag,limit) -- returns hash (lowercase keys and original values)
- if not tag or tag == "" then
- return false, 3
- end
- local list = lists[tag]
- if not list then
- list = context.loaddefinitions("spell-" .. tag)
- if not list or type(list) ~= "table" then
- if not textadept then
- report("invalid spell checking list for '%s'",tag)
- end
- list = { words = false, min = 3 }
- else
- list.words = list.words or false
- list.min = list.min or 3
- end
- lists[tag] = list
- end
- if trace then
- report("enabling spell checking for '%s' with minimum '%s'",tag,list.min)
- end
- return list.words, list.min
-end
-
-patterns.wordtoken = R("az","AZ","\127\255")
-patterns.wordpattern = patterns.wordtoken^3 -- todo: if limit and #s < limit then
-
-function context.checkedword(validwords,validminimum,s,i) -- ,limit
- if not validwords then -- or #s < validminimum then
- return true, "text", i -- true, "default", i
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- elseif upper(s) == s then
- return true, "warning", i -- probably a logo or acronym
- else
- return true, "error", i
- end
- end
- end
-end
-
-function context.styleofword(validwords,validminimum,s) -- ,limit
- if not validwords or #s < validminimum then
- return "text"
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- elseif upper(s) == s then
- return "warning" -- probably a logo or acronym
- else
- return "error"
- end
- end
- end
-end
-
--- overloaded functions
-
-local h_table, b_table, n_table = { }, { }, { } -- from the time small tables were used (optimization)
-
-setmetatable(h_table, { __index = function(t,level) local v = { level, FOLD_HEADER } t[level] = v return v end })
-setmetatable(b_table, { __index = function(t,level) local v = { level, FOLD_BLANK } t[level] = v return v end })
-setmetatable(n_table, { __index = function(t,level) local v = { level } t[level] = v return v end })
-
-local newline = patterns.newline
-local p_yes = Cp() * Cs((1-newline)^1) * newline^-1
-local p_nop = newline
-
-local folders = { }
-
--- Snippets from the > 10 code .. but we do things different so ...
-
-local function fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- local folder = folders[lexer]
- if not folder then
- --
- local pattern, folds, text, start_pos, line_num, prev_level, current_level
- --
- local fold_symbols = lexer._foldsymbols
- local fold_pattern = lexer._foldpattern -- use lpeg instead (context extension)
- --
- -- textadept >= 10
- --
- -- local zerosumlines = lexer.property_int["fold.on.zero.sum.lines"] > 0 -- not done
- -- local compact = lexer.property_int['fold.compact'] > 0 -- not done
- -- local lowercase = lexer._CASEINSENSITIVEFOLDPOINTS -- useless (utf will distort)
- --
- if fold_pattern then
- -- if no functions are found then we could have a faster one
- fold_pattern = Cp() * C(fold_pattern) / function(s,match)
- local symbols = fold_symbols[style_at[start_pos + s]]
- if symbols then
- local l = symbols[match]
- if l then
- current_level = current_level + l
- end
- end
- end
- local action_y = function()
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = ((fold_pattern + (1-newline))^1 * newline / action_y + newline/action_n)^0
-
- else
- -- the traditional one but a bit optimized
- local fold_symbols_patterns = fold_symbols._patterns
- local action_y = function(pos,line)
- for j=1, #fold_symbols_patterns do
- for s, match in gmatch(line,fold_symbols_patterns[j]) do -- "()(" .. patterns[i] .. ")"
- local symbols = fold_symbols[style_at[start_pos + pos + s - 1]]
- local l = symbols and symbols[match]
- local t = type(l)
- if t == "number" then
- current_level = current_level + l
- elseif t == "function" then
- current_level = current_level + l(text, pos, line, s, match)
- end
- end
- end
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = (p_yes/action_y + p_nop/action_n)^0
- end
- --
- local reset_parser = lexer._reset_parser
- --
- folder = function(_text_,_start_pos_,_start_line_,_start_level_)
- if reset_parser then
- reset_parser()
- end
- folds = { }
- text = _text_
- start_pos = _start_pos_
- line_num = _start_line_
- prev_level = _start_level_
- current_level = prev_level
- lpegmatch(pattern,text)
- -- make folds collectable
- local t = folds
- folds = nil
- return t
- end
- folders[lexer] = folder
- end
- return folder(text,start_pos,start_line,start_level,lexer)
-end
-
-local folds, current_line, prev_level
-
-local function action_y()
- local current_level = FOLD_BASE + indent_amount[current_line]
- if current_level > prev_level then -- next level
- local i = current_line - 1
- local f
- while true do
- f = folds[i]
- if not f then
- break
- elseif f[2] == FOLD_BLANK then
- i = i - 1
- else
- f[2] = FOLD_HEADER -- low indent
- break
- end
- end
- folds[current_line] = { current_level } -- high indent
- elseif current_level < prev_level then -- prev level
- local f = folds[current_line - 1]
- if f then
- f[1] = prev_level -- high indent
- end
- folds[current_line] = { current_level } -- low indent
- else -- same level
- folds[current_line] = { prev_level }
- end
- prev_level = current_level
- current_line = current_line + 1
-end
-
-local function action_n()
- folds[current_line] = { prev_level, FOLD_BLANK }
- current_line = current_line + 1
-end
-
-local pattern = ( S("\t ")^0 * ( (1-patterns.eol)^1 / action_y + P(true) / action_n) * newline )^0
-
-local function fold_by_indentation(text,start_pos,start_line,start_level)
- -- initialize
- folds = { }
- current_line = start_line
- prev_level = start_level
- -- define
- -- -- not here .. pattern binds and local functions are not frozen
- -- analyze
- lpegmatch(pattern,text)
- -- flatten
- for line, level in next, folds do
- folds[line] = level[1] + (level[2] or 0)
- end
- -- done, make folds collectable
- local t = folds
- folds = nil
- return t
-end
-
-local function fold_by_line(text,start_pos,start_line,start_level)
- local folds = { }
- -- can also be lpeg'd
- for _ in gmatch(text,".-\r?\n") do
- folds[start_line] = n_table[start_level] -- { start_level } -- stile tables ? needs checking
- start_line = start_line + 1
- end
- return folds
-end
-
-local threshold_by_lexer = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_parsing = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_indentation = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_line = 512 * 1024 -- we don't know the filesize yet
-
-function context.fold(lexer,text,start_pos,start_line,start_level) -- hm, we had size thresholds .. where did they go
- if text == "" then
- return { }
- end
- if initialize then
- initialize()
- end
- local fold_by_lexer = lexer._fold
- local fold_by_symbols = lexer._foldsymbols
- local filesize = 0 -- we don't know that
- if fold_by_lexer then
- if filesize <= threshold_by_lexer then
- return fold_by_lexer(text,start_pos,start_line,start_level,lexer)
- end
- elseif fold_by_symbols then -- and lexer.properties("fold.by.parsing",1) > 0 then
- if filesize <= threshold_by_parsing then
- return fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYINDENTATION or lexer.properties("fold.by.indentation",1) > 0 then
- if filesize <= threshold_by_indentation then
- return fold_by_indentation(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYLINE or lexer.properties("fold.by.line",1) > 0 then
- if filesize <= threshold_by_line then
- return fold_by_line(text,start_pos,start_line,start_level,lexer)
- end
- end
- return { }
-end
-
--- The following code is mostly unchanged:
-
-local function add_rule(lexer,id,rule) -- unchanged
- if not lexer._RULES then
- lexer._RULES = { }
- lexer._RULEORDER = { }
- end
- lexer._RULES[id] = rule
- lexer._RULEORDER[#lexer._RULEORDER + 1] = id
-end
-
-local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- lexer._RULES[id] = rule
-end
-
-local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- return lexer._RULES[id]
-end
-
--- I finally figured out that adding more styles was an issue because of several
--- reasons:
---
--- + in old versions there was a limit in the amount, so we overran the built-in
--- hard coded scintilla range
--- + then, the add_style function didn't check for already known ones, so again
--- we had an overrun (with some magic that could be avoided)
--- + then, when I messed with a new default set I realized that there is no check
--- in initializing _TOKENSTYLES (here the inspect function helps)
--- + of course it was mostly a side effect of passing all the used styles to the
--- _tokenstyles instead of only the not-default ones but such a thing should not
--- matter (read: intercepted)
---
--- This finally removed a head-ache and was revealed by lots of tracing, which I
--- should have built in way earlier.
-
-local function add_style(lexer,token_name,style) -- changed a bit around 3.41
- -- We don't add styles that are already defined as this can overflow the
- -- amount possible (in old versions of scintilla).
- if defaultstyles[token_name] then
- if trace and detail then
- report("default style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- elseif predefinedstyles[token_name] then
- if trace and detail then
- report("predefined style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- else
- if trace and detail then
- report("adding extra style '%s' as '%s'",token_name,style)
- end
- end
- -- This is unchanged. We skip the dangerous zone.
- local num_styles = lexer._numstyles
- if num_styles == 32 then
- num_styles = num_styles + 8
- end
- if num_styles >= 255 then
- report("there can't be more than %s styles",255)
- end
- lexer._TOKENSTYLES[token_name] = num_styles
- lexer._EXTRASTYLES[token_name] = style
- lexer._numstyles = num_styles + 1
- -- hm, the original (now) also copies to the parent ._lexer
-end
-
-local function check_styles(lexer)
- -- Here we also use a check for the dangerous zone. That way we can have a
- -- larger default set. The original code just assumes that #default is less
- -- than the dangerous zone's start.
- local numstyles = 0
- local tokenstyles = { }
- for i=1, #default do
- if numstyles == 32 then
- numstyles = numstyles + 8
- end
- tokenstyles[default[i]] = numstyles
- numstyles = numstyles + 1
- end
- -- Unchanged.
- for i=1, #predefined do
- tokenstyles[predefined[i]] = i + 31
- end
- lexer._TOKENSTYLES = tokenstyles
- lexer._numstyles = numstyles
- lexer._EXTRASTYLES = { }
- return lexer
-end
-
--- At some point an 'any' append showed up in the original code ...
--- but I see no need to catch that case ... beter fix the specification.
---
--- hm, why are many joined twice
-
-local function join_tokens(lexer) -- slightly different from the original (no 'any' append)
- local patterns = lexer._RULES
- local order = lexer._RULEORDER
- -- report("lexer: %s, tokens: %s",lexer._NAME,table.concat(order," + "))
- if patterns and order then
- local token_rule = patterns[order[1]] -- normally whitespace
- for i=2,#order do
- token_rule = token_rule + patterns[order[i]]
- end
- if lexer._TYPE ~= "context" then
- token_rule = token_rule + lexers.token(lexers.DEFAULT, patterns.any)
- end
- lexer._TOKENRULE = token_rule
- return token_rule
- else
- return P(1)
- end
-end
-
--- hm, maybe instead of a grammer just a flat one
-
-local function add_lexer(grammar, lexer) -- mostly the same as the original
- local token_rule = join_tokens(lexer)
- local lexer_name = lexer._NAME
- local children = lexer._CHILDREN
- for i=1,#children do
- local child = children[i]
- if child._CHILDREN then
- add_lexer(grammar, child)
- end
- local child_name = child._NAME
- local rules = child._EMBEDDEDRULES[lexer_name]
- local rules_token_rule = grammar["__" .. child_name] or rules.token_rule
- local pattern = (-rules.end_rule * rules_token_rule)^0 * rules.end_rule^-1
- grammar[child_name] = pattern * V(lexer_name)
- local embedded_child = "_" .. child_name
- grammar[embedded_child] = rules.start_rule * pattern
- token_rule = V(embedded_child) + token_rule
- end
- if trace then
- report("adding lexer '%s' with %s children",lexer_name,#children)
- end
- grammar["__" .. lexer_name] = token_rule
- grammar[lexer_name] = token_rule^0
-end
-
-local function build_grammar(lexer,initial_rule) -- same as the original
- local children = lexer._CHILDREN
- local lexer_name = lexer._NAME
- local preamble = lexer._preamble
- local grammar = lexer._grammar
- -- if grammar then
- -- -- experiment
- -- elseif children then
- if children then
- if not initial_rule then
- initial_rule = lexer_name
- end
- grammar = { initial_rule }
- add_lexer(grammar, lexer)
- lexer._INITIALRULE = initial_rule
- grammar = Ct(P(grammar))
- if trace then
- report("building grammar for '%s' with whitespace '%s'and %s children",lexer_name,lexer.whitespace or "?",#children)
- end
- else
- grammar = Ct(join_tokens(lexer)^0)
- if trace then
- report("building grammar for '%s' with whitespace '%s'",lexer_name,lexer.whitespace or "?")
- end
- end
- if preamble then
- grammar = preamble^-1 * grammar
- end
- lexer._GRAMMAR = grammar
-end
-
--- So far. We need these local functions in the next one.
-
-local lineparsers = { }
-
-local maxmatched = 100
-
-local function collapsed(t)
- local lasttoken = nil
- local lastindex = nil
- for i=1,#t,2 do
- local token = t[i]
- local position = t[i+1]
- if token == lasttoken then
- t[lastindex] = position
- elseif lastindex then
- lastindex = lastindex + 1
- t[lastindex] = token
- lastindex = lastindex + 1
- t[lastindex] = position
- lasttoken = token
- else
- lastindex = i+1
- lasttoken = token
- end
- end
- for i=#t,lastindex+1,-1 do
- t[i] = nil
- end
- return t
-end
-
-local function matched(lexer,grammar,text)
- -- text = string.gsub(text,"\z","!")
- local t = lpegmatch(grammar,text)
- if trace then
- if show then
- report("output of lexer: %s (max %s entries)",lexer._NAME,maxmatched)
- local s = lexer._TOKENSTYLES
- local p = 1
- for i=1,2*maxmatched,2 do
- local n = i + 1
- local ti = t[i]
- local tn = t[n]
- if ti then
- local txt = sub(text,p,tn-1)
- if txt then
- txt = gsub(txt,"[%s]"," ")
- else
- txt = "!no text!"
- end
- report("%4i : %s > %s (%s) (%s)",floor(n/2),ti,tn,s[ti] or "!unset!",txt)
- p = tn
- else
- break
- end
- end
- end
- report("lexer results: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- if collapse then
- t = collapsed(t)
- report("lexer collapsed: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- end
- elseif collapse then
- t = collapsed(t)
- end
- return t
-end
-
--- Todo: make nice generic lexer (extra argument with start/stop commands) for
--- context itself.
---
--- In textadept >= 10 grammar building seem to have changed a bit. So, in retrospect
--- I could better have just dropped compatibility and stick to ctx lexers only.
-
-function context.lex(lexer,text,init_style)
- -- local lexer = global._LEXER
- local grammar = lexer._GRAMMAR
- if initialize then
- initialize()
- end
- if not grammar then
- return { }
- elseif lexer._LEXBYLINE then -- we could keep token
- local tokens = { }
- local offset = 0
- local noftokens = 0
- local lineparser = lineparsers[lexer]
- if not lineparser then -- probably a cmt is more efficient
- lineparser = C((1-newline)^0 * newline) / function(line)
- local length = #line
- local line_tokens = length > 0 and lpegmatch(grammar,line)
- if line_tokens then
- for i=1,#line_tokens,2 do
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i]
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i + 1] + offset
- end
- end
- offset = offset + length
- if noftokens > 0 and tokens[noftokens] ~= offset then
- noftokens = noftokens + 1
- tokens[noftokens] = "default"
- noftokens = noftokens + 1
- tokens[noftokens] = offset + 1
- end
- end
- lineparser = lineparser^0
- lineparsers[lexer] = lineparser
- end
- lpegmatch(lineparser,text)
- return tokens
- elseif lexer._CHILDREN then
- local hash = lexer._HASH -- hm, was _hash
- if not hash then
- hash = { }
- lexer._HASH = hash
- end
- grammar = hash[init_style]
- if grammar then
- lexer._GRAMMAR = grammar
- -- lexer._GRAMMAR = lexer._GRAMMAR or grammar
- else
- for style, style_num in next, lexer._TOKENSTYLES do
- if style_num == init_style then
- -- the name of the lexers is filtered from the whitespace
- -- specification .. weird code, should be a reverse hash
- local lexer_name = match(style,"^(.+)_whitespace") or lexer._NAME
- if lexer._INITIALRULE ~= lexer_name then
- grammar = hash[lexer_name]
- if not grammar then
- build_grammar(lexer,lexer_name)
- grammar = lexer._GRAMMAR
- hash[lexer_name] = grammar
- end
- end
- break
- end
- end
- grammar = grammar or lexer._GRAMMAR
- hash[init_style] = grammar
- end
- if trace then
- report("lexing '%s' with initial style '%s' and %s children", lexer._NAME,init_style,#lexer._CHILDREN or 0)
- end
- return matched(lexer,grammar,text)
- else
- if trace then
- report("lexing '%s' with initial style '%s'",lexer._NAME,init_style)
- end
- return matched(lexer,grammar,text)
- end
-end
-
--- hm, changed in 3.24 .. no longer small table but one table (so we could remove our
--- agressive optimization which worked quite well)
-
-function context.token(name, patt)
- return patt * Cc(name) * Cp()
-end
-
--- The next ones were mostly unchanged (till now), we moved it here when 3.41
--- became close to impossible to combine with cq. overload and a merge was
--- the only solution. It makes later updates more painful but the update to
--- 3.41 was already a bit of a nightmare anyway.
-
--- Loading lexers is rather interwoven with what the dll/so sets and
--- it changes over time. So, we need to keep an eye on changes. One
--- problem that we always faced were the limitations in length of
--- lexer names (as they get app/prepended occasionally to strings with
--- a hard coded limit). So, we always used alternative names and now need
--- to make sure this doesn't clash. As I no longer intend to use shipped
--- lexers I could strip away some of the code in the future, but keeping
--- it as reference makes sense.
-
--- I spend quite some time figuring out why 3.41 didn't work or crashed which
--- is hard when no stdout is available and when the io library is absent. In
--- the end of of the problems was in the _NAME setting. We set _NAME
--- to e.g. 'tex' but load from a file with a longer name, which we do
--- as we don't want to clash with existing files, we end up in
--- lexers not being found.
-
-local whitespaces = { }
-
-local function push_whitespace(name)
- table.insert(whitespaces,lexers.WHITESPACE or "whitespace")
- lexers.WHITESPACE = name .. "_whitespace"
-end
-
-local function pop_whitespace()
- lexers.WHITESPACE = table.remove(whitespaces) or "whitespace"
-end
-
-local function check_whitespace(lexer,name)
- if lexer then
- lexer.whitespace = (name or lexer.name or lexer._NAME) .. "_whitespace"
- end
-end
-
-function context.new(name,filename)
- local lexer = {
- _TYPE = "context",
- --
- _NAME = name, -- used for token building
- _FILENAME = filename, -- for diagnostic purposed
- --
- name = name,
- filename = filename,
- }
- if trace then
- report("initializing lexer tagged '%s' from file '%s'",name,filename or name)
- end
- check_whitespace(lexer)
- check_styles(lexer)
- check_properties(lexer)
- lexer._tokenstyles = context.styleset
- return lexer
-end
-
-local function nolexer(name)
- local lexer = {
- _TYPE = "unset",
- _NAME = name,
- -- _rules = { },
- }
- check_styles(lexer)
- check_whitespace(lexer)
- check_properties(lexer)
- return lexer
-end
-
-local function load_lexer(name,namespace)
- if trace then
- report("loading lexer file '%s'",name)
- end
- push_whitespace(namespace or name) -- for traditional lexers .. no alt_name yet
- local lexer, fullname = context.loadluafile(name)
- pop_whitespace()
- if not lexer then
- report("invalid lexer file '%s'",name)
- elseif trace then
- report("lexer file '%s' has been loaded",fullname)
- end
- if type(lexer) ~= "table" then
- if trace then
- report("lexer file '%s' gets a dummy lexer",name)
- end
- return nolexer(name)
- end
- if lexer._TYPE ~= "context" then
- lexer._TYPE = "native"
- check_styles(lexer)
- check_whitespace(lexer,namespace or name)
- check_properties(lexer)
- end
- if not lexer._NAME then
- lexer._NAME = name -- so: filename
- end
- if name ~= namespace then
- lexer._NAME = namespace
- end
- return lexer
-end
-
--- tracing ...
-
-local function inspect_lexer(lexer,level)
- -- If we had the regular libs available I could use the usual
- -- helpers.
- local parent = lexer._lexer
- lexer._lexer = nil -- prevent endless recursion
- local name = lexer._NAME
- local function showstyles_1(tag,styles)
- local numbers = { }
- for k, v in next, styles do
- numbers[v] = k
- end
- -- sort by number and make number hash too
- local keys = sortedkeys(numbers)
- for i=1,#keys do
- local k = keys[i]
- local v = numbers[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local function showstyles_2(tag,styles)
- local keys = sortedkeys(styles)
- for i=1,#keys do
- local k = keys[i]
- local v = styles[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local keys = sortedkeys(lexer)
- for i=1,#keys do
- local k = keys[i]
- local v = lexer[k]
- report("[%s %s] root key : %s = %s",level,name,k,tostring(v))
- end
- showstyles_1("token style",lexer._TOKENSTYLES)
- showstyles_2("extra style",lexer._EXTRASTYLES)
- local children = lexer._CHILDREN
- if children then
- for i=1,#children do
- inspect_lexer(children[i],level+1)
- end
- end
- lexer._lexer = parent
-end
-
-function context.inspect(lexer)
- inspect_lexer(lexer,0)
-end
-
--- An optional second argument has been introduced so that one can embed a lexer
--- more than once ... maybe something to look into (as not it's done by remembering
--- the start sequence ... quite okay but maybe suboptimal ... anyway, never change
--- a working solution).
-
--- namespace can be automatic: if parent then use name of parent (chain)
-
--- The original lexer framework had a rather messy user uinterface (e.g. moving
--- stuff from _rules to _RULES at some point but I could live with that. Now it uses
--- add_ helpers. But the subsystem is still not clean and pretty. Now, I can move to
--- the add_ but there is no gain in it so we support a mix which gives somewhat ugly
--- code. In fact, there should be proper subtables for this. I might actually do
--- this because we now always overload the normal lexer (parallel usage seems no
--- longer possible). For SciTE we can actually do a conceptual upgrade (more the
--- context way) because there is no further development there. That way we could
--- make even more advanced lexers.
-
-local savedrequire = require
-
-local escapes = {
- ["%"] = "%%",
- ["."] = "%.",
- ["+"] = "%+", ["-"] = "%-", ["*"] = "%*",
- ["["] = "%[", ["]"] = "%]",
- ["("] = "%(", [")"] = "%)",
- -- ["{"] = "%{", ["}"] = "%}"
- -- ["^"] = "%^", ["$"] = "%$",
-}
-
-function context.loadlexer(filename,namespace)
-
- if textadept then
- require = function(name)
- return savedrequire(name == "lexer" and "scite-context-lexer" or name)
- end
- end
-
- nesting = nesting + 1
- if not namespace then
- namespace = filename
- end
- local lexer = usedlexers[namespace] -- we load by filename but the internal name can be short
- if lexer then
- if trace then
- report("reusing lexer '%s'",namespace)
- end
- nesting = nesting - 1
- return lexer
- elseif trace then
- report("loading lexer '%s'",namespace)
- end
- --
- if initialize then
- initialize()
- end
- --
- parent_lexer = nil
- --
- lexer = load_lexer(filename,namespace) or nolexer(filename,namespace)
- usedlexers[filename] = lexer
- --
- if not lexer._rules and not lexer._lexer and not lexer_grammar then -- hmm should be lexer._grammar
- lexer._lexer = parent_lexer
- end
- --
- if lexer._lexer then
- local _l = lexer._lexer
- local _r = lexer._rules
- local _s = lexer._tokenstyles
- if not _l._tokenstyles then
- _l._tokenstyles = { }
- end
- if _r then
- local rules = _l._rules
- local name = lexer.name
- for i=1,#_r do
- local rule = _r[i]
- rules[#rules + 1] = {
- name .. "_" .. rule[1],
- rule[2],
- }
- end
- end
- if _s then
- local tokenstyles = _l._tokenstyles
- for token, style in next, _s do
- tokenstyles[token] = style
- end
- end
- lexer = _l
- end
- --
- local _r = lexer._rules
- local _g = lexer._grammar
- -- if _r or _g then
- if _r then
- local _s = lexer._tokenstyles
- if _s then
- for token, style in next, _s do
- add_style(lexer, token, style)
- end
- end
- if _r then
- for i=1,#_r do
- local rule = _r[i]
- add_rule(lexer, rule[1], rule[2])
- end
- end
- build_grammar(lexer)
- else
- -- other lexers
- build_grammar(lexer)
- end
- --
- add_style(lexer, lexer.whitespace, lexers.STYLE_WHITESPACE)
- --
- local foldsymbols = lexer._foldsymbols
- if foldsymbols then
- local patterns = foldsymbols._patterns
- if patterns then
- for i = 1, #patterns do
- patterns[i] = "()(" .. gsub(patterns[i],".",escapes) .. ")"
- end
- end
- end
- --
- lexer.lex = lexers.lex
- lexer.fold = lexers.fold
- --
- nesting = nesting - 1
- --
- if inspect then
- context.inspect(lexer)
- end
- --
- if textadept then
- require = savedrequire
- end
- --
- return lexer
-end
-
--- I probably need to check this occasionally with the original as I've messed around a bit
--- in the past to get nesting working well as one can hit the max number of styles, get
--- clashes due to fuzzy inheritance etc. so there is some interplay with the other patched
--- code.
-
-function context.embed_lexer(parent, child, start_rule, end_rule) -- mostly the same as the original
- local embeddedrules = child._EMBEDDEDRULES
- if not embeddedrules then
- embeddedrules = { }
- child._EMBEDDEDRULES = embeddedrules
- end
- if not child._RULES then
- local rules = child._rules
- if not rules then
- report("child lexer '%s' has no rules",child._NAME or "unknown")
- rules = { }
- child._rules = rules
- end
- for i=1,#rules do
- local rule = rules[i]
- add_rule(child, rule[1], rule[2])
- end
- end
- embeddedrules[parent._NAME] = {
- ["start_rule"] = start_rule,
- ["token_rule"] = join_tokens(child),
- ["end_rule"] = end_rule
- }
- local children = parent._CHILDREN
- if not children then
- children = { }
- parent._CHILDREN = children
- end
- children[#children + 1] = child
- local tokenstyles = parent._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- parent._tokenstyles = tokenstyles
- end
- local childname = child._NAME
- local whitespace = childname .. "_whitespace"
- tokenstyles[whitespace] = lexers.STYLE_WHITESPACE -- all these STYLE_THINGS will go .. just a proper hash
- if trace then
- report("using whitespace '%s' as trigger for '%s' with property '%s'",whitespace,childname,lexers.STYLE_WHITESPACE)
- end
- local childstyles = child._tokenstyles
- if childstyles then
- for token, style in next, childstyles do
- tokenstyles[token] = style
- end
- end
- -- new, a bit redone, untested, no clue yet what it is for
- local parentsymbols = parent._foldsymbols
- local childsymbols = child ._foldsymbols
- if not parentsymbols then
- parentsymbols = { }
- parent._foldsymbols = parentsymbols
- end
- if childsymbols then
- for token, symbols in next, childsymbols do
- local tokensymbols = parentsymbols[token]
- if not tokensymbols then
- tokensymbols = { }
- parentsymbols[token] = tokensymbols
- end
- for k, v in next, symbols do
- if type(k) == 'number' then
- tokensymbols[#tokensymbols + 1] = v
- elseif not tokensymbols[k] then
- tokensymbols[k] = v
- end
- end
- end
- end
- --
- child._lexer = parent
- parent_lexer = parent
end
--- we now move the adapted code to the lexers namespace
-
-lexers.new = context.new
-lexers.load = context.loadlexer
-------.loadlexer = context.loadlexer
-lexers.loadluafile = context.loadluafile
-lexers.embed_lexer = context.embed_lexer
-lexers.fold = context.fold
-lexers.lex = context.lex
-lexers.token = context.token
-lexers.word_match = context.word_match
-lexers.exact_match = context.exact_match
-lexers.just_match = context.just_match
-lexers.inspect = context.inspect
-lexers.report = context.report
-lexers.inform = context.inform
-
--- helper .. alas ... in scite the lexer's lua instance is rather crippled .. not
--- even math is part of it
-
do
- local floor = math and math.floor
local char = string.char
+ local byte = string.byte
local format = format
- local tonumber = tonumber
local function utfchar(n)
if n < 0x80 then
return char(n)
elseif n < 0x800 then
return char(
- 0xC0 + floor(n/0x40),
- 0x80 + (n % 0x40)
+ 0xC0 + (n//0x00040),
+ 0x80 + n % 0x40
)
elseif n < 0x10000 then
return char(
- 0xE0 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
+ 0xE0 + (n//0x01000),
+ 0x80 + (n//0x00040) % 0x40,
+ 0x80 + n % 0x40
)
elseif n < 0x40000 then
return char(
- 0xF0 + floor(n/0x40000),
- 0x80 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
+ 0xF0 + (n//0x40000),
+ 0x80 + (n//0x01000),
+ 0x80 + (n//0x00040) % 0x40,
+ 0x80 + n % 0x40
)
else
-- return char(
- -- 0xF1 + floor(n/0x1000000),
- -- 0x80 + floor(n/0x40000),
- -- 0x80 + floor(n/0x1000),
- -- 0x80 + (floor(n/0x40) % 0x40),
- -- 0x80 + (n % 0x40)
+ -- 0xF1 + (n//0x1000000),
+ -- 0x80 + (n//0x0040000),
+ -- 0x80 + (n//0x0001000),
+ -- 0x80 + (n//0x0000040) % 0x40,
+ -- 0x80 + n % 0x40
-- )
return "?"
end
end
- context.utfchar = utfchar
-
- -- -- the next one is good enough for use here but not perfect (see context for a
- -- -- better one)
- --
- -- local function make(t)
- -- local p
- -- for k, v in next, t do
- -- if not p then
- -- if next(v) then
- -- p = P(k) * make(v)
- -- else
- -- p = P(k)
- -- end
- -- else
- -- if next(v) then
- -- p = p + P(k) * make(v)
- -- else
- -- p = p + P(k)
- -- end
- -- end
- -- end
- -- return p
- -- end
- --
- -- function lpeg.utfchartabletopattern(list)
- -- local tree = { }
- -- for i=1,#list do
- -- local t = tree
- -- for c in gmatch(list[i],".") do
- -- if not t[c] then
- -- t[c] = { }
- -- end
- -- t = t[c]
- -- end
- -- end
- -- return make(tree)
- -- end
+ helpers.utfchar = utfchar
local utf8next = R("\128\191")
local utf8one = R("\000\127")
@@ -2412,7 +423,6 @@ do
end
end
collapse(tree,"")
- -- inspect(tree)
return make(tree)
end
@@ -2436,251 +446,923 @@ do
-- now we can make:
+ patterns.wordtoken = R("az","AZ","\127\255")
+ patterns.wordpattern = patterns.wordtoken^3 -- todo: if limit and #s < limit then
+
patterns.iwordtoken = patterns.wordtoken - patterns.invisibles
patterns.iwordpattern = patterns.iwordtoken^3
end
--- The following helpers are not used, partially replaced by other mechanisms and
--- when needed I'll first optimize them. I only made them somewhat more readable.
-
-function lexers.delimited_range(chars, single_line, no_escape, balanced) -- unchanged
- local s = sub(chars,1,1)
- local e = #chars == 2 and sub(chars,2,2) or s
- local range
- local b = balanced and s or ""
- local n = single_line and "\n" or ""
- if no_escape then
- local invalid = S(e .. n .. b)
- range = patterns.any - invalid
- else
- local invalid = S(e .. n .. b) + patterns.backslash
- range = patterns.any - invalid + patterns.backslash * patterns.any
+-- end of patterns
+
+-- begin of scite properties
+
+-- Because we use a limited number of lexers we can provide a new whitespace on demand. If needed
+-- we can recycle from a pool or we can just not reuse a lexer and load anew. I'll deal with that
+-- when the need is there. At that moment I might as well start working with nested tables (so that
+-- we have a langauge tree.
+
+local whitespace = function() return "whitespace" end
+
+local maxstyle = 127 -- otherwise negative values in editor object -- 255
+local nesting = 0
+local style_main = 0
+local style_white = 0
+
+if usage == "scite" then
+
+ local names = { }
+ local props = { }
+ local count = 1
+
+ -- 32 -- 39 are reserved; we want to avoid holes so we preset:
+
+ for i=0,maxstyle do
+ numbers[i] = "default"
end
- if balanced and s ~= e then
- return P {
- s * (range + V(1))^0 * e
- }
- else
- return s * range^0 * P(e)^-1
+
+ whitespace = function()
+ return style_main -- "mainspace"
end
-end
-function lexers.starts_line(patt) -- unchanged
- return P ( function(input, index)
- if index == 1 then
- return index
+ function lexers.loadtheme(theme)
+ styles = theme or { }
+ for k, v in next, styles do
+ names[#names+1] = k
+ end
+ sort(names)
+ for i=1,#names do
+ local name = names[i]
+ styles[name].n = count
+ numbers[name] = count
+ numbers[count] = name
+ if count == 31 then
+ count = 40
+ else
+ count = count + 1
+ end
end
- local char = sub(input,index - 1,index - 1)
- if char == "\n" or char == "\r" or char == "\f" then
- return index
+ for i=1,#names do
+ local t = { }
+ local s = styles[names[i]]
+ local n = s.n
+ local fore = s.fore
+ local back = s.back
+ local font = s.font
+ local size = s.size
+ local bold = s.bold
+ if fore then
+ if #fore == 1 then
+ t[#t+1] = format("fore:#%02X%02X%02X",fore[1],fore[1],fore[1])
+ elseif #fore == 3 then
+ t[#t+1] = format("fore:#%02X%02X%02X",fore[1],fore[2],fore[3])
+ end
+ end
+ if back then
+ if #back == 1 then
+ t[#t+1] = format("back:#%02X%02X%02X",back[1],back[1],back[1])
+ elseif #back == 3 then
+ t[#t+1] = format("back:#%02X%02X%02X",back[1],back[2],back[3])
+ else
+ t[#t+1] = "back:#000000"
+ end
+ end
+ if bold then
+ t[#t+1] = "bold"
+ end
+ if font then
+ t[#t+1] = format("font:%s",font)
+ end
+ if size then
+ t[#t+1] = format("size:%s",size)
+ end
+ if #t > 0 then
+ props[n] = concat(t,",")
+ end
end
- end ) * patt
-end
+ setmetatable(styles, {
+ __index =
+ function(target,name)
+ if name then
+ count = count + 1
+ if count > maxstyle then
+ count = maxstyle
+ end
+ numbers[name] = count
+ local style = { n = count }
+ target[name] = style
+ return style
+ end
+ end
+ } )
+ lexers.styles = styles
+ lexers.numbers = numbers
-function lexers.last_char_includes(s) -- unchanged
- s = "[" .. gsub(s,"[-%%%[]", "%%%1") .. "]"
- return P ( function(input, index)
- if index == 1 then
- return index
- end
- local i = index
- while match(sub(input,i - 1,i - 1),"[ \t\r\n\f]") do
- i = i - 1
- end
- if match(sub(input,i - 1,i - 1),s) then
- return index
+ style_main = styles.mainspace.n
+ style_white = styles.whitespace.n
+ end
+
+ function lexers.registertheme(properties,name)
+ for n, p in next, props do
+ local tag = "style.script_" .. name .. "." .. n
+ properties[tag] = p
end
- end)
+ end
+
end
-function lexers.nested_pair(start_chars, end_chars) -- unchanged
- local s = start_chars
- local e = P(end_chars)^-1
- return P {
- s * (patterns.any - s - end_chars + V(1))^0 * e
- }
+-- end of scite properties
+
+-- begin of word matchers
+
+do
+
+ -- function patterns.exactmatch(words,case_insensitive)
+ -- local characters = concat(words)
+ -- local pattern = S(characters) + patterns.idtoken
+ -- if case_insensitive then
+ -- pattern = pattern + S(upper(characters)) + S(lower(characters))
+ -- end
+ -- if case_insensitive then
+ -- local list = { }
+ -- if #words == 0 then
+ -- for k, v in next, words do
+ -- list[lower(k)] = v
+ -- end
+ -- else
+ -- for i=1,#words do
+ -- list[lower(words[i])] = true
+ -- end
+ -- end
+ -- return Cmt(pattern^1, function(_,i,s)
+ -- return list[lower(s)] -- and i or nil
+ -- end)
+ -- else
+ -- local list = { }
+ -- if #words == 0 then
+ -- for k, v in next, words do
+ -- list[k] = v
+ -- end
+ -- else
+ -- for i=1,#words do
+ -- list[words[i]] = true
+ -- end
+ -- end
+ -- return Cmt(pattern^1, function(_,i,s)
+ -- return list[s] -- and i or nil
+ -- end)
+ -- end
+ -- end
+ --
+ -- function patterns.justmatch(words)
+ -- local p = P(words[1])
+ -- for i=2,#words do
+ -- p = p + P(words[i])
+ -- end
+ -- return p
+ -- end
+
+ -- we could do camelcase but that is not what users use for keywords
+
+ local p_finish = #(1 - R("az","AZ","__"))
+
+ patterns.finishmatch = p_finish
+
+ function patterns.exactmatch(words,ignorecase)
+ local list = { }
+ if ignorecase then
+ if #words == 0 then
+ for k, v in next, words do
+ list[lower(k)] = v
+ end
+ else
+ for i=1,#words do
+ list[lower(words[i])] = true
+ end
+ end
+ return Cmt(pattern^1, function(_,i,s)
+ return list[lower(s)] -- and i or nil
+ end)
+ else
+ if #words == 0 then
+ for k, v in next, words do
+ list[k] = v
+ end
+ else
+ for i=1,#words do
+ list[words[i]] = true
+ end
+ end
+ end
+ return helpers.utfchartabletopattern(list) * p_finish
+ end
+
+ patterns.justmatch = patterns.exactmatch
+
end
-local function prev_line_is_comment(prefix, text, pos, line, s) -- unchanged
- local start = find(line,"%S")
- if start < s and not find(line,prefix,start,true) then
- return false
+-- end of word matchers
+
+-- begin of loaders
+
+do
+
+ local cache = { }
+
+ function lexers.loadluafile(name)
+ local okay, data = pcall(require, name)
+ if data then
+ if trace then
+ report("lua file '%s' has been loaded",name)
+ end
+ return data, name
+ end
+ if trace then
+ report("unable to load lua file '%s'",name)
+ end
end
- local p = pos - 1
- if sub(text,p,p) == "\n" then
- p = p - 1
- if sub(text,p,p) == "\r" then
- p = p - 1
+
+ function lexers.loaddefinitions(name)
+ local data = cache[name]
+ if data then
+ if trace then
+ report("reusing definitions '%s'",name)
+ end
+ return data
+ elseif trace and data == false then
+ report("definitions '%s' were not found",name)
end
- if sub(text,p,p) ~= "\n" then
- while p > 1 and sub(text,p - 1,p - 1) ~= "\n"
- do p = p - 1
+ local okay, data = pcall(require, name)
+ if not data then
+ report("unable to load definition file '%s'",name)
+ data = false
+ elseif trace then
+ report("definition file '%s' has been loaded",name)
+ end
+ cache[name] = data
+ return type(data) == "table" and data
+ end
+
+end
+
+-- end of loaders
+
+-- begin of spell checking (todo: pick files from distribution instead)
+
+do
+
+ -- spell checking (we can only load lua files)
+ --
+ -- return {
+ -- min = 3,
+ -- max = 40,
+ -- n = 12345,
+ -- words = {
+ -- ["someword"] = "someword",
+ -- ["anotherword"] = "Anotherword",
+ -- },
+ -- }
+
+ local lists = { }
+ local disabled = false
+
+ function lexers.disablewordcheck()
+ disabled = true
+ end
+
+ function lexers.setwordlist(tag,limit) -- returns hash (lowercase keys and original values)
+ if not tag or tag == "" then
+ return false, 3
+ end
+ local list = lists[tag]
+ if not list then
+ list = lexers.loaddefinitions("spell-" .. tag)
+ if not list or type(list) ~= "table" then
+ report("invalid spell checking list for '%s'",tag)
+ list = { words = false, min = 3 }
+ else
+ list.words = list.words or false
+ list.min = list.min or 3
end
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
+ lists[tag] = list
+ end
+ if trace then
+ report("enabling spell checking for '%s' with minimum '%s'",tag,list.min)
+ end
+ return list.words, list.min
+ end
+
+ if usage ~= "scite" then
+
+ function lexers.styleofword(validwords,validminimum,s,p)
+ if not validwords or #s < validminimum then
+ return "text", p
+ else
+ -- keys are lower
+ local word = validwords[s]
+ if word == s then
+ return "okay", p -- exact match
+ elseif word then
+ return "warning", p -- case issue
+ else
+ local word = validwords[lower(s)]
+ if word == s then
+ return "okay", p -- exact match
+ elseif word then
+ return "warning", p -- case issue
+ elseif upper(s) == s then
+ return "warning", p -- probably a logo or acronym
+ else
+ return "error", p
+ end
+ end
end
- return sub(text,p,p + #prefix - 1) == prefix
end
+
end
- return false
+
end
-local function next_line_is_comment(prefix, text, pos, line, s)
- local p = find(text,"\n",pos + s)
- if p then
- p = p + 1
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
+-- end of spell checking
+
+-- begin lexer management
+
+lexers.structured = false
+-- lexers.structured = true -- the future for the typesetting end
+
+do
+
+ function lexers.new(name,filename)
+ if not filename then
+ filename = false
+ end
+ local lexer = {
+ name = name,
+ filename = filename,
+ whitespace = whitespace()
+ }
+ if trace then
+ report("initializing lexer tagged '%s' from file '%s'",name,filename or name)
end
- return sub(text,p,p + #prefix - 1) == prefix
+ return lexer
end
- return false
-end
-function lexers.fold_line_comments(prefix)
- local property_int = lexers.property_int
- return function(text, pos, line, s)
- if property_int["fold.line.comments"] == 0 then
- return 0
+ if usage == "scite" then
+
+ -- overloaded later
+
+ function lexers.token(name, pattern)
+ local s = styles[name] -- always something anyway
+ return pattern * Cc(s and s.n or 32) * Cp()
end
- if s > 1 and match(line,"^%s*()") < s then
- return 0
+
+ else
+
+ function lexers.token(name, pattern)
+ return pattern * Cc(name) * Cp()
end
- local prev_line_comment = prev_line_is_comment(prefix, text, pos, line, s)
- local next_line_comment = next_line_is_comment(prefix, text, pos, line, s)
- if not prev_line_comment and next_line_comment then
- return 1
+
+ end
+
+ -- todo: variant that directly styles
+
+ local function append(pattern,step)
+ if not step then
+ return pattern
+ elseif pattern then
+ return pattern + P(step)
+ else
+ return P(step)
end
- if prev_line_comment and not next_line_comment then
- return -1
+ end
+
+ local function prepend(pattern,step)
+ if not step then
+ return pattern
+ elseif pattern then
+ return P(step) + pattern
+ else
+ return P(step)
end
- return 0
end
-end
--- There are some fundamental changes in textadept version 10 and I don't want to
--- adapt again so we go the reverse route: map new to old. This is needed because
--- we need to load other lexers which is teh result of not being able to load the
--- lexer framework in parallel. Something happened in 10 that makes the main lexer
--- always enforced so now we need to really replace that one (and even then it loads
--- twice (i can probably sort that out). Maybe there's now some hard coded magic
--- in the binary.
-
-if textadept then
-
- -- Folds are still somewhat weak because of the end condition not being
- -- bound to a start .. probably to complex and it seems to work anyhow. As
- -- we have extended thinsg we just remap.
-
- local function add_fold_point(lexer,token_name,start_symbol,end_symbol)
- if type(start_symbol) == "string" then
- local foldsymbols = lexer._foldsymbols
- if not foldsymbols then
- foldsymbols = { }
- lexer._foldsymbols = foldsymbols
- end
- local patterns = foldsymbols._patterns
- if not patterns then
- patterns = { }
- usedpatt = { } -- > 10 uses a mixed index/hash (we don't use patterns)
- foldsymbols._patterns = patterns
- foldsymbols._usedpatt = usedpatt
- end
- local foldsymbol = foldsymbols[token_name]
- if not foldsymbol then
- foldsymbol = { }
- foldsymbols[token_name] = foldsymbol
+ local wrapup = usage == "scite" and
+ function(name,pattern)
+ return pattern
+ end
+ or
+ function(name,pattern,nested)
+ if lexers.structured then
+ return Cf ( Ct("") * Cg(Cc("name") * Cc(name)) * Cg(Cc("data") * Ct(pattern)), rawset)
+ elseif nested then
+ return pattern
+ else
+ return Ct (pattern)
end
- if not usedpatt[start_symbol] then
- patterns[#patterns+1] = start_symbol
- usedpatt[start_symbol] = true
+ end
+
+ local function construct(namespace,lexer,level)
+ if lexer then
+ local rules = lexer.rules
+ local embedded = lexer.embedded
+ local grammar = nil
+ if embedded then
+ for i=1,#embedded do
+ local embed = embedded[i]
+ local done = embed.done
+ if not done then
+ local lexer = embed.lexer
+ local start = embed.start
+ local stop = embed.stop
+ if usage == "scite" then
+ start = start / function() nesting = nesting + 1 end
+ stop = stop / function() nesting = nesting - 1 end
+ end
+ if trace then
+ start = start / function() report(" nested lexer %s: start",lexer.name) end
+ stop = stop / function() report(" nested lexer %s: stop", lexer.name) end
+ end
+ done = start * (construct(namespace,lexer,level+1) - stop)^0 * stop
+ done = wrapup(lexer.name,done,true)
+ end
+ -- grammar = prepend(grammar, done)
+ grammar = append(grammar, done)
+ end
end
- if type(end_symbol) == "string" then
- foldsymbol[start_symbol] = 1
- foldsymbol[end_symbol] = -1
- if not usedpatt[end_symbol] then
- patterns[#patterns+1] = end_symbol
- usedpatt[end_symbol] = true
+ if rules then
+ for i=1,#rules do
+ grammar = append(grammar,rules[i][2])
end
- else
- foldsymbol[start_symbol] = end_symbol
end
+ return grammar
end
end
- local function add_style(lexer,name,style)
- local tokenstyles = lexer._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- lexer._tokenstyles = tokenstyles
+ function lexers.load(filename,namespace)
+ if not namespace then
+ namespace = filename
end
- tokenstyles[name] = style
+ local lexer = usedlexers[namespace] -- we load by filename but the internal name can be short
+ if lexer then
+ if trace then
+ report("reusing lexer '%s'",namespace)
+ end
+ return lexer
+ elseif trace then
+ report("loading lexer '%s' from '%s'",namespace,filename)
+ end
+ local lexer, name = lexers.loadluafile(filename)
+ if not lexer then
+ report("invalid lexer file '%s'",filename)
+ elseif type(lexer) ~= "table" then
+ if trace then
+ report("lexer file '%s' gets a dummy lexer",filename)
+ end
+ return lexers.new(filename)
+ end
+ local grammar = construct(namespace,lexer,1)
+ if grammar then
+ grammar = wrapup(namespace,grammar^0)
+ lexer.grammar = grammar
+ end
+ --
+ local backtracker = lexer.backtracker
+ local foretracker = lexer.foretracker
+ if backtracker then
+ local start = 1
+ local position = 1
+ local pattern = (Cmt(Cs(backtracker),function(s,p,m) if p > start then return #s else position = p - #m end end) + P(1))^1
+ lexer.backtracker = function(str,offset)
+ position = 1
+ start = offset
+ lpegmatch(pattern,str,1)
+ return position
+ end
+ end
+ if foretracker then
+ local start = 1
+ local position = 1
+ local pattern = (Cmt(Cs(foretracker),function(s,p,m) position = p - #m return #s end) + P(1))^1
+ lexer.foretracker = function(str,offset)
+ position = offset
+ start = offset
+ lpegmatch(pattern,str,position)
+ return position
+ end
+ end
+ --
+ usedlexers[filename] = lexer
+ return lexer
end
- local function add_rule(lexer,id,rule)
- local rules = lexer._rules
- if not rules then
- rules = { }
- lexer._rules = rules
+ function lexers.embed(parent, embed, start, stop, rest)
+ local embedded = parent.embedded
+ if not embedded then
+ embedded = { }
+ parent.embedded = embedded
end
- rules[#rules+1] = { id, rule }
+ embedded[#embedded+1] = {
+ lexer = embed,
+ start = start,
+ stop = stop,
+ rest = rest,
+ }
end
- local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
+end
+
+-- end lexer management
+
+-- This will become a configurable option (whole is more reliable but it can
+-- be slow on those 5 megabyte lua files):
+
+-- begin of context typesetting lexer
+
+if usage ~= "scite" then
+
+ local function collapsed(t)
+ local lasttoken = nil
+ local lastindex = nil
+ for i=1,#t,2 do
+ local token = t[i]
+ local position = t[i+1]
+ if token == lasttoken then
+ t[lastindex] = position
+ elseif lastindex then
+ lastindex = lastindex + 1
+ t[lastindex] = token
+ lastindex = lastindex + 1
+ t[lastindex] = position
+ lasttoken = token
+ else
+ lastindex = i+1
+ lasttoken = token
+ end
end
- local RULES = lexer._RULES
- if RULES then
- RULES[id] = rule
+ for i=#t,lastindex+1,-1 do
+ t[i] = nil
end
+ return t
end
- local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
+ function lexers.lex(lexer,text) -- get rid of init_style
+ local grammar = lexer.grammar
+ if grammar then
+ nesting = 0
+ if trace then
+ report("lexing '%s' string with length %i",lexer.name,#text)
+ end
+ local t = lpegmatch(grammar,text)
+ if collapse then
+ t = collapsed(t)
+ end
+ return t
+ else
+ return { }
end
- local RULES = lexer._RULES
- if RULES then
- return RULES[id]
+ end
+
+end
+
+-- end of context typesetting lexer
+
+-- begin of scite editor lexer
+
+if usage == "scite" then
+
+ -- For char-def.lua we need some 0.55 s with Lua 5.3 and 10% less with Lua 5.4 (timed on a 2013
+ -- Dell precision with i7-3840QM). That test file has 271540 lines of Lua (table) code and is
+ -- 5.312.665 bytes large (dd 2021.09.29). The three methods perform about the same but the more
+ -- direct approach saves some tables. Using the new Lua garbage collector makes no difference.
+ --
+ -- We can actually integrate folding in here if we want but it might become messy as we then
+ -- also need to deal with specific newlines. We can also (in scite) store some extra state wrt
+ -- the language used.
+ --
+ -- Operating on a range (as in the past) is faster when editing very large documents but we
+ -- don't do that often. The problem is that backtracking over whitespace is tricky for some
+ -- nested lexers.
+
+ local editor = false
+ local startstyling = false -- editor:StartStyling(position,style)
+ local setstyling = false -- editor:SetStyling(slice,style)
+ local getlevelat = false -- editor.StyleAt[position] or StyleAt(editor,position)
+ local getlineat = false
+ local thestyleat = false -- editor.StyleAt[position]
+ local thelevelat = false
+
+ local styleoffset = 1
+ local foldoffset = 0
+
+ local function seteditor(usededitor)
+ editor = usededitor
+ startstyling = editor.StartStyling
+ setstyling = editor.SetStyling
+ getlevelat = editor.FoldLevel -- GetLevelAt
+ getlineat = editor.LineFromPosition
+ thestyleat = editor.StyleAt
+ thelevelat = editor.FoldLevel -- SetLevelAt
+ end
+
+ function lexers.token(style, pattern)
+ if type(style) ~= "number" then
+ style = styles[style] -- always something anyway
+ style = style and style.n or 32
+ end
+ return pattern * Cp() / function(p)
+ local n = p - styleoffset
+ if nesting > 0 and style == style_main then
+ style = style_white
+ end
+ setstyling(editor,n,style)
+ styleoffset = styleoffset + n
end
end
- local new = context.new
- local lmt = {
- __index = {
+ -- used in: tex txt xml
+
+ function lexers.styleofword(validwords,validminimum,s,p)
+ local style
+ if not validwords or #s < validminimum then
+ style = numbers.text
+ else
+ -- keys are lower
+ local word = validwords[s]
+ if word == s then
+ style = numbers.okay -- exact match
+ elseif word then
+ style = numbers.warning -- case issue
+ else
+ local word = validwords[lower(s)]
+ if word == s then
+ style = numbers.okay -- exact match
+ elseif word then
+ style = numbers.warning -- case issue
+ elseif upper(s) == s then
+ style = numbers.warning -- probably a logo or acronym
+ else
+ style = numbers.error
+ end
+ end
+ end
+ local n = p - styleoffset
+ setstyling(editor,n,style)
+ styleoffset = styleoffset + n
+ end
+
+ -- when we have an embedded language we can not rely on the range that
+ -- scite provides because we need to look further
+
+ -- it looks like scite starts before the cursor / insert
+
+ local function scite_range(lexer,size,start,length,partial) -- set editor
+ if partial then
+ local backtracker = lexer.backtracker
+ local foretracker = lexer.foretracker
+ if start == 0 and size == length then
+ -- see end
+ elseif (backtracker or foretracker) and start > 0 then
+ local snippet = editor:textrange(0,size)
+ if size ~= length then
+ -- only lstart matters, the rest is statistics; we operate on 1-based strings
+ local lstart = backtracker and backtracker(snippet,start+1) or 0
+ local lstop = foretracker and foretracker(snippet,start+1+length) or size
+ if lstart > 0 then
+ lstart = lstart - 1
+ end
+ if lstop > size then
+ lstop = size - 1
+ end
+ local stop = start + length
+ local back = start - lstart
+ local fore = lstop - stop
+ local llength = lstop - lstart + 1
+ -- snippet = string.sub(snippet,lstart+1,lstop+1) -- we can return the initial position in the lpegmatch
+ -- return back, fore, lstart, llength, snippet, lstart + 1
+ return back, fore, 0, llength, snippet, lstart + 1
+ else
+ return 0, 0, 0, size, snippet, 1
+ end
+ else
+ -- still not entirely okay (nested mp)
+ local stop = start + length
+ local lstart = start
+ local lstop = stop
+ while lstart > 0 do
+ if thestyleat[lstart] == style_main then
+ break
+ else
+ lstart = lstart - 1
+ end
+ end
+ if lstart < 0 then
+ lstart = 0
+ end
+ while lstop < size do
+ if thestyleat[lstop] == style_main then
+ break
+ else
+ lstop = lstop + 1
+ end
+ end
+ if lstop > size then
+ lstop = size
+ end
+ local back = start - lstart
+ local fore = lstop - stop
+ local llength = lstop - lstart + 1
+ local snippet = editor:textrange(lstart,lstop)
+ if llength > #snippet then
+ llength = #snippet
+ end
+ return back, fore, lstart, llength, snippet, 1
+ end
+ end
+ local snippet = editor:textrange(0,size)
+ return 0, 0, 0, size, snippet, 1
+ end
- add_rule = add_rule,
- modify_rule = modify_rule,
- get_rule = get_rule,
- add_style = add_style,
- add_fold_point = add_fold_point,
+ local function scite_lex(lexer,text,offset,initial)
+ local grammar = lexer.grammar
+ if grammar then
+ styleoffset = 1
+ nesting = 0
+ startstyling(editor,offset,32)
+ local preamble = lexer.preamble
+ if preamble then
+ lpegmatch(preamble,offset == 0 and text or editor:textrange(0,500))
+ end
+ lpegmatch(grammar,text,initial)
+ end
+ end
- join_tokens = join_tokens,
- build_grammar = build_grammar,
+ -- We can assume sane definitions that is: must languages use similar constructs for the start
+ -- and end of something. So we don't need to waste much time on nested lexers.
- embed = lexers.embed,
- lex = lexers.lex,
- fold = lexers.fold
+ local newline = patterns.newline
- }
- }
+ local scite_fold_base = SC_FOLDLEVELBASE or 0
+ local scite_fold_header = SC_FOLDLEVELHEADERFLAG or 0
+ local scite_fold_white = SC_FOLDLEVELWHITEFLAG or 0
+ local scite_fold_number = SC_FOLDLEVELNUMBERMASK or 0
- function lexers.new(name,options)
- local lexer = new(name)
- if options then
- lexer._LEXBYLINE = options['lex_by_line']
- lexer._FOLDBYINDENTATION = options['fold_by_indentation']
- lexer._CASEINSENSITIVEFOLDPOINTS = options['case_insensitive_fold_points']
- lexer._lexer = options['inherit']
+ local function styletonumbers(folding,hash)
+ if not hash then
+ hash = { }
end
- setmetatable(lexer,lmt)
- return lexer
+ if folding then
+ for k, v in next, folding do
+ local s = hash[k] or { }
+ for k, v in next, v do
+ local n = numbers[k]
+ if n then
+ s[n] = v
+ end
+ end
+ hash[k] = s
+ end
+ end
+ return hash
end
-end
+ local folders = setmetatable({ }, { __index = function(t, lexer)
+ local folding = lexer.folding
+ if folding then
+ local foldmapping = styletonumbers(folding)
+ local embedded = lexer.embedded
+ if embedded then
+ for i=1,#embedded do
+ local embed = embedded[i]
+ local lexer = embed.lexer
+ if lexer then
+ foldmapping = styletonumbers(lexer.folding,foldmapping)
+ end
+ end
+ end
+ local foldpattern = helpers.utfchartabletopattern(foldmapping)
+ local resetparser = lexer.resetparser
+ local line = 0
+ local current = scite_fold_base
+ local previous = scite_fold_base
+ --
+ foldpattern = Cp() * (foldpattern/foldmapping) / function(s,match)
+ if match then
+ local l = match[thestyleat[s + foldoffset]]
+ if l then
+ current = current + l
+ end
+ end
+ end
+ local action_yes = function()
+ if current > previous then
+ previous = previous | scite_fold_header
+ elseif current < scite_fold_base then
+ current = scite_fold_base
+ end
+ thelevelat[line] = previous
+ previous = current
+ line = line + 1
+ end
+ local action_nop = function()
+ previous = previous | scite_fold_white
+ thelevelat[line] = previous
+ previous = current
+ line = line + 1
+ end
+ --
+ foldpattern = ((foldpattern + (1-newline))^1 * newline/action_yes + newline/action_nop)^0
+ --
+ folder = function(text,offset,initial)
+ if reset_parser then
+ reset_parser()
+ end
+ foldoffset = offset
+ nesting = 0
+ --
+ previous = scite_fold_base -- & scite_fold_number
+ if foldoffset == 0 then
+ line = 0
+ else
+ line = getlineat(editor,offset) & scite_fold_number -- scite is at the beginning of a line
+ -- previous = getlevelat(editor,line) -- alas
+ previous = thelevelat[line] -- zero/one
+ end
+ current = previous
+ lpegmatch(foldpattern,text,initial)
+ end
+ else
+ folder = function() end
+ end
+ t[lexer] = folder
+ return folder
+ end } )
+
+ -- can somehow be called twice (idem for the lexer)
--- done
+ local function scite_fold(lexer,text,offset,initial)
+ if text ~= "" then
+ return folders[lexer](text,offset,initial)
+ end
+ end
+
+ -- We cannot use the styler style setters so we use the editor ones. This has to do with the fact
+ -- that the styler sees the (utf) encoding while we are doing bytes. There is also some initial
+ -- skipping over characters. First versions uses those callers and had to offset by -2, but while
+ -- that works with whole document lexing it doesn't work with partial lexing (one can also get
+ -- multiple OnStyle calls per edit.
+ --
+ -- The backtracking here relates to the fact that we start at the outer lexer (otherwise embedded
+ -- lexers can have occasional side effects. It also makes it possible to do better syntax checking
+ -- on the fly (some day).
+ --
+ -- The (old) editor:textrange cannot handle nul characters. It that doesn't get patched in scite we
+ -- need to use the styler variant (which is not in scite).
+
+ -- lexer : context lexer
+ -- editor : scite editor object (needs checking every update)
+ -- language : scite lexer language id
+ -- filename : current file
+ -- size : size of current file
+ -- start ; first position where to edit
+ -- length : length stripe to edit
+ -- trace : flag that signals tracing
+
+ -- After quite some experiments with the styler methods I settled on the editor methods because
+ -- these are not sensitive for utf and have no side effects like the two forward cursor positions.
+
+ function lexers.scite_onstyle(lexer,editor,partial,language,filename,size,start,length,trace)
+ seteditor(editor)
+ local clock = trace and os.clock()
+ local back, fore, lstart, llength, snippet, initial = scite_range(lexer,size,start,length,partial)
+ if clock then
+ report("lexing %s", language)
+ report(" document file : %s", filename)
+ report(" document size : %i", size)
+ report(" styler start : %i", start)
+ report(" styler length : %i", length)
+ report(" backtracking : %i", back)
+ report(" foretracking : %i", fore)
+ report(" lexer start : %i", lstart)
+ report(" lexer length : %i", llength)
+ report(" text length : %i", #snippet)
+ report(" lexing method : %s", partial and "partial" or "whole")
+ report(" after copying : %0.3f seconds",os.clock()-clock)
+ end
+ scite_lex(lexer,snippet,lstart,initial)
+ if clock then
+ report(" after lexing : %0.3f seconds",os.clock()-clock)
+ end
+ scite_fold(lexer,snippet,lstart,initial)
+ if clock then
+ report(" after folding : %0.3f seconds",os.clock()-clock)
+ end
+ end
+
+end
+
+-- end of scite editor lexer
+
+lexers.context = lexers -- for now
return lexers
diff --git a/context/data/scite/context/lexers/themes/scite-context-theme.lua b/context/data/scite/context/lexers/themes/scite-context-theme.lua
index f746c3d09..0b09cd2ff 100644
--- a/context/data/scite/context/lexers/themes/scite-context-theme.lua
+++ b/context/data/scite/context/lexers/themes/scite-context-theme.lua
@@ -6,31 +6,6 @@ local info = {
license = "see context related readme files",
}
--- context_path = string.split(os.resultof("mtxrun --find-file context.mkiv"))[1] or ""
-
--- What used to be proper Lua definitions are in 3.42 SciTE properties although
--- integration is still somewhat half. Also, the indexed style specification is
--- now a hash (which indeed makes more sense). However, the question is: am I
--- going to rewrite the style bit? It anyway makes more sense to keep this file
--- somewhat neutral as we no longer need to be compatible. However, we cannot be
--- sure of helpers being present yet when this file is loaded, so we are somewhat
--- crippled. On the other hand, I don't see other schemes being used with the
--- context lexers.
-
--- The next kludge is no longer needed which is good!
---
--- if GTK then -- WIN32 GTK OSX CURSES
--- font_name = '!' .. font_name
--- end
-
--- I need to play with these, some work ok:
---
--- eolfilled noteolfilled
--- characterset:u|l
--- visible notvisible
--- changeable notchangeable (this way we can protect styles, e.g. preamble?)
--- hotspot nothotspot
-
if not lexers or not lexers.initialized then
local font_name = 'Dejavu Sans Mono'
@@ -63,11 +38,11 @@ if not lexers or not lexers.initialized then
local styles = {
+ ["mainspace"] = { },
["whitespace"] = { },
-- ["default"] = { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel },
-- ["default"] = { font = font_name, size = font_size, fore = colors.black },
- ["default"] = { font = font_name, size = font_size, fore = colors.black,
- back = textadept and colors.textpanel or nil },
+ ["default"] = { font = font_name, size = font_size, fore = colors.black },
["number"] = { fore = colors.cyan },
["comment"] = { fore = colors.yellow },
["keyword"] = { fore = colors.blue, bold = true },
@@ -122,38 +97,6 @@ if not lexers or not lexers.initialized then
}
- local properties = {
- ["fold.by.parsing"] = 1,
- ["fold.by.indentation"] = 0,
- ["fold.by.line"] = 0,
- ["fold.line.comments"] = 0,
- --
- ["lexer.context.log"] = 1, -- log errors and warnings
- ["lexer.context.trace"] = 0, -- show loading, initializations etc
- ["lexer.context.detail"] = 0, -- show more detail when tracing
- ["lexer.context.show"] = 0, -- show result of lexing
- ["lexer.context.collapse"] = 0, -- make lexing results somewhat more efficient
- ["lexer.context.inspect"] = 0, -- show some info about lexer (styles and so)
- --
- -- ["lexer.context.log"] = 1, -- log errors and warnings
- -- ["lexer.context.trace"] = 1, -- show loading, initializations etc
- }
-
- ----- lexers = require("lexer")
- local lexer = require("scite-context-lexer")
- local context = lexer.context
-
- if context then
- context.inform("loading context (style) properties")
- if context.registerstyles then
- context.registerstyles(styles)
- end
- if context.registercolors then
- context.registercolors(colors)
- end
- if context.registerproperties then
- context.registerproperties(properties)
- end
- end
+ return styles
end
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
index bf9573d2b..58ea75b27 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -88,7 +88,7 @@ zwnj zwj optionalspace asciispacechar softhyphen \
Ux eUx Umathaccents parfillleftskip parfillrightskip \
startlmtxmode stoplmtxmode startmkivmode stopmkivmode wildcardsymbol \
normalhyphenationcode automatichyphenationcode explicithyphenationcode syllablehyphenationcode uppercasehyphenationcode \
-collapsehyphenationmcode compoundhyphenationcode strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode \
+collapsehyphenationcode compoundhyphenationcode strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode \
explicitpenaltyhyphenationcode permitgluehyphenationcode permitallhyphenationcode permitmathreplacehyphenationcode forcecheckhyphenationcode \
lazyligatureshyphenationcode forcehandlerhyphenationcode feedbackcompoundhyphenationcode ignoreboundshyphenationcode partialhyphenationcode \
completehyphenationcode normalizelinenormalizecode parindentskipnormalizecode swaphangindentnormalizecode swapparsshapenormalizecode \
diff --git a/context/data/scite/context/scite-context-external.properties b/context/data/scite/context/scite-context-external.properties
index e9d5f58ba..da3df8c99 100644
--- a/context/data/scite/context/scite-context-external.properties
+++ b/context/data/scite/context/scite-context-external.properties
@@ -1,41 +1,10 @@
# external lpeg lexers
-lexer.lpeg.home=$(SciteDefaultHome)/context/lexers
-
-lexer.lpeg.color.theme=scite-context-theme
-# lexer.lpeg.color.theme=$(SciteDefaultHome)/context/lexers/themes/scite-context-theme.lua
-
-# The lexer dll no longer interfaces to the following properties. It never had a full
-# interface, so maybe I'll make my own.
-
fold.by.parsing=1
fold.by.indentation=0
fold.by.line=0
fold.line.comments=0
-# you can put the dll/so file in the <scitehome>/context/lexers path or keep it in
-# <scitehome>/lexers
-
-if PLAT_WIN
- lexerpath.*.lpeg=$(lexer.lpeg.home)/../../lexers/lexlpeg.dll
-# lexerpath.*.lpeg=$(lexer.lpeg.home)/lexers/lexlpeg.dll
-
-if PLAT_GTK
- lexerpath.*.lpeg=$(lexer.lpeg.home)/../../lexers/liblexlpeg.so
-# lexerpath.*.lpeg=$(lexer.lpeg.home)/lexers/liblexlpeg.so
-
-# the variable lexer.name is automatically set but I'm not sure what the following
-# one is supposed to do so we keep it around (sams as in lpeg.properties, which we
-# don't load)
-
-lexer.*.lpeg=lpeg
-
-# in principle you can do the following, as we're mostly compatible with the
-# default lexers but for a regular context setup the lexers built-in scite are
-# just fine so in principle we only need the dll/so
-#
-# import lexers/lpeg
-
# patterns should be original (not clash with built in)
file.patterns.cweb=*.w;*.ww;
@@ -44,51 +13,52 @@ file.patterns.bib=*.bib
file.patterns.json=*.json
file.patterns.sql=*.sql
-lexer.$(file.patterns.metapost)=lpeg_scite-context-lexer-mps
-lexer.$(file.patterns.metafun)=lpeg_scite-context-lexer-mps
-lexer.$(file.patterns.context)=lpeg_scite-context-lexer-tex
-lexer.$(file.patterns.lua)=lpeg_scite-context-lexer-lua
-lexer.$(file.patterns.example)=lpeg_scite-context-lexer-xml
-lexer.$(file.patterns.text)=lpeg_scite-context-lexer-txt
-lexer.$(file.patterns.pdf)=lpeg_scite-context-lexer-pdf
-lexer.$(file.patterns.cweb)=lpeg_scite-context-lexer-web
-lexer.$(file.patterns.cpp)=lpeg_scite-context-lexer-cpp
-lexer.$(file.patterns.bib)=lpeg_scite-context-lexer-bibtex
-lexer.$(file.patterns.sql)=lpeg_scite-context-lexer-sql
-lexer.$(file.patterns.json)=lpeg_scite-context-lexer-json
-
-lexer.$(file.patterns.tex)=lpeg_scite-context-lexer-tex
-lexer.$(file.patterns.xml)=lpeg_scite-context-lexer-xml
-lexer.$(file.patterns.html)=lpeg_scite-context-lexer-xml
+lexer.$(file.patterns.metapost)=script_mps
+lexer.$(file.patterns.metafun)=script_mps
+lexer.$(file.patterns.context)=script_tex
+lexer.$(file.patterns.lua)=script_lua
+lexer.$(file.patterns.example)=script_xml
+lexer.$(file.patterns.text)=script_txt
+lexer.$(file.patterns.pdf)=script_pdf
+lexer.$(file.patterns.cweb)=script_web
+lexer.$(file.patterns.cpp)=script_cpp
+lexer.$(file.patterns.bib)=script_bibtex
+lexer.$(file.patterns.sql)=script_sql
+lexer.$(file.patterns.json)=script_json
+lexer.$(file.patterns.none)=script_none
+
+lexer.$(file.patterns.tex)=script_tex
+lexer.$(file.patterns.xml)=script_xml
+lexer.$(file.patterns.html)=script_xml
# It's a real pitty that we cannot overload the errorlist lexer. That would
# make scite even more interesting. Add to that including lpeg and the lpeg
# lexer and thereby providing an interface to properties.
-#~ lexer.errorlist=lpeg_scite-context-lexer-txt
-#~ lexer.output=lpeg_scite-context-lexer-txt
+#~ lexer.errorlist=script_txt
+#~ lexer.output=script_txt
-comment.block.lpeg_scite-context-lexer-tex=%
-comment.block.at.line.start.lpeg_scite-context-lexer-tex=1
+comment.block.script_tex=%
+comment.block.at.line.start.script_tex=1
-#~ comment.box.start.lpeg_scite-context-lexer-tex=%
-#~ comment.box.middle.lpeg_scite-context-lexer-tex=%
-#~ comment.box.end.lpeg_scite-context-lexer-tex=%
+#~ comment.box.start.script_tex=%
+#~ comment.box.middle.script_tex=%
+#~ comment.box.end.script_tex=%
-comment.block.lpeg_scite-context-lexer-mps=%
-comment.block.at.line.start.lpeg_scite-context-lexer-mps=1
+comment.block.script_mps=%
+comment.block.at.line.start.script_mps=1
-comment.block.lpeg_scite-context-lexer-lua=--
-comment.block.at.line.start.lpeg_scite-context-lexer-lua=1
+comment.block.script_lua=--
+comment.block.at.line.start.script_lua=1
-comment.block.lpeg_scite-context-lexer-cld=--
-comment.block.at.line.start.lpeg_scite-context-lexer-cld=1
+comment.block.script_cld=--
+comment.block.at.line.start.script_cld=1
-comment.block.lpeg_scite-context-lexer-bibtex=%
-comment.block.at.line.start.lpeg_scite-context-lexer-bibtex=1
+comment.block.script_bibtex=%
+comment.block.at.line.start.script_bibtex=1
-comment.block.lpeg_scite-context-lexer-json=%
-comment.block.at.line.start.lpeg_scite-context-lexer-json=1
+comment.block.script_json=%
+comment.block.at.line.start.script_json=1
comment.block.lpeg_props=#
comment.block.at.line.start.lpeg_props=1
diff --git a/context/data/scite/context/scite-context.properties b/context/data/scite/context/scite-context.properties
index 3d6ff872c..8db638e60 100644
--- a/context/data/scite/context/scite-context.properties
+++ b/context/data/scite/context/scite-context.properties
@@ -87,7 +87,7 @@ open.suffix.$(file.patterns.context)=.tex
# Example : patterns
file.patterns.xml=
-file.patterns.example=*.xml;*.xsl;*.xsd;*.fo;*.exa;*.rlb;*.rlg;*.rlv;*.rng;*.xfdf;*.xslt;*.dtd;*.lmx;*.htm;*.html;*.xhtml;*.ctx;*.export;*.svg;*.xul
+file.patterns.example=*.xml;*.xsl;*.xsd;*.fo;*.exa;*.rlb;*.rlg;*.rlv;*.rng;*.xfdf;*.xslt;*.dtd;*.lmx;*.htm;*.html;*.xhtml;*.ctx;*.export;*.svg;*.xul;*.osm;
open.suffix.$(file.patterns.example)=.xml
filter.example=eXaMpLe|$(file.patterns.example)|
#~ lexer.$(file.patterns.example)=xml
@@ -108,7 +108,7 @@ command.go.$(file.patterns.lua)=mtxrun --script "$(FileNameExt)"
# Test: patterns
-file.patterns.text=*.txt
+file.patterns.text=*.txt;*.log
filter.text=Text |$(file.patterns.text)|
# lexer.$(file.patterns.txt)=txt
@@ -136,11 +136,11 @@ name.metafun.console=$(name.context.console)
name.example.console=$(name.context.console)
name.context.mtxrun=mtxrun --autogenerate
-name.context.mtxrunjit=mtxrunjit --autogenerate
+#~ name.context.mtxrunjit=mtxrunjit --autogenerate
name.context.check=$(name.context.mtxrun) --script check
name.context.run=$(name.context.mtxrun) --script context $(name.flag.pdfopen)
-name.context.runjit=$(name.context.mtxrunjit) --script context $(name.flag.pdfopen)
+#~ name.context.runjit=$(name.context.mtxrunjit) --script context $(name.flag.pdfopen)
name.context.texshow=$(name.context.mtxrun) texshow
name.context.purge=$(name.context.mtxrun) --context --purge --all
name.context.showcase=$(name.context.mtxrun) --launch showcase.pdf
@@ -232,22 +232,22 @@ command.name.1.$(file.patterns.lua)=Process Lua File
command.1.$(file.patterns.context)=$(name.context.run) "$(FileNameExt)"
command.1.$(file.patterns.metafun)=$(name.context.run) "$(FileNameExt)" --metapost
command.1.$(file.patterns.example)=$(name.context.run) "$(FileNameExt)" --xml
-command.1.$(file.patterns.lua)=$(name.context.mtxrunjit) --script ""$(FileNameExt)""
+#~ command.1.$(file.patterns.lua)=$(name.context.mtxrunjit) --script ""$(FileNameExt)""
#~ command.1.subsystem.$(file.patterns.context)=1
#~ command.1.subsystem.$(file.patterns.metafun)=1
#~ command.1.subsystem.$(file.patterns.example)=1
#~ command.1.subsystem.$(file.patterns.lua)=1
-command.name.29.*=Run with jit
+#~ command.name.29.*=Run with jit
#~ command.subsystem.29.*=1
-command.29.$(file.patterns.context)=$(name.context.runjit) "$(FileNameExt)"
-command.29.$(file.patterns.metafun)=$(name.context.runjit) "$(FileNameExt)" --metapost
-command.29.$(file.patterns.example)=$(name.context.runjit) "$(FileNameExt)" --xml
-command.29.$(file.patterns.lua)=$(name.context.mtxrunjit) --script ""$(FileNameExt)""
-command.groupundo.29.*=yes
-command.save.before.29.*=2
-command.shortcut.29.*=Alt+F12
+#~ command.29.$(file.patterns.context)=$(name.context.runjit) "$(FileNameExt)"
+#~ command.29.$(file.patterns.metafun)=$(name.context.runjit) "$(FileNameExt)" --metapost
+#~ command.29.$(file.patterns.example)=$(name.context.runjit) "$(FileNameExt)" --xml
+#~ command.29.$(file.patterns.lua)=$(name.context.mtxrunjit) --script ""$(FileNameExt)""
+#~ command.groupundo.29.*=yes
+#~ command.save.before.29.*=2
+#~ command.shortcut.29.*=Alt+F12
#~ command.name.30.*=Run with jit
#~ command.subsystem.30.*=1
@@ -335,28 +335,28 @@ command.10.$(file.patterns.example)=$(name.context.run) --arrange --xml "$(Fil
#~ command.10.subsystem.$(file.patterns.metafun)=1
#~ command.10.subsystem.$(file.patterns.example)=1
-# 11: make
+#~ # 11: make pdftex
+#~
+#~ command.name.11.$(file.patterns.context)=Generate Formats (pdfTeX)
+#~ command.name.11.$(file.patterns.metafun)=Generate Formats
+#~ command.name.11.$(file.patterns.example)=Generate Formats
+#~ command.11.$(file.patterns.context)=$(name.context.run) --make --all --pdftex
+#~ command.11.$(file.patterns.metafun)=$(name.context.run) --make --all
+#~ command.11.$(file.patterns.example)=$(name.context.run) --make --all
+#~ #~ command.11.subsystem.$(file.patterns.context)=1
+#~ #~ command.11.subsystem.$(file.patterns.metafun)=1
+#~ #~ command.11.subsystem.$(file.patterns.example)=1
-command.name.11.$(file.patterns.context)=Generate Formats (pdfTeX)
-command.name.11.$(file.patterns.metafun)=Generate Formats
-command.name.11.$(file.patterns.example)=Generate Formats
-command.11.$(file.patterns.context)=$(name.context.run) --make --all --pdftex
-command.11.$(file.patterns.metafun)=$(name.context.run) --make --all
-command.11.$(file.patterns.example)=$(name.context.run) --make --all
-#~ command.11.subsystem.$(file.patterns.context)=1
-#~ command.11.subsystem.$(file.patterns.metafun)=1
-#~ command.11.subsystem.$(file.patterns.example)=1
-
-# 12: make
+# 12: make luatex
command.name.12.$(file.patterns.context)=Generate Formats (luaTeX)
command.12.$(file.patterns.context)=$(name.context.run) --make --all --luatex
-#~ command.12.subsystem.$(file.patterns.context)=1
-
-# 13: make
+command.12.subsystem.$(file.patterns.context)=1
-command.name.13.$(file.patterns.context)=Generate Formats (XeTeX)
-command.13.$(file.patterns.context)=$(name.context.run) --make --all --xetex
+#~ # 13: make xetex
+#~
+#~ command.name.13.$(file.patterns.context)=Generate Formats (XeTeX)
+#~ command.13.$(file.patterns.context)=$(name.context.run) --make --all --xetex
#~ command.13.subsystem.$(file.patterns.context)=1
# 15: example
@@ -464,14 +464,12 @@ styles.controlchar=$(styles.nothing)
# Editor: color schemes
-caret.width=3
-
style.*.32=$(font.base),back:$(colors.textpanel)
style.*.33=$(font.base),back:$(colors.linepanel)
style.errorlist.32=$(font.errorfont),back:$(colors.logpanel)
-selection.back=#9F9F9F
+#~ selection.back=#9F9F9F
#~ selection.secondary.back=#9F9F9F
#~ selection.additional.back=#9F9F9F
#~ selection.inactive.back=#9F9F9F
@@ -707,9 +705,17 @@ fold.margin.colour=#CCCCCC
# testing
-caret.width = 3
-selection.rectangular.switch.mouse = 1
+# Currently the caret line wipes out marks (accents) in the next line because it
+# overlays. These marks are often in the previous line.
+
+caret.width=3
+
+caret.line.back=#8F8F8F
+caret.line.back.alpha=20
+
+selection.rectangular.switch.mouse=1
-#~ cache.layout=
+#~ cache.layout=1
+#~ output.cache.layout=1
find.command=mtxrun --script grep "$(find.what)" "$(find.files)"
diff --git a/context/data/scite/context/scite-ctx.lua b/context/data/scite/context/scite-ctx.lua
index 126f6b8f3..73ef06719 100644
--- a/context/data/scite/context/scite-ctx.lua
+++ b/context/data/scite/context/scite-ctx.lua
@@ -70,12 +70,19 @@
-- generic functions
-props = props or { } -- setmetatable(props,{ __index = function(k,v) props[k] = "unknown" return "unknown" end } )
+-- Once lpeg is available I will update the functions below.
+
+local props = props or { }
local byte, char = string.byte, string.char
local lower, upper, format = string.lower, string.upper, string.format
local gsub, sub, find, rep, match, gmatch = string.gsub, string.sub, string.find, string.rep, string.match, string.gmatch
local sort, concat = table.sort, table.concat
+local loadstring = loadstring or load
+
+local function check_output_pane()
+ editor.StyleClearAll(output)
+end
-- helpers : utf
@@ -105,6 +112,36 @@ local function utflen(str)
return n
end
+local function utfchar(u)
+ if u <= 0x7F then
+ return char(
+ u
+ )
+ elseif u <= 0x7FF then
+ return char (
+ 0xC0 | (u >> 6),
+ 0x80 | (u & 0x3F)
+ )
+ elseif u <= 0xFFFF then
+ return char (
+ 0xE0 | (u >> 12),
+ 0x80 | ((u >> 6) & 0x3F),
+ 0x80 | (u & 0x3F)
+ )
+ elseif n < 0x110000 then
+ local n = u - 0x10000
+ local r = ((n & 0xF0000) >> 16) + 1
+ return char (
+ 0xF0 | (r >> 2),
+ 0x80 | ((r & 3) << 4) | ((n & 0x0F000) >> 12),
+ 0x80 | ((n & 0x00FC0) >> 6),
+ 0x80 | (n & 0x0003F)
+ )
+ else
+ return utfchar(0xFFFD)
+ end
+end
+
-- helpers: system
function io.exists(filename)
@@ -143,6 +180,14 @@ function os.envvar(str)
end
end
+local function loadtable(name)
+ local f = io.open(name,"rb")
+ if f then
+ f:close()
+ return dofile(name)
+ end
+end
+
-- helpers: reporting
local crlf = "\n"
@@ -203,7 +248,7 @@ end
-- helpers: editor
--- function column_of_position(position)
+-- local function column_of_position(position)
-- local line = editor:LineFromPosition(position)
-- local oldposition = editor.CurrentPos
-- local column = 0
@@ -220,11 +265,11 @@ end
-- end
-- end
--- function line_of_position(position)
+-- local function line_of_position(position)
-- return editor:LineFromPosition(position)
-- end
-function extend_to_start()
+local function extend_to_start()
local selectionstart = editor.SelectionStart
local selectionend = editor.SelectionEnd
local line = editor:LineFromPosition(selectionstart)
@@ -240,7 +285,7 @@ function extend_to_start()
return selectionstart
end
-function extend_to_end() -- editor:LineEndExtend() does not work
+local function extend_to_end() -- editor:LineEndExtend() does not work
local selectionstart = editor.SelectionStart
local selectionend = editor.SelectionEnd
local line = editor:LineFromPosition(selectionend)
@@ -255,44 +300,45 @@ function extend_to_end() -- editor:LineEndExtend() does not work
return selectionend
end
-function getfiletype()
- local firstline = editor:GetLine(0) or ""
- if editor.Lexer == SCLEX_TEX then
- return 'tex'
- elseif editor.Lexer == SCLEX_XML then
- return 'xml'
- elseif find(firstline,"^%%") then
- return 'tex'
- elseif find(firstline,"^<%?xml") then
- return 'xml'
+local function getfiletype()
+ local language = gsub(props.Language or "","script_","")
+ if language ~= "" then
+ return language
else
- return 'unknown'
+ local firstline = editor:GetLine(0) or ""
+ if find(firstline,"^%%") then
+ return 'tex'
+ elseif find(firstline,"^<%?xml") then
+ return 'xml'
+ else
+ return 'unknown'
+ end
end
end
-- inspired by LuaExt's scite_Files
-function get_dir_list(mask)
- local f
- if props['PLAT_GTK'] and props['PLAT_GTK'] ~= "" then
- f = io.popen('ls -1 ' .. mask)
- else
- mask = gsub(mask,'/','\\')
- local tmpfile = 'scite-ctx.tmp'
- local cmd = 'dir /b "' .. mask .. '" > ' .. tmpfile
- os.execute(cmd)
- f = io.open(tmpfile)
- end
- local files = { }
- if not f then -- path check added
- return files
- end
- for line in f:lines() do
- files[#files+1] = line
- end
- f:close()
- return files
-end
+-- local function get_dir_list(mask)
+-- local f
+-- if props['PLAT_GTK'] and props['PLAT_GTK'] ~= "" then
+-- f = io.popen('ls -1 ' .. mask)
+-- else
+-- mask = gsub(mask,'/','\\')
+-- local tmpfile = 'scite-ctx.tmp'
+-- local cmd = 'dir /b "' .. mask .. '" > ' .. tmpfile
+-- os.execute(cmd)
+-- f = io.open(tmpfile)
+-- end
+-- local files = { }
+-- if not f then -- path check added
+-- return files
+-- end
+-- for line in f:lines() do
+-- files[#files+1] = line
+-- end
+-- f:close()
+-- return files
+-- end
--helpers : utf from editor
@@ -345,25 +391,9 @@ end
do
- print("Some CTX extensions:")
+ check_output_pane()
- -- local wordpath = props['ctx.spellcheck.wordpath']
- --
- -- if wordpath and wordpath ~= "" then
- -- print("loading scite-ctx.lua definition file\n")
- -- print("- see scite-ctx.properties for configuring info\n")
- -- print("- ctx.spellcheck.wordpath set to " .. wordpath)
- -- if find(lower(wordpath),"ctxspellpath") then
- -- if os.getenv('ctxspellpath') then
- -- print("- ctxspellpath set to " .. os.getenv('CTXSPELLPATH'))
- -- else
- -- print("- 'ctxspellpath is not set")
- -- end
- -- print("- ctx.spellcheck.wordpath expands to " .. expand(wordpath))
- -- end
- -- else
- -- print("- 'ctxspellpath is not set")
- -- end
+ print("Some CTX extensions:")
local wraplength = props['ctx.wraptext.length']
@@ -385,6 +415,8 @@ do
print("\n- recognized first lines:\n")
print("xml <?xml version='1.0' language='..'")
print("tex % language=..")
+ print("")
+ print("(lexing is currently being upgraded / improved / made more native to scite)")
end
@@ -514,7 +546,6 @@ function sort_text()
local startcolumn = props['SelectionStartColumn'] - 1
local endcolumn = props['SelectionEndColumn'] - 1
-
startposition = extend_to_start()
endposition = extend_to_end()
@@ -532,454 +563,371 @@ function sort_text()
end
-function uncomment_xml()
-
- local startposition = editor.SelectionStart
- local endposition = editor.SelectionEnd
-
- if startposition == endposition then return end
-
- local startposition = editor.SelectionStart
- local endposition = editor.SelectionEnd
+do
- local selection = gsub(editor:GetSelText(), "%<%!%-%-.-%-%-%>", '')
+ local data = {
+ xml = {
+ pattern = "%<%!%-%-.-%-%-%>"
+ },
+ tex = {
+ pattern = "%%.-[\r\n]"
+ },
+ }
+
+ function remove_comment()
+ local filetype = getfiletype()
+ local filedata = data[filetype]
+ local selection = editor:GetSelText()
+ if filedata and selection ~= "" then
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+ selection = gsub(selection,filedata.pattern,"")
+ selection = gsub(selection,"%s+","")
+ editor:ReplaceSel(selection)
+ end
+ end
- editor:GotoPos(startposition)
- editor:SetSel(startposition,endposition)
+end
- editor:ReplaceSel(selection)
- editor:GotoPos(startposition)
+do
-end
+ -- I really needed we can do version numbers but no one uses them.
-function document_text()
+ local patterns = {
+ "(%d+)%s+(%d+)%s+obj",
+ "(%d+)%s+(%d+)%s+R",
+ }
- local startposition = editor.SelectionStart
- local endposition = editor.SelectionEnd
+ local function show_pdf_object(n)
+ local name = props.FilePath
+ local data = resultof("mtxrun --script pdf --object=" .. n .. " " .. name)
+ print(format("file: %s, object number: %s, object data:\n",name,n))
+ print(data)
+ end
- if startposition == endposition then return end
+ function filter_pdf_object()
+ local filetype = getfiletype()
+ local selection = editor:GetSelText()
+ if filetype == "pdf" and selection ~= 0 then
+ local n, m
+ for i=1,#patterns do
+ n, m = match(selection,patterns[i])
+ if n and m then
+ break
+ end
+ end
+ n = tonumber(n)
+ m = tonumber(m)
+ if n and m then
+ show_pdf_object(n)
+ end
+ end
+ end
- startposition = extend_to_start()
- endposition = extend_to_end()
+ function search_pdf_object()
+ local filetype = getfiletype()
+ local selection = editor:GetSelText()
+ if filetype == "pdf" and selection ~= 0 then
+ local onstrip = OnStrip
+ function OnStrip(control,change)
+ if control == 2 then
+ local n = tonumber(scite.StripValue(1))
+ if n then
+ show_pdf_object(n)
+ end
+ OnStrip = onstrip
+ scite.StripShow("")
+ end
+ end
+ scite.StripShow("!'Object Number:'{}(&Search)\n")
+ end
+ end
- editor:SetSel(startposition,endposition)
+end
- local filetype = getfiletype()
+do
- local replacement = ''
- for i = editor:LineFromPosition(startposition), editor:LineFromPosition(endposition) do
- local str = editor:GetLine(i)
- if filetype == 'xml' then
- if find(str,"^<%!%-%- .* %-%->%s*$") then
- replacement = replacement .. gsub(str,"^<%!%-%- (.*) %-%->(%s*)$","%1\n")
- elseif find(str,"%S") then
- replacement = replacement .. '<!-- ' .. gsub(str,"(%s*)$",'') .. " -->\n"
- else
- replacement = replacement .. str
- end
- else
- if find(str,"^%%D%s+$") then
- replacement = replacement .. "\n"
- elseif find(str,"^%%D ") then
- replacement = replacement .. gsub(str,"^%%D ",'')
- else
- replacement = replacement .. '%D ' .. str
+ local valid = {
+ xml = true,
+ tex = true,
+ }
+
+ function document_text()
+ local filetype = getfiletype()
+ if valid[filetype or ""] then
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+ if startposition ~= endposition then
+ startposition = extend_to_start()
+ endposition = extend_to_end()
+ editor:SetSel(startposition,endposition)
+ local replacement = ''
+ for i = editor:LineFromPosition(startposition), editor:LineFromPosition(endposition) do
+ local str = editor:GetLine(i)
+ if filetype == 'xml' then
+ if find(str,"^<%!%-%- .* %-%->%s*$") then
+ replacement = replacement .. gsub(str,"^<%!%-%- (.*) %-%->(%s*)$","%1\n")
+ elseif find(str,"%S") then
+ replacement = replacement .. '<!-- ' .. gsub(str,"(%s*)$",'') .. " -->\n"
+ else
+ replacement = replacement .. str
+ end
+ else
+ if find(str,"^%%D%s+$") then
+ replacement = replacement .. "\n"
+ elseif find(str,"^%%D ") then
+ replacement = replacement .. gsub(str,"^%%D ",'')
+ else
+ replacement = replacement .. '%D ' .. str
+ end
+ end
+ end
+ replacement = gsub(replacement,"[\n\r]$",'')
+ editor:ReplaceSel(replacement)
end
end
end
- editor:ReplaceSel(gsub(replacement,"[\n\r]$",''))
-
end
-function quote_text()
+do
- local filetype, leftquotation, rightquotation = getfiletype(), '', ''
+ local data = {
+ xml = {
+ quote = {
+ left = "<quote>",
+ right = "</quote>",
+ },
+ quotation = {
+ left = "<quotation>",
+ right = "</quotation>",
+ },
+ },
+ tex = {
+ quote = {
+ left = "\\quote {",
+ right = "}",
+ },
+ quotation = {
+ left = "\\quotation {",
+ right = "}",
+ },
+ },
+ }
+
+ function quote_text()
+ local filetype = getfiletype()
+ local filedata = data[filetype]
+ local selection = editor:GetSelText()
+ if filedata and selection ~= "" then
+ selection = gsub(selection,[["(.-)"]], filedata.quotation.left .. "%1" .. filedata.quotation.right)
+ selection = gsub(selection,[['(.-)']], filedata.quote .left .. "%1" .. filedata.quote .right)
+ editor:ReplaceSel(selection)
+ end
+ end
- if filetype == 'xml' then
- leftquotation, rightquotation = "<quotation>", "</quotation>"
- leftquote, rightquote = "<quotation>", "</quote>"
- else
- leftquotation, rightquotation = "\\quotation {", "}"
- leftquote, rightquote = "\\quote {", "}"
+ function quote_text_s()
+ local filetype = getfiletype()
+ local filedata = data[filetype]
+ local selection = editor:GetSelText()
+ if filedata and selection ~= "" then
+ selection = filedata.quote.left .. selection .. filedata.quote.right
+ editor:ReplaceSel(selection)
+ end
end
- local replacement = editor:GetSelText()
- replacement = gsub(replacement,"``(.-)\'\'", leftquotation .. "%1" .. rightquotation)
- replacement = gsub(replacement,"\"(.-)\"", leftquotation .. "%1" .. rightquotation)
- replacement = gsub(replacement,"`(.-)`", leftquote .. "%1" .. rightquote )
- replacement = gsub(replacement,"\'(.-)\'", leftquote .. "%1" .. rightquote )
- editor:ReplaceSel(replacement)
+ function quote_text_d()
+ local filetype = getfiletype()
+ local filedata = data[filetype]
+ local selection = editor:GetSelText()
+ if filedata and selection ~= "" then
+ selection = filedata.quotation.left .. selection .. filedata.quotation.right
+ editor:ReplaceSel(selection)
+ end
+ end
end
-function compound_text()
+do
- local filetype = getfiletype()
+ local data = {
+ xml = {
+ pattern = [[(>[^<%-][^<%-]+)([-/])(%w%w+)]],
+ replacement = [[%1<compound token="%2"/>%3]],
+ },
+ tex = {
+ pattern = [[([^|])([-/]+)([^|])]],
+ replacement = [[%1|%2|%3]],
+ },
+ }
+
+ function compound_text()
+
+ local filetype = getfiletype()
+ local filedata = data[filetype]
+ local selection = editor:GetSelText()
+ if filedata and selection ~= "" then
+ selection = gsub(selection,filedata.pattern,filedata.replacement)
+ editor:ReplaceSel(selection)
+ end
- if filetype == 'xml' then
- editor:ReplaceSel(gsub(editor:GetSelText(),"(>[^<%-][^<%-]+)([-/])(%w%w+)","%1<compound token='%2'/>%3"))
- else
- editor:ReplaceSel(gsub(editor:GetSelText(),"([^|])([-/]+)([^|])","%1|%2|%3"))
end
end
--- written while listening to Alanis Morissette's acoustic
--- Jagged Little Pill and Tori Amos' Beekeeper after
--- reinstalling my good old ATH-7
+-- There used to be some spell checking code here usign regular Scite
+-- mechanisms but that has been moved to the lexer code already a while
+-- ago so I removed the (pre 2005) code here. (See archive.)
--- local language = props["ctx.spellcheck.language"]
--- local wordsize = props["ctx.spellcheck.wordsize"]
--- local wordpath = props["ctx.spellcheck.wordpath"]
---
--- if language == '' then language = 'uk' end
--- if wordsize == '' then wordsize = 4 else wordsize = tonumber(wordsize) end
---
--- local wordfile = ""
--- local wordlist = { }
--- local worddone = 0
---
--- -- we use wordlist as a hash so that we can add entries without the
--- -- need to sort and also use a fast (built in) search
---
--- function check_text() -- obsolete, replaced by lexer
---
--- local dlanguage = props["ctx.spellcheck.language"]
--- local dwordsize = props["ctx.spellcheck.wordsize"]
--- local dwordpath = props["ctx.spellcheck.wordpath"]
---
--- if dlanguage ~= '' then dlanguage = tostring(language) end
--- if dwordsize ~= '' then dwordsize = tonumber(wordsize) end
---
--- local firstline, skipfirst = editor:GetLine(0), false
--- local filetype, wordskip, wordgood = getfiletype(), '', ''
---
--- if filetype == 'tex' then
--- wordskip = "\\"
--- elseif filetype == 'xml' then
--- wordskip = "<"
--- wordgood = ">"
--- end
---
--- if props["ctx.spellcheck.language"] == 'auto' then
--- if filetype == 'tex' then
--- -- % version =1.0 language=uk
--- firstline = gsub(firstline,"^%%%s*",'')
--- firstline = gsub(firstline,"%s*$",'')
--- for key, val in gmatch(firstline,"(%w+)=(%w+)") do
--- if key == "language" then
--- language = val
--- report("auto document language '%s' (%s)",language,"tex")
--- end
--- end
--- skipfirst = true
--- elseif filetype == 'xml' then
--- -- <?xml version='1.0' language='uk' ?>
--- firstline = gsub(firstline,"^%<%?xml%s*", '')
--- firstline = gsub(firstline,"%s*%?%>%s*$", '')
--- for key, val in gmatch(firstline,"(%w+)=[\"\'](.-)[\"\']") do
--- if key == "language" then
--- language = val
--- report("auto document language '%s' (%s)",language."xml")
--- end
--- end
--- skipfirst = true
--- end
--- end
---
--- local fname = props["ctx.spellcheck.wordfile." .. language]
--- local fsize = props["ctx.spellcheck.wordsize." .. language]
---
--- if fsize ~= '' then wordsize = tonumber(fsize) end
---
--- if fname ~= '' and fname ~= wordfile then
--- wordfile, worddone, wordlist = fname, 0, { }
--- for filename in gmatch(wordfile,"[^%,]+") do
--- if wordpath ~= '' then
--- filename = expand(wordpath) .. '/' .. filename
--- end
--- if io.exists(filename) then
--- report("loading " .. filename)
--- for line in io.lines(filename) do
--- if not find(line,"^[%#-]") then
--- str = gsub(line,"%s*$", '')
--- rawset(wordlist,str,true)
--- worddone = worddone + 1
--- end
--- end
--- else
--- report("unknown file '%s'",filename)
--- end
--- end
--- report("%i words loaded",worddone)
--- end
---
--- reset_text()
---
--- if worddone == 0 then
--- report("no (valid) language or wordfile specified")
--- else
--- report("start checking")
--- if wordskip ~= '' then
--- report("ignoring %s ... %s",wordskip,wordgood)
--- end
--- local i, j, lastpos, startpos, endpos, snippet, len, first = 0, 0, -1, 0, 0, '', 0, 0
--- local ok, skip, ch = false, false, ''
--- if skipfirst then first = #firstline end
--- for k = first, editor.TextLength do
--- ch = editor:textrange(k,k+1)
--- if wordgood ~= '' and ch == wordgood then
--- skip = false
--- elseif ch == wordskip then
--- skip = true
--- end
--- if find(ch,"%w") and not find(ch,"%d") then
--- if not skip then
--- if ok then
--- endpos = k
--- else
--- startpos = k
--- endpos = k
--- ok = true
--- end
--- end
--- elseif ok and not skip then
--- len = endpos - startpos + 1
--- if len >= wordsize then
--- snippet = editor:textrange(startpos,endpos+1)
--- i = i + 1
--- if wordlist[snippet] or wordlist[lower(snippet)] then
--- j = j + 1
--- else
--- editor:StartStyling(startpos,INDICS_MASK)
--- editor:SetStyling(len,INDIC2_MASK) -- INDIC0_MASK+2
--- end
--- end
--- ok = false
--- elseif wordgood == '' then
--- skip = (ch == wordskip)
--- end
--- end
--- report("%i words checked, %i errors found",i,i-j)
--- end
---
--- end
---
--- function reset_text()
--- editor:StartStyling(0,INDICS_MASK)
--- editor:SetStyling(editor.TextLength,INDIC_PLAIN)
--- end
+do
-function add_text()
+ function add_text()
- local startposition = editor.SelectionStart
- local endposition = editor.SelectionEnd
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
- if startposition == endposition then return end
+ if startposition == endposition then return end
- local selection = gsub(editor:GetSelText(), "%s*$", '')
+ local selection = gsub(editor:GetSelText(), "%s*$", '')
- local n, sum = 0, 0
- for s in gmatch(selection,"[%d%.%,]+") do
- s = gsub(s,",",".")
- local m = tonumber(s)
- if m then
- n = n + 1
- sum = sum + m
- report("%4i : %s",n,m)
+ local n, sum = 0, 0
+ for s in gmatch(selection,"[%-%+]?[%d%.%,]+") do -- todo: proper lpeg
+ s = gsub(s,",",".")
+ local m = tonumber(s)
+ if m then
+ n = n + 1
+ sum = sum + m
+ report("%4i : %s",n,m)
+ end
end
- end
- if n > 0 then
- report()
- report("sum : %s",sum)
- else
- report("no numbers selected")
+ if n > 0 then
+ report()
+ report("sum : %s",sum)
+ else
+ report("no numbers selected")
+ end
+
end
end
--- test
-
-local bidi = nil
-local dirty = { }
-
-local mapping = {
- l = 0, -- "Left-to-Right",
- lre = 7, -- "Left-to-Right Embedding",
- lro = 7, -- "Left-to-Right Override",
- r = 2, -- "Right-to-Left",
- al = 3, -- "Right-to-Left Arabic",
- rle = 7, -- "Right-to-Left Embedding",
- rlo = 7, -- "Right-to-Left Override",
- pdf = 7, -- "Pop Directional Format",
- en = 4, -- "European Number",
- es = 4, -- "European Number Separator",
- et = 4, -- "European Number Terminator",
- an = 5, -- "Arabic Number",
- cs = 6, -- "Common Number Separator",
- nsm = 6, -- "Non-Spacing Mark",
- bn = 7, -- "Boundary Neutral",
- b = 0, -- "Paragraph Separator",
- s = 7, -- "Segment Separator",
- ws = 0, -- "Whitespace",
- on = 7, -- "Other Neutrals",
-}
-
--- todo: take from scite-context-theme.lua
-
-local colors = { -- b g r
- [0] = 0x000000, -- black
- [1] = 0x00007F, -- red
- [2] = 0x007F00, -- green
- [3] = 0x7F0000, -- blue
- [4] = 0x7F7F00, -- cyan
- [5] = 0x7F007F, -- magenta
- [6] = 0x007F7F, -- yellow
- [7] = 0x007FB0, -- orange
- [8] = 0x4F4F4F, -- dark
-}
-
--- in principle, when we could inject some funny symbol that is nto part of the
--- stream and/or use a different extra styling for each snippet then selection
--- would work and rendering would look better too ... one problem is that a font
--- rendering can collapse characters due to font features
-
--- function OnChar(c)
---
--- cat = editor.CharAt
---
--- editor.CodePage = SC_CP_UTF8
--- editor.Lexer = SCLEX_CONTAINER
---
--- if not bidi then
--- bidi = require("context.scite-ctx-bidi")
--- end
---
--- local line = editor:LineFromPosition(editor.CurrentPos)
--- local str = editor:GetLine(line)
--- local len = #str
--- local bol = editor:PositionFromLine(line)
---
--- local t = { }
--- local a = { }
--- local n = 0
--- local i = 0
---
--- local v
--- while i < len do
--- n = n + 1
--- v, s = toutfcode(i)
--- t[n] = v
--- a[n] = s
--- i = i + s
--- end
---
--- local t = bidi.process(t)
---
--- local defaultcolor = mapping.l
--- local mirrorcolor = 1
---
--- local lastcolor = -1
--- local runlength = 0
---
--- editor:StartStyling(bol,INDICS_MASK)
--- for i=1,n do
--- local ti = t[i]
--- local direction = ti.direction
--- local mirror = t[i].mirror
--- local color = (mirror and mirrorcolor) or (direction and mapping[direction]) or defaultcolor
--- if color == lastcolor then
--- runlength = runlength + a[i]
--- else
--- if runlength > 0 then
--- editor:SetStyling(runlength,INDIC_STRIKE)
--- end
--- lastcolor = color
--- runlength = a[i]
--- end
--- end
--- if runlength > 0 then
--- editor:SetStyling(runlength,INDIC_STRIKE)
--- end
--- editor:SetStyling(2,31)
---
--- dirty[props.FileNameExt] = true
---
--- end
-
-function show_bidi()
-
- cat = editor.CharAt
+local dirty = { } do
+
+ local bidi = nil
+
+ local mapping = {
+ l = 0, -- "Left-to-Right",
+ lre = 7, -- "Left-to-Right Embedding",
+ lro = 7, -- "Left-to-Right Override",
+ r = 2, -- "Right-to-Left",
+ al = 3, -- "Right-to-Left Arabic",
+ rle = 7, -- "Right-to-Left Embedding",
+ rlo = 7, -- "Right-to-Left Override",
+ pdf = 7, -- "Pop Directional Format",
+ en = 4, -- "European Number",
+ es = 4, -- "European Number Separator",
+ et = 4, -- "European Number Terminator",
+ an = 5, -- "Arabic Number",
+ cs = 6, -- "Common Number Separator",
+ nsm = 6, -- "Non-Spacing Mark",
+ bn = 7, -- "Boundary Neutral",
+ b = 0, -- "Paragraph Separator",
+ s = 7, -- "Segment Separator",
+ ws = 0, -- "Whitespace",
+ on = 7, -- "Other Neutrals",
+ }
+
+ -- todo: take from scite-context-theme.lua
+
+ local colors = { -- b g r
+ [0] = 0x000000, -- black
+ [1] = 0x00007F, -- red
+ [2] = 0x007F00, -- green
+ [3] = 0x7F0000, -- blue
+ [4] = 0x7F7F00, -- cyan
+ [5] = 0x7F007F, -- magenta
+ [6] = 0x007F7F, -- yellow
+ [7] = 0x007FB0, -- orange
+ [8] = 0x4F4F4F, -- dark
+ }
+
+ -- in principle, when we could inject some funny symbol that is not part of the
+ -- stream and/or use a different extra styling for each snippet then selection
+ -- would work and rendering would look better too ... one problem is that a font
+ -- rendering can collapse characters due to font features
+
+ function show_bidi()
+
+ cat = editor.CharAt
+
+ editor.CodePage = SC_CP_UTF8
+
+ for i=1,#colors do -- 0,#colors
+ editor.StyleFore[i] = colors[i] -- crashes
+ end
- editor.CodePage = SC_CP_UTF8
- editor.Lexer = SCLEX_CONTAINER
+ if not bidi then
+ bidi = require("context.scite-ctx-bidi")
+ end
- for i=1,#colors do -- 0,#colors
- editor.StyleFore[i] = colors[i]
- end
+ local len = editor.TextLength
+ local str = editor:textrange(0,len-1)
- if not bidi then
- bidi = require("context.scite-ctx-bidi")
- end
+ local t = { }
+ local a = { }
+ local n = 0
+ local i = 0
- local len = editor.TextLength
- local str = editor:textrange(0,len-1)
-
- local t = { }
- local a = { }
- local n = 0
- local i = 0
-
- local v
- while i < len do
- n = n + 1
- v, s = toutfcode(i)
- t[n] = v
- a[n] = s
- i = i + s
- end
+ local v
+ while i < len do
+ n = n + 1
+ v, s = toutfcode(i)
+ t[n] = v
+ a[n] = s
+ i = i + s
+ end
- local t = bidi.process(t)
+ local t = bidi.process(t)
- editor:StartStyling(0,31)
+ editor:StartStyling(0,31)
- local defaultcolor = mapping.l
- local mirrorcolor = 1
+ local defaultcolor = mapping.l
+ local mirrorcolor = 1
- if false then
- for i=1,n do
- local direction = t[i].direction
- local color = direction and (mapping[direction] or 0) or defaultcolor
- editor:SetStyling(a[i],color)
- end
- else
- local lastcolor = -1
- local runlength = 0
- for i=1,n do
- local ti = t[i]
- local direction = ti.direction
- local mirror = t[i].mirror
- local color = (mirror and mirrorcolor) or (direction and mapping[direction]) or defaultcolor
- if color == lastcolor then
- runlength = runlength + a[i]
- else
- if runlength > 0 then
- editor:SetStyling(runlength,lastcolor)
+ if false then
+ for i=1,n do
+ local direction = t[i].direction
+ local color = direction and (mapping[direction] or 0) or defaultcolor
+ editor:SetStyling(a[i],color)
+ end
+ else
+ local lastcolor = -1
+ local runlength = 0
+ for i=1,n do
+ local ti = t[i]
+ local direction = ti.direction
+ local mirror = t[i].mirror
+ local color = (mirror and mirrorcolor) or (direction and mapping[direction]) or defaultcolor
+ if color == lastcolor then
+ runlength = runlength + a[i]
+ else
+ if runlength > 0 then
+ editor:SetStyling(runlength,lastcolor)
+ end
+ lastcolor = color
+ runlength = a[i]
end
- lastcolor = color
- runlength = a[i]
+ end
+ if runlength > 0 then
+ editor:SetStyling(runlength,lastcolor)
end
end
- if runlength > 0 then
- editor:SetStyling(runlength,lastcolor)
- end
- end
- editor:SetStyling(2,31)
--- editor:StartStyling(0,31)
+ editor:SetStyling(2,31)
+
+ dirty[props.FileNameExt] = true
- dirty[props.FileNameExt] = true
+ end
end
@@ -1026,697 +974,669 @@ end
-- main menu
-local menutrigger = 12
+do
-function show_menu(menulist)
- UserListShow(menutrigger, menulist)
-end
+ local menutrigger = 12
-function process_menu(action)
- if not find(action,"%(%)$") then
- assert(loadstring(action .. "()"))()
- else
- assert(loadstring(action))()
+ function show_menu(menulist)
+ UserListShow(menutrigger, menulist)
end
-end
-menufunctions[12] = process_menu
+ function process_menu(action)
+ if not find(action,"%(%)$") then
+ assert(load(action .. "()"))()
+ else
+ assert(load(action))()
+ end
+ end
--- templates
+ menufunctions[12] = process_menu
--- <?context-directive job ctxtemplate demotemplate.lua ?>
+end
-local templatetrigger = 13
+-- The template code is old but used so we cannot drop it. I will cook up a better
+-- system some day, using Lua tables instead.
-local ctx_template_file = "scite-ctx-templates.lua"
-local ctx_template_list = { }
-local ctx_template_menu = { }
+do
-function ctx_list_loaded(path)
- return ctx_path_list[path] and #ctx_path_list[path] > 0
-end
+ -- <?context-directive job ctxtemplate demotemplate.lua ?>
-local function loadtable(name)
- local f = io.open(name,"rb")
- if f then
- f:close()
- return dofile(name)
- end
-end
+ local templatetrigger = 13
+
+ local ctx_template_file = "scite-ctx-templates.lua"
+ local ctx_template_list = { }
+ local ctx_template_menu = { }
+
+ -- function ctx_list_loaded(path)
+ -- return ctx_path_list[path] and #ctx_path_list[path] > 0
+ -- end
-local patterns = {
- xml = "<%?context%-directive job ctxtemplate (.-) %?>"
-}
+ local patterns = {
+ xml = "<%?context%-directive job ctxtemplate (.-) %?>"
+ }
-local function loadtemplate(name)
- local temp = gsub(name,"\\","/")
- local okay = loadtable(temp)
- if okay then
- print("template loaded: " .. name)
+ local function loadtemplate(name)
+ local temp = gsub(name,"\\","/")
+ local okay = loadtable(temp)
+ if okay then
+ print("template loaded: " .. name)
+ end
+ return okay
end
- return okay
-end
-local function loadtemplatefrompaths(path,name)
- return loadtemplate(path .. "/" .. name) or
- loadtemplate(path .. "/../" .. name) or
- loadtemplate(path .. "/../../" .. name)
-end
+ local function loadtemplatefrompaths(path,name)
+ return loadtemplate(path .. "/" .. name) or
+ loadtemplate(path .. "/../" .. name) or
+ loadtemplate(path .. "/../../" .. name)
+ end
-function insert_template(templatelist)
- local path = props["FileDir"]
- local suffix = props["FileExt"]
- local list = ctx_template_list[path]
- if list == nil then
- local pattern = patterns[suffix]
- local okay = false
- if pattern then
- for i=0,9 do
- local line = editor:GetLine(i) or ""
- local name = match(line,pattern)
- if name then
- okay = loadtemplatefrompaths(path,name)
- if not okay then
- name = resultof("mtxrun --find-file " .. name)
- if name then
- name = gsub(name,"\n","")
- okay = loadtemplate(name)
+ function insert_template(templatelist)
+ local path = props["FileDir"]
+ local suffix = props["FileExt"]
+ local list = ctx_template_list[path]
+ if list == nil then
+ local pattern = patterns[suffix]
+ local okay = false
+ if pattern then
+ for i=0,9 do
+ local line = editor:GetLine(i) or ""
+ local name = match(line,pattern)
+ if name then
+ okay = loadtemplatefrompaths(path,name)
+ if not okay then
+ name = resultof("mtxrun --find-file " .. name)
+ if name then
+ name = gsub(name,"\n","")
+ okay = loadtemplate(name)
+ end
end
+ break
end
- break
end
end
+ if not okay then
+ okay = loadtemplatefrompaths(path,ctx_template_file)
+ end
+ if not okay then
+ okay = loadtemplate(props["SciteDefaultHome"] .. "/context/" .. ctx_template_file)
+ end
+ if okay then
+ list = okay
+ else
+ list = false
+ print("no template file found")
+ end
+ ctx_template_list[path] = list
end
- if not okay then
- okay = loadtemplatefrompaths(path,ctx_template_file)
- end
- if not okay then
- okay = loadtemplate(props["SciteDefaultHome"] .. "/context/" .. ctx_template_file)
- end
- if okay then
- list = okay
- else
- list = false
- print("no template file found")
- end
- ctx_template_list[path] = list
- end
- ctx_template_menu = { }
- if list then
- local okay = list[suffix]
- if okay then
- local menu = { }
- for i=1,#okay do
- local o = okay[i]
- local n = o.name
- menu[#menu+1] = n
- ctx_template_menu[n] = o
+ ctx_template_menu = { }
+ if list then
+ local okay = list[suffix]
+ if okay then
+ local menu = { }
+ for i=1,#okay do
+ local o = okay[i]
+ local n = o.name
+ menu[#menu+1] = n
+ ctx_template_menu[n] = o
+ end
+ UserListShow(templatetrigger, menu, true)
end
- UserListShow(templatetrigger, menu, true)
end
end
-end
-function inject_template(action)
- if ctx_template_menu then
- local a = ctx_template_menu[action]
- if a then
- local template = a.template
- local nature = a.nature
- if template then
- local margin = props['SelectionStartColumn'] - 1
- -- template = gsub(template,"\\n","\n")
- template = gsub(template,"%?%?","_____")
- local pos = find(template,"%?")
- template = gsub(template,"%?","")
- template = gsub(template,"_____","?")
- if nature == "display" then
- local spaces = rep(" ",margin)
- if not find(template,"\n$") then
- template = template .. "\n"
+ function inject_template(action)
+ if ctx_template_menu then
+ local a = ctx_template_menu[action]
+ if a then
+ local template = a.template
+ local nature = a.nature
+ if template then
+ local margin = props['SelectionStartColumn'] - 1
+ -- template = gsub(template,"\\n","\n")
+ template = gsub(template,"%?%?","_____")
+ local pos = find(template,"%?")
+ template = gsub(template,"%?","")
+ template = gsub(template,"_____","?")
+ if nature == "display" then
+ local spaces = rep(" ",margin)
+ if not find(template,"\n$") then
+ template = template .. "\n"
+ end
+ template = gsub(template,"\n",function(s)
+ return "\n" .. spaces
+ end)
+ pos = pos + margin -- todo: check for first line
+ end
+ editor:insert(editor.CurrentPos,template)
+ if pos then
+ editor.CurrentPos = editor.CurrentPos + pos - 1
+ editor.SelectionStart = editor.CurrentPos
+ editor.SelectionEnd = editor.CurrentPos
+ editor:GotoPos(editor.CurrentPos)
end
- template = gsub(template,"\n",function(s)
- return "\n" .. spaces
- end)
- pos = pos + margin -- todo: check for first line
- end
- editor:insert(editor.CurrentPos,template)
- if pos then
- editor.CurrentPos = editor.CurrentPos + pos - 1
- editor.SelectionStart = editor.CurrentPos
- editor.SelectionEnd = editor.CurrentPos
- editor:GotoPos(editor.CurrentPos)
end
end
end
end
-end
-
-menufunctions[13] = inject_template
--- command.name.26.*=Open Logfile
--- command.subsystem.26.*=3
--- command.26.*=open_log
--- command.save.before.26.*=2
--- command.groupundo.26.*=yes
--- command.shortcut.26.*=Ctrl+E
+ menufunctions[13] = inject_template
-function open_log()
- scite.Open(props['FileName'] .. ".log")
end
-if not lpeg then
-
- local okay, root = pcall(function() return require "lpeg" end)
+do
- if okay then
- lpeg = root
- else
- trace("\nwarning: lpeg not loaded\n")
- end
+ -- These will become external and taken from sort-lan.lua in the
+ -- ConTeXt distribution.
-end
+ local textlists = {
+ en = {
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z",
-local textlists = { -- taken from sort-lan.lua
- en = {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z",
- },
- nl = {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z",
- },
- fr = {
- "a", "æ", "b", "c", "ç", "d", "e", "è", "é", "ê",
- "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
- "p", "q", "r", "s", "t", "u", "v", "w", "x", "y",
- "z",
-
- "A", "Æ", "B", "C", "Ç", "D", "E", "È", "É", "Ê",
- "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
- "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y",
- "Z",
-
- },
- de = {
- "a", "ä", "b", "c", "d", "e", "f", "g", "h", "i",
- "j", "k", "l", "m", "n", "o", "ö", "p", "q", "r",
- "s", "ß", "t", "u", "ü", "v", "w", "x", "y", "z",
-
- "A", "Ä", "B", "C", "D", "E", "F", "G", "H", "I",
- "J", "K", "L", "M", "N", "O", "Ö", "P", "Q", "R",
- "S", "SS", "T", "U", "Ü", "V", "W", "X", "Y", "Z",
- },
- fi = { -- finish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
- },
- sl = { -- slovenian
- "a", "b", "c", "č", "ć", "d", "đ", "e", "f", "g", "h", "i",
- "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "š", "t",
- "u", "v", "w", "x", "y", "z", "ž",
-
- "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F", "G", "H", "I",
- "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "Š", "T",
- "U", "V", "W", "X", "Y", "Z", "Ž",
- },
- ru = { -- rusian
- "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и",
- "і", "й", "к", "л", "м", "н", "о", "п", "р", "с",
- "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
- "ь", "ѣ", "э", "ю", "я", "ѳ", "ѵ",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И",
- "І", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С",
- "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы",
- "Ь", "Ѣ", "Э", "Ю", "Я", "Ѳ", "Ѵ",
- },
- uk = { -- ukraninuan
- "а", "б", "в", "г", "ґ", "д", "е", "є", "ж", "з", "и", "і",
- "ї", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у",
- "ф", "х", "ц", "ч", "ш", "щ", "ь", "ю", "я",
-
- "А", "Б", "В", "Г", "Ґ", "Д", "Е", "Є", "Ж", "З", "И", "І",
- "Ї", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У",
- "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ю", "Я",
- },
- be = { -- belarusia
- "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "і",
- "й", "к", "л", "м", "н", "о", "п", "р", "с", "т",
- "у", "ў", "ф", "х", "ц", "ч", "ш", "ы", "ь", "э",
- "ю", "я",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "І",
- "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т",
- "У", "Ў", "Ф", "Х", "Ц", "Ч", "Ш", "Ы", "Ь", "Э",
- "Ю", "Я",
- },
- bg = { -- bulgarian
- "а", "б", "в", "г", "д", "е", "ж", "з","и", "й",
- "к", "a", "л", "a", "м", "н", "о", "п", "р", "с",
- "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ь",
- "ю", "я",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ж", "З","И", "Й",
- "К", "A", "Л", "A", "М", "Н", "О", "П", "Р", "С",
- "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ь",
- "Ю", "Я",
- },
- pl = { -- polish
- "a", "ą", "b", "c", "ć", "d", "e", "ę", "f", "g",
- "h", "i", "j", "k", "l", "ł", "m", "n", "ń", "o",
- "ó", "p", "q", "r", "s", "ś", "t", "u", "v", "w",
- "x", "y", "z", "ź", "ż",
-
- "A", "Ą", "B", "C", "Ć", "D", "E", "Ę", "F", "G",
- "H", "I", "J", "K", "L", "Ł", "M", "N", "Ń", "O",
- "Ó", "P", "Q", "R", "S", "Ś", "T", "U", "V", "W",
- "X", "Y", "Z", "Ź", "Ż",
- },
- cz = { -- czech
- "a", "á", "b", "c", "č", "d", "ď", "e", "é", "ě",
- "f", "g", "h", "i", "í", "j", "k", "l", "m",
- "n", "ň", "o", "ó", "p", "q", "r", "ř", "s", "š",
- "t", "ť", "u", "ú", "ů", "v", "w", "x", "y", "ý",
- "z", "ž",
-
- "A", "Á", "B", "C", "Č", "D", "Ď", "E", "É", "Ě",
- "F", "G", "H", "I", "Í", "J", "K", "L", "M",
- "N", "Ň", "O", "Ó", "P", "Q", "R", "Ř", "S", "Š",
- "T", "Ť", "U", "Ú", "Ů", "V", "W", "X", "Y", "Ý",
- "Z", "Ž",
- },
- sk = { -- slovak
- "a", "á", "ä", "b", "c", "č", "d", "ď",
- "e", "é", "f", "g", "h", ch, "i", "í", "j", "k",
- "l", "ĺ", "ľ", "m", "n", "ň", "o", "ó", "ô", "p",
- "q", "r", "ŕ", "s", "š", "t", "ť", "u", "ú", "v",
- "w", "x", "y", "ý", "z", "ž",
-
- "A", "Á", "Ä", "B", "C", "Č", "D", "Ď",
- "E", "É", "F", "G", "H", "I", "Í", "J", "K",
- "L", "Ĺ", "Ľ", "M", "N", "Ň", "O", "Ó", "Ô", "P",
- "Q", "R", "Ŕ", "S", "Š", "T", "Ť", "U", "Ú", "V",
- "W", "X", "Y", "Ý", "Z", "Ž",
- },
- hr = { -- croatian
- "a", "b", "c", "č", "ć", "d", "đ", "e", "f",
- "g", "h", "i", "j", "k", "l", "m", "n",
- "o", "p", "r", "s", "š", "t", "u", "v", "z", "ž",
-
- "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F",
- "G", "H", "I", "J", "K", "L", "M", "N",
- "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž",
- },
- sr = { -- serbian
- "а", "б", "в", "г", "д", "ђ", "е", "ж", "з", "и",
- "ј", "к", "л", "љ", "м", "н", "њ", "о", "п", "р",
- "с", "т", "ћ", "у", "ф", "х", "ц", "ч", "џ", "ш",
-
- "А", "Б", "В", "Г", "Д", "Ђ", "Е", "Ж", "З", "И",
- "Ј", "К", "Л", "Љ", "М", "Н", "Њ", "О", "П", "Р",
- "С", "Т", "Ћ", "У", "Ф", "Х", "Ц", "Ч", "Џ", "Ш",
- },
- no = { -- norwegian
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
- },
- da = { --danish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
- },
- sv = { -- swedish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
- },
- is = { -- islandic
- "a", "á", "b", "d", "ð", "e", "é", "f", "g", "h",
- "i", "í", "j", "k", "l", "m", "n", "o", "ó", "p",
- "r", "s", "t", "u", "ú", "v", "x", "y", "ý", "þ",
- "æ", "ö",
-
- "A", "Á", "B", "D", "Ð", "E", "É", "F", "G", "H",
- "I", "Í", "J", "K", "L", "M", "N", "O", "Ó", "P",
- "R", "S", "T", "U", "Ú", "V", "X", "Y", "Ý", "Þ",
- "Æ", "Ö",
- },
- -- gr = { -- greek
- -- "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
- -- "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
- -- "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
- -- "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
- -- "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
- -- "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
- -- "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
- -- "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
- -- "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
- -- "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
- -- "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
- -- "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
- -- "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
- -- "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
- -- "ᾣ", "ᾦ", "ᾧ",
- --
- -- "Α", "Ά", "Ὰ", "Α͂", "Ἀ", "Ἁ", "Ἄ", "Ἂ", "Ἆ",
- -- "Ἁ", "Ἅ", "Ἃ", "Ἇ",
- -- "Β", "Γ", "Δ", "Ε", "Έ", "Ὲ",
- -- "Ἐ", "Ἔ", "Ἒ", "Ἑ", "Ἕ", "Ἓ", "Ζ", "Η", "Η", "Ή",
- -- "Ὴ", "Η͂", "Ἠ", "Ἤ", "Ἢ", "Ἦ", "Ἡ", "Ἥ",
- -- "Ἣ", "Ἧ",
- -- "Θ", "Ι", "Ί", "Ὶ", "Ι͂", "Ἰ", "Ἴ", "Ἲ",
- -- "Ἶ", "Ἱ", "Ἵ", "Ἳ", "Ἷ", "Ϊ", "Ϊ́", "Ϊ̀", "Ϊ͂", "Κ",
- -- "Λ", "Μ", "Ν", "Ξ", "Ο", "Ό", "Ὸ", "Ὀ", "Ὄ", "Ὂ",
- -- "Ὁ", "Ὅ", "Ὃ", "Π", "Ρ", "Ρ̓", "Ῥ", "Σ", "Σ", "Τ",
- -- "Υ", "Ύ", "Ὺ", "Υ͂", "Υ̓", "Υ̓́", "Υ̓̀", "Υ̓͂", "Ὑ", "Ὕ",
- -- "Ὓ", "Ὗ", "Ϋ", "Ϋ́", "Ϋ̀", "Ϋ͂", "Φ", "Χ", "Ψ", "Ω",
- -- "Ώ", "Ὼ", "Ω͂", "Ὠ", "Ὤ", "Ὢ", "Ὦ", "Ὡ",
- -- "Ὥ", "Ὣ", "Ὧ",
- -- },
- gr = { -- greek
- "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",
- "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "τ", "υ",
- "φ", "χ", "ψ", "ω",
-
- "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ",
- "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ",
- "Χ", "Ψ", "Ω",
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z",
},
- la = { -- latin
- "a", "ā", "ă", "b", "c", "d", "e", "ē", "ĕ", "f",
- "g", "h", "i", "ī", "ĭ", "j", "k", "l", "m", "n",
- "o", "ō", "ŏ", "p", "q", "r", "s", "t", "u", "ū",
- "ŭ", "v", "w", "x", "y", "ȳ", "y̆", "z", "æ",
-
- "A", "Ā", "Ă", "B", "C", "D", "E", "Ē", "Ĕ", "F",
- "G", "H", "I", "Ī", "Ĭ", "J", "K", "L", "M", "N",
- "O", "Ō", "Ŏ", "P", "Q", "R", "S", "T", "U", "Ū",
- "Ŭ", "V", "W", "X", "Y", "Ȳ", "Y̆", "Z", "Æ",
- },
- it = { -- italian
- "a", "á", "b", "c", "d", "e", "é", "è", "f", "g",
- "h", "i", "í", "ì", "j", "k", "l", "m", "n", "o",
- "ó", "ò", "p", "q", "r", "s", "t", "u", "ú", "ù",
- "v", "w", "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É", "È", "F", "G",
- "H", "I", "Í", "Ì", "J", "K", "L", "M", "N", "O",
- "Ó", "Ò", "P", "Q", "R", "S", "T", "U", "Ú", "Ù",
- "V", "W", "X", "Y", "Z",
- },
- ro = { -- romanian
- "a", "ă", "â", "b", "c", "d", "e", "f", "g", "h",
- "i", "î", "j", "k", "l", "m", "n", "o", "p", "q",
- "r", "s", "ș", "t", "ț", "u", "v", "w", "x", "y",
- "z",
-
- "A", "Ă", "Â", "B", "C", "D", "E", "F", "G", "H",
- "I", "Î", "J", "K", "L", "M", "N", "O", "P", "Q",
- "R", "S", "Ș", "T", "Ț", "U", "V", "W", "X", "Y",
- "Z",
- },
- es = { -- spanish
- "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
- "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
- "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
- "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É", "F", "G", "H",
- "I", "Í", "J", "K", "L", "M", "N", "Ñ", "O", "Ó",
- "P", "Q", "R", "S", "T", "U", "Ú", "Ü", "V", "W",
- "X", "Y", "Z",
- },
- pt = { -- portuguese
- "a", "á", "â", "ã", "à", "b", "c", "ç", "d", "e",
- "é", "ê", "f", "g", "h", "i", "í", "j", "k", "l",
- "m", "n", "o", "ó", "ô", "õ", "p", "q", "r", "s",
- "t", "u", "ú", "ü", "v", "w", "x", "y", "z",
-
- "A", "Á", "Â", "Ã", "À", "B", "C", "Ç", "D", "E",
- "É", "Ê", "F", "G", "H", "I", "Í", "J", "K", "L",
- "M", "N", "O", "Ó", "Ô", "Õ", "P", "Q", "R", "S",
- "T", "U", "Ú", "Ü", "V", "W", "X", "Y", "Z",
- },
- lt = { -- lithuanian
- "a", "ą", "b", "c", "ch", "č", "d", "e", "ę", "ė",
- "f", "g", "h", "i", "į", "y", "j", "k", "l", "m",
- "n", "o", "p", "r", "s", "š", "t", "u", "ų", "ū",
- "v", "z", "ž",
-
- "A", "Ą", "B", "C", "CH", "Č", "D", "E", "Ę", "Ė",
- "F", "G", "H", "I", "Į", "Y", "J", "K", "L", "M",
- "N", "O", "P", "R", "S", "Š", "T", "U", "Ų", "Ū",
- "V", "Z", "Ž",
- },
- lv = { -- latvian
- "a", "ā", "b", "c", "č", "d", "e", "ē", "f", "g",
- "ģ", "h", "i", "ī", "j", "k", "ķ", "l", "ļ", "m",
- "n", "ņ", "o", "ō", "p", "r", "ŗ", "s", "š", "t",
- "u", "ū", "v", "z", "ž",
-
- "A", "Ā", "B", "C", "Č", "D", "E", "Ē", "F", "G",
- "Ģ", "H", "I", "Ī", "J", "K", "Ķ", "L", "Ļ", "M",
- "N", "Ņ", "O", "Ō", "P", "R", "Ŗ", "S", "Š", "T",
- "U", "Ū", "V", "Z", "Ž",
- },
- hu = { -- hungarian
- "a", "á", "b", "c", "d", "e", "é",
- "f", "g", "h", "i", "í", "j", "k", "l",
- "m", "n", "o", "ó", "ö", "ő", "p", "q", "r",
- "s", "t", "u", "ú", "ü", "ű", "v", "w",
- "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É",
- "F", "G", "H", "I", "Í", "J", "K", "L",
- "M", "N", "O", "Ó", "Ö", "Ő", "P", "Q", "R",
- "S", "T", "U", "Ú", "Ü", "Ű", "V", "W",
- "X", "Y", "Z",
- },
- et = { -- estonian
- "a", "b", "d", "e", "f", "g", "h", "i", "j", "k",
- "l", "m", "n", "o", "p", "r", "s", "š", "z", "ž",
- "t", "u", "v", "w", "õ", "ä", "ö", "ü", "x", "y",
-
- "A", "B", "D", "E", "F", "G", "H", "I", "J", "K",
- "L", "M", "N", "O", "P", "R", "S", "Š", "Z", "Ž",
- "T", "U", "V", "W", "Õ", "Ä", "Ö", "Ü", "X", "Y",
- },
- -- jp = { -- japanese
- -- "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ",
- -- "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と",
- -- "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ",
- -- "ま", "み", "む", "め", "も", "や", "ゆ", "よ",
- -- "ら", "り", "る", "れ", "ろ", "わ", "ゐ", "ゑ", "を", "ん",
- -- },
-}
-
-local textselector = { }
-for k, v in next, textlists do
- textselector[#textselector+1] = k
-end
-table.sort(textselector)
-
-local mathsets = {
- { "tf", {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
- "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
- }, },
- { "bf", {
- "𝐛", "𝐜", "𝐝", "𝐞", "𝐟", "𝐠", "𝐡", "𝐢", "𝐣", "𝐤", "𝐥", "𝐦", "𝐧", "𝐨", "𝐩", "𝐪", "𝐫", "𝐬", "𝐭", "𝐮", "𝐯", "𝐰", "𝐱", "𝐲", "𝐳",
- "𝐀", "𝐁", "𝐂", "𝐃", "𝐄", "𝐅", "𝐆", "𝐇", "𝐈", "𝐉", "𝐊", "𝐋", "𝐌", "𝐍", "𝐎", "𝐏", "𝐐", "𝐑", "𝐒", "𝐓", "𝐔", "𝐕", "𝐖", "𝐗", "𝐘", "𝐙", "𝐚",
- "𝟎", "𝟏", "𝟐", "𝟑", "𝟒", "𝟓", "𝟔", "𝟕", "𝟖", "𝟗"
- }, },
- { "it", {
- "𝑎", "𝑏", "𝑐", "𝑑", "𝑒", "𝑓", "𝑔", "ℎ", "𝑖", "𝑗", "𝑘", "𝑙", "𝑚", "𝑛", "𝑜", "𝑝", "𝑞", "𝑟", "𝑠", "𝑡", "𝑢", "𝑣", "𝑤", "𝑥", "𝑦", "𝑧",
- "𝐴", "𝐵", "𝐶", "𝐷", "𝐸", "𝐹", "𝐺", "𝐻", "𝐼", "𝐽", "𝐾", "𝐿", "𝑀", "𝑁", "𝑂", "𝑃", "𝑄", "𝑅", "𝑆", "𝑇", "𝑈", "𝑉", "𝑊", "𝑋", "𝑌", "𝑍",
- }, },
- { "bi", {
- "𝒂", "𝒃", "𝒄", "𝒅", "𝒆", "𝒇", "𝒈", "𝒉", "𝒊", "𝒋", "𝒌", "𝒍", "𝒎", "𝒏", "𝒐", "𝒑", "𝒒", "𝒓", "𝒔", "𝒕", "𝒖", "𝒗", "𝒘", "𝒙", "𝒚", "𝒛",
- "𝑨", "𝑩", "𝑪", "𝑫", "𝑬", "𝑭", "𝑮", "𝑯", "𝑰", "𝑱", "𝑲", "𝑳", "𝑴", "𝑵", "𝑶", "𝑷", "𝑸", "𝑹", "𝑺", "𝑻", "𝑼", "𝑽", "𝑾", "𝑿", "𝒀", "𝒁",
- }, },
- { "sc", {
- "𝒵", "𝒶", "𝒷", "𝒸", "𝒹", "ℯ", "𝒻", "ℊ", "𝒽", "𝒾", "𝒿", "𝓀", "𝓁", "𝓂", "𝓃", "ℴ", "𝓅", "𝓆", "𝓇", "𝓈", "𝓉", "𝓊", "𝓋", "𝓌", "𝓍", "𝓎", "𝓏",
- "𝒜", "ℬ", "𝒞", "𝒟", "ℰ", "ℱ", "𝒢", "ℋ", "ℐ", "𝒥", "𝒦", "ℒ", "ℳ", "𝒩", "𝒪", "𝒫", "𝒬", "ℛ", "𝒮", "𝒯", "𝒰", "𝒱", "𝒲", "𝒳", "𝒴",
- }, },
- { "sc bf", {
- "𝓪", "𝓫", "𝓬", "𝓭", "𝓮", "𝓯", "𝓰", "𝓱", "𝓲", "𝓳", "𝓴", "𝓵", "𝓶", "𝓷", "𝓸", "𝓹", "𝓺", "𝓻", "𝓼", "𝓽", "𝓾", "𝓿", "𝔀", "𝔁", "𝔂", "𝔃",
- "𝓐", "𝓑", "𝓒", "𝓓", "𝓔", "𝓕", "𝓖", "𝓗", "𝓘", "𝓙", "𝓚", "𝓛", "𝓜", "𝓝", "𝓞", "𝓟", "𝓠", "𝓡", "𝓢", "𝓣", "𝓤", "𝓥", "𝓦", "𝓧", "𝓨", "𝓩",
- }, },
- { "fr", {
- "𝔞", "𝔟", "𝔠", "𝔡", "𝔢", "𝔣", "𝔤", "𝔥", "𝔦", "𝔧", "𝔨", "𝔩", "𝔪", "𝔫", "𝔬", "𝔭", "𝔮", "𝔯", "𝔰", "𝔱", "𝔲", "𝔳", "𝔴", "𝔵", "𝔶", "𝔷",
- "𝔄", "𝔅", "ℭ", "𝔇", "𝔈", "𝔉", "𝔊", "ℌ", "ℑ", "𝔍", "𝔎", "𝔏", "𝔐", "𝔑", "𝔒", "𝔓", "𝔔", "ℜ", "𝔖", "𝔗", "𝔘", "𝔙", "𝔚", "𝔛", "𝔜", "ℨ",
- }, },
- { "ds", {
- "𝕓", "𝕔", "𝕕", "𝕖", "𝕗", "𝕘", "𝕙", "𝕚", "𝕛", "𝕜", "𝕝", "𝕞", "𝕟", "𝕠", "𝕡", "𝕢", "𝕣", "𝕤", "𝕥", "𝕦", "𝕧", "𝕨", "𝕩", "𝕪", "𝕫",
- "𝔸", "𝔹", "ℂ", "𝔻", "𝔼", "𝔽", "𝔾", "ℍ", "𝕀", "𝕁", "𝕂", "𝕃", "𝕄", "ℕ", "𝕆", "ℙ", "ℚ", "ℝ", "𝕊", "𝕋", "𝕌", "𝕍", "𝕎", "𝕏", "𝕐", "ℤ", "𝕒",
- "𝟘", "𝟙", "𝟚", "𝟛", "𝟜", "𝟝", "𝟞", "𝟟", "𝟠", "𝟡"
- }, },
- { "fr bf", {
- "𝕬", "𝕭", "𝕮", "𝕯", "𝕰", "𝕱", "𝕲", "𝕳", "𝕴", "𝕵", "𝕶", "𝕷", "𝕸", "𝕹", "𝕺", "𝕻", "𝕼", "𝕽", "𝕾", "𝕿", "𝖀", "𝖁", "𝖂", "𝖃",
- "𝖄", "𝖅", "𝖆", "𝖇", "𝖈", "𝖉", "𝖊", "𝖋", "𝖌", "𝖍", "𝖎", "𝖏", "𝖐", "𝖑", "𝖒", "𝖓", "𝖔", "𝖕", "𝖖", "𝖗", "𝖘", "𝖙", "𝖚", "𝖛", "𝖜", "𝖝", "𝖞", "𝖟"
- }, },
- { "ss tf", {
- "𝖺", "𝖻", "𝖼", "𝖽", "𝖾", "𝖿", "𝗀", "𝗁", "𝗂", "𝗃", "𝗄", "𝗅", "𝗆", "𝗇", "𝗈", "𝗉", "𝗊", "𝗋", "𝗌", "𝗍", "𝗎", "𝗏", "𝗐", "𝗑", "𝗒", "𝗓",
- "𝖠", "𝖡", "𝖢", "𝖣", "𝖤", "𝖥", "𝖦", "𝖧", "𝖨", "𝖩", "𝖪", "𝖫", "𝖬", "𝖭", "𝖮", "𝖯", "𝖰", "𝖱", "𝖲", "𝖳", "𝖴", "𝖵", "𝖶", "𝖷", "𝖸", "𝖹",
- "𝟢", "𝟣", "𝟤", "𝟥", "𝟦", "𝟧", "𝟨", "𝟩", "𝟪", "𝟫"
- }, },
- { "ss bf", {
- "𝗮", "𝗯", "𝗰", "𝗱", "𝗲", "𝗳", "𝗴", "𝗵", "𝗶", "𝗷", "𝗸", "𝗹", "𝗺", "𝗻", "𝗼", "𝗽", "𝗾", "𝗿", "𝘀", "𝘁", "𝘂", "𝘃", "𝘄", "𝘅", "𝘆", "𝘇",
- "𝗔", "𝗕", "𝗖", "𝗗", "𝗘", "𝗙", "𝗚", "𝗛", "𝗜", "𝗝", "𝗞", "𝗟", "𝗠", "𝗡", "𝗢", "𝗣", "𝗤", "𝗥", "𝗦", "𝗧", "𝗨", "𝗩", "𝗪", "𝗫", "𝗬", "𝗭",
- "𝟬", "𝟭", "𝟮", "𝟯", "𝟰", "𝟱", "𝟲", "𝟳", "𝟴", "𝟵",
- }, },
- { "ss it", {
- "𝘢", "𝘣", "𝘤", "𝘥", "𝘦", "𝘧", "𝘨", "𝘩", "𝘪", "𝘫", "𝘬", "𝘭", "𝘮", "𝘯", "𝘰", "𝘱", "𝘲", "𝘳", "𝘴", "𝘵", "𝘶", "𝘷", "𝘸", "𝘹", "𝘺", "𝘻",
- "𝘈", "𝘉", "𝘊", "𝘋", "𝘌", "𝘍", "𝘎", "𝘏", "𝘐", "𝘑", "𝘒", "𝘓", "𝘔", "𝘕", "𝘖", "𝘗", "𝘘", "𝘙", "𝘚", "𝘛", "𝘜", "𝘝", "𝘞", "𝘟", "𝘠", "𝘡",
- }, },
- { "ss bi", {
- "𝙖", "𝙗", "𝙘", "𝙙", "𝙚", "𝙛", "𝙜", "𝙝", "𝙞", "𝙟", "𝙠", "𝙡", "𝙢", "𝙣", "𝙤", "𝙥", "𝙦", "𝙧", "𝙨", "𝙩", "𝙪", "𝙫", "𝙬", "𝙭", "𝙮", "𝙯",
- "𝘼", "𝘽", "𝘾", "𝘿", "𝙀", "𝙁", "𝙂", "𝙃", "𝙄", "𝙅", "𝙆", "𝙇", "𝙈", "𝙉", "𝙊", "𝙋", "𝙌", "𝙍", "𝙎", "𝙏", "𝙐", "𝙑", "𝙒", "𝙓", "𝙔", "𝙕",
- }, },
- { "tt", {
- "𝚊", "𝚋", "𝚌", "𝚍", "𝚎", "𝚏", "𝚐", "𝚑", "𝚒", "𝚓", "𝚔", "𝚕", "𝚖", "𝚗", "𝚘", "𝚙", "𝚚", "𝚛", "𝚜", "𝚝", "𝚞", "𝚟", "𝚠", "𝚡", "𝚢", "𝚣",
- "𝙰", "𝙱", "𝙲", "𝙳", "𝙴", "𝙵", "𝙶", "𝙷", "𝙸", "𝙹", "𝙺", "𝙻", "𝙼", "𝙽", "𝙾", "𝙿", "𝚀", "𝚁", "𝚂", "𝚃", "𝚄", "𝚅", "𝚆", "𝚇", "𝚈", "𝚉",
- "𝟶", "𝟷", "𝟸", "𝟹", "𝟺", "𝟻", "𝟼", "𝟽", "𝟾", "𝟿"
- }, },
- { "gr tf", {
- "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω",
- "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "΢", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω",
- }, },
- { "gr bf", {
- "𝛂", "𝛃", "𝛄", "𝛅", "𝛆", "𝛇", "𝛈", "𝛉", "𝛊", "𝛋", "𝛌", "𝛍", "𝛎", "𝛏", "𝛐", "𝛑", "𝛒", "𝛓", "𝛔", "𝛕", "𝛖", "𝛗", "𝛘", "𝛙", "𝛚",
- "𝚨", "𝚩", "𝚪", "𝚫", "𝚬", "𝚭", "𝚮", "𝚯", "𝚰", "𝚱", "𝚲", "𝚳", "𝚴", "𝚵", "𝚶", "𝚷", "𝚸", "𝚹", "𝚺", "𝚻", "𝚼", "𝚽", "𝚾", "𝚿", "𝛀",
- }, },
- { "gr it", {
- "𝛼", "𝛽", "𝛾", "𝛿", "𝜀", "𝜁", "𝜂", "𝜃", "𝜄", "𝜅", "𝜆", "𝜇", "𝜈", "𝜉", "𝜊", "𝜋", "𝜌", "𝜍", "𝜎", "𝜏", "𝜐", "𝜑", "𝜒", "𝜓", "𝜔",
- "𝛢", "𝛣", "𝛤", "𝛥", "𝛦", "𝛧", "𝛨", "𝛩", "𝛪", "𝛫", "𝛬", "𝛭", "𝛮", "𝛯", "𝛰", "𝛱", "𝛲", "𝛳", "𝛴", "𝛵", "𝛶", "𝛷", "𝛸", "𝛹", "𝛺",
- }, },
- { "gr bi", {
- "𝜶", "𝜷", "𝜸", "𝜹", "𝜺", "𝜻", "𝜼", "𝜽", "𝜾", "𝜿", "𝝀", "𝝁", "𝝂", "𝝃", "𝝄", "𝝅", "𝝆", "𝝇", "𝝈", "𝝉", "𝝊", "𝝋", "𝝌", "𝝍", "𝝎",
- "𝜜", "𝜝", "𝜞", "𝜟", "𝜠", "𝜡", "𝜢", "𝜣", "𝜤", "𝜥", "𝜦", "𝜧", "𝜨", "𝜩", "𝜪", "𝜫", "𝜬", "𝜭", "𝜮", "𝜯", "𝜰", "𝜱", "𝜲", "𝜳", "𝜴",
- }, },
- { "gr ss bf", {
- "𝝰", "𝝱", "𝝲", "𝝳", "𝝴", "𝝵", "𝝶", "𝝷", "𝝸", "𝝹", "𝝺", "𝝻", "𝝼", "𝝽", "𝝾", "𝝿", "𝞀", "𝞁", "𝞂", "𝞃", "𝞄", "𝞅", "𝞆", "𝞇", "𝞈",
- "𝝖", "𝝗", "𝝘", "𝝙", "𝝚", "𝝛", "𝝜", "𝝝", "𝝞", "𝝟", "𝝠", "𝝡", "𝝢", "𝝣", "𝝤", "𝝥", "𝝦", "𝝧", "𝝨", "𝝩", "𝝪", "𝝫", "𝝬", "𝝭", "𝝮",
- }, },
- { "gr ss bi", {
- "𝞪", "𝞫", "𝞬", "𝞭", "𝞮", "𝞯", "𝞰", "𝞱", "𝞲", "𝞳", "𝞴", "𝞵", "𝞶", "𝞷", "𝞸", "𝞹", "𝞺", "𝞻", "𝞼", "𝞽", "𝞾", "𝞿", "𝟀", "𝟁", "𝟂",
- "𝞐", "𝞑", "𝞒", "𝞓", "𝞔", "𝞕", "𝞖", "𝞗", "𝞘", "𝞙", "𝞚", "𝞛", "𝞜", "𝞝", "𝞞", "𝞟", "𝞠", "𝞡", "𝞢", "𝞣", "𝞤", "𝞥", "𝞦", "𝞧", "𝞨",
- }, },
- { "op", {
- }, },
- { "sy a", {
- }, },
- { "sy b", {
- }, },
- { "sy c", {
- }, },
-}
-
-local mathlists = { }
-local mathselector = { }
-
-for i=1,#mathsets do
- local mathset = mathsets[i]
- mathselector[#mathselector+1] = mathset[1]
- mathlists[mathset[1]] = mathset[2]
-end
+ nl = {
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z",
+
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z",
+ },
+ fr = {
+ "a", "æ", "b", "c", "ç", "d", "e", "è", "é", "ê",
+ "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
+ "p", "q", "r", "s", "t", "u", "v", "w", "x", "y",
+ "z",
-local enabled = 0
-local usedlists = {
- { name = "text", current = "en", lists = textlists, selector = textselector },
- { name = "math", current = "tf", lists = mathlists, selector = mathselector },
-}
-
-local function make_strip()
- local used = usedlists[enabled]
- local lists = used.lists
- local alphabet = lists[used.current]
- local selector = "(hide)(" .. concat(used.selector,")(") .. ")"
- local alphabet = "(" .. used.current .. ":)(" .. concat(alphabet,")(") .. ")"
- scite.StripShow(selector .. "\n" .. alphabet)
-end
+ "A", "Æ", "B", "C", "Ç", "D", "E", "È", "É", "Ê",
+ "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
+ "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y",
+ "Z",
-local function hide_strip()
- scite.StripShow("")
-end
-
-local function process_strip(control)
- local value = scite.StripValue(control)
- if value == "hide" then
- hide_strip()
- return
- elseif find(value,".+:") then
- return
+ },
+ de = {
+ "a", "ä", "b", "c", "d", "e", "f", "g", "h", "i",
+ "j", "k", "l", "m", "n", "o", "ö", "p", "q", "r",
+ "s", "ß", "t", "u", "ü", "v", "w", "x", "y", "z",
+
+ "A", "Ä", "B", "C", "D", "E", "F", "G", "H", "I",
+ "J", "K", "L", "M", "N", "O", "Ö", "P", "Q", "R",
+ "S", "SS", "T", "U", "Ü", "V", "W", "X", "Y", "Z",
+ },
+ fi = { -- finish
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
+
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
+ },
+ sl = { -- slovenian
+ "a", "b", "c", "č", "ć", "d", "đ", "e", "f", "g", "h", "i",
+ "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "š", "t",
+ "u", "v", "w", "x", "y", "z", "ž",
+
+ "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F", "G", "H", "I",
+ "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "Š", "T",
+ "U", "V", "W", "X", "Y", "Z", "Ž",
+ },
+ ru = { -- rusian
+ "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и",
+ "і", "й", "к", "л", "м", "н", "о", "п", "р", "с",
+ "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
+ "ь", "ѣ", "э", "ю", "я", "ѳ", "ѵ",
+
+ "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И",
+ "І", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С",
+ "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы",
+ "Ь", "Ѣ", "Э", "Ю", "Я", "Ѳ", "Ѵ",
+ },
+ uk = { -- ukraninuan
+ "а", "б", "в", "г", "ґ", "д", "е", "є", "ж", "з", "и", "і",
+ "ї", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у",
+ "ф", "х", "ц", "ч", "ш", "щ", "ь", "ю", "я",
+
+ "А", "Б", "В", "Г", "Ґ", "Д", "Е", "Є", "Ж", "З", "И", "І",
+ "Ї", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У",
+ "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ю", "Я",
+ },
+ be = { -- belarusia
+ "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "і",
+ "й", "к", "л", "м", "н", "о", "п", "р", "с", "т",
+ "у", "ў", "ф", "х", "ц", "ч", "ш", "ы", "ь", "э",
+ "ю", "я",
+
+ "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "І",
+ "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т",
+ "У", "Ў", "Ф", "Х", "Ц", "Ч", "Ш", "Ы", "Ь", "Э",
+ "Ю", "Я",
+ },
+ bg = { -- bulgarian
+ "а", "б", "в", "г", "д", "е", "ж", "з","и", "й",
+ "к", "a", "л", "a", "м", "н", "о", "п", "р", "с",
+ "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ь",
+ "ю", "я",
+
+ "А", "Б", "В", "Г", "Д", "Е", "Ж", "З","И", "Й",
+ "К", "A", "Л", "A", "М", "Н", "О", "П", "Р", "С",
+ "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ь",
+ "Ю", "Я",
+ },
+ pl = { -- polish
+ "a", "ą", "b", "c", "ć", "d", "e", "ę", "f", "g",
+ "h", "i", "j", "k", "l", "ł", "m", "n", "ń", "o",
+ "ó", "p", "q", "r", "s", "ś", "t", "u", "v", "w",
+ "x", "y", "z", "ź", "ż",
+
+ "A", "Ą", "B", "C", "Ć", "D", "E", "Ę", "F", "G",
+ "H", "I", "J", "K", "L", "Ł", "M", "N", "Ń", "O",
+ "Ó", "P", "Q", "R", "S", "Ś", "T", "U", "V", "W",
+ "X", "Y", "Z", "Ź", "Ż",
+ },
+ cz = { -- czech
+ "a", "á", "b", "c", "č", "d", "ď", "e", "é", "ě",
+ "f", "g", "h", "i", "í", "j", "k", "l", "m",
+ "n", "ň", "o", "ó", "p", "q", "r", "ř", "s", "š",
+ "t", "ť", "u", "ú", "ů", "v", "w", "x", "y", "ý",
+ "z", "ž",
+
+ "A", "Á", "B", "C", "Č", "D", "Ď", "E", "É", "Ě",
+ "F", "G", "H", "I", "Í", "J", "K", "L", "M",
+ "N", "Ň", "O", "Ó", "P", "Q", "R", "Ř", "S", "Š",
+ "T", "Ť", "U", "Ú", "Ů", "V", "W", "X", "Y", "Ý",
+ "Z", "Ž",
+ },
+ sk = { -- slovak
+ "a", "á", "ä", "b", "c", "č", "d", "ď",
+ "e", "é", "f", "g", "h", ch, "i", "í", "j", "k",
+ "l", "ĺ", "ľ", "m", "n", "ň", "o", "ó", "ô", "p",
+ "q", "r", "ŕ", "s", "š", "t", "ť", "u", "ú", "v",
+ "w", "x", "y", "ý", "z", "ž",
+
+ "A", "Á", "Ä", "B", "C", "Č", "D", "Ď",
+ "E", "É", "F", "G", "H", "I", "Í", "J", "K",
+ "L", "Ĺ", "Ľ", "M", "N", "Ň", "O", "Ó", "Ô", "P",
+ "Q", "R", "Ŕ", "S", "Š", "T", "Ť", "U", "Ú", "V",
+ "W", "X", "Y", "Ý", "Z", "Ž",
+ },
+ hr = { -- croatian
+ "a", "b", "c", "č", "ć", "d", "đ", "e", "f",
+ "g", "h", "i", "j", "k", "l", "m", "n",
+ "o", "p", "r", "s", "š", "t", "u", "v", "z", "ž",
+
+ "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F",
+ "G", "H", "I", "J", "K", "L", "M", "N",
+ "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž",
+ },
+ sr = { -- serbian
+ "а", "б", "в", "г", "д", "ђ", "е", "ж", "з", "и",
+ "ј", "к", "л", "љ", "м", "н", "њ", "о", "п", "р",
+ "с", "т", "ћ", "у", "ф", "х", "ц", "ч", "џ", "ш",
+
+ "А", "Б", "В", "Г", "Д", "Ђ", "Е", "Ж", "З", "И",
+ "Ј", "К", "Л", "Љ", "М", "Н", "Њ", "О", "П", "Р",
+ "С", "Т", "Ћ", "У", "Ф", "Х", "Ц", "Ч", "Џ", "Ш",
+ },
+ no = { -- norwegian
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
+
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
+ },
+ da = { --danish
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
+
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
+ },
+ sv = { -- swedish
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
+ "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
+ "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
+
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
+ },
+ is = { -- islandic
+ "a", "á", "b", "d", "ð", "e", "é", "f", "g", "h",
+ "i", "í", "j", "k", "l", "m", "n", "o", "ó", "p",
+ "r", "s", "t", "u", "ú", "v", "x", "y", "ý", "þ",
+ "æ", "ö",
+
+ "A", "Á", "B", "D", "Ð", "E", "É", "F", "G", "H",
+ "I", "Í", "J", "K", "L", "M", "N", "O", "Ó", "P",
+ "R", "S", "T", "U", "Ú", "V", "X", "Y", "Ý", "Þ",
+ "Æ", "Ö",
+ },
+ -- gr = { -- greek
+ -- "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
+ -- "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
+ -- "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
+ -- "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
+ -- "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
+ -- "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
+ -- "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
+ -- "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
+ -- "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
+ -- "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
+ -- "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
+ -- "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
+ -- "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
+ -- "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
+ -- "ᾣ", "ᾦ", "ᾧ",
+ --
+ -- "Α", "Ά", "Ὰ", "Α͂", "Ἀ", "Ἁ", "Ἄ", "Ἂ", "Ἆ",
+ -- "Ἁ", "Ἅ", "Ἃ", "Ἇ",
+ -- "Β", "Γ", "Δ", "Ε", "Έ", "Ὲ",
+ -- "Ἐ", "Ἔ", "Ἒ", "Ἑ", "Ἕ", "Ἓ", "Ζ", "Η", "Η", "Ή",
+ -- "Ὴ", "Η͂", "Ἠ", "Ἤ", "Ἢ", "Ἦ", "Ἡ", "Ἥ",
+ -- "Ἣ", "Ἧ",
+ -- "Θ", "Ι", "Ί", "Ὶ", "Ι͂", "Ἰ", "Ἴ", "Ἲ",
+ -- "Ἶ", "Ἱ", "Ἵ", "Ἳ", "Ἷ", "Ϊ", "Ϊ́", "Ϊ̀", "Ϊ͂", "Κ",
+ -- "Λ", "Μ", "Ν", "Ξ", "Ο", "Ό", "Ὸ", "Ὀ", "Ὄ", "Ὂ",
+ -- "Ὁ", "Ὅ", "Ὃ", "Π", "Ρ", "Ρ̓", "Ῥ", "Σ", "Σ", "Τ",
+ -- "Υ", "Ύ", "Ὺ", "Υ͂", "Υ̓", "Υ̓́", "Υ̓̀", "Υ̓͂", "Ὑ", "Ὕ",
+ -- "Ὓ", "Ὗ", "Ϋ", "Ϋ́", "Ϋ̀", "Ϋ͂", "Φ", "Χ", "Ψ", "Ω",
+ -- "Ώ", "Ὼ", "Ω͂", "Ὠ", "Ὤ", "Ὢ", "Ὦ", "Ὡ",
+ -- "Ὥ", "Ὣ", "Ὧ",
+ -- },
+ gr = { -- greek
+ "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",
+ "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "τ", "υ",
+ "φ", "χ", "ψ", "ω",
+
+ "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ",
+ "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ",
+ "Χ", "Ψ", "Ω",
+ },
+ la = { -- latin
+ "a", "ā", "ă", "b", "c", "d", "e", "ē", "ĕ", "f",
+ "g", "h", "i", "ī", "ĭ", "j", "k", "l", "m", "n",
+ "o", "ō", "ŏ", "p", "q", "r", "s", "t", "u", "ū",
+ "ŭ", "v", "w", "x", "y", "ȳ", "y̆", "z", "æ",
+
+ "A", "Ā", "Ă", "B", "C", "D", "E", "Ē", "Ĕ", "F",
+ "G", "H", "I", "Ī", "Ĭ", "J", "K", "L", "M", "N",
+ "O", "Ō", "Ŏ", "P", "Q", "R", "S", "T", "U", "Ū",
+ "Ŭ", "V", "W", "X", "Y", "Ȳ", "Y̆", "Z", "Æ",
+ },
+ it = { -- italian
+ "a", "á", "b", "c", "d", "e", "é", "è", "f", "g",
+ "h", "i", "í", "ì", "j", "k", "l", "m", "n", "o",
+ "ó", "ò", "p", "q", "r", "s", "t", "u", "ú", "ù",
+ "v", "w", "x", "y", "z",
+
+ "A", "Á", "B", "C", "D", "E", "É", "È", "F", "G",
+ "H", "I", "Í", "Ì", "J", "K", "L", "M", "N", "O",
+ "Ó", "Ò", "P", "Q", "R", "S", "T", "U", "Ú", "Ù",
+ "V", "W", "X", "Y", "Z",
+ },
+ ro = { -- romanian
+ "a", "ă", "â", "b", "c", "d", "e", "f", "g", "h",
+ "i", "î", "j", "k", "l", "m", "n", "o", "p", "q",
+ "r", "s", "ș", "t", "ț", "u", "v", "w", "x", "y",
+ "z",
+
+ "A", "Ă", "Â", "B", "C", "D", "E", "F", "G", "H",
+ "I", "Î", "J", "K", "L", "M", "N", "O", "P", "Q",
+ "R", "S", "Ș", "T", "Ț", "U", "V", "W", "X", "Y",
+ "Z",
+ },
+ es = { -- spanish
+ "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
+ "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
+ "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
+ "x", "y", "z",
+
+ "A", "Á", "B", "C", "D", "E", "É", "F", "G", "H",
+ "I", "Í", "J", "K", "L", "M", "N", "Ñ", "O", "Ó",
+ "P", "Q", "R", "S", "T", "U", "Ú", "Ü", "V", "W",
+ "X", "Y", "Z",
+ },
+ pt = { -- portuguese
+ "a", "á", "â", "ã", "à", "b", "c", "ç", "d", "e",
+ "é", "ê", "f", "g", "h", "i", "í", "j", "k", "l",
+ "m", "n", "o", "ó", "ô", "õ", "p", "q", "r", "s",
+ "t", "u", "ú", "ü", "v", "w", "x", "y", "z",
+
+ "A", "Á", "Â", "Ã", "À", "B", "C", "Ç", "D", "E",
+ "É", "Ê", "F", "G", "H", "I", "Í", "J", "K", "L",
+ "M", "N", "O", "Ó", "Ô", "Õ", "P", "Q", "R", "S",
+ "T", "U", "Ú", "Ü", "V", "W", "X", "Y", "Z",
+ },
+ lt = { -- lithuanian
+ "a", "ą", "b", "c", "ch", "č", "d", "e", "ę", "ė",
+ "f", "g", "h", "i", "į", "y", "j", "k", "l", "m",
+ "n", "o", "p", "r", "s", "š", "t", "u", "ų", "ū",
+ "v", "z", "ž",
+
+ "A", "Ą", "B", "C", "CH", "Č", "D", "E", "Ę", "Ė",
+ "F", "G", "H", "I", "Į", "Y", "J", "K", "L", "M",
+ "N", "O", "P", "R", "S", "Š", "T", "U", "Ų", "Ū",
+ "V", "Z", "Ž",
+ },
+ lv = { -- latvian
+ "a", "ā", "b", "c", "č", "d", "e", "ē", "f", "g",
+ "ģ", "h", "i", "ī", "j", "k", "ķ", "l", "ļ", "m",
+ "n", "ņ", "o", "ō", "p", "r", "ŗ", "s", "š", "t",
+ "u", "ū", "v", "z", "ž",
+
+ "A", "Ā", "B", "C", "Č", "D", "E", "Ē", "F", "G",
+ "Ģ", "H", "I", "Ī", "J", "K", "Ķ", "L", "Ļ", "M",
+ "N", "Ņ", "O", "Ō", "P", "R", "Ŗ", "S", "Š", "T",
+ "U", "Ū", "V", "Z", "Ž",
+ },
+ hu = { -- hungarian
+ "a", "á", "b", "c", "d", "e", "é",
+ "f", "g", "h", "i", "í", "j", "k", "l",
+ "m", "n", "o", "ó", "ö", "ő", "p", "q", "r",
+ "s", "t", "u", "ú", "ü", "ű", "v", "w",
+ "x", "y", "z",
+
+ "A", "Á", "B", "C", "D", "E", "É",
+ "F", "G", "H", "I", "Í", "J", "K", "L",
+ "M", "N", "O", "Ó", "Ö", "Ő", "P", "Q", "R",
+ "S", "T", "U", "Ú", "Ü", "Ű", "V", "W",
+ "X", "Y", "Z",
+ },
+ et = { -- estonian
+ "a", "b", "d", "e", "f", "g", "h", "i", "j", "k",
+ "l", "m", "n", "o", "p", "r", "s", "š", "z", "ž",
+ "t", "u", "v", "w", "õ", "ä", "ö", "ü", "x", "y",
+
+ "A", "B", "D", "E", "F", "G", "H", "I", "J", "K",
+ "L", "M", "N", "O", "P", "R", "S", "Š", "Z", "Ž",
+ "T", "U", "V", "W", "Õ", "Ä", "Ö", "Ü", "X", "Y",
+ },
+ -- jp = { -- japanese
+ -- "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ",
+ -- "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と",
+ -- "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ",
+ -- "ま", "み", "む", "め", "も", "や", "ゆ", "よ",
+ -- "ら", "り", "る", "れ", "ろ", "わ", "ゐ", "ゑ", "を", "ん",
+ -- },
+ }
+
+ local textselector = { }
+ for k, v in next, textlists do
+ textselector[#textselector+1] = k
end
- local used = usedlists[enabled]
- if used.lists[value] then
- used.current = value
- make_strip()
- else
- editor:insert(editor.CurrentPos,value)
+ table.sort(textselector)
+
+ -- We can populate these with the utf converter but it looks nicer here to
+ -- see what we actually get. And it also tests how SciTE displays these
+ -- special characters.
+
+ local mathsets = {
+ { "tf", {
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
+ }, },
+ { "bf", {
+ "𝐛", "𝐜", "𝐝", "𝐞", "𝐟", "𝐠", "𝐡", "𝐢", "𝐣", "𝐤", "𝐥", "𝐦", "𝐧", "𝐨", "𝐩", "𝐪", "𝐫", "𝐬", "𝐭", "𝐮", "𝐯", "𝐰", "𝐱", "𝐲", "𝐳",
+ "𝐀", "𝐁", "𝐂", "𝐃", "𝐄", "𝐅", "𝐆", "𝐇", "𝐈", "𝐉", "𝐊", "𝐋", "𝐌", "𝐍", "𝐎", "𝐏", "𝐐", "𝐑", "𝐒", "𝐓", "𝐔", "𝐕", "𝐖", "𝐗", "𝐘", "𝐙", "𝐚",
+ "𝟎", "𝟏", "𝟐", "𝟑", "𝟒", "𝟓", "𝟔", "𝟕", "𝟖", "𝟗"
+ }, },
+ { "it", {
+ "𝑎", "𝑏", "𝑐", "𝑑", "𝑒", "𝑓", "𝑔", "ℎ", "𝑖", "𝑗", "𝑘", "𝑙", "𝑚", "𝑛", "𝑜", "𝑝", "𝑞", "𝑟", "𝑠", "𝑡", "𝑢", "𝑣", "𝑤", "𝑥", "𝑦", "𝑧",
+ "𝐴", "𝐵", "𝐶", "𝐷", "𝐸", "𝐹", "𝐺", "𝐻", "𝐼", "𝐽", "𝐾", "𝐿", "𝑀", "𝑁", "𝑂", "𝑃", "𝑄", "𝑅", "𝑆", "𝑇", "𝑈", "𝑉", "𝑊", "𝑋", "𝑌", "𝑍",
+ }, },
+ { "bi", {
+ "𝒂", "𝒃", "𝒄", "𝒅", "𝒆", "𝒇", "𝒈", "𝒉", "𝒊", "𝒋", "𝒌", "𝒍", "𝒎", "𝒏", "𝒐", "𝒑", "𝒒", "𝒓", "𝒔", "𝒕", "𝒖", "𝒗", "𝒘", "𝒙", "𝒚", "𝒛",
+ "𝑨", "𝑩", "𝑪", "𝑫", "𝑬", "𝑭", "𝑮", "𝑯", "𝑰", "𝑱", "𝑲", "𝑳", "𝑴", "𝑵", "𝑶", "𝑷", "𝑸", "𝑹", "𝑺", "𝑻", "𝑼", "𝑽", "𝑾", "𝑿", "𝒀", "𝒁",
+ }, },
+ { "sc", {
+ "𝒵", "𝒶", "𝒷", "𝒸", "𝒹", "ℯ", "𝒻", "ℊ", "𝒽", "𝒾", "𝒿", "𝓀", "𝓁", "𝓂", "𝓃", "ℴ", "𝓅", "𝓆", "𝓇", "𝓈", "𝓉", "𝓊", "𝓋", "𝓌", "𝓍", "𝓎", "𝓏",
+ "𝒜", "ℬ", "𝒞", "𝒟", "ℰ", "ℱ", "𝒢", "ℋ", "ℐ", "𝒥", "𝒦", "ℒ", "ℳ", "𝒩", "𝒪", "𝒫", "𝒬", "ℛ", "𝒮", "𝒯", "𝒰", "𝒱", "𝒲", "𝒳", "𝒴",
+ }, },
+ { "sc bf", {
+ "𝓪", "𝓫", "𝓬", "𝓭", "𝓮", "𝓯", "𝓰", "𝓱", "𝓲", "𝓳", "𝓴", "𝓵", "𝓶", "𝓷", "𝓸", "𝓹", "𝓺", "𝓻", "𝓼", "𝓽", "𝓾", "𝓿", "𝔀", "𝔁", "𝔂", "𝔃",
+ "𝓐", "𝓑", "𝓒", "𝓓", "𝓔", "𝓕", "𝓖", "𝓗", "𝓘", "𝓙", "𝓚", "𝓛", "𝓜", "𝓝", "𝓞", "𝓟", "𝓠", "𝓡", "𝓢", "𝓣", "𝓤", "𝓥", "𝓦", "𝓧", "𝓨", "𝓩",
+ }, },
+ { "fr", {
+ "𝔞", "𝔟", "𝔠", "𝔡", "𝔢", "𝔣", "𝔤", "𝔥", "𝔦", "𝔧", "𝔨", "𝔩", "𝔪", "𝔫", "𝔬", "𝔭", "𝔮", "𝔯", "𝔰", "𝔱", "𝔲", "𝔳", "𝔴", "𝔵", "𝔶", "𝔷",
+ "𝔄", "𝔅", "ℭ", "𝔇", "𝔈", "𝔉", "𝔊", "ℌ", "ℑ", "𝔍", "𝔎", "𝔏", "𝔐", "𝔑", "𝔒", "𝔓", "𝔔", "ℜ", "𝔖", "𝔗", "𝔘", "𝔙", "𝔚", "𝔛", "𝔜", "ℨ",
+ }, },
+ { "ds", {
+ "𝕓", "𝕔", "𝕕", "𝕖", "𝕗", "𝕘", "𝕙", "𝕚", "𝕛", "𝕜", "𝕝", "𝕞", "𝕟", "𝕠", "𝕡", "𝕢", "𝕣", "𝕤", "𝕥", "𝕦", "𝕧", "𝕨", "𝕩", "𝕪", "𝕫",
+ "𝔸", "𝔹", "ℂ", "𝔻", "𝔼", "𝔽", "𝔾", "ℍ", "𝕀", "𝕁", "𝕂", "𝕃", "𝕄", "ℕ", "𝕆", "ℙ", "ℚ", "ℝ", "𝕊", "𝕋", "𝕌", "𝕍", "𝕎", "𝕏", "𝕐", "ℤ", "𝕒",
+ "𝟘", "𝟙", "𝟚", "𝟛", "𝟜", "𝟝", "𝟞", "𝟟", "𝟠", "𝟡"
+ }, },
+ { "fr bf", {
+ "𝕬", "𝕭", "𝕮", "𝕯", "𝕰", "𝕱", "𝕲", "𝕳", "𝕴", "𝕵", "𝕶", "𝕷", "𝕸", "𝕹", "𝕺", "𝕻", "𝕼", "𝕽", "𝕾", "𝕿", "𝖀", "𝖁", "𝖂", "𝖃",
+ "𝖄", "𝖅", "𝖆", "𝖇", "𝖈", "𝖉", "𝖊", "𝖋", "𝖌", "𝖍", "𝖎", "𝖏", "𝖐", "𝖑", "𝖒", "𝖓", "𝖔", "𝖕", "𝖖", "𝖗", "𝖘", "𝖙", "𝖚", "𝖛", "𝖜", "𝖝", "𝖞", "𝖟"
+ }, },
+ { "ss tf", {
+ "𝖺", "𝖻", "𝖼", "𝖽", "𝖾", "𝖿", "𝗀", "𝗁", "𝗂", "𝗃", "𝗄", "𝗅", "𝗆", "𝗇", "𝗈", "𝗉", "𝗊", "𝗋", "𝗌", "𝗍", "𝗎", "𝗏", "𝗐", "𝗑", "𝗒", "𝗓",
+ "𝖠", "𝖡", "𝖢", "𝖣", "𝖤", "𝖥", "𝖦", "𝖧", "𝖨", "𝖩", "𝖪", "𝖫", "𝖬", "𝖭", "𝖮", "𝖯", "𝖰", "𝖱", "𝖲", "𝖳", "𝖴", "𝖵", "𝖶", "𝖷", "𝖸", "𝖹",
+ "𝟢", "𝟣", "𝟤", "𝟥", "𝟦", "𝟧", "𝟨", "𝟩", "𝟪", "𝟫"
+ }, },
+ { "ss bf", {
+ "𝗮", "𝗯", "𝗰", "𝗱", "𝗲", "𝗳", "𝗴", "𝗵", "𝗶", "𝗷", "𝗸", "𝗹", "𝗺", "𝗻", "𝗼", "𝗽", "𝗾", "𝗿", "𝘀", "𝘁", "𝘂", "𝘃", "𝘄", "𝘅", "𝘆", "𝘇",
+ "𝗔", "𝗕", "𝗖", "𝗗", "𝗘", "𝗙", "𝗚", "𝗛", "𝗜", "𝗝", "𝗞", "𝗟", "𝗠", "𝗡", "𝗢", "𝗣", "𝗤", "𝗥", "𝗦", "𝗧", "𝗨", "𝗩", "𝗪", "𝗫", "𝗬", "𝗭",
+ "𝟬", "𝟭", "𝟮", "𝟯", "𝟰", "𝟱", "𝟲", "𝟳", "𝟴", "𝟵",
+ }, },
+ { "ss it", {
+ "𝘢", "𝘣", "𝘤", "𝘥", "𝘦", "𝘧", "𝘨", "𝘩", "𝘪", "𝘫", "𝘬", "𝘭", "𝘮", "𝘯", "𝘰", "𝘱", "𝘲", "𝘳", "𝘴", "𝘵", "𝘶", "𝘷", "𝘸", "𝘹", "𝘺", "𝘻",
+ "𝘈", "𝘉", "𝘊", "𝘋", "𝘌", "𝘍", "𝘎", "𝘏", "𝘐", "𝘑", "𝘒", "𝘓", "𝘔", "𝘕", "𝘖", "𝘗", "𝘘", "𝘙", "𝘚", "𝘛", "𝘜", "𝘝", "𝘞", "𝘟", "𝘠", "𝘡",
+ }, },
+ { "ss bi", {
+ "𝙖", "𝙗", "𝙘", "𝙙", "𝙚", "𝙛", "𝙜", "𝙝", "𝙞", "𝙟", "𝙠", "𝙡", "𝙢", "𝙣", "𝙤", "𝙥", "𝙦", "𝙧", "𝙨", "𝙩", "𝙪", "𝙫", "𝙬", "𝙭", "𝙮", "𝙯",
+ "𝘼", "𝘽", "𝘾", "𝘿", "𝙀", "𝙁", "𝙂", "𝙃", "𝙄", "𝙅", "𝙆", "𝙇", "𝙈", "𝙉", "𝙊", "𝙋", "𝙌", "𝙍", "𝙎", "𝙏", "𝙐", "𝙑", "𝙒", "𝙓", "𝙔", "𝙕",
+ }, },
+ { "tt", {
+ "𝚊", "𝚋", "𝚌", "𝚍", "𝚎", "𝚏", "𝚐", "𝚑", "𝚒", "𝚓", "𝚔", "𝚕", "𝚖", "𝚗", "𝚘", "𝚙", "𝚚", "𝚛", "𝚜", "𝚝", "𝚞", "𝚟", "𝚠", "𝚡", "𝚢", "𝚣",
+ "𝙰", "𝙱", "𝙲", "𝙳", "𝙴", "𝙵", "𝙶", "𝙷", "𝙸", "𝙹", "𝙺", "𝙻", "𝙼", "𝙽", "𝙾", "𝙿", "𝚀", "𝚁", "𝚂", "𝚃", "𝚄", "𝚅", "𝚆", "𝚇", "𝚈", "𝚉",
+ "𝟶", "𝟷", "𝟸", "𝟹", "𝟺", "𝟻", "𝟼", "𝟽", "𝟾", "𝟿"
+ }, },
+ { "gr tf", {
+ "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω",
+ "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "΢", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω",
+ }, },
+ { "gr bf", {
+ "𝛂", "𝛃", "𝛄", "𝛅", "𝛆", "𝛇", "𝛈", "𝛉", "𝛊", "𝛋", "𝛌", "𝛍", "𝛎", "𝛏", "𝛐", "𝛑", "𝛒", "𝛓", "𝛔", "𝛕", "𝛖", "𝛗", "𝛘", "𝛙", "𝛚",
+ "𝚨", "𝚩", "𝚪", "𝚫", "𝚬", "𝚭", "𝚮", "𝚯", "𝚰", "𝚱", "𝚲", "𝚳", "𝚴", "𝚵", "𝚶", "𝚷", "𝚸", "𝚹", "𝚺", "𝚻", "𝚼", "𝚽", "𝚾", "𝚿", "𝛀",
+ }, },
+ { "gr it", {
+ "𝛼", "𝛽", "𝛾", "𝛿", "𝜀", "𝜁", "𝜂", "𝜃", "𝜄", "𝜅", "𝜆", "𝜇", "𝜈", "𝜉", "𝜊", "𝜋", "𝜌", "𝜍", "𝜎", "𝜏", "𝜐", "𝜑", "𝜒", "𝜓", "𝜔",
+ "𝛢", "𝛣", "𝛤", "𝛥", "𝛦", "𝛧", "𝛨", "𝛩", "𝛪", "𝛫", "𝛬", "𝛭", "𝛮", "𝛯", "𝛰", "𝛱", "𝛲", "𝛳", "𝛴", "𝛵", "𝛶", "𝛷", "𝛸", "𝛹", "𝛺",
+ }, },
+ { "gr bi", {
+ "𝜶", "𝜷", "𝜸", "𝜹", "𝜺", "𝜻", "𝜼", "𝜽", "𝜾", "𝜿", "𝝀", "𝝁", "𝝂", "𝝃", "𝝄", "𝝅", "𝝆", "𝝇", "𝝈", "𝝉", "𝝊", "𝝋", "𝝌", "𝝍", "𝝎",
+ "𝜜", "𝜝", "𝜞", "𝜟", "𝜠", "𝜡", "𝜢", "𝜣", "𝜤", "𝜥", "𝜦", "𝜧", "𝜨", "𝜩", "𝜪", "𝜫", "𝜬", "𝜭", "𝜮", "𝜯", "𝜰", "𝜱", "𝜲", "𝜳", "𝜴",
+ }, },
+ { "gr ss bf", {
+ "𝝰", "𝝱", "𝝲", "𝝳", "𝝴", "𝝵", "𝝶", "𝝷", "𝝸", "𝝹", "𝝺", "𝝻", "𝝼", "𝝽", "𝝾", "𝝿", "𝞀", "𝞁", "𝞂", "𝞃", "𝞄", "𝞅", "𝞆", "𝞇", "𝞈",
+ "𝝖", "𝝗", "𝝘", "𝝙", "𝝚", "𝝛", "𝝜", "𝝝", "𝝞", "𝝟", "𝝠", "𝝡", "𝝢", "𝝣", "𝝤", "𝝥", "𝝦", "𝝧", "𝝨", "𝝩", "𝝪", "𝝫", "𝝬", "𝝭", "𝝮",
+ }, },
+ { "gr ss bi", {
+ "𝞪", "𝞫", "𝞬", "𝞭", "𝞮", "𝞯", "𝞰", "𝞱", "𝞲", "𝞳", "𝞴", "𝞵", "𝞶", "𝞷", "𝞸", "𝞹", "𝞺", "𝞻", "𝞼", "𝞽", "𝞾", "𝞿", "𝟀", "𝟁", "𝟂",
+ "𝞐", "𝞑", "𝞒", "𝞓", "𝞔", "𝞕", "𝞖", "𝞗", "𝞘", "𝞙", "𝞚", "𝞛", "𝞜", "𝞝", "𝞞", "𝞟", "𝞠", "𝞡", "𝞢", "𝞣", "𝞤", "𝞥", "𝞦", "𝞧", "𝞨",
+ }, },
+ { "op", {
+ }, },
+ { "sy a", {
+ }, },
+ { "sy b", {
+ }, },
+ { "sy c", {
+ }, },
+ }
+
+ local mathlists = { }
+ local mathselector = { }
+
+ for i=1,#mathsets do
+ local mathset = mathsets[i]
+ mathselector[#mathselector+1] = mathset[1]
+ mathlists[mathset[1]] = mathset[2]
end
-end
-
-local function ignore_strip()
-end
-function toggle_strip(name)
- enabled = enabled + 1
- if usedlists[enabled] then
- make_strip()
- OnStrip = process_strip
- else
- enabled = 0
- hide_strip()
- OnStrip = ignore_strip
+ local enabled = 0
+ local usedlists = {
+ { name = "text", current = "en", lists = textlists, selector = textselector },
+ { name = "math", current = "tf", lists = mathlists, selector = mathselector },
+ }
+
+ local function make_strip()
+ local used = usedlists[enabled]
+ local lists = used.lists
+ local alphabet = lists[used.current]
+ local selector = "(hide)(" .. concat(used.selector,")(") .. ")"
+ local alphabet = "(" .. used.current .. ":)(" .. concat(alphabet,")(") .. ")"
+ scite.StripShow(selector .. "\n" .. alphabet)
end
-end
--- this way we get proper lexing for lexers that do more extensive
--- parsing
+ local function hide_strip()
+ scite.StripShow("")
+ end
-function OnOpen(filename)
--- report("opening '%s' of %i bytes",filename,editor.TextLength)
- editor:Colourise(0,editor.TextLength)
-end
+ local function process_strip(control)
+ local value = scite.StripValue(control)
+ if value == "hide" then
+ hide_strip()
+ return
+ elseif find(value,".+:") then
+ return
+ end
+ local used = usedlists[enabled]
+ if used.lists[value] then
+ used.current = value
+ make_strip()
+ else
+ editor:insert(editor.CurrentPos,value)
+ end
+ end
+ local function ignore_strip()
+ end
-function OnSwitchFile(filename)
- if dirty[props.FileNameExt] then
--- report("switching '%s' of %i bytes",filename,editor.TextLength)
- editor:Colourise(0,editor.TextLength)
- dirty[props.FileNameExt] = false
+ function toggle_strip(name)
+ enabled = enabled + 1
+ if usedlists[enabled] then
+ make_strip()
+ OnStrip = process_strip
+ else
+ enabled = 0
+ hide_strip()
+ OnStrip = ignore_strip
+ end
end
+
end
-- Last time I checked the source the output pane errorlist lexer was still
@@ -1725,3 +1645,156 @@ end
-- output.Lexer = 0
-- SCI_SETBIDIRECTIONAL = SC_BIDIRECTIONAL_R2L
+
+-- Because SCITE messes around with package.loaded a regular require doesn't work, so
+-- we overload it. We also add some paths.
+
+do
+
+ package.path = props.SciteDefaultHome .. "/context/lexers/?.lua;" .. package.path
+ package.path = props.SciteDefaultHome .. "/context/lexers/themes/?.lua;" .. package.path
+ package.path = props.SciteDefaultHome .. "/context/lexers/data/?.lua;" .. package.path
+
+ local required = require
+ local loaded = { }
+
+ require = function(name)
+ local data = loaded[name]
+ if not data then
+ data = required(name)
+ loaded[name] = data
+ end
+ return data
+ end
+
+end
+
+-- It makes not much sense to trace back over whitespace and start lexing because in
+-- our use case we can have nested lexers that themselve need a trace back. Also, in
+-- large documents we seldom add at the end and therefore can as well parse the
+-- whole document. Lua 5.4 is faster anyway.
+--
+-- The 'editor' object is not useable because (1) it is null terminating which is
+-- bad for the PDF lexer. The 'styler' on the other hand is utf based and does not
+-- work well for the byte based LPEG lexers. And, because 'OnStyle' creates a large
+-- userdata blob anyway, we added a few methods to it.
+--
+-- Because this file will be reloaded after a change, and in the process messes with
+-- some global properties (like package.loaded) we have some require hackery in the
+-- lexer files.
+
+-- function OnStyle(styler)
+-- local S_DEFAULT = 0
+-- local S_IDENTIFIER = 1
+-- local S_KEYWORD = 2
+-- local S_UNICODECOMMENT = 3
+-- local identifierCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+-- styler:StartStyling(styler.startPos, styler.lengthDoc, styler.initStyle)
+-- while styler:More() do
+-- if styler:State() == S_IDENTIFIER then
+-- if not identifierCharacters:find(styler:Current(), 1, true) then
+-- local identifier = styler:Token()
+-- if identifier == "if" or identifier == "end" then
+-- styler:ChangeState(S_KEYWORD)
+-- end
+-- styler:SetState(S_DEFAULT)
+-- end
+-- elseif styler:State() == S_UNICODECOMMENT then
+-- if styler:Match("»") then
+-- styler:ForwardSetState(S_DEFAULT)
+-- end
+-- end
+-- if styler:State() == S_DEFAULT then
+-- if styler:Match("«") then
+-- styler:SetState(S_UNICODECOMMENT)
+-- elseif identifierCharacters:find(styler:Current(), 1, true) then
+-- styler:SetState(S_IDENTIFIER)
+-- end
+-- end
+-- styler:Forward()
+-- end
+-- styler:EndStyling()
+-- end
+
+-- function OnStyle(styler)
+-- local lineStart = editor:LineFromPosition(styler.startPos)
+-- local lineEnd = editor:LineFromPosition(styler.startPos + styler.lengthDoc)
+-- editor:StartStyling(styler.startPos, 31)
+-- for line=lineStart,lineEnd,1 do
+-- local lengthLine = editor:PositionFromLine(line+1) - editor:PositionFromLine(line)
+-- local lineText = editor:GetLine(line)
+-- local first = string.sub(lineText,1,1)
+-- local style = 0
+-- if first == "+" then
+-- style = 1
+-- elseif first == " " or first == "\t" then
+-- style = 2
+-- end
+-- editor:SetStyling(lengthLine, style)
+-- end
+-- end
+
+do
+
+ local lexers = nil
+ local properties = props
+-- local partial = false
+ local partial = true
+ local trace = false
+-- local trace = true
+
+ local loadedlexers = setmetatable ( { }, {
+ __index = function(t,k)
+ local language = match(k,"^script_(.*)$") or k
+ if not lexers then
+ lexers = require("scite-context-lexer")
+ lexers.loadtheme(require("scite-context-theme"))
+ end
+ local name = "scite-context-lexer-" .. language
+ local v = lexers.load(name)
+ if v then
+ lexers.registertheme(properties,language)
+ else
+ v = false
+ end
+ t[name] = v
+ t[k] = v
+ t[language] = v
+ return v
+ end
+ } )
+
+ local function update(language,size,start,stop)
+ if language then
+ local syntax = loadedlexers[language]
+ if syntax then
+ lexers.scite_onstyle(syntax,editor,partial,language,props.FileNameExt,size,start,stop,trace)
+ end
+ end
+ end
+
+ function Initialise()
+ check_output_pane()
+ end
+
+ function OnStyle(styler)
+ -- for the moment here: editor.StyleClearAll(output) -- we have no way to nil the output lexer
+ update(styler.language,editor.TextLength,styler.startPos,styler.lengthDoc)
+ end
+
+ function OnOpen(filename)
+ -- report("opening '%s' of %i bytes",filename,editor.TextLength)
+ update(props.Language,editor.TextLength,0,editor.TextLength)
+ check_output_pane()
+ end
+
+ function OnSwitchFile(filename)
+ if dirty[props.FileNameExt] then
+ -- report("switching '%s' of %i bytes",filename,editor.TextLength)
+ update(props.Language,editor.TextLength,0,editor.TextLength)
+ dirty[props.FileNameExt] = false
+ end
+ check_output_pane()
+ end
+
+end
diff --git a/context/data/scite/context/scite-ctx.properties b/context/data/scite/context/scite-ctx.properties
index 1a040c2dc..fba02cd7f 100644
--- a/context/data/scite/context/scite-ctx.properties
+++ b/context/data/scite/context/scite-ctx.properties
@@ -35,20 +35,32 @@ ctx.menulist.context=\
wrap=wrap_text|\
unwrap=unwrap_text|\
sort=sort_text|\
+ removecomment=remove_comment|\
document=document_text|\
quote=quote_text|\
+ quote-s=quote_text_s|\
+ quote-d=quote_text_d|\
compound=compound_text|\
add=add_text|\
bidi=show_bidi|\
strip=toggle_strip
+ctx.menulist.text=\
+ wrap=wrap_text|\
+ unwrap=unwrap_text|\
+ sort=sort_text|\
+ document=document_text|\
+ strip=toggle_strip
+
ctx.menulist.example=\
wrap=wrap_text|\
unwrap=unwrap_text|\
sort=sort_text|\
- uncomment=uncomment_xml|\
+ removecomment=remove_comment|\
document=document_text|\
quote=quote_text|\
+ quote-s=quote_text_s|\
+ quote-d=quote_text_d|\
compound=compound_text|\
add=add_text|\
bidi=show_bidi|\
@@ -74,6 +86,10 @@ ctx.menulist.json=\
wrap=wrap_text|\
sort=sort_text
+ctx.menulist.pdf=\
+ object=filter_pdf_object|\
+ object=seatch_pdf_object
+
ctx.wraptext.length=80
ctx.spellcheck.language=auto
@@ -151,6 +167,20 @@ command.groupundo.21.$(file.patterns.json)=yes
command.save.before.21.$(file.patterns.json)=2
command.shortcut.21.$(file.patterns.json)=Shift+F11
+command.name.21.$(file.patterns.pdf)=PDF Action List
+command.subsystem.21.$(file.patterns.pdf)=3
+command.21.$(file.patterns.pdf)=show_menu $(ctx.menulist.pdf)
+command.groupundo.21.$(file.patterns.pdf)=yes
+command.save.before.21.$(file.patterns.pdf)=2
+command.shortcut.21.$(file.patterns.pdf)=Shift+F11
+
+command.name.21.$(file.patterns.text)=Text Action List
+command.subsystem.21.$(file.patterns.text)=3
+command.21.$(file.patterns.text)=show_menu $(ctx.menulist.text)
+command.groupundo.21.$(file.patterns.text)=yes
+command.save.before.21.$(file.patterns.text)=2
+command.shortcut.21.$(file.patterns.text)=Shift+F11
+
#~ command.name.21.*=CTX Action List
#~ command.subsystem.21.*=3
#~ command.21.*=show_menu $(ctx.menulist.default)
@@ -206,11 +236,11 @@ ctx.template.rescan=no
ctx.template.suffix.tex=tex
ctx.template.suffix.xml=xml
-command.name.27.*=XML Uncomment
-command.subsystem.27.*=3
-command.27.*=uncomment_xml
-command.save.before.27.*=2
-command.groupundo.27.*=yes
+#~ command.name.27.*=Remove comment
+#~ command.subsystem.27.*=3
+#~ command.27.*=remove_comment
+#~ command.save.before.27.*=2
+#~ command.groupundo.27.*=yes
command.name.28.*=Language Strip
command.subsystem.28.*=3
@@ -219,3 +249,8 @@ command.save.before.28.*=2
command.shortcut.28.*=Ctrl++
output.scroll=2
+
+#~ idle.styling=1
+
+file.size.large=100000000
+file.size.no.styles=50000000
diff --git a/context/data/scite/context/scite-pragma.properties b/context/data/scite/context/scite-pragma.properties
index 109b02230..874d1e5ad 100644
--- a/context/data/scite/context/scite-pragma.properties
+++ b/context/data/scite/context/scite-pragma.properties
@@ -26,10 +26,11 @@ $(filter.example)\
$(filter.lua)\
$(filter.text)\
$(filter.pdf)\
+$(filter.cpp)\
$(filter.cweb)\
$(filter.bibtex)\
$(filter.json)\
-$(filter.txt)
+$(filter.none)
# Editor: menus
@@ -41,5 +42,7 @@ Lua|lua||\
Text|txt||\
PDF|pdf||\
CWeb|cweb||\
+Cpp|cpp||\
BibTeX|bibtex||\
-JSON|json||
+JSON|json||\
+NONE|none||
diff --git a/context/data/textadept/context/data/scite-context-data-bidi.lua b/context/data/textadept/context/data/scite-context-data-bidi.lua
deleted file mode 100644
index 4221dee89..000000000
--- a/context/data/textadept/context/data/scite-context-data-bidi.lua
+++ /dev/null
@@ -1,10357 +0,0 @@
-return {
- ["comment"]="generated by: mtxrun -- script interface.lua --bidi",
- ["directions"]={
- [0]="bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "s",
- "b",
- "s",
- "ws",
- "b",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "bn",
- "b",
- "b",
- "b",
- "s",
- "ws",
- "on",
- "on",
- "et",
- "et",
- "et",
- "on",
- "on",
- "on",
- "on",
- "on",
- "es",
- "cs",
- "es",
- "cs",
- "cs",
- "en",
- "en",
- "en",
- "en",
- "en",
- "en",
- "en",
- "en",
- "en",
- "en",
- "cs",
- "on",
- "on",
- "on",
- "on",
- "on",
- "on",
- [91]="on",
- [92]="on",
- [93]="on",
- [94]="on",
- [95]="on",
- [96]="on",
- [123]="on",
- [124]="on",
- [125]="on",
- [126]="on",
- [127]="bn",
- [128]="bn",
- [129]="bn",
- [130]="bn",
- [131]="bn",
- [132]="bn",
- [133]="b",
- [134]="bn",
- [135]="bn",
- [136]="bn",
- [137]="bn",
- [138]="bn",
- [139]="bn",
- [140]="bn",
- [141]="bn",
- [142]="bn",
- [143]="bn",
- [144]="bn",
- [145]="bn",
- [146]="bn",
- [147]="bn",
- [148]="bn",
- [149]="bn",
- [150]="bn",
- [151]="bn",
- [152]="bn",
- [153]="bn",
- [154]="bn",
- [155]="bn",
- [156]="bn",
- [157]="bn",
- [158]="bn",
- [159]="bn",
- [160]="cs",
- [161]="on",
- [162]="et",
- [163]="et",
- [164]="et",
- [165]="et",
- [166]="on",
- [167]="on",
- [168]="on",
- [169]="on",
- [171]="on",
- [172]="on",
- [173]="bn",
- [174]="on",
- [175]="on",
- [176]="et",
- [177]="et",
- [178]="en",
- [179]="en",
- [180]="on",
- [182]="on",
- [183]="on",
- [184]="on",
- [185]="en",
- [187]="on",
- [188]="on",
- [189]="on",
- [190]="on",
- [191]="on",
- [215]="on",
- [247]="on",
- [697]="on",
- [698]="on",
- [706]="on",
- [707]="on",
- [708]="on",
- [709]="on",
- [710]="on",
- [711]="on",
- [712]="on",
- [713]="on",
- [714]="on",
- [715]="on",
- [716]="on",
- [717]="on",
- [718]="on",
- [719]="on",
- [722]="on",
- [723]="on",
- [724]="on",
- [725]="on",
- [726]="on",
- [727]="on",
- [728]="on",
- [729]="on",
- [730]="on",
- [731]="on",
- [732]="on",
- [733]="on",
- [734]="on",
- [735]="on",
- [741]="on",
- [742]="on",
- [743]="on",
- [744]="on",
- [745]="on",
- [746]="on",
- [747]="on",
- [748]="on",
- [749]="on",
- [751]="on",
- [752]="on",
- [753]="on",
- [754]="on",
- [755]="on",
- [756]="on",
- [757]="on",
- [758]="on",
- [759]="on",
- [760]="on",
- [761]="on",
- [762]="on",
- [763]="on",
- [764]="on",
- [765]="on",
- [766]="on",
- [767]="on",
- [768]="nsm",
- [769]="nsm",
- [770]="nsm",
- [771]="nsm",
- [772]="nsm",
- [773]="nsm",
- [774]="nsm",
- [775]="nsm",
- [776]="nsm",
- [777]="nsm",
- [778]="nsm",
- [779]="nsm",
- [780]="nsm",
- [781]="nsm",
- [782]="nsm",
- [783]="nsm",
- [784]="nsm",
- [785]="nsm",
- [786]="nsm",
- [787]="nsm",
- [788]="nsm",
- [789]="nsm",
- [790]="nsm",
- [791]="nsm",
- [792]="nsm",
- [793]="nsm",
- [794]="nsm",
- [795]="nsm",
- [796]="nsm",
- [797]="nsm",
- [798]="nsm",
- [799]="nsm",
- [800]="nsm",
- [801]="nsm",
- [802]="nsm",
- [803]="nsm",
- [804]="nsm",
- [805]="nsm",
- [806]="nsm",
- [807]="nsm",
- [808]="nsm",
- [809]="nsm",
- [810]="nsm",
- [811]="nsm",
- [812]="nsm",
- [813]="nsm",
- [814]="nsm",
- [815]="nsm",
- [816]="nsm",
- [817]="nsm",
- [818]="nsm",
- [819]="nsm",
- [820]="nsm",
- [821]="nsm",
- [822]="nsm",
- [823]="nsm",
- [824]="nsm",
- [825]="nsm",
- [826]="nsm",
- [827]="nsm",
- [828]="nsm",
- [829]="nsm",
- [830]="nsm",
- [831]="nsm",
- [832]="nsm",
- [833]="nsm",
- [834]="nsm",
- [835]="nsm",
- [836]="nsm",
- [837]="nsm",
- [838]="nsm",
- [839]="nsm",
- [840]="nsm",
- [841]="nsm",
- [842]="nsm",
- [843]="nsm",
- [844]="nsm",
- [845]="nsm",
- [846]="nsm",
- [847]="nsm",
- [848]="nsm",
- [849]="nsm",
- [850]="nsm",
- [851]="nsm",
- [852]="nsm",
- [853]="nsm",
- [854]="nsm",
- [855]="nsm",
- [856]="nsm",
- [857]="nsm",
- [858]="nsm",
- [859]="nsm",
- [860]="nsm",
- [861]="nsm",
- [862]="nsm",
- [863]="nsm",
- [864]="nsm",
- [865]="nsm",
- [866]="nsm",
- [867]="nsm",
- [868]="nsm",
- [869]="nsm",
- [870]="nsm",
- [871]="nsm",
- [872]="nsm",
- [873]="nsm",
- [874]="nsm",
- [875]="nsm",
- [876]="nsm",
- [877]="nsm",
- [878]="nsm",
- [879]="nsm",
- [884]="on",
- [885]="on",
- [894]="on",
- [900]="on",
- [901]="on",
- [903]="on",
- [1014]="on",
- [1155]="nsm",
- [1156]="nsm",
- [1157]="nsm",
- [1158]="nsm",
- [1159]="nsm",
- [1160]="nsm",
- [1161]="nsm",
- [1418]="on",
- [1421]="on",
- [1422]="on",
- [1423]="et",
- [1425]="nsm",
- [1426]="nsm",
- [1427]="nsm",
- [1428]="nsm",
- [1429]="nsm",
- [1430]="nsm",
- [1431]="nsm",
- [1432]="nsm",
- [1433]="nsm",
- [1434]="nsm",
- [1435]="nsm",
- [1436]="nsm",
- [1437]="nsm",
- [1438]="nsm",
- [1439]="nsm",
- [1440]="nsm",
- [1441]="nsm",
- [1442]="nsm",
- [1443]="nsm",
- [1444]="nsm",
- [1445]="nsm",
- [1446]="nsm",
- [1447]="nsm",
- [1448]="nsm",
- [1449]="nsm",
- [1450]="nsm",
- [1451]="nsm",
- [1452]="nsm",
- [1453]="nsm",
- [1454]="nsm",
- [1455]="nsm",
- [1456]="nsm",
- [1457]="nsm",
- [1458]="nsm",
- [1459]="nsm",
- [1460]="nsm",
- [1461]="nsm",
- [1462]="nsm",
- [1463]="nsm",
- [1464]="nsm",
- [1465]="nsm",
- [1466]="nsm",
- [1467]="nsm",
- [1468]="nsm",
- [1469]="nsm",
- [1470]="r",
- [1471]="nsm",
- [1472]="r",
- [1473]="nsm",
- [1474]="nsm",
- [1475]="r",
- [1476]="nsm",
- [1477]="nsm",
- [1478]="r",
- [1479]="nsm",
- [1488]="r",
- [1489]="r",
- [1490]="r",
- [1491]="r",
- [1492]="r",
- [1493]="r",
- [1494]="r",
- [1495]="r",
- [1496]="r",
- [1497]="r",
- [1498]="r",
- [1499]="r",
- [1500]="r",
- [1501]="r",
- [1502]="r",
- [1503]="r",
- [1504]="r",
- [1505]="r",
- [1506]="r",
- [1507]="r",
- [1508]="r",
- [1509]="r",
- [1510]="r",
- [1511]="r",
- [1512]="r",
- [1513]="r",
- [1514]="r",
- [1520]="r",
- [1521]="r",
- [1522]="r",
- [1523]="r",
- [1524]="r",
- [1536]="an",
- [1537]="an",
- [1538]="an",
- [1539]="an",
- [1540]="an",
- [1541]="an",
- [1542]="on",
- [1543]="on",
- [1544]="al",
- [1545]="et",
- [1546]="et",
- [1547]="al",
- [1548]="cs",
- [1549]="al",
- [1550]="on",
- [1551]="on",
- [1552]="nsm",
- [1553]="nsm",
- [1554]="nsm",
- [1555]="nsm",
- [1556]="nsm",
- [1557]="nsm",
- [1558]="nsm",
- [1559]="nsm",
- [1560]="nsm",
- [1561]="nsm",
- [1562]="nsm",
- [1563]="al",
- [1564]="al",
- [1566]="al",
- [1567]="al",
- [1568]="al",
- [1569]="al",
- [1570]="al",
- [1571]="al",
- [1572]="al",
- [1573]="al",
- [1574]="al",
- [1575]="al",
- [1576]="al",
- [1577]="al",
- [1578]="al",
- [1579]="al",
- [1580]="al",
- [1581]="al",
- [1582]="al",
- [1583]="al",
- [1584]="al",
- [1585]="al",
- [1586]="al",
- [1587]="al",
- [1588]="al",
- [1589]="al",
- [1590]="al",
- [1591]="al",
- [1592]="al",
- [1593]="al",
- [1594]="al",
- [1595]="al",
- [1596]="al",
- [1597]="al",
- [1598]="al",
- [1599]="al",
- [1600]="al",
- [1601]="al",
- [1602]="al",
- [1603]="al",
- [1604]="al",
- [1605]="al",
- [1606]="al",
- [1607]="al",
- [1608]="al",
- [1609]="al",
- [1610]="al",
- [1611]="nsm",
- [1612]="nsm",
- [1613]="nsm",
- [1614]="nsm",
- [1615]="nsm",
- [1616]="nsm",
- [1617]="nsm",
- [1618]="nsm",
- [1619]="nsm",
- [1620]="nsm",
- [1621]="nsm",
- [1622]="nsm",
- [1623]="nsm",
- [1624]="nsm",
- [1625]="nsm",
- [1626]="nsm",
- [1627]="nsm",
- [1628]="nsm",
- [1629]="nsm",
- [1630]="nsm",
- [1631]="nsm",
- [1632]="an",
- [1633]="an",
- [1634]="an",
- [1635]="an",
- [1636]="an",
- [1637]="an",
- [1638]="an",
- [1639]="an",
- [1640]="an",
- [1641]="an",
- [1642]="et",
- [1643]="an",
- [1644]="an",
- [1645]="al",
- [1646]="al",
- [1647]="al",
- [1648]="nsm",
- [1649]="al",
- [1650]="al",
- [1651]="al",
- [1652]="al",
- [1653]="al",
- [1654]="al",
- [1655]="al",
- [1656]="al",
- [1657]="al",
- [1658]="al",
- [1659]="al",
- [1660]="al",
- [1661]="al",
- [1662]="al",
- [1663]="al",
- [1664]="al",
- [1665]="al",
- [1666]="al",
- [1667]="al",
- [1668]="al",
- [1669]="al",
- [1670]="al",
- [1671]="al",
- [1672]="al",
- [1673]="al",
- [1674]="al",
- [1675]="al",
- [1676]="al",
- [1677]="al",
- [1678]="al",
- [1679]="al",
- [1680]="al",
- [1681]="al",
- [1682]="al",
- [1683]="al",
- [1684]="al",
- [1685]="al",
- [1686]="al",
- [1687]="al",
- [1688]="al",
- [1689]="al",
- [1690]="al",
- [1691]="al",
- [1692]="al",
- [1693]="al",
- [1694]="al",
- [1695]="al",
- [1696]="al",
- [1697]="al",
- [1698]="al",
- [1699]="al",
- [1700]="al",
- [1701]="al",
- [1702]="al",
- [1703]="al",
- [1704]="al",
- [1705]="al",
- [1706]="al",
- [1707]="al",
- [1708]="al",
- [1709]="al",
- [1710]="al",
- [1711]="al",
- [1712]="al",
- [1713]="al",
- [1714]="al",
- [1715]="al",
- [1716]="al",
- [1717]="al",
- [1718]="al",
- [1719]="al",
- [1720]="al",
- [1721]="al",
- [1722]="al",
- [1723]="al",
- [1724]="al",
- [1725]="al",
- [1726]="al",
- [1727]="al",
- [1728]="al",
- [1729]="al",
- [1730]="al",
- [1731]="al",
- [1732]="al",
- [1733]="al",
- [1734]="al",
- [1735]="al",
- [1736]="al",
- [1737]="al",
- [1738]="al",
- [1739]="al",
- [1740]="al",
- [1741]="al",
- [1742]="al",
- [1743]="al",
- [1744]="al",
- [1745]="al",
- [1746]="al",
- [1747]="al",
- [1748]="al",
- [1749]="al",
- [1750]="nsm",
- [1751]="nsm",
- [1752]="nsm",
- [1753]="nsm",
- [1754]="nsm",
- [1755]="nsm",
- [1756]="nsm",
- [1757]="an",
- [1758]="on",
- [1759]="nsm",
- [1760]="nsm",
- [1761]="nsm",
- [1762]="nsm",
- [1763]="nsm",
- [1764]="nsm",
- [1765]="al",
- [1766]="al",
- [1767]="nsm",
- [1768]="nsm",
- [1769]="on",
- [1770]="nsm",
- [1771]="nsm",
- [1772]="nsm",
- [1773]="nsm",
- [1774]="al",
- [1775]="al",
- [1776]="en",
- [1777]="en",
- [1778]="en",
- [1779]="en",
- [1780]="en",
- [1781]="en",
- [1782]="en",
- [1783]="en",
- [1784]="en",
- [1785]="en",
- [1786]="al",
- [1787]="al",
- [1788]="al",
- [1789]="al",
- [1790]="al",
- [1791]="al",
- [1792]="al",
- [1793]="al",
- [1794]="al",
- [1795]="al",
- [1796]="al",
- [1797]="al",
- [1798]="al",
- [1799]="al",
- [1800]="al",
- [1801]="al",
- [1802]="al",
- [1803]="al",
- [1804]="al",
- [1805]="al",
- [1807]="al",
- [1808]="al",
- [1809]="nsm",
- [1810]="al",
- [1811]="al",
- [1812]="al",
- [1813]="al",
- [1814]="al",
- [1815]="al",
- [1816]="al",
- [1817]="al",
- [1818]="al",
- [1819]="al",
- [1820]="al",
- [1821]="al",
- [1822]="al",
- [1823]="al",
- [1824]="al",
- [1825]="al",
- [1826]="al",
- [1827]="al",
- [1828]="al",
- [1829]="al",
- [1830]="al",
- [1831]="al",
- [1832]="al",
- [1833]="al",
- [1834]="al",
- [1835]="al",
- [1836]="al",
- [1837]="al",
- [1838]="al",
- [1839]="al",
- [1840]="nsm",
- [1841]="nsm",
- [1842]="nsm",
- [1843]="nsm",
- [1844]="nsm",
- [1845]="nsm",
- [1846]="nsm",
- [1847]="nsm",
- [1848]="nsm",
- [1849]="nsm",
- [1850]="nsm",
- [1851]="nsm",
- [1852]="nsm",
- [1853]="nsm",
- [1854]="nsm",
- [1855]="nsm",
- [1856]="nsm",
- [1857]="nsm",
- [1858]="nsm",
- [1859]="nsm",
- [1860]="nsm",
- [1861]="nsm",
- [1862]="nsm",
- [1863]="nsm",
- [1864]="nsm",
- [1865]="nsm",
- [1866]="nsm",
- [1869]="al",
- [1870]="al",
- [1871]="al",
- [1872]="al",
- [1873]="al",
- [1874]="al",
- [1875]="al",
- [1876]="al",
- [1877]="al",
- [1878]="al",
- [1879]="al",
- [1880]="al",
- [1881]="al",
- [1882]="al",
- [1883]="al",
- [1884]="al",
- [1885]="al",
- [1886]="al",
- [1887]="al",
- [1888]="al",
- [1889]="al",
- [1890]="al",
- [1891]="al",
- [1892]="al",
- [1893]="al",
- [1894]="al",
- [1895]="al",
- [1896]="al",
- [1897]="al",
- [1898]="al",
- [1899]="al",
- [1900]="al",
- [1901]="al",
- [1902]="al",
- [1903]="al",
- [1904]="al",
- [1905]="al",
- [1906]="al",
- [1907]="al",
- [1908]="al",
- [1909]="al",
- [1910]="al",
- [1911]="al",
- [1912]="al",
- [1913]="al",
- [1914]="al",
- [1915]="al",
- [1916]="al",
- [1917]="al",
- [1918]="al",
- [1919]="al",
- [1920]="al",
- [1921]="al",
- [1922]="al",
- [1923]="al",
- [1924]="al",
- [1925]="al",
- [1926]="al",
- [1927]="al",
- [1928]="al",
- [1929]="al",
- [1930]="al",
- [1931]="al",
- [1932]="al",
- [1933]="al",
- [1934]="al",
- [1935]="al",
- [1936]="al",
- [1937]="al",
- [1938]="al",
- [1939]="al",
- [1940]="al",
- [1941]="al",
- [1942]="al",
- [1943]="al",
- [1944]="al",
- [1945]="al",
- [1946]="al",
- [1947]="al",
- [1948]="al",
- [1949]="al",
- [1950]="al",
- [1951]="al",
- [1952]="al",
- [1953]="al",
- [1954]="al",
- [1955]="al",
- [1956]="al",
- [1957]="al",
- [1958]="nsm",
- [1959]="nsm",
- [1960]="nsm",
- [1961]="nsm",
- [1962]="nsm",
- [1963]="nsm",
- [1964]="nsm",
- [1965]="nsm",
- [1966]="nsm",
- [1967]="nsm",
- [1968]="nsm",
- [1969]="al",
- [1984]="r",
- [1985]="r",
- [1986]="r",
- [1987]="r",
- [1988]="r",
- [1989]="r",
- [1990]="r",
- [1991]="r",
- [1992]="r",
- [1993]="r",
- [1994]="r",
- [1995]="r",
- [1996]="r",
- [1997]="r",
- [1998]="r",
- [1999]="r",
- [2000]="r",
- [2001]="r",
- [2002]="r",
- [2003]="r",
- [2004]="r",
- [2005]="r",
- [2006]="r",
- [2007]="r",
- [2008]="r",
- [2009]="r",
- [2010]="r",
- [2011]="r",
- [2012]="r",
- [2013]="r",
- [2014]="r",
- [2015]="r",
- [2016]="r",
- [2017]="r",
- [2018]="r",
- [2019]="r",
- [2020]="r",
- [2021]="r",
- [2022]="r",
- [2023]="r",
- [2024]="r",
- [2025]="r",
- [2026]="r",
- [2027]="nsm",
- [2028]="nsm",
- [2029]="nsm",
- [2030]="nsm",
- [2031]="nsm",
- [2032]="nsm",
- [2033]="nsm",
- [2034]="nsm",
- [2035]="nsm",
- [2036]="r",
- [2037]="r",
- [2038]="on",
- [2039]="on",
- [2040]="on",
- [2041]="on",
- [2042]="r",
- [2048]="r",
- [2049]="r",
- [2050]="r",
- [2051]="r",
- [2052]="r",
- [2053]="r",
- [2054]="r",
- [2055]="r",
- [2056]="r",
- [2057]="r",
- [2058]="r",
- [2059]="r",
- [2060]="r",
- [2061]="r",
- [2062]="r",
- [2063]="r",
- [2064]="r",
- [2065]="r",
- [2066]="r",
- [2067]="r",
- [2068]="r",
- [2069]="r",
- [2070]="nsm",
- [2071]="nsm",
- [2072]="nsm",
- [2073]="nsm",
- [2074]="r",
- [2075]="nsm",
- [2076]="nsm",
- [2077]="nsm",
- [2078]="nsm",
- [2079]="nsm",
- [2080]="nsm",
- [2081]="nsm",
- [2082]="nsm",
- [2083]="nsm",
- [2084]="r",
- [2085]="nsm",
- [2086]="nsm",
- [2087]="nsm",
- [2088]="r",
- [2089]="nsm",
- [2090]="nsm",
- [2091]="nsm",
- [2092]="nsm",
- [2093]="nsm",
- [2096]="r",
- [2097]="r",
- [2098]="r",
- [2099]="r",
- [2100]="r",
- [2101]="r",
- [2102]="r",
- [2103]="r",
- [2104]="r",
- [2105]="r",
- [2106]="r",
- [2107]="r",
- [2108]="r",
- [2109]="r",
- [2110]="r",
- [2112]="r",
- [2113]="r",
- [2114]="r",
- [2115]="r",
- [2116]="r",
- [2117]="r",
- [2118]="r",
- [2119]="r",
- [2120]="r",
- [2121]="r",
- [2122]="r",
- [2123]="r",
- [2124]="r",
- [2125]="r",
- [2126]="r",
- [2127]="r",
- [2128]="r",
- [2129]="r",
- [2130]="r",
- [2131]="r",
- [2132]="r",
- [2133]="r",
- [2134]="r",
- [2135]="r",
- [2136]="r",
- [2137]="nsm",
- [2138]="nsm",
- [2139]="nsm",
- [2142]="r",
- [2144]="al",
- [2145]="al",
- [2146]="al",
- [2147]="al",
- [2148]="al",
- [2149]="al",
- [2150]="al",
- [2151]="al",
- [2152]="al",
- [2153]="al",
- [2154]="al",
- [2208]="al",
- [2209]="al",
- [2210]="al",
- [2211]="al",
- [2212]="al",
- [2213]="al",
- [2214]="al",
- [2215]="al",
- [2216]="al",
- [2217]="al",
- [2218]="al",
- [2219]="al",
- [2220]="al",
- [2221]="al",
- [2222]="al",
- [2223]="al",
- [2224]="al",
- [2225]="al",
- [2226]="al",
- [2227]="al",
- [2228]="al",
- [2230]="al",
- [2231]="al",
- [2232]="al",
- [2233]="al",
- [2234]="al",
- [2235]="al",
- [2236]="al",
- [2237]="al",
- [2260]="nsm",
- [2261]="nsm",
- [2262]="nsm",
- [2263]="nsm",
- [2264]="nsm",
- [2265]="nsm",
- [2266]="nsm",
- [2267]="nsm",
- [2268]="nsm",
- [2269]="nsm",
- [2270]="nsm",
- [2271]="nsm",
- [2272]="nsm",
- [2273]="nsm",
- [2274]="an",
- [2275]="nsm",
- [2276]="nsm",
- [2277]="nsm",
- [2278]="nsm",
- [2279]="nsm",
- [2280]="nsm",
- [2281]="nsm",
- [2282]="nsm",
- [2283]="nsm",
- [2284]="nsm",
- [2285]="nsm",
- [2286]="nsm",
- [2287]="nsm",
- [2288]="nsm",
- [2289]="nsm",
- [2290]="nsm",
- [2291]="nsm",
- [2292]="nsm",
- [2293]="nsm",
- [2294]="nsm",
- [2295]="nsm",
- [2296]="nsm",
- [2297]="nsm",
- [2298]="nsm",
- [2299]="nsm",
- [2300]="nsm",
- [2301]="nsm",
- [2302]="nsm",
- [2303]="nsm",
- [2304]="nsm",
- [2305]="nsm",
- [2306]="nsm",
- [2362]="nsm",
- [2364]="nsm",
- [2369]="nsm",
- [2370]="nsm",
- [2371]="nsm",
- [2372]="nsm",
- [2373]="nsm",
- [2374]="nsm",
- [2375]="nsm",
- [2376]="nsm",
- [2381]="nsm",
- [2385]="nsm",
- [2386]="nsm",
- [2387]="nsm",
- [2388]="nsm",
- [2389]="nsm",
- [2390]="nsm",
- [2391]="nsm",
- [2402]="nsm",
- [2403]="nsm",
- [2433]="nsm",
- [2492]="nsm",
- [2497]="nsm",
- [2498]="nsm",
- [2499]="nsm",
- [2500]="nsm",
- [2509]="nsm",
- [2530]="nsm",
- [2531]="nsm",
- [2546]="et",
- [2547]="et",
- [2555]="et",
- [2561]="nsm",
- [2562]="nsm",
- [2620]="nsm",
- [2625]="nsm",
- [2626]="nsm",
- [2631]="nsm",
- [2632]="nsm",
- [2635]="nsm",
- [2636]="nsm",
- [2637]="nsm",
- [2641]="nsm",
- [2672]="nsm",
- [2673]="nsm",
- [2677]="nsm",
- [2689]="nsm",
- [2690]="nsm",
- [2748]="nsm",
- [2753]="nsm",
- [2754]="nsm",
- [2755]="nsm",
- [2756]="nsm",
- [2757]="nsm",
- [2759]="nsm",
- [2760]="nsm",
- [2765]="nsm",
- [2786]="nsm",
- [2787]="nsm",
- [2801]="et",
- [2810]="nsm",
- [2811]="nsm",
- [2812]="nsm",
- [2813]="nsm",
- [2814]="nsm",
- [2815]="nsm",
- [2817]="nsm",
- [2876]="nsm",
- [2879]="nsm",
- [2881]="nsm",
- [2882]="nsm",
- [2883]="nsm",
- [2884]="nsm",
- [2893]="nsm",
- [2902]="nsm",
- [2914]="nsm",
- [2915]="nsm",
- [2946]="nsm",
- [3008]="nsm",
- [3021]="nsm",
- [3059]="on",
- [3060]="on",
- [3061]="on",
- [3062]="on",
- [3063]="on",
- [3064]="on",
- [3065]="et",
- [3066]="on",
- [3072]="nsm",
- [3134]="nsm",
- [3135]="nsm",
- [3136]="nsm",
- [3142]="nsm",
- [3143]="nsm",
- [3144]="nsm",
- [3146]="nsm",
- [3147]="nsm",
- [3148]="nsm",
- [3149]="nsm",
- [3157]="nsm",
- [3158]="nsm",
- [3170]="nsm",
- [3171]="nsm",
- [3192]="on",
- [3193]="on",
- [3194]="on",
- [3195]="on",
- [3196]="on",
- [3197]="on",
- [3198]="on",
- [3201]="nsm",
- [3260]="nsm",
- [3276]="nsm",
- [3277]="nsm",
- [3298]="nsm",
- [3299]="nsm",
- [3328]="nsm",
- [3329]="nsm",
- [3387]="nsm",
- [3388]="nsm",
- [3393]="nsm",
- [3394]="nsm",
- [3395]="nsm",
- [3396]="nsm",
- [3405]="nsm",
- [3426]="nsm",
- [3427]="nsm",
- [3530]="nsm",
- [3538]="nsm",
- [3539]="nsm",
- [3540]="nsm",
- [3542]="nsm",
- [3633]="nsm",
- [3636]="nsm",
- [3637]="nsm",
- [3638]="nsm",
- [3639]="nsm",
- [3640]="nsm",
- [3641]="nsm",
- [3642]="nsm",
- [3647]="et",
- [3655]="nsm",
- [3656]="nsm",
- [3657]="nsm",
- [3658]="nsm",
- [3659]="nsm",
- [3660]="nsm",
- [3661]="nsm",
- [3662]="nsm",
- [3761]="nsm",
- [3764]="nsm",
- [3765]="nsm",
- [3766]="nsm",
- [3767]="nsm",
- [3768]="nsm",
- [3769]="nsm",
- [3771]="nsm",
- [3772]="nsm",
- [3784]="nsm",
- [3785]="nsm",
- [3786]="nsm",
- [3787]="nsm",
- [3788]="nsm",
- [3789]="nsm",
- [3864]="nsm",
- [3865]="nsm",
- [3893]="nsm",
- [3895]="nsm",
- [3897]="nsm",
- [3898]="on",
- [3899]="on",
- [3900]="on",
- [3901]="on",
- [3953]="nsm",
- [3954]="nsm",
- [3955]="nsm",
- [3956]="nsm",
- [3957]="nsm",
- [3958]="nsm",
- [3959]="nsm",
- [3960]="nsm",
- [3961]="nsm",
- [3962]="nsm",
- [3963]="nsm",
- [3964]="nsm",
- [3965]="nsm",
- [3966]="nsm",
- [3968]="nsm",
- [3969]="nsm",
- [3970]="nsm",
- [3971]="nsm",
- [3972]="nsm",
- [3974]="nsm",
- [3975]="nsm",
- [3981]="nsm",
- [3982]="nsm",
- [3983]="nsm",
- [3984]="nsm",
- [3985]="nsm",
- [3986]="nsm",
- [3987]="nsm",
- [3988]="nsm",
- [3989]="nsm",
- [3990]="nsm",
- [3991]="nsm",
- [3993]="nsm",
- [3994]="nsm",
- [3995]="nsm",
- [3996]="nsm",
- [3997]="nsm",
- [3998]="nsm",
- [3999]="nsm",
- [4000]="nsm",
- [4001]="nsm",
- [4002]="nsm",
- [4003]="nsm",
- [4004]="nsm",
- [4005]="nsm",
- [4006]="nsm",
- [4007]="nsm",
- [4008]="nsm",
- [4009]="nsm",
- [4010]="nsm",
- [4011]="nsm",
- [4012]="nsm",
- [4013]="nsm",
- [4014]="nsm",
- [4015]="nsm",
- [4016]="nsm",
- [4017]="nsm",
- [4018]="nsm",
- [4019]="nsm",
- [4020]="nsm",
- [4021]="nsm",
- [4022]="nsm",
- [4023]="nsm",
- [4024]="nsm",
- [4025]="nsm",
- [4026]="nsm",
- [4027]="nsm",
- [4028]="nsm",
- [4038]="nsm",
- [4141]="nsm",
- [4142]="nsm",
- [4143]="nsm",
- [4144]="nsm",
- [4146]="nsm",
- [4147]="nsm",
- [4148]="nsm",
- [4149]="nsm",
- [4150]="nsm",
- [4151]="nsm",
- [4153]="nsm",
- [4154]="nsm",
- [4157]="nsm",
- [4158]="nsm",
- [4184]="nsm",
- [4185]="nsm",
- [4190]="nsm",
- [4191]="nsm",
- [4192]="nsm",
- [4209]="nsm",
- [4210]="nsm",
- [4211]="nsm",
- [4212]="nsm",
- [4226]="nsm",
- [4229]="nsm",
- [4230]="nsm",
- [4237]="nsm",
- [4253]="nsm",
- [4957]="nsm",
- [4958]="nsm",
- [4959]="nsm",
- [5008]="on",
- [5009]="on",
- [5010]="on",
- [5011]="on",
- [5012]="on",
- [5013]="on",
- [5014]="on",
- [5015]="on",
- [5016]="on",
- [5017]="on",
- [5120]="on",
- [5760]="ws",
- [5787]="on",
- [5788]="on",
- [5906]="nsm",
- [5907]="nsm",
- [5908]="nsm",
- [5938]="nsm",
- [5939]="nsm",
- [5940]="nsm",
- [5970]="nsm",
- [5971]="nsm",
- [6002]="nsm",
- [6003]="nsm",
- [6068]="nsm",
- [6069]="nsm",
- [6071]="nsm",
- [6072]="nsm",
- [6073]="nsm",
- [6074]="nsm",
- [6075]="nsm",
- [6076]="nsm",
- [6077]="nsm",
- [6086]="nsm",
- [6089]="nsm",
- [6090]="nsm",
- [6091]="nsm",
- [6092]="nsm",
- [6093]="nsm",
- [6094]="nsm",
- [6095]="nsm",
- [6096]="nsm",
- [6097]="nsm",
- [6098]="nsm",
- [6099]="nsm",
- [6107]="et",
- [6109]="nsm",
- [6128]="on",
- [6129]="on",
- [6130]="on",
- [6131]="on",
- [6132]="on",
- [6133]="on",
- [6134]="on",
- [6135]="on",
- [6136]="on",
- [6137]="on",
- [6144]="on",
- [6145]="on",
- [6146]="on",
- [6147]="on",
- [6148]="on",
- [6149]="on",
- [6150]="on",
- [6151]="on",
- [6152]="on",
- [6153]="on",
- [6154]="on",
- [6155]="nsm",
- [6156]="nsm",
- [6157]="nsm",
- [6158]="bn",
- [6277]="nsm",
- [6278]="nsm",
- [6313]="nsm",
- [6432]="nsm",
- [6433]="nsm",
- [6434]="nsm",
- [6439]="nsm",
- [6440]="nsm",
- [6450]="nsm",
- [6457]="nsm",
- [6458]="nsm",
- [6459]="nsm",
- [6464]="on",
- [6468]="on",
- [6469]="on",
- [6622]="on",
- [6623]="on",
- [6624]="on",
- [6625]="on",
- [6626]="on",
- [6627]="on",
- [6628]="on",
- [6629]="on",
- [6630]="on",
- [6631]="on",
- [6632]="on",
- [6633]="on",
- [6634]="on",
- [6635]="on",
- [6636]="on",
- [6637]="on",
- [6638]="on",
- [6639]="on",
- [6640]="on",
- [6641]="on",
- [6642]="on",
- [6643]="on",
- [6644]="on",
- [6645]="on",
- [6646]="on",
- [6647]="on",
- [6648]="on",
- [6649]="on",
- [6650]="on",
- [6651]="on",
- [6652]="on",
- [6653]="on",
- [6654]="on",
- [6655]="on",
- [6679]="nsm",
- [6680]="nsm",
- [6683]="nsm",
- [6742]="nsm",
- [6744]="nsm",
- [6745]="nsm",
- [6746]="nsm",
- [6747]="nsm",
- [6748]="nsm",
- [6749]="nsm",
- [6750]="nsm",
- [6752]="nsm",
- [6754]="nsm",
- [6757]="nsm",
- [6758]="nsm",
- [6759]="nsm",
- [6760]="nsm",
- [6761]="nsm",
- [6762]="nsm",
- [6763]="nsm",
- [6764]="nsm",
- [6771]="nsm",
- [6772]="nsm",
- [6773]="nsm",
- [6774]="nsm",
- [6775]="nsm",
- [6776]="nsm",
- [6777]="nsm",
- [6778]="nsm",
- [6779]="nsm",
- [6780]="nsm",
- [6783]="nsm",
- [6832]="nsm",
- [6833]="nsm",
- [6834]="nsm",
- [6835]="nsm",
- [6836]="nsm",
- [6837]="nsm",
- [6838]="nsm",
- [6839]="nsm",
- [6840]="nsm",
- [6841]="nsm",
- [6842]="nsm",
- [6843]="nsm",
- [6844]="nsm",
- [6845]="nsm",
- [6846]="nsm",
- [6912]="nsm",
- [6913]="nsm",
- [6914]="nsm",
- [6915]="nsm",
- [6964]="nsm",
- [6966]="nsm",
- [6967]="nsm",
- [6968]="nsm",
- [6969]="nsm",
- [6970]="nsm",
- [6972]="nsm",
- [6978]="nsm",
- [7019]="nsm",
- [7020]="nsm",
- [7021]="nsm",
- [7022]="nsm",
- [7023]="nsm",
- [7024]="nsm",
- [7025]="nsm",
- [7026]="nsm",
- [7027]="nsm",
- [7040]="nsm",
- [7041]="nsm",
- [7074]="nsm",
- [7075]="nsm",
- [7076]="nsm",
- [7077]="nsm",
- [7080]="nsm",
- [7081]="nsm",
- [7083]="nsm",
- [7084]="nsm",
- [7085]="nsm",
- [7142]="nsm",
- [7144]="nsm",
- [7145]="nsm",
- [7149]="nsm",
- [7151]="nsm",
- [7152]="nsm",
- [7153]="nsm",
- [7212]="nsm",
- [7213]="nsm",
- [7214]="nsm",
- [7215]="nsm",
- [7216]="nsm",
- [7217]="nsm",
- [7218]="nsm",
- [7219]="nsm",
- [7222]="nsm",
- [7223]="nsm",
- [7376]="nsm",
- [7377]="nsm",
- [7378]="nsm",
- [7380]="nsm",
- [7381]="nsm",
- [7382]="nsm",
- [7383]="nsm",
- [7384]="nsm",
- [7385]="nsm",
- [7386]="nsm",
- [7387]="nsm",
- [7388]="nsm",
- [7389]="nsm",
- [7390]="nsm",
- [7391]="nsm",
- [7392]="nsm",
- [7394]="nsm",
- [7395]="nsm",
- [7396]="nsm",
- [7397]="nsm",
- [7398]="nsm",
- [7399]="nsm",
- [7400]="nsm",
- [7405]="nsm",
- [7412]="nsm",
- [7416]="nsm",
- [7417]="nsm",
- [7616]="nsm",
- [7617]="nsm",
- [7618]="nsm",
- [7619]="nsm",
- [7620]="nsm",
- [7621]="nsm",
- [7622]="nsm",
- [7623]="nsm",
- [7624]="nsm",
- [7625]="nsm",
- [7626]="nsm",
- [7627]="nsm",
- [7628]="nsm",
- [7629]="nsm",
- [7630]="nsm",
- [7631]="nsm",
- [7632]="nsm",
- [7633]="nsm",
- [7634]="nsm",
- [7635]="nsm",
- [7636]="nsm",
- [7637]="nsm",
- [7638]="nsm",
- [7639]="nsm",
- [7640]="nsm",
- [7641]="nsm",
- [7642]="nsm",
- [7643]="nsm",
- [7644]="nsm",
- [7645]="nsm",
- [7646]="nsm",
- [7647]="nsm",
- [7648]="nsm",
- [7649]="nsm",
- [7650]="nsm",
- [7651]="nsm",
- [7652]="nsm",
- [7653]="nsm",
- [7654]="nsm",
- [7655]="nsm",
- [7656]="nsm",
- [7657]="nsm",
- [7658]="nsm",
- [7659]="nsm",
- [7660]="nsm",
- [7661]="nsm",
- [7662]="nsm",
- [7663]="nsm",
- [7664]="nsm",
- [7665]="nsm",
- [7666]="nsm",
- [7667]="nsm",
- [7668]="nsm",
- [7669]="nsm",
- [7670]="nsm",
- [7671]="nsm",
- [7672]="nsm",
- [7673]="nsm",
- [7675]="nsm",
- [7676]="nsm",
- [7677]="nsm",
- [7678]="nsm",
- [7679]="nsm",
- [8125]="on",
- [8127]="on",
- [8128]="on",
- [8129]="on",
- [8141]="on",
- [8142]="on",
- [8143]="on",
- [8157]="on",
- [8158]="on",
- [8159]="on",
- [8173]="on",
- [8174]="on",
- [8175]="on",
- [8189]="on",
- [8190]="on",
- [8192]="ws",
- [8193]="ws",
- [8194]="ws",
- [8195]="ws",
- [8196]="ws",
- [8197]="ws",
- [8198]="ws",
- [8199]="ws",
- [8200]="ws",
- [8201]="ws",
- [8202]="ws",
- [8203]="bn",
- [8204]="bn",
- [8205]="bn",
- [8207]="r",
- [8208]="on",
- [8209]="on",
- [8210]="on",
- [8211]="on",
- [8212]="on",
- [8213]="on",
- [8214]="on",
- [8215]="on",
- [8216]="on",
- [8217]="on",
- [8218]="on",
- [8219]="on",
- [8220]="on",
- [8221]="on",
- [8222]="on",
- [8223]="on",
- [8224]="on",
- [8225]="on",
- [8226]="on",
- [8227]="on",
- [8228]="on",
- [8229]="on",
- [8230]="on",
- [8231]="on",
- [8232]="ws",
- [8233]="b",
- [8234]="lre",
- [8235]="rle",
- [8236]="pdf",
- [8237]="lro",
- [8238]="rlo",
- [8239]="cs",
- [8240]="et",
- [8241]="et",
- [8242]="et",
- [8243]="et",
- [8244]="et",
- [8245]="on",
- [8246]="on",
- [8247]="on",
- [8248]="on",
- [8249]="on",
- [8250]="on",
- [8251]="on",
- [8252]="on",
- [8253]="on",
- [8254]="on",
- [8255]="on",
- [8256]="on",
- [8257]="on",
- [8258]="on",
- [8259]="on",
- [8260]="cs",
- [8261]="on",
- [8262]="on",
- [8263]="on",
- [8264]="on",
- [8265]="on",
- [8266]="on",
- [8267]="on",
- [8268]="on",
- [8269]="on",
- [8270]="on",
- [8271]="on",
- [8272]="on",
- [8273]="on",
- [8274]="on",
- [8275]="on",
- [8276]="on",
- [8277]="on",
- [8278]="on",
- [8279]="on",
- [8280]="on",
- [8281]="on",
- [8282]="on",
- [8283]="on",
- [8284]="on",
- [8285]="on",
- [8286]="on",
- [8287]="ws",
- [8288]="bn",
- [8289]="bn",
- [8290]="bn",
- [8291]="bn",
- [8292]="bn",
- [8294]="lri",
- [8295]="rli",
- [8296]="fsi",
- [8297]="pdi",
- [8298]="bn",
- [8299]="bn",
- [8300]="bn",
- [8301]="bn",
- [8302]="bn",
- [8303]="bn",
- [8304]="en",
- [8308]="en",
- [8309]="en",
- [8310]="en",
- [8311]="en",
- [8312]="en",
- [8313]="en",
- [8314]="es",
- [8315]="es",
- [8316]="on",
- [8317]="on",
- [8318]="on",
- [8320]="en",
- [8321]="en",
- [8322]="en",
- [8323]="en",
- [8324]="en",
- [8325]="en",
- [8326]="en",
- [8327]="en",
- [8328]="en",
- [8329]="en",
- [8330]="es",
- [8331]="es",
- [8332]="on",
- [8333]="on",
- [8334]="on",
- [8352]="et",
- [8353]="et",
- [8354]="et",
- [8355]="et",
- [8356]="et",
- [8357]="et",
- [8358]="et",
- [8359]="et",
- [8360]="et",
- [8361]="et",
- [8362]="et",
- [8363]="et",
- [8364]="et",
- [8365]="et",
- [8366]="et",
- [8367]="et",
- [8368]="et",
- [8369]="et",
- [8370]="et",
- [8371]="et",
- [8372]="et",
- [8373]="et",
- [8374]="et",
- [8375]="et",
- [8376]="et",
- [8377]="et",
- [8378]="et",
- [8379]="et",
- [8380]="et",
- [8381]="et",
- [8382]="et",
- [8383]="et",
- [8400]="nsm",
- [8401]="nsm",
- [8402]="nsm",
- [8403]="nsm",
- [8404]="nsm",
- [8405]="nsm",
- [8406]="nsm",
- [8407]="nsm",
- [8408]="nsm",
- [8409]="nsm",
- [8410]="nsm",
- [8411]="nsm",
- [8412]="nsm",
- [8413]="nsm",
- [8414]="nsm",
- [8415]="nsm",
- [8416]="nsm",
- [8417]="nsm",
- [8418]="nsm",
- [8419]="nsm",
- [8420]="nsm",
- [8421]="nsm",
- [8422]="nsm",
- [8423]="nsm",
- [8424]="nsm",
- [8425]="nsm",
- [8426]="nsm",
- [8427]="nsm",
- [8428]="nsm",
- [8429]="nsm",
- [8430]="nsm",
- [8431]="nsm",
- [8432]="nsm",
- [8448]="on",
- [8449]="on",
- [8451]="on",
- [8452]="on",
- [8453]="on",
- [8454]="on",
- [8456]="on",
- [8457]="on",
- [8468]="on",
- [8470]="on",
- [8471]="on",
- [8472]="on",
- [8478]="on",
- [8479]="on",
- [8480]="on",
- [8481]="on",
- [8482]="on",
- [8483]="on",
- [8485]="on",
- [8487]="on",
- [8489]="on",
- [8494]="et",
- [8506]="on",
- [8507]="on",
- [8512]="on",
- [8513]="on",
- [8514]="on",
- [8515]="on",
- [8516]="on",
- [8522]="on",
- [8523]="on",
- [8524]="on",
- [8525]="on",
- [8528]="on",
- [8529]="on",
- [8530]="on",
- [8531]="on",
- [8532]="on",
- [8533]="on",
- [8534]="on",
- [8535]="on",
- [8536]="on",
- [8537]="on",
- [8538]="on",
- [8539]="on",
- [8540]="on",
- [8541]="on",
- [8542]="on",
- [8543]="on",
- [8585]="on",
- [8586]="on",
- [8587]="on",
- [8592]="on",
- [8593]="on",
- [8594]="on",
- [8595]="on",
- [8596]="on",
- [8597]="on",
- [8598]="on",
- [8599]="on",
- [8600]="on",
- [8601]="on",
- [8602]="on",
- [8603]="on",
- [8604]="on",
- [8605]="on",
- [8606]="on",
- [8607]="on",
- [8608]="on",
- [8609]="on",
- [8610]="on",
- [8611]="on",
- [8612]="on",
- [8613]="on",
- [8614]="on",
- [8615]="on",
- [8616]="on",
- [8617]="on",
- [8618]="on",
- [8619]="on",
- [8620]="on",
- [8621]="on",
- [8622]="on",
- [8623]="on",
- [8624]="on",
- [8625]="on",
- [8626]="on",
- [8627]="on",
- [8628]="on",
- [8629]="on",
- [8630]="on",
- [8631]="on",
- [8632]="on",
- [8633]="on",
- [8634]="on",
- [8635]="on",
- [8636]="on",
- [8637]="on",
- [8638]="on",
- [8639]="on",
- [8640]="on",
- [8641]="on",
- [8642]="on",
- [8643]="on",
- [8644]="on",
- [8645]="on",
- [8646]="on",
- [8647]="on",
- [8648]="on",
- [8649]="on",
- [8650]="on",
- [8651]="on",
- [8652]="on",
- [8653]="on",
- [8654]="on",
- [8655]="on",
- [8656]="on",
- [8657]="on",
- [8658]="on",
- [8659]="on",
- [8660]="on",
- [8661]="on",
- [8662]="on",
- [8663]="on",
- [8664]="on",
- [8665]="on",
- [8666]="on",
- [8667]="on",
- [8668]="on",
- [8669]="on",
- [8670]="on",
- [8671]="on",
- [8672]="on",
- [8673]="on",
- [8674]="on",
- [8675]="on",
- [8676]="on",
- [8677]="on",
- [8678]="on",
- [8679]="on",
- [8680]="on",
- [8681]="on",
- [8682]="on",
- [8683]="on",
- [8684]="on",
- [8685]="on",
- [8686]="on",
- [8687]="on",
- [8688]="on",
- [8689]="on",
- [8690]="on",
- [8691]="on",
- [8692]="on",
- [8693]="on",
- [8694]="on",
- [8695]="on",
- [8696]="on",
- [8697]="on",
- [8698]="on",
- [8699]="on",
- [8700]="on",
- [8701]="on",
- [8702]="on",
- [8703]="on",
- [8704]="on",
- [8705]="on",
- [8706]="on",
- [8707]="on",
- [8708]="on",
- [8709]="on",
- [8710]="on",
- [8711]="on",
- [8712]="on",
- [8713]="on",
- [8714]="on",
- [8715]="on",
- [8716]="on",
- [8717]="on",
- [8718]="on",
- [8719]="on",
- [8720]="on",
- [8721]="on",
- [8722]="es",
- [8723]="et",
- [8724]="on",
- [8725]="on",
- [8726]="on",
- [8727]="on",
- [8728]="on",
- [8729]="on",
- [8730]="on",
- [8731]="on",
- [8732]="on",
- [8733]="on",
- [8734]="on",
- [8735]="on",
- [8736]="on",
- [8737]="on",
- [8738]="on",
- [8739]="on",
- [8740]="on",
- [8741]="on",
- [8742]="on",
- [8743]="on",
- [8744]="on",
- [8745]="on",
- [8746]="on",
- [8747]="on",
- [8748]="on",
- [8749]="on",
- [8750]="on",
- [8751]="on",
- [8752]="on",
- [8753]="on",
- [8754]="on",
- [8755]="on",
- [8756]="on",
- [8757]="on",
- [8758]="on",
- [8759]="on",
- [8760]="on",
- [8761]="on",
- [8762]="on",
- [8763]="on",
- [8764]="on",
- [8765]="on",
- [8766]="on",
- [8767]="on",
- [8768]="on",
- [8769]="on",
- [8770]="on",
- [8771]="on",
- [8772]="on",
- [8773]="on",
- [8774]="on",
- [8775]="on",
- [8776]="on",
- [8777]="on",
- [8778]="on",
- [8779]="on",
- [8780]="on",
- [8781]="on",
- [8782]="on",
- [8783]="on",
- [8784]="on",
- [8785]="on",
- [8786]="on",
- [8787]="on",
- [8788]="on",
- [8789]="on",
- [8790]="on",
- [8791]="on",
- [8792]="on",
- [8793]="on",
- [8794]="on",
- [8795]="on",
- [8796]="on",
- [8797]="on",
- [8798]="on",
- [8799]="on",
- [8800]="on",
- [8801]="on",
- [8802]="on",
- [8803]="on",
- [8804]="on",
- [8805]="on",
- [8806]="on",
- [8807]="on",
- [8808]="on",
- [8809]="on",
- [8810]="on",
- [8811]="on",
- [8812]="on",
- [8813]="on",
- [8814]="on",
- [8815]="on",
- [8816]="on",
- [8817]="on",
- [8818]="on",
- [8819]="on",
- [8820]="on",
- [8821]="on",
- [8822]="on",
- [8823]="on",
- [8824]="on",
- [8825]="on",
- [8826]="on",
- [8827]="on",
- [8828]="on",
- [8829]="on",
- [8830]="on",
- [8831]="on",
- [8832]="on",
- [8833]="on",
- [8834]="on",
- [8835]="on",
- [8836]="on",
- [8837]="on",
- [8838]="on",
- [8839]="on",
- [8840]="on",
- [8841]="on",
- [8842]="on",
- [8843]="on",
- [8844]="on",
- [8845]="on",
- [8846]="on",
- [8847]="on",
- [8848]="on",
- [8849]="on",
- [8850]="on",
- [8851]="on",
- [8852]="on",
- [8853]="on",
- [8854]="on",
- [8855]="on",
- [8856]="on",
- [8857]="on",
- [8858]="on",
- [8859]="on",
- [8860]="on",
- [8861]="on",
- [8862]="on",
- [8863]="on",
- [8864]="on",
- [8865]="on",
- [8866]="on",
- [8867]="on",
- [8868]="on",
- [8869]="on",
- [8870]="on",
- [8871]="on",
- [8872]="on",
- [8873]="on",
- [8874]="on",
- [8875]="on",
- [8876]="on",
- [8877]="on",
- [8878]="on",
- [8879]="on",
- [8880]="on",
- [8881]="on",
- [8882]="on",
- [8883]="on",
- [8884]="on",
- [8885]="on",
- [8886]="on",
- [8887]="on",
- [8888]="on",
- [8889]="on",
- [8890]="on",
- [8891]="on",
- [8892]="on",
- [8893]="on",
- [8894]="on",
- [8895]="on",
- [8896]="on",
- [8897]="on",
- [8898]="on",
- [8899]="on",
- [8900]="on",
- [8901]="on",
- [8902]="on",
- [8903]="on",
- [8904]="on",
- [8905]="on",
- [8906]="on",
- [8907]="on",
- [8908]="on",
- [8909]="on",
- [8910]="on",
- [8911]="on",
- [8912]="on",
- [8913]="on",
- [8914]="on",
- [8915]="on",
- [8916]="on",
- [8917]="on",
- [8918]="on",
- [8919]="on",
- [8920]="on",
- [8921]="on",
- [8922]="on",
- [8923]="on",
- [8924]="on",
- [8925]="on",
- [8926]="on",
- [8927]="on",
- [8928]="on",
- [8929]="on",
- [8930]="on",
- [8931]="on",
- [8932]="on",
- [8933]="on",
- [8934]="on",
- [8935]="on",
- [8936]="on",
- [8937]="on",
- [8938]="on",
- [8939]="on",
- [8940]="on",
- [8941]="on",
- [8942]="on",
- [8943]="on",
- [8944]="on",
- [8945]="on",
- [8946]="on",
- [8947]="on",
- [8948]="on",
- [8949]="on",
- [8950]="on",
- [8951]="on",
- [8952]="on",
- [8953]="on",
- [8954]="on",
- [8955]="on",
- [8956]="on",
- [8957]="on",
- [8958]="on",
- [8959]="on",
- [8960]="on",
- [8961]="on",
- [8962]="on",
- [8963]="on",
- [8964]="on",
- [8965]="on",
- [8966]="on",
- [8967]="on",
- [8968]="on",
- [8969]="on",
- [8970]="on",
- [8971]="on",
- [8972]="on",
- [8973]="on",
- [8974]="on",
- [8975]="on",
- [8976]="on",
- [8977]="on",
- [8978]="on",
- [8979]="on",
- [8980]="on",
- [8981]="on",
- [8982]="on",
- [8983]="on",
- [8984]="on",
- [8985]="on",
- [8986]="on",
- [8987]="on",
- [8988]="on",
- [8989]="on",
- [8990]="on",
- [8991]="on",
- [8992]="on",
- [8993]="on",
- [8994]="on",
- [8995]="on",
- [8996]="on",
- [8997]="on",
- [8998]="on",
- [8999]="on",
- [9000]="on",
- [9001]="on",
- [9002]="on",
- [9003]="on",
- [9004]="on",
- [9005]="on",
- [9006]="on",
- [9007]="on",
- [9008]="on",
- [9009]="on",
- [9010]="on",
- [9011]="on",
- [9012]="on",
- [9013]="on",
- [9083]="on",
- [9084]="on",
- [9085]="on",
- [9086]="on",
- [9087]="on",
- [9088]="on",
- [9089]="on",
- [9090]="on",
- [9091]="on",
- [9092]="on",
- [9093]="on",
- [9094]="on",
- [9095]="on",
- [9096]="on",
- [9097]="on",
- [9098]="on",
- [9099]="on",
- [9100]="on",
- [9101]="on",
- [9102]="on",
- [9103]="on",
- [9104]="on",
- [9105]="on",
- [9106]="on",
- [9107]="on",
- [9108]="on",
- [9110]="on",
- [9111]="on",
- [9112]="on",
- [9113]="on",
- [9114]="on",
- [9115]="on",
- [9116]="on",
- [9117]="on",
- [9118]="on",
- [9119]="on",
- [9120]="on",
- [9121]="on",
- [9122]="on",
- [9123]="on",
- [9124]="on",
- [9125]="on",
- [9126]="on",
- [9127]="on",
- [9128]="on",
- [9129]="on",
- [9130]="on",
- [9131]="on",
- [9132]="on",
- [9133]="on",
- [9134]="on",
- [9135]="on",
- [9136]="on",
- [9137]="on",
- [9138]="on",
- [9139]="on",
- [9140]="on",
- [9141]="on",
- [9142]="on",
- [9143]="on",
- [9144]="on",
- [9145]="on",
- [9146]="on",
- [9147]="on",
- [9148]="on",
- [9149]="on",
- [9150]="on",
- [9151]="on",
- [9152]="on",
- [9153]="on",
- [9154]="on",
- [9155]="on",
- [9156]="on",
- [9157]="on",
- [9158]="on",
- [9159]="on",
- [9160]="on",
- [9161]="on",
- [9162]="on",
- [9163]="on",
- [9164]="on",
- [9165]="on",
- [9166]="on",
- [9167]="on",
- [9168]="on",
- [9169]="on",
- [9170]="on",
- [9171]="on",
- [9172]="on",
- [9173]="on",
- [9174]="on",
- [9175]="on",
- [9176]="on",
- [9177]="on",
- [9178]="on",
- [9179]="on",
- [9180]="on",
- [9181]="on",
- [9182]="on",
- [9183]="on",
- [9184]="on",
- [9185]="on",
- [9186]="on",
- [9187]="on",
- [9188]="on",
- [9189]="on",
- [9190]="on",
- [9191]="on",
- [9192]="on",
- [9193]="on",
- [9194]="on",
- [9195]="on",
- [9196]="on",
- [9197]="on",
- [9198]="on",
- [9199]="on",
- [9200]="on",
- [9201]="on",
- [9202]="on",
- [9203]="on",
- [9204]="on",
- [9205]="on",
- [9206]="on",
- [9207]="on",
- [9208]="on",
- [9209]="on",
- [9210]="on",
- [9211]="on",
- [9212]="on",
- [9213]="on",
- [9214]="on",
- [9215]="on",
- [9216]="on",
- [9217]="on",
- [9218]="on",
- [9219]="on",
- [9220]="on",
- [9221]="on",
- [9222]="on",
- [9223]="on",
- [9224]="on",
- [9225]="on",
- [9226]="on",
- [9227]="on",
- [9228]="on",
- [9229]="on",
- [9230]="on",
- [9231]="on",
- [9232]="on",
- [9233]="on",
- [9234]="on",
- [9235]="on",
- [9236]="on",
- [9237]="on",
- [9238]="on",
- [9239]="on",
- [9240]="on",
- [9241]="on",
- [9242]="on",
- [9243]="on",
- [9244]="on",
- [9245]="on",
- [9246]="on",
- [9247]="on",
- [9248]="on",
- [9249]="on",
- [9250]="on",
- [9251]="on",
- [9252]="on",
- [9253]="on",
- [9254]="on",
- [9280]="on",
- [9281]="on",
- [9282]="on",
- [9283]="on",
- [9284]="on",
- [9285]="on",
- [9286]="on",
- [9287]="on",
- [9288]="on",
- [9289]="on",
- [9290]="on",
- [9312]="on",
- [9313]="on",
- [9314]="on",
- [9315]="on",
- [9316]="on",
- [9317]="on",
- [9318]="on",
- [9319]="on",
- [9320]="on",
- [9321]="on",
- [9322]="on",
- [9323]="on",
- [9324]="on",
- [9325]="on",
- [9326]="on",
- [9327]="on",
- [9328]="on",
- [9329]="on",
- [9330]="on",
- [9331]="on",
- [9332]="on",
- [9333]="on",
- [9334]="on",
- [9335]="on",
- [9336]="on",
- [9337]="on",
- [9338]="on",
- [9339]="on",
- [9340]="on",
- [9341]="on",
- [9342]="on",
- [9343]="on",
- [9344]="on",
- [9345]="on",
- [9346]="on",
- [9347]="on",
- [9348]="on",
- [9349]="on",
- [9350]="on",
- [9351]="on",
- [9352]="en",
- [9353]="en",
- [9354]="en",
- [9355]="en",
- [9356]="en",
- [9357]="en",
- [9358]="en",
- [9359]="en",
- [9360]="en",
- [9361]="en",
- [9362]="en",
- [9363]="en",
- [9364]="en",
- [9365]="en",
- [9366]="en",
- [9367]="en",
- [9368]="en",
- [9369]="en",
- [9370]="en",
- [9371]="en",
- [9450]="on",
- [9451]="on",
- [9452]="on",
- [9453]="on",
- [9454]="on",
- [9455]="on",
- [9456]="on",
- [9457]="on",
- [9458]="on",
- [9459]="on",
- [9460]="on",
- [9461]="on",
- [9462]="on",
- [9463]="on",
- [9464]="on",
- [9465]="on",
- [9466]="on",
- [9467]="on",
- [9468]="on",
- [9469]="on",
- [9470]="on",
- [9471]="on",
- [9472]="on",
- [9473]="on",
- [9474]="on",
- [9475]="on",
- [9476]="on",
- [9477]="on",
- [9478]="on",
- [9479]="on",
- [9480]="on",
- [9481]="on",
- [9482]="on",
- [9483]="on",
- [9484]="on",
- [9485]="on",
- [9486]="on",
- [9487]="on",
- [9488]="on",
- [9489]="on",
- [9490]="on",
- [9491]="on",
- [9492]="on",
- [9493]="on",
- [9494]="on",
- [9495]="on",
- [9496]="on",
- [9497]="on",
- [9498]="on",
- [9499]="on",
- [9500]="on",
- [9501]="on",
- [9502]="on",
- [9503]="on",
- [9504]="on",
- [9505]="on",
- [9506]="on",
- [9507]="on",
- [9508]="on",
- [9509]="on",
- [9510]="on",
- [9511]="on",
- [9512]="on",
- [9513]="on",
- [9514]="on",
- [9515]="on",
- [9516]="on",
- [9517]="on",
- [9518]="on",
- [9519]="on",
- [9520]="on",
- [9521]="on",
- [9522]="on",
- [9523]="on",
- [9524]="on",
- [9525]="on",
- [9526]="on",
- [9527]="on",
- [9528]="on",
- [9529]="on",
- [9530]="on",
- [9531]="on",
- [9532]="on",
- [9533]="on",
- [9534]="on",
- [9535]="on",
- [9536]="on",
- [9537]="on",
- [9538]="on",
- [9539]="on",
- [9540]="on",
- [9541]="on",
- [9542]="on",
- [9543]="on",
- [9544]="on",
- [9545]="on",
- [9546]="on",
- [9547]="on",
- [9548]="on",
- [9549]="on",
- [9550]="on",
- [9551]="on",
- [9552]="on",
- [9553]="on",
- [9554]="on",
- [9555]="on",
- [9556]="on",
- [9557]="on",
- [9558]="on",
- [9559]="on",
- [9560]="on",
- [9561]="on",
- [9562]="on",
- [9563]="on",
- [9564]="on",
- [9565]="on",
- [9566]="on",
- [9567]="on",
- [9568]="on",
- [9569]="on",
- [9570]="on",
- [9571]="on",
- [9572]="on",
- [9573]="on",
- [9574]="on",
- [9575]="on",
- [9576]="on",
- [9577]="on",
- [9578]="on",
- [9579]="on",
- [9580]="on",
- [9581]="on",
- [9582]="on",
- [9583]="on",
- [9584]="on",
- [9585]="on",
- [9586]="on",
- [9587]="on",
- [9588]="on",
- [9589]="on",
- [9590]="on",
- [9591]="on",
- [9592]="on",
- [9593]="on",
- [9594]="on",
- [9595]="on",
- [9596]="on",
- [9597]="on",
- [9598]="on",
- [9599]="on",
- [9600]="on",
- [9601]="on",
- [9602]="on",
- [9603]="on",
- [9604]="on",
- [9605]="on",
- [9606]="on",
- [9607]="on",
- [9608]="on",
- [9609]="on",
- [9610]="on",
- [9611]="on",
- [9612]="on",
- [9613]="on",
- [9614]="on",
- [9615]="on",
- [9616]="on",
- [9617]="on",
- [9618]="on",
- [9619]="on",
- [9620]="on",
- [9621]="on",
- [9622]="on",
- [9623]="on",
- [9624]="on",
- [9625]="on",
- [9626]="on",
- [9627]="on",
- [9628]="on",
- [9629]="on",
- [9630]="on",
- [9631]="on",
- [9632]="on",
- [9633]="on",
- [9634]="on",
- [9635]="on",
- [9636]="on",
- [9637]="on",
- [9638]="on",
- [9639]="on",
- [9640]="on",
- [9641]="on",
- [9642]="on",
- [9643]="on",
- [9644]="on",
- [9645]="on",
- [9646]="on",
- [9647]="on",
- [9648]="on",
- [9649]="on",
- [9650]="on",
- [9651]="on",
- [9652]="on",
- [9653]="on",
- [9654]="on",
- [9655]="on",
- [9656]="on",
- [9657]="on",
- [9658]="on",
- [9659]="on",
- [9660]="on",
- [9661]="on",
- [9662]="on",
- [9663]="on",
- [9664]="on",
- [9665]="on",
- [9666]="on",
- [9667]="on",
- [9668]="on",
- [9669]="on",
- [9670]="on",
- [9671]="on",
- [9672]="on",
- [9673]="on",
- [9674]="on",
- [9675]="on",
- [9676]="on",
- [9677]="on",
- [9678]="on",
- [9679]="on",
- [9680]="on",
- [9681]="on",
- [9682]="on",
- [9683]="on",
- [9684]="on",
- [9685]="on",
- [9686]="on",
- [9687]="on",
- [9688]="on",
- [9689]="on",
- [9690]="on",
- [9691]="on",
- [9692]="on",
- [9693]="on",
- [9694]="on",
- [9695]="on",
- [9696]="on",
- [9697]="on",
- [9698]="on",
- [9699]="on",
- [9700]="on",
- [9701]="on",
- [9702]="on",
- [9703]="on",
- [9704]="on",
- [9705]="on",
- [9706]="on",
- [9707]="on",
- [9708]="on",
- [9709]="on",
- [9710]="on",
- [9711]="on",
- [9712]="on",
- [9713]="on",
- [9714]="on",
- [9715]="on",
- [9716]="on",
- [9717]="on",
- [9718]="on",
- [9719]="on",
- [9720]="on",
- [9721]="on",
- [9722]="on",
- [9723]="on",
- [9724]="on",
- [9725]="on",
- [9726]="on",
- [9727]="on",
- [9728]="on",
- [9729]="on",
- [9730]="on",
- [9731]="on",
- [9732]="on",
- [9733]="on",
- [9734]="on",
- [9735]="on",
- [9736]="on",
- [9737]="on",
- [9738]="on",
- [9739]="on",
- [9740]="on",
- [9741]="on",
- [9742]="on",
- [9743]="on",
- [9744]="on",
- [9745]="on",
- [9746]="on",
- [9747]="on",
- [9748]="on",
- [9749]="on",
- [9750]="on",
- [9751]="on",
- [9752]="on",
- [9753]="on",
- [9754]="on",
- [9755]="on",
- [9756]="on",
- [9757]="on",
- [9758]="on",
- [9759]="on",
- [9760]="on",
- [9761]="on",
- [9762]="on",
- [9763]="on",
- [9764]="on",
- [9765]="on",
- [9766]="on",
- [9767]="on",
- [9768]="on",
- [9769]="on",
- [9770]="on",
- [9771]="on",
- [9772]="on",
- [9773]="on",
- [9774]="on",
- [9775]="on",
- [9776]="on",
- [9777]="on",
- [9778]="on",
- [9779]="on",
- [9780]="on",
- [9781]="on",
- [9782]="on",
- [9783]="on",
- [9784]="on",
- [9785]="on",
- [9786]="on",
- [9787]="on",
- [9788]="on",
- [9789]="on",
- [9790]="on",
- [9791]="on",
- [9792]="on",
- [9793]="on",
- [9794]="on",
- [9795]="on",
- [9796]="on",
- [9797]="on",
- [9798]="on",
- [9799]="on",
- [9800]="on",
- [9801]="on",
- [9802]="on",
- [9803]="on",
- [9804]="on",
- [9805]="on",
- [9806]="on",
- [9807]="on",
- [9808]="on",
- [9809]="on",
- [9810]="on",
- [9811]="on",
- [9812]="on",
- [9813]="on",
- [9814]="on",
- [9815]="on",
- [9816]="on",
- [9817]="on",
- [9818]="on",
- [9819]="on",
- [9820]="on",
- [9821]="on",
- [9822]="on",
- [9823]="on",
- [9824]="on",
- [9825]="on",
- [9826]="on",
- [9827]="on",
- [9828]="on",
- [9829]="on",
- [9830]="on",
- [9831]="on",
- [9832]="on",
- [9833]="on",
- [9834]="on",
- [9835]="on",
- [9836]="on",
- [9837]="on",
- [9838]="on",
- [9839]="on",
- [9840]="on",
- [9841]="on",
- [9842]="on",
- [9843]="on",
- [9844]="on",
- [9845]="on",
- [9846]="on",
- [9847]="on",
- [9848]="on",
- [9849]="on",
- [9850]="on",
- [9851]="on",
- [9852]="on",
- [9853]="on",
- [9854]="on",
- [9855]="on",
- [9856]="on",
- [9857]="on",
- [9858]="on",
- [9859]="on",
- [9860]="on",
- [9861]="on",
- [9862]="on",
- [9863]="on",
- [9864]="on",
- [9865]="on",
- [9866]="on",
- [9867]="on",
- [9868]="on",
- [9869]="on",
- [9870]="on",
- [9871]="on",
- [9872]="on",
- [9873]="on",
- [9874]="on",
- [9875]="on",
- [9876]="on",
- [9877]="on",
- [9878]="on",
- [9879]="on",
- [9880]="on",
- [9881]="on",
- [9882]="on",
- [9883]="on",
- [9884]="on",
- [9885]="on",
- [9886]="on",
- [9887]="on",
- [9888]="on",
- [9889]="on",
- [9890]="on",
- [9891]="on",
- [9892]="on",
- [9893]="on",
- [9894]="on",
- [9895]="on",
- [9896]="on",
- [9897]="on",
- [9898]="on",
- [9899]="on",
- [9901]="on",
- [9902]="on",
- [9903]="on",
- [9904]="on",
- [9905]="on",
- [9906]="on",
- [9907]="on",
- [9908]="on",
- [9909]="on",
- [9910]="on",
- [9911]="on",
- [9912]="on",
- [9913]="on",
- [9914]="on",
- [9915]="on",
- [9916]="on",
- [9917]="on",
- [9918]="on",
- [9919]="on",
- [9920]="on",
- [9921]="on",
- [9922]="on",
- [9923]="on",
- [9924]="on",
- [9925]="on",
- [9926]="on",
- [9927]="on",
- [9928]="on",
- [9929]="on",
- [9930]="on",
- [9931]="on",
- [9932]="on",
- [9933]="on",
- [9934]="on",
- [9935]="on",
- [9936]="on",
- [9937]="on",
- [9938]="on",
- [9939]="on",
- [9940]="on",
- [9941]="on",
- [9942]="on",
- [9943]="on",
- [9944]="on",
- [9945]="on",
- [9946]="on",
- [9947]="on",
- [9948]="on",
- [9949]="on",
- [9950]="on",
- [9951]="on",
- [9952]="on",
- [9953]="on",
- [9954]="on",
- [9955]="on",
- [9956]="on",
- [9957]="on",
- [9958]="on",
- [9959]="on",
- [9960]="on",
- [9961]="on",
- [9962]="on",
- [9963]="on",
- [9964]="on",
- [9965]="on",
- [9966]="on",
- [9967]="on",
- [9968]="on",
- [9969]="on",
- [9970]="on",
- [9971]="on",
- [9972]="on",
- [9973]="on",
- [9974]="on",
- [9975]="on",
- [9976]="on",
- [9977]="on",
- [9978]="on",
- [9979]="on",
- [9980]="on",
- [9981]="on",
- [9982]="on",
- [9983]="on",
- [9984]="on",
- [9985]="on",
- [9986]="on",
- [9987]="on",
- [9988]="on",
- [9989]="on",
- [9990]="on",
- [9991]="on",
- [9992]="on",
- [9993]="on",
- [9994]="on",
- [9995]="on",
- [9996]="on",
- [9997]="on",
- [9998]="on",
- [9999]="on",
- [10000]="on",
- [10001]="on",
- [10002]="on",
- [10003]="on",
- [10004]="on",
- [10005]="on",
- [10006]="on",
- [10007]="on",
- [10008]="on",
- [10009]="on",
- [10010]="on",
- [10011]="on",
- [10012]="on",
- [10013]="on",
- [10014]="on",
- [10015]="on",
- [10016]="on",
- [10017]="on",
- [10018]="on",
- [10019]="on",
- [10020]="on",
- [10021]="on",
- [10022]="on",
- [10023]="on",
- [10024]="on",
- [10025]="on",
- [10026]="on",
- [10027]="on",
- [10028]="on",
- [10029]="on",
- [10030]="on",
- [10031]="on",
- [10032]="on",
- [10033]="on",
- [10034]="on",
- [10035]="on",
- [10036]="on",
- [10037]="on",
- [10038]="on",
- [10039]="on",
- [10040]="on",
- [10041]="on",
- [10042]="on",
- [10043]="on",
- [10044]="on",
- [10045]="on",
- [10046]="on",
- [10047]="on",
- [10048]="on",
- [10049]="on",
- [10050]="on",
- [10051]="on",
- [10052]="on",
- [10053]="on",
- [10054]="on",
- [10055]="on",
- [10056]="on",
- [10057]="on",
- [10058]="on",
- [10059]="on",
- [10060]="on",
- [10061]="on",
- [10062]="on",
- [10063]="on",
- [10064]="on",
- [10065]="on",
- [10066]="on",
- [10067]="on",
- [10068]="on",
- [10069]="on",
- [10070]="on",
- [10071]="on",
- [10072]="on",
- [10073]="on",
- [10074]="on",
- [10075]="on",
- [10076]="on",
- [10077]="on",
- [10078]="on",
- [10079]="on",
- [10080]="on",
- [10081]="on",
- [10082]="on",
- [10083]="on",
- [10084]="on",
- [10085]="on",
- [10086]="on",
- [10087]="on",
- [10088]="on",
- [10089]="on",
- [10090]="on",
- [10091]="on",
- [10092]="on",
- [10093]="on",
- [10094]="on",
- [10095]="on",
- [10096]="on",
- [10097]="on",
- [10098]="on",
- [10099]="on",
- [10100]="on",
- [10101]="on",
- [10102]="on",
- [10103]="on",
- [10104]="on",
- [10105]="on",
- [10106]="on",
- [10107]="on",
- [10108]="on",
- [10109]="on",
- [10110]="on",
- [10111]="on",
- [10112]="on",
- [10113]="on",
- [10114]="on",
- [10115]="on",
- [10116]="on",
- [10117]="on",
- [10118]="on",
- [10119]="on",
- [10120]="on",
- [10121]="on",
- [10122]="on",
- [10123]="on",
- [10124]="on",
- [10125]="on",
- [10126]="on",
- [10127]="on",
- [10128]="on",
- [10129]="on",
- [10130]="on",
- [10131]="on",
- [10132]="on",
- [10133]="on",
- [10134]="on",
- [10135]="on",
- [10136]="on",
- [10137]="on",
- [10138]="on",
- [10139]="on",
- [10140]="on",
- [10141]="on",
- [10142]="on",
- [10143]="on",
- [10144]="on",
- [10145]="on",
- [10146]="on",
- [10147]="on",
- [10148]="on",
- [10149]="on",
- [10150]="on",
- [10151]="on",
- [10152]="on",
- [10153]="on",
- [10154]="on",
- [10155]="on",
- [10156]="on",
- [10157]="on",
- [10158]="on",
- [10159]="on",
- [10160]="on",
- [10161]="on",
- [10162]="on",
- [10163]="on",
- [10164]="on",
- [10165]="on",
- [10166]="on",
- [10167]="on",
- [10168]="on",
- [10169]="on",
- [10170]="on",
- [10171]="on",
- [10172]="on",
- [10173]="on",
- [10174]="on",
- [10175]="on",
- [10176]="on",
- [10177]="on",
- [10178]="on",
- [10179]="on",
- [10180]="on",
- [10181]="on",
- [10182]="on",
- [10183]="on",
- [10184]="on",
- [10185]="on",
- [10186]="on",
- [10187]="on",
- [10188]="on",
- [10189]="on",
- [10190]="on",
- [10191]="on",
- [10192]="on",
- [10193]="on",
- [10194]="on",
- [10195]="on",
- [10196]="on",
- [10197]="on",
- [10198]="on",
- [10199]="on",
- [10200]="on",
- [10201]="on",
- [10202]="on",
- [10203]="on",
- [10204]="on",
- [10205]="on",
- [10206]="on",
- [10207]="on",
- [10208]="on",
- [10209]="on",
- [10210]="on",
- [10211]="on",
- [10212]="on",
- [10213]="on",
- [10214]="on",
- [10215]="on",
- [10216]="on",
- [10217]="on",
- [10218]="on",
- [10219]="on",
- [10220]="on",
- [10221]="on",
- [10222]="on",
- [10223]="on",
- [10224]="on",
- [10225]="on",
- [10226]="on",
- [10227]="on",
- [10228]="on",
- [10229]="on",
- [10230]="on",
- [10231]="on",
- [10232]="on",
- [10233]="on",
- [10234]="on",
- [10235]="on",
- [10236]="on",
- [10237]="on",
- [10238]="on",
- [10239]="on",
- [10496]="on",
- [10497]="on",
- [10498]="on",
- [10499]="on",
- [10500]="on",
- [10501]="on",
- [10502]="on",
- [10503]="on",
- [10504]="on",
- [10505]="on",
- [10506]="on",
- [10507]="on",
- [10508]="on",
- [10509]="on",
- [10510]="on",
- [10511]="on",
- [10512]="on",
- [10513]="on",
- [10514]="on",
- [10515]="on",
- [10516]="on",
- [10517]="on",
- [10518]="on",
- [10519]="on",
- [10520]="on",
- [10521]="on",
- [10522]="on",
- [10523]="on",
- [10524]="on",
- [10525]="on",
- [10526]="on",
- [10527]="on",
- [10528]="on",
- [10529]="on",
- [10530]="on",
- [10531]="on",
- [10532]="on",
- [10533]="on",
- [10534]="on",
- [10535]="on",
- [10536]="on",
- [10537]="on",
- [10538]="on",
- [10539]="on",
- [10540]="on",
- [10541]="on",
- [10542]="on",
- [10543]="on",
- [10544]="on",
- [10545]="on",
- [10546]="on",
- [10547]="on",
- [10548]="on",
- [10549]="on",
- [10550]="on",
- [10551]="on",
- [10552]="on",
- [10553]="on",
- [10554]="on",
- [10555]="on",
- [10556]="on",
- [10557]="on",
- [10558]="on",
- [10559]="on",
- [10560]="on",
- [10561]="on",
- [10562]="on",
- [10563]="on",
- [10564]="on",
- [10565]="on",
- [10566]="on",
- [10567]="on",
- [10568]="on",
- [10569]="on",
- [10570]="on",
- [10571]="on",
- [10572]="on",
- [10573]="on",
- [10574]="on",
- [10575]="on",
- [10576]="on",
- [10577]="on",
- [10578]="on",
- [10579]="on",
- [10580]="on",
- [10581]="on",
- [10582]="on",
- [10583]="on",
- [10584]="on",
- [10585]="on",
- [10586]="on",
- [10587]="on",
- [10588]="on",
- [10589]="on",
- [10590]="on",
- [10591]="on",
- [10592]="on",
- [10593]="on",
- [10594]="on",
- [10595]="on",
- [10596]="on",
- [10597]="on",
- [10598]="on",
- [10599]="on",
- [10600]="on",
- [10601]="on",
- [10602]="on",
- [10603]="on",
- [10604]="on",
- [10605]="on",
- [10606]="on",
- [10607]="on",
- [10608]="on",
- [10609]="on",
- [10610]="on",
- [10611]="on",
- [10612]="on",
- [10613]="on",
- [10614]="on",
- [10615]="on",
- [10616]="on",
- [10617]="on",
- [10618]="on",
- [10619]="on",
- [10620]="on",
- [10621]="on",
- [10622]="on",
- [10623]="on",
- [10624]="on",
- [10625]="on",
- [10626]="on",
- [10627]="on",
- [10628]="on",
- [10629]="on",
- [10630]="on",
- [10631]="on",
- [10632]="on",
- [10633]="on",
- [10634]="on",
- [10635]="on",
- [10636]="on",
- [10637]="on",
- [10638]="on",
- [10639]="on",
- [10640]="on",
- [10641]="on",
- [10642]="on",
- [10643]="on",
- [10644]="on",
- [10645]="on",
- [10646]="on",
- [10647]="on",
- [10648]="on",
- [10649]="on",
- [10650]="on",
- [10651]="on",
- [10652]="on",
- [10653]="on",
- [10654]="on",
- [10655]="on",
- [10656]="on",
- [10657]="on",
- [10658]="on",
- [10659]="on",
- [10660]="on",
- [10661]="on",
- [10662]="on",
- [10663]="on",
- [10664]="on",
- [10665]="on",
- [10666]="on",
- [10667]="on",
- [10668]="on",
- [10669]="on",
- [10670]="on",
- [10671]="on",
- [10672]="on",
- [10673]="on",
- [10674]="on",
- [10675]="on",
- [10676]="on",
- [10677]="on",
- [10678]="on",
- [10679]="on",
- [10680]="on",
- [10681]="on",
- [10682]="on",
- [10683]="on",
- [10684]="on",
- [10685]="on",
- [10686]="on",
- [10687]="on",
- [10688]="on",
- [10689]="on",
- [10690]="on",
- [10691]="on",
- [10692]="on",
- [10693]="on",
- [10694]="on",
- [10695]="on",
- [10696]="on",
- [10697]="on",
- [10698]="on",
- [10699]="on",
- [10700]="on",
- [10701]="on",
- [10702]="on",
- [10703]="on",
- [10704]="on",
- [10705]="on",
- [10706]="on",
- [10707]="on",
- [10708]="on",
- [10709]="on",
- [10710]="on",
- [10711]="on",
- [10712]="on",
- [10713]="on",
- [10714]="on",
- [10715]="on",
- [10716]="on",
- [10717]="on",
- [10718]="on",
- [10719]="on",
- [10720]="on",
- [10721]="on",
- [10722]="on",
- [10723]="on",
- [10724]="on",
- [10725]="on",
- [10726]="on",
- [10727]="on",
- [10728]="on",
- [10729]="on",
- [10730]="on",
- [10731]="on",
- [10732]="on",
- [10733]="on",
- [10734]="on",
- [10735]="on",
- [10736]="on",
- [10737]="on",
- [10738]="on",
- [10739]="on",
- [10740]="on",
- [10741]="on",
- [10742]="on",
- [10743]="on",
- [10744]="on",
- [10745]="on",
- [10746]="on",
- [10747]="on",
- [10748]="on",
- [10749]="on",
- [10750]="on",
- [10751]="on",
- [10752]="on",
- [10753]="on",
- [10754]="on",
- [10755]="on",
- [10756]="on",
- [10757]="on",
- [10758]="on",
- [10759]="on",
- [10760]="on",
- [10761]="on",
- [10762]="on",
- [10763]="on",
- [10764]="on",
- [10765]="on",
- [10766]="on",
- [10767]="on",
- [10768]="on",
- [10769]="on",
- [10770]="on",
- [10771]="on",
- [10772]="on",
- [10773]="on",
- [10774]="on",
- [10775]="on",
- [10776]="on",
- [10777]="on",
- [10778]="on",
- [10779]="on",
- [10780]="on",
- [10781]="on",
- [10782]="on",
- [10783]="on",
- [10784]="on",
- [10785]="on",
- [10786]="on",
- [10787]="on",
- [10788]="on",
- [10789]="on",
- [10790]="on",
- [10791]="on",
- [10792]="on",
- [10793]="on",
- [10794]="on",
- [10795]="on",
- [10796]="on",
- [10797]="on",
- [10798]="on",
- [10799]="on",
- [10800]="on",
- [10801]="on",
- [10802]="on",
- [10803]="on",
- [10804]="on",
- [10805]="on",
- [10806]="on",
- [10807]="on",
- [10808]="on",
- [10809]="on",
- [10810]="on",
- [10811]="on",
- [10812]="on",
- [10813]="on",
- [10814]="on",
- [10815]="on",
- [10816]="on",
- [10817]="on",
- [10818]="on",
- [10819]="on",
- [10820]="on",
- [10821]="on",
- [10822]="on",
- [10823]="on",
- [10824]="on",
- [10825]="on",
- [10826]="on",
- [10827]="on",
- [10828]="on",
- [10829]="on",
- [10830]="on",
- [10831]="on",
- [10832]="on",
- [10833]="on",
- [10834]="on",
- [10835]="on",
- [10836]="on",
- [10837]="on",
- [10838]="on",
- [10839]="on",
- [10840]="on",
- [10841]="on",
- [10842]="on",
- [10843]="on",
- [10844]="on",
- [10845]="on",
- [10846]="on",
- [10847]="on",
- [10848]="on",
- [10849]="on",
- [10850]="on",
- [10851]="on",
- [10852]="on",
- [10853]="on",
- [10854]="on",
- [10855]="on",
- [10856]="on",
- [10857]="on",
- [10858]="on",
- [10859]="on",
- [10860]="on",
- [10861]="on",
- [10862]="on",
- [10863]="on",
- [10864]="on",
- [10865]="on",
- [10866]="on",
- [10867]="on",
- [10868]="on",
- [10869]="on",
- [10870]="on",
- [10871]="on",
- [10872]="on",
- [10873]="on",
- [10874]="on",
- [10875]="on",
- [10876]="on",
- [10877]="on",
- [10878]="on",
- [10879]="on",
- [10880]="on",
- [10881]="on",
- [10882]="on",
- [10883]="on",
- [10884]="on",
- [10885]="on",
- [10886]="on",
- [10887]="on",
- [10888]="on",
- [10889]="on",
- [10890]="on",
- [10891]="on",
- [10892]="on",
- [10893]="on",
- [10894]="on",
- [10895]="on",
- [10896]="on",
- [10897]="on",
- [10898]="on",
- [10899]="on",
- [10900]="on",
- [10901]="on",
- [10902]="on",
- [10903]="on",
- [10904]="on",
- [10905]="on",
- [10906]="on",
- [10907]="on",
- [10908]="on",
- [10909]="on",
- [10910]="on",
- [10911]="on",
- [10912]="on",
- [10913]="on",
- [10914]="on",
- [10915]="on",
- [10916]="on",
- [10917]="on",
- [10918]="on",
- [10919]="on",
- [10920]="on",
- [10921]="on",
- [10922]="on",
- [10923]="on",
- [10924]="on",
- [10925]="on",
- [10926]="on",
- [10927]="on",
- [10928]="on",
- [10929]="on",
- [10930]="on",
- [10931]="on",
- [10932]="on",
- [10933]="on",
- [10934]="on",
- [10935]="on",
- [10936]="on",
- [10937]="on",
- [10938]="on",
- [10939]="on",
- [10940]="on",
- [10941]="on",
- [10942]="on",
- [10943]="on",
- [10944]="on",
- [10945]="on",
- [10946]="on",
- [10947]="on",
- [10948]="on",
- [10949]="on",
- [10950]="on",
- [10951]="on",
- [10952]="on",
- [10953]="on",
- [10954]="on",
- [10955]="on",
- [10956]="on",
- [10957]="on",
- [10958]="on",
- [10959]="on",
- [10960]="on",
- [10961]="on",
- [10962]="on",
- [10963]="on",
- [10964]="on",
- [10965]="on",
- [10966]="on",
- [10967]="on",
- [10968]="on",
- [10969]="on",
- [10970]="on",
- [10971]="on",
- [10972]="on",
- [10973]="on",
- [10974]="on",
- [10975]="on",
- [10976]="on",
- [10977]="on",
- [10978]="on",
- [10979]="on",
- [10980]="on",
- [10981]="on",
- [10982]="on",
- [10983]="on",
- [10984]="on",
- [10985]="on",
- [10986]="on",
- [10987]="on",
- [10988]="on",
- [10989]="on",
- [10990]="on",
- [10991]="on",
- [10992]="on",
- [10993]="on",
- [10994]="on",
- [10995]="on",
- [10996]="on",
- [10997]="on",
- [10998]="on",
- [10999]="on",
- [11000]="on",
- [11001]="on",
- [11002]="on",
- [11003]="on",
- [11004]="on",
- [11005]="on",
- [11006]="on",
- [11007]="on",
- [11008]="on",
- [11009]="on",
- [11010]="on",
- [11011]="on",
- [11012]="on",
- [11013]="on",
- [11014]="on",
- [11015]="on",
- [11016]="on",
- [11017]="on",
- [11018]="on",
- [11019]="on",
- [11020]="on",
- [11021]="on",
- [11022]="on",
- [11023]="on",
- [11024]="on",
- [11025]="on",
- [11026]="on",
- [11027]="on",
- [11028]="on",
- [11029]="on",
- [11030]="on",
- [11031]="on",
- [11032]="on",
- [11033]="on",
- [11034]="on",
- [11035]="on",
- [11036]="on",
- [11037]="on",
- [11038]="on",
- [11039]="on",
- [11040]="on",
- [11041]="on",
- [11042]="on",
- [11043]="on",
- [11044]="on",
- [11045]="on",
- [11046]="on",
- [11047]="on",
- [11048]="on",
- [11049]="on",
- [11050]="on",
- [11051]="on",
- [11052]="on",
- [11053]="on",
- [11054]="on",
- [11055]="on",
- [11056]="on",
- [11057]="on",
- [11058]="on",
- [11059]="on",
- [11060]="on",
- [11061]="on",
- [11062]="on",
- [11063]="on",
- [11064]="on",
- [11065]="on",
- [11066]="on",
- [11067]="on",
- [11068]="on",
- [11069]="on",
- [11070]="on",
- [11071]="on",
- [11072]="on",
- [11073]="on",
- [11074]="on",
- [11075]="on",
- [11076]="on",
- [11077]="on",
- [11078]="on",
- [11079]="on",
- [11080]="on",
- [11081]="on",
- [11082]="on",
- [11083]="on",
- [11084]="on",
- [11085]="on",
- [11086]="on",
- [11087]="on",
- [11088]="on",
- [11089]="on",
- [11090]="on",
- [11091]="on",
- [11092]="on",
- [11093]="on",
- [11094]="on",
- [11095]="on",
- [11096]="on",
- [11097]="on",
- [11098]="on",
- [11099]="on",
- [11100]="on",
- [11101]="on",
- [11102]="on",
- [11103]="on",
- [11104]="on",
- [11105]="on",
- [11106]="on",
- [11107]="on",
- [11108]="on",
- [11109]="on",
- [11110]="on",
- [11111]="on",
- [11112]="on",
- [11113]="on",
- [11114]="on",
- [11115]="on",
- [11116]="on",
- [11117]="on",
- [11118]="on",
- [11119]="on",
- [11120]="on",
- [11121]="on",
- [11122]="on",
- [11123]="on",
- [11126]="on",
- [11127]="on",
- [11128]="on",
- [11129]="on",
- [11130]="on",
- [11131]="on",
- [11132]="on",
- [11133]="on",
- [11134]="on",
- [11135]="on",
- [11136]="on",
- [11137]="on",
- [11138]="on",
- [11139]="on",
- [11140]="on",
- [11141]="on",
- [11142]="on",
- [11143]="on",
- [11144]="on",
- [11145]="on",
- [11146]="on",
- [11147]="on",
- [11148]="on",
- [11149]="on",
- [11150]="on",
- [11151]="on",
- [11152]="on",
- [11153]="on",
- [11154]="on",
- [11155]="on",
- [11156]="on",
- [11157]="on",
- [11160]="on",
- [11161]="on",
- [11162]="on",
- [11163]="on",
- [11164]="on",
- [11165]="on",
- [11166]="on",
- [11167]="on",
- [11168]="on",
- [11169]="on",
- [11170]="on",
- [11171]="on",
- [11172]="on",
- [11173]="on",
- [11174]="on",
- [11175]="on",
- [11176]="on",
- [11177]="on",
- [11178]="on",
- [11179]="on",
- [11180]="on",
- [11181]="on",
- [11182]="on",
- [11183]="on",
- [11184]="on",
- [11185]="on",
- [11186]="on",
- [11187]="on",
- [11188]="on",
- [11189]="on",
- [11190]="on",
- [11191]="on",
- [11192]="on",
- [11193]="on",
- [11197]="on",
- [11198]="on",
- [11199]="on",
- [11200]="on",
- [11201]="on",
- [11202]="on",
- [11203]="on",
- [11204]="on",
- [11205]="on",
- [11206]="on",
- [11207]="on",
- [11208]="on",
- [11210]="on",
- [11211]="on",
- [11212]="on",
- [11213]="on",
- [11214]="on",
- [11215]="on",
- [11216]="on",
- [11217]="on",
- [11218]="on",
- [11244]="on",
- [11245]="on",
- [11246]="on",
- [11247]="on",
- [11493]="on",
- [11494]="on",
- [11495]="on",
- [11496]="on",
- [11497]="on",
- [11498]="on",
- [11503]="nsm",
- [11504]="nsm",
- [11505]="nsm",
- [11513]="on",
- [11514]="on",
- [11515]="on",
- [11516]="on",
- [11517]="on",
- [11518]="on",
- [11519]="on",
- [11647]="nsm",
- [11744]="nsm",
- [11745]="nsm",
- [11746]="nsm",
- [11747]="nsm",
- [11748]="nsm",
- [11749]="nsm",
- [11750]="nsm",
- [11751]="nsm",
- [11752]="nsm",
- [11753]="nsm",
- [11754]="nsm",
- [11755]="nsm",
- [11756]="nsm",
- [11757]="nsm",
- [11758]="nsm",
- [11759]="nsm",
- [11760]="nsm",
- [11761]="nsm",
- [11762]="nsm",
- [11763]="nsm",
- [11764]="nsm",
- [11765]="nsm",
- [11766]="nsm",
- [11767]="nsm",
- [11768]="nsm",
- [11769]="nsm",
- [11770]="nsm",
- [11771]="nsm",
- [11772]="nsm",
- [11773]="nsm",
- [11774]="nsm",
- [11775]="nsm",
- [11776]="on",
- [11777]="on",
- [11778]="on",
- [11779]="on",
- [11780]="on",
- [11781]="on",
- [11782]="on",
- [11783]="on",
- [11784]="on",
- [11785]="on",
- [11786]="on",
- [11787]="on",
- [11788]="on",
- [11789]="on",
- [11790]="on",
- [11791]="on",
- [11792]="on",
- [11793]="on",
- [11794]="on",
- [11795]="on",
- [11796]="on",
- [11797]="on",
- [11798]="on",
- [11799]="on",
- [11800]="on",
- [11801]="on",
- [11802]="on",
- [11803]="on",
- [11804]="on",
- [11805]="on",
- [11806]="on",
- [11807]="on",
- [11808]="on",
- [11809]="on",
- [11810]="on",
- [11811]="on",
- [11812]="on",
- [11813]="on",
- [11814]="on",
- [11815]="on",
- [11816]="on",
- [11817]="on",
- [11818]="on",
- [11819]="on",
- [11820]="on",
- [11821]="on",
- [11822]="on",
- [11823]="on",
- [11824]="on",
- [11825]="on",
- [11826]="on",
- [11827]="on",
- [11828]="on",
- [11829]="on",
- [11830]="on",
- [11831]="on",
- [11832]="on",
- [11833]="on",
- [11834]="on",
- [11835]="on",
- [11836]="on",
- [11837]="on",
- [11838]="on",
- [11839]="on",
- [11840]="on",
- [11841]="on",
- [11842]="on",
- [11843]="on",
- [11844]="on",
- [11845]="on",
- [11846]="on",
- [11847]="on",
- [11848]="on",
- [11849]="on",
- [11904]="on",
- [11905]="on",
- [11906]="on",
- [11907]="on",
- [11908]="on",
- [11909]="on",
- [11910]="on",
- [11911]="on",
- [11912]="on",
- [11913]="on",
- [11914]="on",
- [11915]="on",
- [11916]="on",
- [11917]="on",
- [11918]="on",
- [11919]="on",
- [11920]="on",
- [11921]="on",
- [11922]="on",
- [11923]="on",
- [11924]="on",
- [11925]="on",
- [11926]="on",
- [11927]="on",
- [11928]="on",
- [11929]="on",
- [11931]="on",
- [11932]="on",
- [11933]="on",
- [11934]="on",
- [11935]="on",
- [11936]="on",
- [11937]="on",
- [11938]="on",
- [11939]="on",
- [11940]="on",
- [11941]="on",
- [11942]="on",
- [11943]="on",
- [11944]="on",
- [11945]="on",
- [11946]="on",
- [11947]="on",
- [11948]="on",
- [11949]="on",
- [11950]="on",
- [11951]="on",
- [11952]="on",
- [11953]="on",
- [11954]="on",
- [11955]="on",
- [11956]="on",
- [11957]="on",
- [11958]="on",
- [11959]="on",
- [11960]="on",
- [11961]="on",
- [11962]="on",
- [11963]="on",
- [11964]="on",
- [11965]="on",
- [11966]="on",
- [11967]="on",
- [11968]="on",
- [11969]="on",
- [11970]="on",
- [11971]="on",
- [11972]="on",
- [11973]="on",
- [11974]="on",
- [11975]="on",
- [11976]="on",
- [11977]="on",
- [11978]="on",
- [11979]="on",
- [11980]="on",
- [11981]="on",
- [11982]="on",
- [11983]="on",
- [11984]="on",
- [11985]="on",
- [11986]="on",
- [11987]="on",
- [11988]="on",
- [11989]="on",
- [11990]="on",
- [11991]="on",
- [11992]="on",
- [11993]="on",
- [11994]="on",
- [11995]="on",
- [11996]="on",
- [11997]="on",
- [11998]="on",
- [11999]="on",
- [12000]="on",
- [12001]="on",
- [12002]="on",
- [12003]="on",
- [12004]="on",
- [12005]="on",
- [12006]="on",
- [12007]="on",
- [12008]="on",
- [12009]="on",
- [12010]="on",
- [12011]="on",
- [12012]="on",
- [12013]="on",
- [12014]="on",
- [12015]="on",
- [12016]="on",
- [12017]="on",
- [12018]="on",
- [12019]="on",
- [12032]="on",
- [12033]="on",
- [12034]="on",
- [12035]="on",
- [12036]="on",
- [12037]="on",
- [12038]="on",
- [12039]="on",
- [12040]="on",
- [12041]="on",
- [12042]="on",
- [12043]="on",
- [12044]="on",
- [12045]="on",
- [12046]="on",
- [12047]="on",
- [12048]="on",
- [12049]="on",
- [12050]="on",
- [12051]="on",
- [12052]="on",
- [12053]="on",
- [12054]="on",
- [12055]="on",
- [12056]="on",
- [12057]="on",
- [12058]="on",
- [12059]="on",
- [12060]="on",
- [12061]="on",
- [12062]="on",
- [12063]="on",
- [12064]="on",
- [12065]="on",
- [12066]="on",
- [12067]="on",
- [12068]="on",
- [12069]="on",
- [12070]="on",
- [12071]="on",
- [12072]="on",
- [12073]="on",
- [12074]="on",
- [12075]="on",
- [12076]="on",
- [12077]="on",
- [12078]="on",
- [12079]="on",
- [12080]="on",
- [12081]="on",
- [12082]="on",
- [12083]="on",
- [12084]="on",
- [12085]="on",
- [12086]="on",
- [12087]="on",
- [12088]="on",
- [12089]="on",
- [12090]="on",
- [12091]="on",
- [12092]="on",
- [12093]="on",
- [12094]="on",
- [12095]="on",
- [12096]="on",
- [12097]="on",
- [12098]="on",
- [12099]="on",
- [12100]="on",
- [12101]="on",
- [12102]="on",
- [12103]="on",
- [12104]="on",
- [12105]="on",
- [12106]="on",
- [12107]="on",
- [12108]="on",
- [12109]="on",
- [12110]="on",
- [12111]="on",
- [12112]="on",
- [12113]="on",
- [12114]="on",
- [12115]="on",
- [12116]="on",
- [12117]="on",
- [12118]="on",
- [12119]="on",
- [12120]="on",
- [12121]="on",
- [12122]="on",
- [12123]="on",
- [12124]="on",
- [12125]="on",
- [12126]="on",
- [12127]="on",
- [12128]="on",
- [12129]="on",
- [12130]="on",
- [12131]="on",
- [12132]="on",
- [12133]="on",
- [12134]="on",
- [12135]="on",
- [12136]="on",
- [12137]="on",
- [12138]="on",
- [12139]="on",
- [12140]="on",
- [12141]="on",
- [12142]="on",
- [12143]="on",
- [12144]="on",
- [12145]="on",
- [12146]="on",
- [12147]="on",
- [12148]="on",
- [12149]="on",
- [12150]="on",
- [12151]="on",
- [12152]="on",
- [12153]="on",
- [12154]="on",
- [12155]="on",
- [12156]="on",
- [12157]="on",
- [12158]="on",
- [12159]="on",
- [12160]="on",
- [12161]="on",
- [12162]="on",
- [12163]="on",
- [12164]="on",
- [12165]="on",
- [12166]="on",
- [12167]="on",
- [12168]="on",
- [12169]="on",
- [12170]="on",
- [12171]="on",
- [12172]="on",
- [12173]="on",
- [12174]="on",
- [12175]="on",
- [12176]="on",
- [12177]="on",
- [12178]="on",
- [12179]="on",
- [12180]="on",
- [12181]="on",
- [12182]="on",
- [12183]="on",
- [12184]="on",
- [12185]="on",
- [12186]="on",
- [12187]="on",
- [12188]="on",
- [12189]="on",
- [12190]="on",
- [12191]="on",
- [12192]="on",
- [12193]="on",
- [12194]="on",
- [12195]="on",
- [12196]="on",
- [12197]="on",
- [12198]="on",
- [12199]="on",
- [12200]="on",
- [12201]="on",
- [12202]="on",
- [12203]="on",
- [12204]="on",
- [12205]="on",
- [12206]="on",
- [12207]="on",
- [12208]="on",
- [12209]="on",
- [12210]="on",
- [12211]="on",
- [12212]="on",
- [12213]="on",
- [12214]="on",
- [12215]="on",
- [12216]="on",
- [12217]="on",
- [12218]="on",
- [12219]="on",
- [12220]="on",
- [12221]="on",
- [12222]="on",
- [12223]="on",
- [12224]="on",
- [12225]="on",
- [12226]="on",
- [12227]="on",
- [12228]="on",
- [12229]="on",
- [12230]="on",
- [12231]="on",
- [12232]="on",
- [12233]="on",
- [12234]="on",
- [12235]="on",
- [12236]="on",
- [12237]="on",
- [12238]="on",
- [12239]="on",
- [12240]="on",
- [12241]="on",
- [12242]="on",
- [12243]="on",
- [12244]="on",
- [12245]="on",
- [12272]="on",
- [12273]="on",
- [12274]="on",
- [12275]="on",
- [12276]="on",
- [12277]="on",
- [12278]="on",
- [12279]="on",
- [12280]="on",
- [12281]="on",
- [12282]="on",
- [12283]="on",
- [12288]="ws",
- [12289]="on",
- [12290]="on",
- [12291]="on",
- [12292]="on",
- [12296]="on",
- [12297]="on",
- [12298]="on",
- [12299]="on",
- [12300]="on",
- [12301]="on",
- [12302]="on",
- [12303]="on",
- [12304]="on",
- [12305]="on",
- [12306]="on",
- [12307]="on",
- [12308]="on",
- [12309]="on",
- [12310]="on",
- [12311]="on",
- [12312]="on",
- [12313]="on",
- [12314]="on",
- [12315]="on",
- [12316]="on",
- [12317]="on",
- [12318]="on",
- [12319]="on",
- [12320]="on",
- [12330]="nsm",
- [12331]="nsm",
- [12332]="nsm",
- [12333]="nsm",
- [12336]="on",
- [12342]="on",
- [12343]="on",
- [12349]="on",
- [12350]="on",
- [12351]="on",
- [12441]="nsm",
- [12442]="nsm",
- [12443]="on",
- [12444]="on",
- [12448]="on",
- [12539]="on",
- [12736]="on",
- [12737]="on",
- [12738]="on",
- [12739]="on",
- [12740]="on",
- [12741]="on",
- [12742]="on",
- [12743]="on",
- [12744]="on",
- [12745]="on",
- [12746]="on",
- [12747]="on",
- [12748]="on",
- [12749]="on",
- [12750]="on",
- [12751]="on",
- [12752]="on",
- [12753]="on",
- [12754]="on",
- [12755]="on",
- [12756]="on",
- [12757]="on",
- [12758]="on",
- [12759]="on",
- [12760]="on",
- [12761]="on",
- [12762]="on",
- [12763]="on",
- [12764]="on",
- [12765]="on",
- [12766]="on",
- [12767]="on",
- [12768]="on",
- [12769]="on",
- [12770]="on",
- [12771]="on",
- [12829]="on",
- [12830]="on",
- [12880]="on",
- [12881]="on",
- [12882]="on",
- [12883]="on",
- [12884]="on",
- [12885]="on",
- [12886]="on",
- [12887]="on",
- [12888]="on",
- [12889]="on",
- [12890]="on",
- [12891]="on",
- [12892]="on",
- [12893]="on",
- [12894]="on",
- [12895]="on",
- [12924]="on",
- [12925]="on",
- [12926]="on",
- [12977]="on",
- [12978]="on",
- [12979]="on",
- [12980]="on",
- [12981]="on",
- [12982]="on",
- [12983]="on",
- [12984]="on",
- [12985]="on",
- [12986]="on",
- [12987]="on",
- [12988]="on",
- [12989]="on",
- [12990]="on",
- [12991]="on",
- [13004]="on",
- [13005]="on",
- [13006]="on",
- [13007]="on",
- [13175]="on",
- [13176]="on",
- [13177]="on",
- [13178]="on",
- [13278]="on",
- [13279]="on",
- [13311]="on",
- [19904]="on",
- [19905]="on",
- [19906]="on",
- [19907]="on",
- [19908]="on",
- [19909]="on",
- [19910]="on",
- [19911]="on",
- [19912]="on",
- [19913]="on",
- [19914]="on",
- [19915]="on",
- [19916]="on",
- [19917]="on",
- [19918]="on",
- [19919]="on",
- [19920]="on",
- [19921]="on",
- [19922]="on",
- [19923]="on",
- [19924]="on",
- [19925]="on",
- [19926]="on",
- [19927]="on",
- [19928]="on",
- [19929]="on",
- [19930]="on",
- [19931]="on",
- [19932]="on",
- [19933]="on",
- [19934]="on",
- [19935]="on",
- [19936]="on",
- [19937]="on",
- [19938]="on",
- [19939]="on",
- [19940]="on",
- [19941]="on",
- [19942]="on",
- [19943]="on",
- [19944]="on",
- [19945]="on",
- [19946]="on",
- [19947]="on",
- [19948]="on",
- [19949]="on",
- [19950]="on",
- [19951]="on",
- [19952]="on",
- [19953]="on",
- [19954]="on",
- [19955]="on",
- [19956]="on",
- [19957]="on",
- [19958]="on",
- [19959]="on",
- [19960]="on",
- [19961]="on",
- [19962]="on",
- [19963]="on",
- [19964]="on",
- [19965]="on",
- [19966]="on",
- [19967]="on",
- [42128]="on",
- [42129]="on",
- [42130]="on",
- [42131]="on",
- [42132]="on",
- [42133]="on",
- [42134]="on",
- [42135]="on",
- [42136]="on",
- [42137]="on",
- [42138]="on",
- [42139]="on",
- [42140]="on",
- [42141]="on",
- [42142]="on",
- [42143]="on",
- [42144]="on",
- [42145]="on",
- [42146]="on",
- [42147]="on",
- [42148]="on",
- [42149]="on",
- [42150]="on",
- [42151]="on",
- [42152]="on",
- [42153]="on",
- [42154]="on",
- [42155]="on",
- [42156]="on",
- [42157]="on",
- [42158]="on",
- [42159]="on",
- [42160]="on",
- [42161]="on",
- [42162]="on",
- [42163]="on",
- [42164]="on",
- [42165]="on",
- [42166]="on",
- [42167]="on",
- [42168]="on",
- [42169]="on",
- [42170]="on",
- [42171]="on",
- [42172]="on",
- [42173]="on",
- [42174]="on",
- [42175]="on",
- [42176]="on",
- [42177]="on",
- [42178]="on",
- [42179]="on",
- [42180]="on",
- [42181]="on",
- [42182]="on",
- [42509]="on",
- [42510]="on",
- [42511]="on",
- [42607]="nsm",
- [42608]="nsm",
- [42609]="nsm",
- [42610]="nsm",
- [42611]="on",
- [42612]="nsm",
- [42613]="nsm",
- [42614]="nsm",
- [42615]="nsm",
- [42616]="nsm",
- [42617]="nsm",
- [42618]="nsm",
- [42619]="nsm",
- [42620]="nsm",
- [42621]="nsm",
- [42622]="on",
- [42623]="on",
- [42654]="nsm",
- [42655]="nsm",
- [42736]="nsm",
- [42737]="nsm",
- [42752]="on",
- [42753]="on",
- [42754]="on",
- [42755]="on",
- [42756]="on",
- [42757]="on",
- [42758]="on",
- [42759]="on",
- [42760]="on",
- [42761]="on",
- [42762]="on",
- [42763]="on",
- [42764]="on",
- [42765]="on",
- [42766]="on",
- [42767]="on",
- [42768]="on",
- [42769]="on",
- [42770]="on",
- [42771]="on",
- [42772]="on",
- [42773]="on",
- [42774]="on",
- [42775]="on",
- [42776]="on",
- [42777]="on",
- [42778]="on",
- [42779]="on",
- [42780]="on",
- [42781]="on",
- [42782]="on",
- [42783]="on",
- [42784]="on",
- [42785]="on",
- [42888]="on",
- [43010]="nsm",
- [43014]="nsm",
- [43019]="nsm",
- [43045]="nsm",
- [43046]="nsm",
- [43048]="on",
- [43049]="on",
- [43050]="on",
- [43051]="on",
- [43064]="et",
- [43065]="et",
- [43124]="on",
- [43125]="on",
- [43126]="on",
- [43127]="on",
- [43204]="nsm",
- [43205]="nsm",
- [43232]="nsm",
- [43233]="nsm",
- [43234]="nsm",
- [43235]="nsm",
- [43236]="nsm",
- [43237]="nsm",
- [43238]="nsm",
- [43239]="nsm",
- [43240]="nsm",
- [43241]="nsm",
- [43242]="nsm",
- [43243]="nsm",
- [43244]="nsm",
- [43245]="nsm",
- [43246]="nsm",
- [43247]="nsm",
- [43248]="nsm",
- [43249]="nsm",
- [43302]="nsm",
- [43303]="nsm",
- [43304]="nsm",
- [43305]="nsm",
- [43306]="nsm",
- [43307]="nsm",
- [43308]="nsm",
- [43309]="nsm",
- [43335]="nsm",
- [43336]="nsm",
- [43337]="nsm",
- [43338]="nsm",
- [43339]="nsm",
- [43340]="nsm",
- [43341]="nsm",
- [43342]="nsm",
- [43343]="nsm",
- [43344]="nsm",
- [43345]="nsm",
- [43392]="nsm",
- [43393]="nsm",
- [43394]="nsm",
- [43443]="nsm",
- [43446]="nsm",
- [43447]="nsm",
- [43448]="nsm",
- [43449]="nsm",
- [43452]="nsm",
- [43493]="nsm",
- [43561]="nsm",
- [43562]="nsm",
- [43563]="nsm",
- [43564]="nsm",
- [43565]="nsm",
- [43566]="nsm",
- [43569]="nsm",
- [43570]="nsm",
- [43573]="nsm",
- [43574]="nsm",
- [43587]="nsm",
- [43596]="nsm",
- [43644]="nsm",
- [43696]="nsm",
- [43698]="nsm",
- [43699]="nsm",
- [43700]="nsm",
- [43703]="nsm",
- [43704]="nsm",
- [43710]="nsm",
- [43711]="nsm",
- [43713]="nsm",
- [43756]="nsm",
- [43757]="nsm",
- [43766]="nsm",
- [44005]="nsm",
- [44008]="nsm",
- [44013]="nsm",
- [64285]="r",
- [64286]="nsm",
- [64287]="r",
- [64288]="r",
- [64289]="r",
- [64290]="r",
- [64291]="r",
- [64292]="r",
- [64293]="r",
- [64294]="r",
- [64295]="r",
- [64296]="r",
- [64297]="es",
- [64298]="r",
- [64299]="r",
- [64300]="r",
- [64301]="r",
- [64302]="r",
- [64303]="r",
- [64304]="r",
- [64305]="r",
- [64306]="r",
- [64307]="r",
- [64308]="r",
- [64309]="r",
- [64310]="r",
- [64312]="r",
- [64313]="r",
- [64314]="r",
- [64315]="r",
- [64316]="r",
- [64318]="r",
- [64320]="r",
- [64321]="r",
- [64323]="r",
- [64324]="r",
- [64326]="r",
- [64327]="r",
- [64328]="r",
- [64329]="r",
- [64330]="r",
- [64331]="r",
- [64332]="r",
- [64333]="r",
- [64334]="r",
- [64335]="r",
- [64336]="al",
- [64337]="al",
- [64338]="al",
- [64339]="al",
- [64340]="al",
- [64341]="al",
- [64342]="al",
- [64343]="al",
- [64344]="al",
- [64345]="al",
- [64346]="al",
- [64347]="al",
- [64348]="al",
- [64349]="al",
- [64350]="al",
- [64351]="al",
- [64352]="al",
- [64353]="al",
- [64354]="al",
- [64355]="al",
- [64356]="al",
- [64357]="al",
- [64358]="al",
- [64359]="al",
- [64360]="al",
- [64361]="al",
- [64362]="al",
- [64363]="al",
- [64364]="al",
- [64365]="al",
- [64366]="al",
- [64367]="al",
- [64368]="al",
- [64369]="al",
- [64370]="al",
- [64371]="al",
- [64372]="al",
- [64373]="al",
- [64374]="al",
- [64375]="al",
- [64376]="al",
- [64377]="al",
- [64378]="al",
- [64379]="al",
- [64380]="al",
- [64381]="al",
- [64382]="al",
- [64383]="al",
- [64384]="al",
- [64385]="al",
- [64386]="al",
- [64387]="al",
- [64388]="al",
- [64389]="al",
- [64390]="al",
- [64391]="al",
- [64392]="al",
- [64393]="al",
- [64394]="al",
- [64395]="al",
- [64396]="al",
- [64397]="al",
- [64398]="al",
- [64399]="al",
- [64400]="al",
- [64401]="al",
- [64402]="al",
- [64403]="al",
- [64404]="al",
- [64405]="al",
- [64406]="al",
- [64407]="al",
- [64408]="al",
- [64409]="al",
- [64410]="al",
- [64411]="al",
- [64412]="al",
- [64413]="al",
- [64414]="al",
- [64415]="al",
- [64416]="al",
- [64417]="al",
- [64418]="al",
- [64419]="al",
- [64420]="al",
- [64421]="al",
- [64422]="al",
- [64423]="al",
- [64424]="al",
- [64425]="al",
- [64426]="al",
- [64427]="al",
- [64428]="al",
- [64429]="al",
- [64430]="al",
- [64431]="al",
- [64432]="al",
- [64433]="al",
- [64434]="al",
- [64435]="al",
- [64436]="al",
- [64437]="al",
- [64438]="al",
- [64439]="al",
- [64440]="al",
- [64441]="al",
- [64442]="al",
- [64443]="al",
- [64444]="al",
- [64445]="al",
- [64446]="al",
- [64447]="al",
- [64448]="al",
- [64449]="al",
- [64467]="al",
- [64468]="al",
- [64469]="al",
- [64470]="al",
- [64471]="al",
- [64472]="al",
- [64473]="al",
- [64474]="al",
- [64475]="al",
- [64476]="al",
- [64477]="al",
- [64478]="al",
- [64479]="al",
- [64480]="al",
- [64481]="al",
- [64482]="al",
- [64483]="al",
- [64484]="al",
- [64485]="al",
- [64486]="al",
- [64487]="al",
- [64488]="al",
- [64489]="al",
- [64490]="al",
- [64491]="al",
- [64492]="al",
- [64493]="al",
- [64494]="al",
- [64495]="al",
- [64496]="al",
- [64497]="al",
- [64498]="al",
- [64499]="al",
- [64500]="al",
- [64501]="al",
- [64502]="al",
- [64503]="al",
- [64504]="al",
- [64505]="al",
- [64506]="al",
- [64507]="al",
- [64508]="al",
- [64509]="al",
- [64510]="al",
- [64511]="al",
- [64512]="al",
- [64513]="al",
- [64514]="al",
- [64515]="al",
- [64516]="al",
- [64517]="al",
- [64518]="al",
- [64519]="al",
- [64520]="al",
- [64521]="al",
- [64522]="al",
- [64523]="al",
- [64524]="al",
- [64525]="al",
- [64526]="al",
- [64527]="al",
- [64528]="al",
- [64529]="al",
- [64530]="al",
- [64531]="al",
- [64532]="al",
- [64533]="al",
- [64534]="al",
- [64535]="al",
- [64536]="al",
- [64537]="al",
- [64538]="al",
- [64539]="al",
- [64540]="al",
- [64541]="al",
- [64542]="al",
- [64543]="al",
- [64544]="al",
- [64545]="al",
- [64546]="al",
- [64547]="al",
- [64548]="al",
- [64549]="al",
- [64550]="al",
- [64551]="al",
- [64552]="al",
- [64553]="al",
- [64554]="al",
- [64555]="al",
- [64556]="al",
- [64557]="al",
- [64558]="al",
- [64559]="al",
- [64560]="al",
- [64561]="al",
- [64562]="al",
- [64563]="al",
- [64564]="al",
- [64565]="al",
- [64566]="al",
- [64567]="al",
- [64568]="al",
- [64569]="al",
- [64570]="al",
- [64571]="al",
- [64572]="al",
- [64573]="al",
- [64574]="al",
- [64575]="al",
- [64576]="al",
- [64577]="al",
- [64578]="al",
- [64579]="al",
- [64580]="al",
- [64581]="al",
- [64582]="al",
- [64583]="al",
- [64584]="al",
- [64585]="al",
- [64586]="al",
- [64587]="al",
- [64588]="al",
- [64589]="al",
- [64590]="al",
- [64591]="al",
- [64592]="al",
- [64593]="al",
- [64594]="al",
- [64595]="al",
- [64596]="al",
- [64597]="al",
- [64598]="al",
- [64599]="al",
- [64600]="al",
- [64601]="al",
- [64602]="al",
- [64603]="al",
- [64604]="al",
- [64605]="al",
- [64606]="al",
- [64607]="al",
- [64608]="al",
- [64609]="al",
- [64610]="al",
- [64611]="al",
- [64612]="al",
- [64613]="al",
- [64614]="al",
- [64615]="al",
- [64616]="al",
- [64617]="al",
- [64618]="al",
- [64619]="al",
- [64620]="al",
- [64621]="al",
- [64622]="al",
- [64623]="al",
- [64624]="al",
- [64625]="al",
- [64626]="al",
- [64627]="al",
- [64628]="al",
- [64629]="al",
- [64630]="al",
- [64631]="al",
- [64632]="al",
- [64633]="al",
- [64634]="al",
- [64635]="al",
- [64636]="al",
- [64637]="al",
- [64638]="al",
- [64639]="al",
- [64640]="al",
- [64641]="al",
- [64642]="al",
- [64643]="al",
- [64644]="al",
- [64645]="al",
- [64646]="al",
- [64647]="al",
- [64648]="al",
- [64649]="al",
- [64650]="al",
- [64651]="al",
- [64652]="al",
- [64653]="al",
- [64654]="al",
- [64655]="al",
- [64656]="al",
- [64657]="al",
- [64658]="al",
- [64659]="al",
- [64660]="al",
- [64661]="al",
- [64662]="al",
- [64663]="al",
- [64664]="al",
- [64665]="al",
- [64666]="al",
- [64667]="al",
- [64668]="al",
- [64669]="al",
- [64670]="al",
- [64671]="al",
- [64672]="al",
- [64673]="al",
- [64674]="al",
- [64675]="al",
- [64676]="al",
- [64677]="al",
- [64678]="al",
- [64679]="al",
- [64680]="al",
- [64681]="al",
- [64682]="al",
- [64683]="al",
- [64684]="al",
- [64685]="al",
- [64686]="al",
- [64687]="al",
- [64688]="al",
- [64689]="al",
- [64690]="al",
- [64691]="al",
- [64692]="al",
- [64693]="al",
- [64694]="al",
- [64695]="al",
- [64696]="al",
- [64697]="al",
- [64698]="al",
- [64699]="al",
- [64700]="al",
- [64701]="al",
- [64702]="al",
- [64703]="al",
- [64704]="al",
- [64705]="al",
- [64706]="al",
- [64707]="al",
- [64708]="al",
- [64709]="al",
- [64710]="al",
- [64711]="al",
- [64712]="al",
- [64713]="al",
- [64714]="al",
- [64715]="al",
- [64716]="al",
- [64717]="al",
- [64718]="al",
- [64719]="al",
- [64720]="al",
- [64721]="al",
- [64722]="al",
- [64723]="al",
- [64724]="al",
- [64725]="al",
- [64726]="al",
- [64727]="al",
- [64728]="al",
- [64729]="al",
- [64730]="al",
- [64731]="al",
- [64732]="al",
- [64733]="al",
- [64734]="al",
- [64735]="al",
- [64736]="al",
- [64737]="al",
- [64738]="al",
- [64739]="al",
- [64740]="al",
- [64741]="al",
- [64742]="al",
- [64743]="al",
- [64744]="al",
- [64745]="al",
- [64746]="al",
- [64747]="al",
- [64748]="al",
- [64749]="al",
- [64750]="al",
- [64751]="al",
- [64752]="al",
- [64753]="al",
- [64754]="al",
- [64755]="al",
- [64756]="al",
- [64757]="al",
- [64758]="al",
- [64759]="al",
- [64760]="al",
- [64761]="al",
- [64762]="al",
- [64763]="al",
- [64764]="al",
- [64765]="al",
- [64766]="al",
- [64767]="al",
- [64768]="al",
- [64769]="al",
- [64770]="al",
- [64771]="al",
- [64772]="al",
- [64773]="al",
- [64774]="al",
- [64775]="al",
- [64776]="al",
- [64777]="al",
- [64778]="al",
- [64779]="al",
- [64780]="al",
- [64781]="al",
- [64782]="al",
- [64783]="al",
- [64784]="al",
- [64785]="al",
- [64786]="al",
- [64787]="al",
- [64788]="al",
- [64789]="al",
- [64790]="al",
- [64791]="al",
- [64792]="al",
- [64793]="al",
- [64794]="al",
- [64795]="al",
- [64796]="al",
- [64797]="al",
- [64798]="al",
- [64799]="al",
- [64800]="al",
- [64801]="al",
- [64802]="al",
- [64803]="al",
- [64804]="al",
- [64805]="al",
- [64806]="al",
- [64807]="al",
- [64808]="al",
- [64809]="al",
- [64810]="al",
- [64811]="al",
- [64812]="al",
- [64813]="al",
- [64814]="al",
- [64815]="al",
- [64816]="al",
- [64817]="al",
- [64818]="al",
- [64819]="al",
- [64820]="al",
- [64821]="al",
- [64822]="al",
- [64823]="al",
- [64824]="al",
- [64825]="al",
- [64826]="al",
- [64827]="al",
- [64828]="al",
- [64829]="al",
- [64830]="on",
- [64831]="on",
- [64848]="al",
- [64849]="al",
- [64850]="al",
- [64851]="al",
- [64852]="al",
- [64853]="al",
- [64854]="al",
- [64855]="al",
- [64856]="al",
- [64857]="al",
- [64858]="al",
- [64859]="al",
- [64860]="al",
- [64861]="al",
- [64862]="al",
- [64863]="al",
- [64864]="al",
- [64865]="al",
- [64866]="al",
- [64867]="al",
- [64868]="al",
- [64869]="al",
- [64870]="al",
- [64871]="al",
- [64872]="al",
- [64873]="al",
- [64874]="al",
- [64875]="al",
- [64876]="al",
- [64877]="al",
- [64878]="al",
- [64879]="al",
- [64880]="al",
- [64881]="al",
- [64882]="al",
- [64883]="al",
- [64884]="al",
- [64885]="al",
- [64886]="al",
- [64887]="al",
- [64888]="al",
- [64889]="al",
- [64890]="al",
- [64891]="al",
- [64892]="al",
- [64893]="al",
- [64894]="al",
- [64895]="al",
- [64896]="al",
- [64897]="al",
- [64898]="al",
- [64899]="al",
- [64900]="al",
- [64901]="al",
- [64902]="al",
- [64903]="al",
- [64904]="al",
- [64905]="al",
- [64906]="al",
- [64907]="al",
- [64908]="al",
- [64909]="al",
- [64910]="al",
- [64911]="al",
- [64914]="al",
- [64915]="al",
- [64916]="al",
- [64917]="al",
- [64918]="al",
- [64919]="al",
- [64920]="al",
- [64921]="al",
- [64922]="al",
- [64923]="al",
- [64924]="al",
- [64925]="al",
- [64926]="al",
- [64927]="al",
- [64928]="al",
- [64929]="al",
- [64930]="al",
- [64931]="al",
- [64932]="al",
- [64933]="al",
- [64934]="al",
- [64935]="al",
- [64936]="al",
- [64937]="al",
- [64938]="al",
- [64939]="al",
- [64940]="al",
- [64941]="al",
- [64942]="al",
- [64943]="al",
- [64944]="al",
- [64945]="al",
- [64946]="al",
- [64947]="al",
- [64948]="al",
- [64949]="al",
- [64950]="al",
- [64951]="al",
- [64952]="al",
- [64953]="al",
- [64954]="al",
- [64955]="al",
- [64956]="al",
- [64957]="al",
- [64958]="al",
- [64959]="al",
- [64960]="al",
- [64961]="al",
- [64962]="al",
- [64963]="al",
- [64964]="al",
- [64965]="al",
- [64966]="al",
- [64967]="al",
- [65008]="al",
- [65009]="al",
- [65010]="al",
- [65011]="al",
- [65012]="al",
- [65013]="al",
- [65014]="al",
- [65015]="al",
- [65016]="al",
- [65017]="al",
- [65018]="al",
- [65019]="al",
- [65020]="al",
- [65021]="on",
- [65040]="on",
- [65041]="on",
- [65042]="on",
- [65043]="on",
- [65044]="on",
- [65045]="on",
- [65046]="on",
- [65047]="on",
- [65048]="on",
- [65049]="on",
- [65056]="nsm",
- [65057]="nsm",
- [65058]="nsm",
- [65059]="nsm",
- [65060]="nsm",
- [65061]="nsm",
- [65062]="nsm",
- [65063]="nsm",
- [65064]="nsm",
- [65065]="nsm",
- [65066]="nsm",
- [65067]="nsm",
- [65068]="nsm",
- [65069]="nsm",
- [65070]="nsm",
- [65071]="nsm",
- [65072]="on",
- [65073]="on",
- [65074]="on",
- [65075]="on",
- [65076]="on",
- [65077]="on",
- [65078]="on",
- [65079]="on",
- [65080]="on",
- [65081]="on",
- [65082]="on",
- [65083]="on",
- [65084]="on",
- [65085]="on",
- [65086]="on",
- [65087]="on",
- [65088]="on",
- [65089]="on",
- [65090]="on",
- [65091]="on",
- [65092]="on",
- [65093]="on",
- [65094]="on",
- [65095]="on",
- [65096]="on",
- [65097]="on",
- [65098]="on",
- [65099]="on",
- [65100]="on",
- [65101]="on",
- [65102]="on",
- [65103]="on",
- [65104]="cs",
- [65105]="on",
- [65106]="cs",
- [65108]="on",
- [65109]="cs",
- [65110]="on",
- [65111]="on",
- [65112]="on",
- [65113]="on",
- [65114]="on",
- [65115]="on",
- [65116]="on",
- [65117]="on",
- [65118]="on",
- [65119]="et",
- [65120]="on",
- [65121]="on",
- [65122]="es",
- [65123]="es",
- [65124]="on",
- [65125]="on",
- [65126]="on",
- [65128]="on",
- [65129]="et",
- [65130]="et",
- [65131]="on",
- [65136]="al",
- [65137]="al",
- [65138]="al",
- [65139]="al",
- [65140]="al",
- [65142]="al",
- [65143]="al",
- [65144]="al",
- [65145]="al",
- [65146]="al",
- [65147]="al",
- [65148]="al",
- [65149]="al",
- [65150]="al",
- [65151]="al",
- [65152]="al",
- [65153]="al",
- [65154]="al",
- [65155]="al",
- [65156]="al",
- [65157]="al",
- [65158]="al",
- [65159]="al",
- [65160]="al",
- [65161]="al",
- [65162]="al",
- [65163]="al",
- [65164]="al",
- [65165]="al",
- [65166]="al",
- [65167]="al",
- [65168]="al",
- [65169]="al",
- [65170]="al",
- [65171]="al",
- [65172]="al",
- [65173]="al",
- [65174]="al",
- [65175]="al",
- [65176]="al",
- [65177]="al",
- [65178]="al",
- [65179]="al",
- [65180]="al",
- [65181]="al",
- [65182]="al",
- [65183]="al",
- [65184]="al",
- [65185]="al",
- [65186]="al",
- [65187]="al",
- [65188]="al",
- [65189]="al",
- [65190]="al",
- [65191]="al",
- [65192]="al",
- [65193]="al",
- [65194]="al",
- [65195]="al",
- [65196]="al",
- [65197]="al",
- [65198]="al",
- [65199]="al",
- [65200]="al",
- [65201]="al",
- [65202]="al",
- [65203]="al",
- [65204]="al",
- [65205]="al",
- [65206]="al",
- [65207]="al",
- [65208]="al",
- [65209]="al",
- [65210]="al",
- [65211]="al",
- [65212]="al",
- [65213]="al",
- [65214]="al",
- [65215]="al",
- [65216]="al",
- [65217]="al",
- [65218]="al",
- [65219]="al",
- [65220]="al",
- [65221]="al",
- [65222]="al",
- [65223]="al",
- [65224]="al",
- [65225]="al",
- [65226]="al",
- [65227]="al",
- [65228]="al",
- [65229]="al",
- [65230]="al",
- [65231]="al",
- [65232]="al",
- [65233]="al",
- [65234]="al",
- [65235]="al",
- [65236]="al",
- [65237]="al",
- [65238]="al",
- [65239]="al",
- [65240]="al",
- [65241]="al",
- [65242]="al",
- [65243]="al",
- [65244]="al",
- [65245]="al",
- [65246]="al",
- [65247]="al",
- [65248]="al",
- [65249]="al",
- [65250]="al",
- [65251]="al",
- [65252]="al",
- [65253]="al",
- [65254]="al",
- [65255]="al",
- [65256]="al",
- [65257]="al",
- [65258]="al",
- [65259]="al",
- [65260]="al",
- [65261]="al",
- [65262]="al",
- [65263]="al",
- [65264]="al",
- [65265]="al",
- [65266]="al",
- [65267]="al",
- [65268]="al",
- [65269]="al",
- [65270]="al",
- [65271]="al",
- [65272]="al",
- [65273]="al",
- [65274]="al",
- [65275]="al",
- [65276]="al",
- [65279]="bn",
- [65281]="on",
- [65282]="on",
- [65283]="et",
- [65284]="et",
- [65285]="et",
- [65286]="on",
- [65287]="on",
- [65288]="on",
- [65289]="on",
- [65290]="on",
- [65291]="es",
- [65292]="cs",
- [65293]="es",
- [65294]="cs",
- [65295]="cs",
- [65296]="en",
- [65297]="en",
- [65298]="en",
- [65299]="en",
- [65300]="en",
- [65301]="en",
- [65302]="en",
- [65303]="en",
- [65304]="en",
- [65305]="en",
- [65306]="cs",
- [65307]="on",
- [65308]="on",
- [65309]="on",
- [65310]="on",
- [65311]="on",
- [65312]="on",
- [65339]="on",
- [65340]="on",
- [65341]="on",
- [65342]="on",
- [65343]="on",
- [65344]="on",
- [65371]="on",
- [65372]="on",
- [65373]="on",
- [65374]="on",
- [65375]="on",
- [65376]="on",
- [65377]="on",
- [65378]="on",
- [65379]="on",
- [65380]="on",
- [65381]="on",
- [65504]="et",
- [65505]="et",
- [65506]="on",
- [65507]="on",
- [65508]="on",
- [65509]="et",
- [65510]="et",
- [65512]="on",
- [65513]="on",
- [65514]="on",
- [65515]="on",
- [65516]="on",
- [65517]="on",
- [65518]="on",
- [65529]="on",
- [65530]="on",
- [65531]="on",
- [65532]="on",
- [65533]="on",
- [65793]="on",
- [65856]="on",
- [65857]="on",
- [65858]="on",
- [65859]="on",
- [65860]="on",
- [65861]="on",
- [65862]="on",
- [65863]="on",
- [65864]="on",
- [65865]="on",
- [65866]="on",
- [65867]="on",
- [65868]="on",
- [65869]="on",
- [65870]="on",
- [65871]="on",
- [65872]="on",
- [65873]="on",
- [65874]="on",
- [65875]="on",
- [65876]="on",
- [65877]="on",
- [65878]="on",
- [65879]="on",
- [65880]="on",
- [65881]="on",
- [65882]="on",
- [65883]="on",
- [65884]="on",
- [65885]="on",
- [65886]="on",
- [65887]="on",
- [65888]="on",
- [65889]="on",
- [65890]="on",
- [65891]="on",
- [65892]="on",
- [65893]="on",
- [65894]="on",
- [65895]="on",
- [65896]="on",
- [65897]="on",
- [65898]="on",
- [65899]="on",
- [65900]="on",
- [65901]="on",
- [65902]="on",
- [65903]="on",
- [65904]="on",
- [65905]="on",
- [65906]="on",
- [65907]="on",
- [65908]="on",
- [65909]="on",
- [65910]="on",
- [65911]="on",
- [65912]="on",
- [65913]="on",
- [65914]="on",
- [65915]="on",
- [65916]="on",
- [65917]="on",
- [65918]="on",
- [65919]="on",
- [65920]="on",
- [65921]="on",
- [65922]="on",
- [65923]="on",
- [65924]="on",
- [65925]="on",
- [65926]="on",
- [65927]="on",
- [65928]="on",
- [65929]="on",
- [65930]="on",
- [65931]="on",
- [65932]="on",
- [65936]="on",
- [65937]="on",
- [65938]="on",
- [65939]="on",
- [65940]="on",
- [65941]="on",
- [65942]="on",
- [65943]="on",
- [65944]="on",
- [65945]="on",
- [65946]="on",
- [65947]="on",
- [65952]="on",
- [66045]="nsm",
- [66272]="nsm",
- [66273]="en",
- [66274]="en",
- [66275]="en",
- [66276]="en",
- [66277]="en",
- [66278]="en",
- [66279]="en",
- [66280]="en",
- [66281]="en",
- [66282]="en",
- [66283]="en",
- [66284]="en",
- [66285]="en",
- [66286]="en",
- [66287]="en",
- [66288]="en",
- [66289]="en",
- [66290]="en",
- [66291]="en",
- [66292]="en",
- [66293]="en",
- [66294]="en",
- [66295]="en",
- [66296]="en",
- [66297]="en",
- [66298]="en",
- [66299]="en",
- [66422]="nsm",
- [66423]="nsm",
- [66424]="nsm",
- [66425]="nsm",
- [66426]="nsm",
- [67584]="r",
- [67585]="r",
- [67586]="r",
- [67587]="r",
- [67588]="r",
- [67589]="r",
- [67592]="r",
- [67594]="r",
- [67595]="r",
- [67596]="r",
- [67597]="r",
- [67598]="r",
- [67599]="r",
- [67600]="r",
- [67601]="r",
- [67602]="r",
- [67603]="r",
- [67604]="r",
- [67605]="r",
- [67606]="r",
- [67607]="r",
- [67608]="r",
- [67609]="r",
- [67610]="r",
- [67611]="r",
- [67612]="r",
- [67613]="r",
- [67614]="r",
- [67615]="r",
- [67616]="r",
- [67617]="r",
- [67618]="r",
- [67619]="r",
- [67620]="r",
- [67621]="r",
- [67622]="r",
- [67623]="r",
- [67624]="r",
- [67625]="r",
- [67626]="r",
- [67627]="r",
- [67628]="r",
- [67629]="r",
- [67630]="r",
- [67631]="r",
- [67632]="r",
- [67633]="r",
- [67634]="r",
- [67635]="r",
- [67636]="r",
- [67637]="r",
- [67639]="r",
- [67640]="r",
- [67644]="r",
- [67647]="r",
- [67648]="r",
- [67649]="r",
- [67650]="r",
- [67651]="r",
- [67652]="r",
- [67653]="r",
- [67654]="r",
- [67655]="r",
- [67656]="r",
- [67657]="r",
- [67658]="r",
- [67659]="r",
- [67660]="r",
- [67661]="r",
- [67662]="r",
- [67663]="r",
- [67664]="r",
- [67665]="r",
- [67666]="r",
- [67667]="r",
- [67668]="r",
- [67669]="r",
- [67671]="r",
- [67672]="r",
- [67673]="r",
- [67674]="r",
- [67675]="r",
- [67676]="r",
- [67677]="r",
- [67678]="r",
- [67679]="r",
- [67680]="r",
- [67681]="r",
- [67682]="r",
- [67683]="r",
- [67684]="r",
- [67685]="r",
- [67686]="r",
- [67687]="r",
- [67688]="r",
- [67689]="r",
- [67690]="r",
- [67691]="r",
- [67692]="r",
- [67693]="r",
- [67694]="r",
- [67695]="r",
- [67696]="r",
- [67697]="r",
- [67698]="r",
- [67699]="r",
- [67700]="r",
- [67701]="r",
- [67702]="r",
- [67703]="r",
- [67704]="r",
- [67705]="r",
- [67706]="r",
- [67707]="r",
- [67708]="r",
- [67709]="r",
- [67710]="r",
- [67711]="r",
- [67712]="r",
- [67713]="r",
- [67714]="r",
- [67715]="r",
- [67716]="r",
- [67717]="r",
- [67718]="r",
- [67719]="r",
- [67720]="r",
- [67721]="r",
- [67722]="r",
- [67723]="r",
- [67724]="r",
- [67725]="r",
- [67726]="r",
- [67727]="r",
- [67728]="r",
- [67729]="r",
- [67730]="r",
- [67731]="r",
- [67732]="r",
- [67733]="r",
- [67734]="r",
- [67735]="r",
- [67736]="r",
- [67737]="r",
- [67738]="r",
- [67739]="r",
- [67740]="r",
- [67741]="r",
- [67742]="r",
- [67751]="r",
- [67752]="r",
- [67753]="r",
- [67754]="r",
- [67755]="r",
- [67756]="r",
- [67757]="r",
- [67758]="r",
- [67759]="r",
- [67808]="r",
- [67809]="r",
- [67810]="r",
- [67811]="r",
- [67812]="r",
- [67813]="r",
- [67814]="r",
- [67815]="r",
- [67816]="r",
- [67817]="r",
- [67818]="r",
- [67819]="r",
- [67820]="r",
- [67821]="r",
- [67822]="r",
- [67823]="r",
- [67824]="r",
- [67825]="r",
- [67826]="r",
- [67828]="r",
- [67829]="r",
- [67835]="r",
- [67836]="r",
- [67837]="r",
- [67838]="r",
- [67839]="r",
- [67840]="r",
- [67841]="r",
- [67842]="r",
- [67843]="r",
- [67844]="r",
- [67845]="r",
- [67846]="r",
- [67847]="r",
- [67848]="r",
- [67849]="r",
- [67850]="r",
- [67851]="r",
- [67852]="r",
- [67853]="r",
- [67854]="r",
- [67855]="r",
- [67856]="r",
- [67857]="r",
- [67858]="r",
- [67859]="r",
- [67860]="r",
- [67861]="r",
- [67862]="r",
- [67863]="r",
- [67864]="r",
- [67865]="r",
- [67866]="r",
- [67867]="r",
- [67871]="on",
- [67872]="r",
- [67873]="r",
- [67874]="r",
- [67875]="r",
- [67876]="r",
- [67877]="r",
- [67878]="r",
- [67879]="r",
- [67880]="r",
- [67881]="r",
- [67882]="r",
- [67883]="r",
- [67884]="r",
- [67885]="r",
- [67886]="r",
- [67887]="r",
- [67888]="r",
- [67889]="r",
- [67890]="r",
- [67891]="r",
- [67892]="r",
- [67893]="r",
- [67894]="r",
- [67895]="r",
- [67896]="r",
- [67897]="r",
- [67903]="r",
- [67968]="r",
- [67969]="r",
- [67970]="r",
- [67971]="r",
- [67972]="r",
- [67973]="r",
- [67974]="r",
- [67975]="r",
- [67976]="r",
- [67977]="r",
- [67978]="r",
- [67979]="r",
- [67980]="r",
- [67981]="r",
- [67982]="r",
- [67983]="r",
- [67984]="r",
- [67985]="r",
- [67986]="r",
- [67987]="r",
- [67988]="r",
- [67989]="r",
- [67990]="r",
- [67991]="r",
- [67992]="r",
- [67993]="r",
- [67994]="r",
- [67995]="r",
- [67996]="r",
- [67997]="r",
- [67998]="r",
- [67999]="r",
- [68000]="r",
- [68001]="r",
- [68002]="r",
- [68003]="r",
- [68004]="r",
- [68005]="r",
- [68006]="r",
- [68007]="r",
- [68008]="r",
- [68009]="r",
- [68010]="r",
- [68011]="r",
- [68012]="r",
- [68013]="r",
- [68014]="r",
- [68015]="r",
- [68016]="r",
- [68017]="r",
- [68018]="r",
- [68019]="r",
- [68020]="r",
- [68021]="r",
- [68022]="r",
- [68023]="r",
- [68028]="r",
- [68029]="r",
- [68030]="r",
- [68031]="r",
- [68032]="r",
- [68033]="r",
- [68034]="r",
- [68035]="r",
- [68036]="r",
- [68037]="r",
- [68038]="r",
- [68039]="r",
- [68040]="r",
- [68041]="r",
- [68042]="r",
- [68043]="r",
- [68044]="r",
- [68045]="r",
- [68046]="r",
- [68047]="r",
- [68050]="r",
- [68051]="r",
- [68052]="r",
- [68053]="r",
- [68054]="r",
- [68055]="r",
- [68056]="r",
- [68057]="r",
- [68058]="r",
- [68059]="r",
- [68060]="r",
- [68061]="r",
- [68062]="r",
- [68063]="r",
- [68064]="r",
- [68065]="r",
- [68066]="r",
- [68067]="r",
- [68068]="r",
- [68069]="r",
- [68070]="r",
- [68071]="r",
- [68072]="r",
- [68073]="r",
- [68074]="r",
- [68075]="r",
- [68076]="r",
- [68077]="r",
- [68078]="r",
- [68079]="r",
- [68080]="r",
- [68081]="r",
- [68082]="r",
- [68083]="r",
- [68084]="r",
- [68085]="r",
- [68086]="r",
- [68087]="r",
- [68088]="r",
- [68089]="r",
- [68090]="r",
- [68091]="r",
- [68092]="r",
- [68093]="r",
- [68094]="r",
- [68095]="r",
- [68096]="r",
- [68097]="nsm",
- [68098]="nsm",
- [68099]="nsm",
- [68101]="nsm",
- [68102]="nsm",
- [68108]="nsm",
- [68109]="nsm",
- [68110]="nsm",
- [68111]="nsm",
- [68112]="r",
- [68113]="r",
- [68114]="r",
- [68115]="r",
- [68117]="r",
- [68118]="r",
- [68119]="r",
- [68121]="r",
- [68122]="r",
- [68123]="r",
- [68124]="r",
- [68125]="r",
- [68126]="r",
- [68127]="r",
- [68128]="r",
- [68129]="r",
- [68130]="r",
- [68131]="r",
- [68132]="r",
- [68133]="r",
- [68134]="r",
- [68135]="r",
- [68136]="r",
- [68137]="r",
- [68138]="r",
- [68139]="r",
- [68140]="r",
- [68141]="r",
- [68142]="r",
- [68143]="r",
- [68144]="r",
- [68145]="r",
- [68146]="r",
- [68147]="r",
- [68152]="nsm",
- [68153]="nsm",
- [68154]="nsm",
- [68159]="nsm",
- [68160]="r",
- [68161]="r",
- [68162]="r",
- [68163]="r",
- [68164]="r",
- [68165]="r",
- [68166]="r",
- [68167]="r",
- [68176]="r",
- [68177]="r",
- [68178]="r",
- [68179]="r",
- [68180]="r",
- [68181]="r",
- [68182]="r",
- [68183]="r",
- [68184]="r",
- [68192]="r",
- [68193]="r",
- [68194]="r",
- [68195]="r",
- [68196]="r",
- [68197]="r",
- [68198]="r",
- [68199]="r",
- [68200]="r",
- [68201]="r",
- [68202]="r",
- [68203]="r",
- [68204]="r",
- [68205]="r",
- [68206]="r",
- [68207]="r",
- [68208]="r",
- [68209]="r",
- [68210]="r",
- [68211]="r",
- [68212]="r",
- [68213]="r",
- [68214]="r",
- [68215]="r",
- [68216]="r",
- [68217]="r",
- [68218]="r",
- [68219]="r",
- [68220]="r",
- [68221]="r",
- [68222]="r",
- [68223]="r",
- [68224]="r",
- [68225]="r",
- [68226]="r",
- [68227]="r",
- [68228]="r",
- [68229]="r",
- [68230]="r",
- [68231]="r",
- [68232]="r",
- [68233]="r",
- [68234]="r",
- [68235]="r",
- [68236]="r",
- [68237]="r",
- [68238]="r",
- [68239]="r",
- [68240]="r",
- [68241]="r",
- [68242]="r",
- [68243]="r",
- [68244]="r",
- [68245]="r",
- [68246]="r",
- [68247]="r",
- [68248]="r",
- [68249]="r",
- [68250]="r",
- [68251]="r",
- [68252]="r",
- [68253]="r",
- [68254]="r",
- [68255]="r",
- [68288]="r",
- [68289]="r",
- [68290]="r",
- [68291]="r",
- [68292]="r",
- [68293]="r",
- [68294]="r",
- [68295]="r",
- [68296]="r",
- [68297]="r",
- [68298]="r",
- [68299]="r",
- [68300]="r",
- [68301]="r",
- [68302]="r",
- [68303]="r",
- [68304]="r",
- [68305]="r",
- [68306]="r",
- [68307]="r",
- [68308]="r",
- [68309]="r",
- [68310]="r",
- [68311]="r",
- [68312]="r",
- [68313]="r",
- [68314]="r",
- [68315]="r",
- [68316]="r",
- [68317]="r",
- [68318]="r",
- [68319]="r",
- [68320]="r",
- [68321]="r",
- [68322]="r",
- [68323]="r",
- [68324]="r",
- [68325]="nsm",
- [68326]="nsm",
- [68331]="r",
- [68332]="r",
- [68333]="r",
- [68334]="r",
- [68335]="r",
- [68336]="r",
- [68337]="r",
- [68338]="r",
- [68339]="r",
- [68340]="r",
- [68341]="r",
- [68342]="r",
- [68352]="r",
- [68353]="r",
- [68354]="r",
- [68355]="r",
- [68356]="r",
- [68357]="r",
- [68358]="r",
- [68359]="r",
- [68360]="r",
- [68361]="r",
- [68362]="r",
- [68363]="r",
- [68364]="r",
- [68365]="r",
- [68366]="r",
- [68367]="r",
- [68368]="r",
- [68369]="r",
- [68370]="r",
- [68371]="r",
- [68372]="r",
- [68373]="r",
- [68374]="r",
- [68375]="r",
- [68376]="r",
- [68377]="r",
- [68378]="r",
- [68379]="r",
- [68380]="r",
- [68381]="r",
- [68382]="r",
- [68383]="r",
- [68384]="r",
- [68385]="r",
- [68386]="r",
- [68387]="r",
- [68388]="r",
- [68389]="r",
- [68390]="r",
- [68391]="r",
- [68392]="r",
- [68393]="r",
- [68394]="r",
- [68395]="r",
- [68396]="r",
- [68397]="r",
- [68398]="r",
- [68399]="r",
- [68400]="r",
- [68401]="r",
- [68402]="r",
- [68403]="r",
- [68404]="r",
- [68405]="r",
- [68409]="on",
- [68410]="on",
- [68411]="on",
- [68412]="on",
- [68413]="on",
- [68414]="on",
- [68415]="on",
- [68416]="r",
- [68417]="r",
- [68418]="r",
- [68419]="r",
- [68420]="r",
- [68421]="r",
- [68422]="r",
- [68423]="r",
- [68424]="r",
- [68425]="r",
- [68426]="r",
- [68427]="r",
- [68428]="r",
- [68429]="r",
- [68430]="r",
- [68431]="r",
- [68432]="r",
- [68433]="r",
- [68434]="r",
- [68435]="r",
- [68436]="r",
- [68437]="r",
- [68440]="r",
- [68441]="r",
- [68442]="r",
- [68443]="r",
- [68444]="r",
- [68445]="r",
- [68446]="r",
- [68447]="r",
- [68448]="r",
- [68449]="r",
- [68450]="r",
- [68451]="r",
- [68452]="r",
- [68453]="r",
- [68454]="r",
- [68455]="r",
- [68456]="r",
- [68457]="r",
- [68458]="r",
- [68459]="r",
- [68460]="r",
- [68461]="r",
- [68462]="r",
- [68463]="r",
- [68464]="r",
- [68465]="r",
- [68466]="r",
- [68472]="r",
- [68473]="r",
- [68474]="r",
- [68475]="r",
- [68476]="r",
- [68477]="r",
- [68478]="r",
- [68479]="r",
- [68480]="r",
- [68481]="r",
- [68482]="r",
- [68483]="r",
- [68484]="r",
- [68485]="r",
- [68486]="r",
- [68487]="r",
- [68488]="r",
- [68489]="r",
- [68490]="r",
- [68491]="r",
- [68492]="r",
- [68493]="r",
- [68494]="r",
- [68495]="r",
- [68496]="r",
- [68497]="r",
- [68505]="r",
- [68506]="r",
- [68507]="r",
- [68508]="r",
- [68521]="r",
- [68522]="r",
- [68523]="r",
- [68524]="r",
- [68525]="r",
- [68526]="r",
- [68527]="r",
- [68608]="r",
- [68609]="r",
- [68610]="r",
- [68611]="r",
- [68612]="r",
- [68613]="r",
- [68614]="r",
- [68615]="r",
- [68616]="r",
- [68617]="r",
- [68618]="r",
- [68619]="r",
- [68620]="r",
- [68621]="r",
- [68622]="r",
- [68623]="r",
- [68624]="r",
- [68625]="r",
- [68626]="r",
- [68627]="r",
- [68628]="r",
- [68629]="r",
- [68630]="r",
- [68631]="r",
- [68632]="r",
- [68633]="r",
- [68634]="r",
- [68635]="r",
- [68636]="r",
- [68637]="r",
- [68638]="r",
- [68639]="r",
- [68640]="r",
- [68641]="r",
- [68642]="r",
- [68643]="r",
- [68644]="r",
- [68645]="r",
- [68646]="r",
- [68647]="r",
- [68648]="r",
- [68649]="r",
- [68650]="r",
- [68651]="r",
- [68652]="r",
- [68653]="r",
- [68654]="r",
- [68655]="r",
- [68656]="r",
- [68657]="r",
- [68658]="r",
- [68659]="r",
- [68660]="r",
- [68661]="r",
- [68662]="r",
- [68663]="r",
- [68664]="r",
- [68665]="r",
- [68666]="r",
- [68667]="r",
- [68668]="r",
- [68669]="r",
- [68670]="r",
- [68671]="r",
- [68672]="r",
- [68673]="r",
- [68674]="r",
- [68675]="r",
- [68676]="r",
- [68677]="r",
- [68678]="r",
- [68679]="r",
- [68680]="r",
- [68736]="r",
- [68737]="r",
- [68738]="r",
- [68739]="r",
- [68740]="r",
- [68741]="r",
- [68742]="r",
- [68743]="r",
- [68744]="r",
- [68745]="r",
- [68746]="r",
- [68747]="r",
- [68748]="r",
- [68749]="r",
- [68750]="r",
- [68751]="r",
- [68752]="r",
- [68753]="r",
- [68754]="r",
- [68755]="r",
- [68756]="r",
- [68757]="r",
- [68758]="r",
- [68759]="r",
- [68760]="r",
- [68761]="r",
- [68762]="r",
- [68763]="r",
- [68764]="r",
- [68765]="r",
- [68766]="r",
- [68767]="r",
- [68768]="r",
- [68769]="r",
- [68770]="r",
- [68771]="r",
- [68772]="r",
- [68773]="r",
- [68774]="r",
- [68775]="r",
- [68776]="r",
- [68777]="r",
- [68778]="r",
- [68779]="r",
- [68780]="r",
- [68781]="r",
- [68782]="r",
- [68783]="r",
- [68784]="r",
- [68785]="r",
- [68786]="r",
- [68800]="r",
- [68801]="r",
- [68802]="r",
- [68803]="r",
- [68804]="r",
- [68805]="r",
- [68806]="r",
- [68807]="r",
- [68808]="r",
- [68809]="r",
- [68810]="r",
- [68811]="r",
- [68812]="r",
- [68813]="r",
- [68814]="r",
- [68815]="r",
- [68816]="r",
- [68817]="r",
- [68818]="r",
- [68819]="r",
- [68820]="r",
- [68821]="r",
- [68822]="r",
- [68823]="r",
- [68824]="r",
- [68825]="r",
- [68826]="r",
- [68827]="r",
- [68828]="r",
- [68829]="r",
- [68830]="r",
- [68831]="r",
- [68832]="r",
- [68833]="r",
- [68834]="r",
- [68835]="r",
- [68836]="r",
- [68837]="r",
- [68838]="r",
- [68839]="r",
- [68840]="r",
- [68841]="r",
- [68842]="r",
- [68843]="r",
- [68844]="r",
- [68845]="r",
- [68846]="r",
- [68847]="r",
- [68848]="r",
- [68849]="r",
- [68850]="r",
- [68858]="r",
- [68859]="r",
- [68860]="r",
- [68861]="r",
- [68862]="r",
- [68863]="r",
- [69216]="an",
- [69217]="an",
- [69218]="an",
- [69219]="an",
- [69220]="an",
- [69221]="an",
- [69222]="an",
- [69223]="an",
- [69224]="an",
- [69225]="an",
- [69226]="an",
- [69227]="an",
- [69228]="an",
- [69229]="an",
- [69230]="an",
- [69231]="an",
- [69232]="an",
- [69233]="an",
- [69234]="an",
- [69235]="an",
- [69236]="an",
- [69237]="an",
- [69238]="an",
- [69239]="an",
- [69240]="an",
- [69241]="an",
- [69242]="an",
- [69243]="an",
- [69244]="an",
- [69245]="an",
- [69246]="an",
- [69633]="nsm",
- [69688]="nsm",
- [69689]="nsm",
- [69690]="nsm",
- [69691]="nsm",
- [69692]="nsm",
- [69693]="nsm",
- [69694]="nsm",
- [69695]="nsm",
- [69696]="nsm",
- [69697]="nsm",
- [69698]="nsm",
- [69699]="nsm",
- [69700]="nsm",
- [69701]="nsm",
- [69702]="nsm",
- [69714]="on",
- [69715]="on",
- [69716]="on",
- [69717]="on",
- [69718]="on",
- [69719]="on",
- [69720]="on",
- [69721]="on",
- [69722]="on",
- [69723]="on",
- [69724]="on",
- [69725]="on",
- [69726]="on",
- [69727]="on",
- [69728]="on",
- [69729]="on",
- [69730]="on",
- [69731]="on",
- [69732]="on",
- [69733]="on",
- [69759]="nsm",
- [69760]="nsm",
- [69761]="nsm",
- [69811]="nsm",
- [69812]="nsm",
- [69813]="nsm",
- [69814]="nsm",
- [69817]="nsm",
- [69818]="nsm",
- [69888]="nsm",
- [69889]="nsm",
- [69890]="nsm",
- [69927]="nsm",
- [69928]="nsm",
- [69929]="nsm",
- [69930]="nsm",
- [69931]="nsm",
- [69933]="nsm",
- [69934]="nsm",
- [69935]="nsm",
- [69936]="nsm",
- [69937]="nsm",
- [69938]="nsm",
- [69939]="nsm",
- [69940]="nsm",
- [70003]="nsm",
- [70016]="nsm",
- [70017]="nsm",
- [70070]="nsm",
- [70071]="nsm",
- [70072]="nsm",
- [70073]="nsm",
- [70074]="nsm",
- [70075]="nsm",
- [70076]="nsm",
- [70077]="nsm",
- [70078]="nsm",
- [70090]="nsm",
- [70091]="nsm",
- [70092]="nsm",
- [70191]="nsm",
- [70192]="nsm",
- [70193]="nsm",
- [70196]="nsm",
- [70198]="nsm",
- [70199]="nsm",
- [70206]="nsm",
- [70367]="nsm",
- [70371]="nsm",
- [70372]="nsm",
- [70373]="nsm",
- [70374]="nsm",
- [70375]="nsm",
- [70376]="nsm",
- [70377]="nsm",
- [70378]="nsm",
- [70400]="nsm",
- [70401]="nsm",
- [70460]="nsm",
- [70464]="nsm",
- [70502]="nsm",
- [70503]="nsm",
- [70504]="nsm",
- [70505]="nsm",
- [70506]="nsm",
- [70507]="nsm",
- [70508]="nsm",
- [70512]="nsm",
- [70513]="nsm",
- [70514]="nsm",
- [70515]="nsm",
- [70516]="nsm",
- [70712]="nsm",
- [70713]="nsm",
- [70714]="nsm",
- [70715]="nsm",
- [70716]="nsm",
- [70717]="nsm",
- [70718]="nsm",
- [70719]="nsm",
- [70722]="nsm",
- [70723]="nsm",
- [70724]="nsm",
- [70726]="nsm",
- [70835]="nsm",
- [70836]="nsm",
- [70837]="nsm",
- [70838]="nsm",
- [70839]="nsm",
- [70840]="nsm",
- [70842]="nsm",
- [70847]="nsm",
- [70848]="nsm",
- [70850]="nsm",
- [70851]="nsm",
- [71090]="nsm",
- [71091]="nsm",
- [71092]="nsm",
- [71093]="nsm",
- [71100]="nsm",
- [71101]="nsm",
- [71103]="nsm",
- [71104]="nsm",
- [71132]="nsm",
- [71133]="nsm",
- [71219]="nsm",
- [71220]="nsm",
- [71221]="nsm",
- [71222]="nsm",
- [71223]="nsm",
- [71224]="nsm",
- [71225]="nsm",
- [71226]="nsm",
- [71229]="nsm",
- [71231]="nsm",
- [71232]="nsm",
- [71264]="on",
- [71265]="on",
- [71266]="on",
- [71267]="on",
- [71268]="on",
- [71269]="on",
- [71270]="on",
- [71271]="on",
- [71272]="on",
- [71273]="on",
- [71274]="on",
- [71275]="on",
- [71276]="on",
- [71339]="nsm",
- [71341]="nsm",
- [71344]="nsm",
- [71345]="nsm",
- [71346]="nsm",
- [71347]="nsm",
- [71348]="nsm",
- [71349]="nsm",
- [71351]="nsm",
- [71453]="nsm",
- [71454]="nsm",
- [71455]="nsm",
- [71458]="nsm",
- [71459]="nsm",
- [71460]="nsm",
- [71461]="nsm",
- [71463]="nsm",
- [71464]="nsm",
- [71465]="nsm",
- [71466]="nsm",
- [71467]="nsm",
- [72193]="nsm",
- [72194]="nsm",
- [72195]="nsm",
- [72196]="nsm",
- [72197]="nsm",
- [72198]="nsm",
- [72201]="nsm",
- [72202]="nsm",
- [72243]="nsm",
- [72244]="nsm",
- [72245]="nsm",
- [72246]="nsm",
- [72247]="nsm",
- [72248]="nsm",
- [72251]="nsm",
- [72252]="nsm",
- [72253]="nsm",
- [72254]="nsm",
- [72263]="nsm",
- [72273]="nsm",
- [72274]="nsm",
- [72275]="nsm",
- [72276]="nsm",
- [72277]="nsm",
- [72278]="nsm",
- [72281]="nsm",
- [72282]="nsm",
- [72283]="nsm",
- [72330]="nsm",
- [72331]="nsm",
- [72332]="nsm",
- [72333]="nsm",
- [72334]="nsm",
- [72335]="nsm",
- [72336]="nsm",
- [72337]="nsm",
- [72338]="nsm",
- [72339]="nsm",
- [72340]="nsm",
- [72341]="nsm",
- [72342]="nsm",
- [72344]="nsm",
- [72345]="nsm",
- [72752]="nsm",
- [72753]="nsm",
- [72754]="nsm",
- [72755]="nsm",
- [72756]="nsm",
- [72757]="nsm",
- [72758]="nsm",
- [72760]="nsm",
- [72761]="nsm",
- [72762]="nsm",
- [72763]="nsm",
- [72764]="nsm",
- [72765]="nsm",
- [72850]="nsm",
- [72851]="nsm",
- [72852]="nsm",
- [72853]="nsm",
- [72854]="nsm",
- [72855]="nsm",
- [72856]="nsm",
- [72857]="nsm",
- [72858]="nsm",
- [72859]="nsm",
- [72860]="nsm",
- [72861]="nsm",
- [72862]="nsm",
- [72863]="nsm",
- [72864]="nsm",
- [72865]="nsm",
- [72866]="nsm",
- [72867]="nsm",
- [72868]="nsm",
- [72869]="nsm",
- [72870]="nsm",
- [72871]="nsm",
- [72874]="nsm",
- [72875]="nsm",
- [72876]="nsm",
- [72877]="nsm",
- [72878]="nsm",
- [72879]="nsm",
- [72880]="nsm",
- [72882]="nsm",
- [72883]="nsm",
- [72885]="nsm",
- [72886]="nsm",
- [73009]="nsm",
- [73010]="nsm",
- [73011]="nsm",
- [73012]="nsm",
- [73013]="nsm",
- [73014]="nsm",
- [73018]="nsm",
- [73020]="nsm",
- [73021]="nsm",
- [73023]="nsm",
- [73024]="nsm",
- [73025]="nsm",
- [73026]="nsm",
- [73027]="nsm",
- [73028]="nsm",
- [73029]="nsm",
- [73031]="nsm",
- [92912]="nsm",
- [92913]="nsm",
- [92914]="nsm",
- [92915]="nsm",
- [92916]="nsm",
- [92976]="nsm",
- [92977]="nsm",
- [92978]="nsm",
- [92979]="nsm",
- [92980]="nsm",
- [92981]="nsm",
- [92982]="nsm",
- [94095]="nsm",
- [94096]="nsm",
- [94097]="nsm",
- [94098]="nsm",
- [113821]="nsm",
- [113822]="nsm",
- [113824]="bn",
- [113825]="bn",
- [113826]="bn",
- [113827]="bn",
- [119143]="nsm",
- [119144]="nsm",
- [119145]="nsm",
- [119155]="bn",
- [119156]="bn",
- [119157]="bn",
- [119158]="bn",
- [119159]="bn",
- [119160]="bn",
- [119161]="bn",
- [119162]="bn",
- [119163]="nsm",
- [119164]="nsm",
- [119165]="nsm",
- [119166]="nsm",
- [119167]="nsm",
- [119168]="nsm",
- [119169]="nsm",
- [119170]="nsm",
- [119173]="nsm",
- [119174]="nsm",
- [119175]="nsm",
- [119176]="nsm",
- [119177]="nsm",
- [119178]="nsm",
- [119179]="nsm",
- [119210]="nsm",
- [119211]="nsm",
- [119212]="nsm",
- [119213]="nsm",
- [119296]="on",
- [119297]="on",
- [119298]="on",
- [119299]="on",
- [119300]="on",
- [119301]="on",
- [119302]="on",
- [119303]="on",
- [119304]="on",
- [119305]="on",
- [119306]="on",
- [119307]="on",
- [119308]="on",
- [119309]="on",
- [119310]="on",
- [119311]="on",
- [119312]="on",
- [119313]="on",
- [119314]="on",
- [119315]="on",
- [119316]="on",
- [119317]="on",
- [119318]="on",
- [119319]="on",
- [119320]="on",
- [119321]="on",
- [119322]="on",
- [119323]="on",
- [119324]="on",
- [119325]="on",
- [119326]="on",
- [119327]="on",
- [119328]="on",
- [119329]="on",
- [119330]="on",
- [119331]="on",
- [119332]="on",
- [119333]="on",
- [119334]="on",
- [119335]="on",
- [119336]="on",
- [119337]="on",
- [119338]="on",
- [119339]="on",
- [119340]="on",
- [119341]="on",
- [119342]="on",
- [119343]="on",
- [119344]="on",
- [119345]="on",
- [119346]="on",
- [119347]="on",
- [119348]="on",
- [119349]="on",
- [119350]="on",
- [119351]="on",
- [119352]="on",
- [119353]="on",
- [119354]="on",
- [119355]="on",
- [119356]="on",
- [119357]="on",
- [119358]="on",
- [119359]="on",
- [119360]="on",
- [119361]="on",
- [119362]="nsm",
- [119363]="nsm",
- [119364]="nsm",
- [119365]="on",
- [119552]="on",
- [119553]="on",
- [119554]="on",
- [119555]="on",
- [119556]="on",
- [119557]="on",
- [119558]="on",
- [119559]="on",
- [119560]="on",
- [119561]="on",
- [119562]="on",
- [119563]="on",
- [119564]="on",
- [119565]="on",
- [119566]="on",
- [119567]="on",
- [119568]="on",
- [119569]="on",
- [119570]="on",
- [119571]="on",
- [119572]="on",
- [119573]="on",
- [119574]="on",
- [119575]="on",
- [119576]="on",
- [119577]="on",
- [119578]="on",
- [119579]="on",
- [119580]="on",
- [119581]="on",
- [119582]="on",
- [119583]="on",
- [119584]="on",
- [119585]="on",
- [119586]="on",
- [119587]="on",
- [119588]="on",
- [119589]="on",
- [119590]="on",
- [119591]="on",
- [119592]="on",
- [119593]="on",
- [119594]="on",
- [119595]="on",
- [119596]="on",
- [119597]="on",
- [119598]="on",
- [119599]="on",
- [119600]="on",
- [119601]="on",
- [119602]="on",
- [119603]="on",
- [119604]="on",
- [119605]="on",
- [119606]="on",
- [119607]="on",
- [119608]="on",
- [119609]="on",
- [119610]="on",
- [119611]="on",
- [119612]="on",
- [119613]="on",
- [119614]="on",
- [119615]="on",
- [119616]="on",
- [119617]="on",
- [119618]="on",
- [119619]="on",
- [119620]="on",
- [119621]="on",
- [119622]="on",
- [119623]="on",
- [119624]="on",
- [119625]="on",
- [119626]="on",
- [119627]="on",
- [119628]="on",
- [119629]="on",
- [119630]="on",
- [119631]="on",
- [119632]="on",
- [119633]="on",
- [119634]="on",
- [119635]="on",
- [119636]="on",
- [119637]="on",
- [119638]="on",
- [120539]="on",
- [120597]="on",
- [120655]="on",
- [120713]="on",
- [120771]="on",
- [120782]="en",
- [120783]="en",
- [120784]="en",
- [120785]="en",
- [120786]="en",
- [120787]="en",
- [120788]="en",
- [120789]="en",
- [120790]="en",
- [120791]="en",
- [120792]="en",
- [120793]="en",
- [120794]="en",
- [120795]="en",
- [120796]="en",
- [120797]="en",
- [120798]="en",
- [120799]="en",
- [120800]="en",
- [120801]="en",
- [120802]="en",
- [120803]="en",
- [120804]="en",
- [120805]="en",
- [120806]="en",
- [120807]="en",
- [120808]="en",
- [120809]="en",
- [120810]="en",
- [120811]="en",
- [120812]="en",
- [120813]="en",
- [120814]="en",
- [120815]="en",
- [120816]="en",
- [120817]="en",
- [120818]="en",
- [120819]="en",
- [120820]="en",
- [120821]="en",
- [120822]="en",
- [120823]="en",
- [120824]="en",
- [120825]="en",
- [120826]="en",
- [120827]="en",
- [120828]="en",
- [120829]="en",
- [120830]="en",
- [120831]="en",
- [121344]="nsm",
- [121345]="nsm",
- [121346]="nsm",
- [121347]="nsm",
- [121348]="nsm",
- [121349]="nsm",
- [121350]="nsm",
- [121351]="nsm",
- [121352]="nsm",
- [121353]="nsm",
- [121354]="nsm",
- [121355]="nsm",
- [121356]="nsm",
- [121357]="nsm",
- [121358]="nsm",
- [121359]="nsm",
- [121360]="nsm",
- [121361]="nsm",
- [121362]="nsm",
- [121363]="nsm",
- [121364]="nsm",
- [121365]="nsm",
- [121366]="nsm",
- [121367]="nsm",
- [121368]="nsm",
- [121369]="nsm",
- [121370]="nsm",
- [121371]="nsm",
- [121372]="nsm",
- [121373]="nsm",
- [121374]="nsm",
- [121375]="nsm",
- [121376]="nsm",
- [121377]="nsm",
- [121378]="nsm",
- [121379]="nsm",
- [121380]="nsm",
- [121381]="nsm",
- [121382]="nsm",
- [121383]="nsm",
- [121384]="nsm",
- [121385]="nsm",
- [121386]="nsm",
- [121387]="nsm",
- [121388]="nsm",
- [121389]="nsm",
- [121390]="nsm",
- [121391]="nsm",
- [121392]="nsm",
- [121393]="nsm",
- [121394]="nsm",
- [121395]="nsm",
- [121396]="nsm",
- [121397]="nsm",
- [121398]="nsm",
- [121403]="nsm",
- [121404]="nsm",
- [121405]="nsm",
- [121406]="nsm",
- [121407]="nsm",
- [121408]="nsm",
- [121409]="nsm",
- [121410]="nsm",
- [121411]="nsm",
- [121412]="nsm",
- [121413]="nsm",
- [121414]="nsm",
- [121415]="nsm",
- [121416]="nsm",
- [121417]="nsm",
- [121418]="nsm",
- [121419]="nsm",
- [121420]="nsm",
- [121421]="nsm",
- [121422]="nsm",
- [121423]="nsm",
- [121424]="nsm",
- [121425]="nsm",
- [121426]="nsm",
- [121427]="nsm",
- [121428]="nsm",
- [121429]="nsm",
- [121430]="nsm",
- [121431]="nsm",
- [121432]="nsm",
- [121433]="nsm",
- [121434]="nsm",
- [121435]="nsm",
- [121436]="nsm",
- [121437]="nsm",
- [121438]="nsm",
- [121439]="nsm",
- [121440]="nsm",
- [121441]="nsm",
- [121442]="nsm",
- [121443]="nsm",
- [121444]="nsm",
- [121445]="nsm",
- [121446]="nsm",
- [121447]="nsm",
- [121448]="nsm",
- [121449]="nsm",
- [121450]="nsm",
- [121451]="nsm",
- [121452]="nsm",
- [121461]="nsm",
- [121476]="nsm",
- [121499]="nsm",
- [121500]="nsm",
- [121501]="nsm",
- [121502]="nsm",
- [121503]="nsm",
- [121505]="nsm",
- [121506]="nsm",
- [121507]="nsm",
- [121508]="nsm",
- [121509]="nsm",
- [121510]="nsm",
- [121511]="nsm",
- [121512]="nsm",
- [121513]="nsm",
- [121514]="nsm",
- [121515]="nsm",
- [121516]="nsm",
- [121517]="nsm",
- [121518]="nsm",
- [121519]="nsm",
- [122880]="nsm",
- [122881]="nsm",
- [122882]="nsm",
- [122883]="nsm",
- [122884]="nsm",
- [122885]="nsm",
- [122886]="nsm",
- [122888]="nsm",
- [122889]="nsm",
- [122890]="nsm",
- [122891]="nsm",
- [122892]="nsm",
- [122893]="nsm",
- [122894]="nsm",
- [122895]="nsm",
- [122896]="nsm",
- [122897]="nsm",
- [122898]="nsm",
- [122899]="nsm",
- [122900]="nsm",
- [122901]="nsm",
- [122902]="nsm",
- [122903]="nsm",
- [122904]="nsm",
- [122907]="nsm",
- [122908]="nsm",
- [122909]="nsm",
- [122910]="nsm",
- [122911]="nsm",
- [122912]="nsm",
- [122913]="nsm",
- [122915]="nsm",
- [122916]="nsm",
- [122918]="nsm",
- [122919]="nsm",
- [122920]="nsm",
- [122921]="nsm",
- [122922]="nsm",
- [124928]="r",
- [124929]="r",
- [124930]="r",
- [124931]="r",
- [124932]="r",
- [124933]="r",
- [124934]="r",
- [124935]="r",
- [124936]="r",
- [124937]="r",
- [124938]="r",
- [124939]="r",
- [124940]="r",
- [124941]="r",
- [124942]="r",
- [124943]="r",
- [124944]="r",
- [124945]="r",
- [124946]="r",
- [124947]="r",
- [124948]="r",
- [124949]="r",
- [124950]="r",
- [124951]="r",
- [124952]="r",
- [124953]="r",
- [124954]="r",
- [124955]="r",
- [124956]="r",
- [124957]="r",
- [124958]="r",
- [124959]="r",
- [124960]="r",
- [124961]="r",
- [124962]="r",
- [124963]="r",
- [124964]="r",
- [124965]="r",
- [124966]="r",
- [124967]="r",
- [124968]="r",
- [124969]="r",
- [124970]="r",
- [124971]="r",
- [124972]="r",
- [124973]="r",
- [124974]="r",
- [124975]="r",
- [124976]="r",
- [124977]="r",
- [124978]="r",
- [124979]="r",
- [124980]="r",
- [124981]="r",
- [124982]="r",
- [124983]="r",
- [124984]="r",
- [124985]="r",
- [124986]="r",
- [124987]="r",
- [124988]="r",
- [124989]="r",
- [124990]="r",
- [124991]="r",
- [124992]="r",
- [124993]="r",
- [124994]="r",
- [124995]="r",
- [124996]="r",
- [124997]="r",
- [124998]="r",
- [124999]="r",
- [125000]="r",
- [125001]="r",
- [125002]="r",
- [125003]="r",
- [125004]="r",
- [125005]="r",
- [125006]="r",
- [125007]="r",
- [125008]="r",
- [125009]="r",
- [125010]="r",
- [125011]="r",
- [125012]="r",
- [125013]="r",
- [125014]="r",
- [125015]="r",
- [125016]="r",
- [125017]="r",
- [125018]="r",
- [125019]="r",
- [125020]="r",
- [125021]="r",
- [125022]="r",
- [125023]="r",
- [125024]="r",
- [125025]="r",
- [125026]="r",
- [125027]="r",
- [125028]="r",
- [125029]="r",
- [125030]="r",
- [125031]="r",
- [125032]="r",
- [125033]="r",
- [125034]="r",
- [125035]="r",
- [125036]="r",
- [125037]="r",
- [125038]="r",
- [125039]="r",
- [125040]="r",
- [125041]="r",
- [125042]="r",
- [125043]="r",
- [125044]="r",
- [125045]="r",
- [125046]="r",
- [125047]="r",
- [125048]="r",
- [125049]="r",
- [125050]="r",
- [125051]="r",
- [125052]="r",
- [125053]="r",
- [125054]="r",
- [125055]="r",
- [125056]="r",
- [125057]="r",
- [125058]="r",
- [125059]="r",
- [125060]="r",
- [125061]="r",
- [125062]="r",
- [125063]="r",
- [125064]="r",
- [125065]="r",
- [125066]="r",
- [125067]="r",
- [125068]="r",
- [125069]="r",
- [125070]="r",
- [125071]="r",
- [125072]="r",
- [125073]="r",
- [125074]="r",
- [125075]="r",
- [125076]="r",
- [125077]="r",
- [125078]="r",
- [125079]="r",
- [125080]="r",
- [125081]="r",
- [125082]="r",
- [125083]="r",
- [125084]="r",
- [125085]="r",
- [125086]="r",
- [125087]="r",
- [125088]="r",
- [125089]="r",
- [125090]="r",
- [125091]="r",
- [125092]="r",
- [125093]="r",
- [125094]="r",
- [125095]="r",
- [125096]="r",
- [125097]="r",
- [125098]="r",
- [125099]="r",
- [125100]="r",
- [125101]="r",
- [125102]="r",
- [125103]="r",
- [125104]="r",
- [125105]="r",
- [125106]="r",
- [125107]="r",
- [125108]="r",
- [125109]="r",
- [125110]="r",
- [125111]="r",
- [125112]="r",
- [125113]="r",
- [125114]="r",
- [125115]="r",
- [125116]="r",
- [125117]="r",
- [125118]="r",
- [125119]="r",
- [125120]="r",
- [125121]="r",
- [125122]="r",
- [125123]="r",
- [125124]="r",
- [125127]="r",
- [125128]="r",
- [125129]="r",
- [125130]="r",
- [125131]="r",
- [125132]="r",
- [125133]="r",
- [125134]="r",
- [125135]="r",
- [125136]="nsm",
- [125137]="nsm",
- [125138]="nsm",
- [125139]="nsm",
- [125140]="nsm",
- [125141]="nsm",
- [125142]="nsm",
- [125184]="r",
- [125185]="r",
- [125186]="r",
- [125187]="r",
- [125188]="r",
- [125189]="r",
- [125190]="r",
- [125191]="r",
- [125192]="r",
- [125193]="r",
- [125194]="r",
- [125195]="r",
- [125196]="r",
- [125197]="r",
- [125198]="r",
- [125199]="r",
- [125200]="r",
- [125201]="r",
- [125202]="r",
- [125203]="r",
- [125204]="r",
- [125205]="r",
- [125206]="r",
- [125207]="r",
- [125208]="r",
- [125209]="r",
- [125210]="r",
- [125211]="r",
- [125212]="r",
- [125213]="r",
- [125214]="r",
- [125215]="r",
- [125216]="r",
- [125217]="r",
- [125218]="r",
- [125219]="r",
- [125220]="r",
- [125221]="r",
- [125222]="r",
- [125223]="r",
- [125224]="r",
- [125225]="r",
- [125226]="r",
- [125227]="r",
- [125228]="r",
- [125229]="r",
- [125230]="r",
- [125231]="r",
- [125232]="r",
- [125233]="r",
- [125234]="r",
- [125235]="r",
- [125236]="r",
- [125237]="r",
- [125238]="r",
- [125239]="r",
- [125240]="r",
- [125241]="r",
- [125242]="r",
- [125243]="r",
- [125244]="r",
- [125245]="r",
- [125246]="r",
- [125247]="r",
- [125248]="r",
- [125249]="r",
- [125250]="r",
- [125251]="r",
- [125252]="nsm",
- [125253]="nsm",
- [125254]="nsm",
- [125255]="nsm",
- [125256]="nsm",
- [125257]="nsm",
- [125258]="nsm",
- [125264]="r",
- [125265]="r",
- [125266]="r",
- [125267]="r",
- [125268]="r",
- [125269]="r",
- [125270]="r",
- [125271]="r",
- [125272]="r",
- [125273]="r",
- [125278]="r",
- [125279]="r",
- [126464]="al",
- [126465]="al",
- [126466]="al",
- [126467]="al",
- [126469]="al",
- [126470]="al",
- [126471]="al",
- [126472]="al",
- [126473]="al",
- [126474]="al",
- [126475]="al",
- [126476]="al",
- [126477]="al",
- [126478]="al",
- [126479]="al",
- [126480]="al",
- [126481]="al",
- [126482]="al",
- [126483]="al",
- [126484]="al",
- [126485]="al",
- [126486]="al",
- [126487]="al",
- [126488]="al",
- [126489]="al",
- [126490]="al",
- [126491]="al",
- [126492]="al",
- [126493]="al",
- [126494]="al",
- [126495]="al",
- [126497]="al",
- [126498]="al",
- [126500]="al",
- [126503]="al",
- [126505]="al",
- [126506]="al",
- [126507]="al",
- [126508]="al",
- [126509]="al",
- [126510]="al",
- [126511]="al",
- [126512]="al",
- [126513]="al",
- [126514]="al",
- [126516]="al",
- [126517]="al",
- [126518]="al",
- [126519]="al",
- [126521]="al",
- [126523]="al",
- [126530]="al",
- [126535]="al",
- [126537]="al",
- [126539]="al",
- [126541]="al",
- [126542]="al",
- [126543]="al",
- [126545]="al",
- [126546]="al",
- [126548]="al",
- [126551]="al",
- [126553]="al",
- [126555]="al",
- [126557]="al",
- [126559]="al",
- [126561]="al",
- [126562]="al",
- [126564]="al",
- [126567]="al",
- [126568]="al",
- [126569]="al",
- [126570]="al",
- [126572]="al",
- [126573]="al",
- [126574]="al",
- [126575]="al",
- [126576]="al",
- [126577]="al",
- [126578]="al",
- [126580]="al",
- [126581]="al",
- [126582]="al",
- [126583]="al",
- [126585]="al",
- [126586]="al",
- [126587]="al",
- [126588]="al",
- [126590]="al",
- [126592]="al",
- [126593]="al",
- [126594]="al",
- [126595]="al",
- [126596]="al",
- [126597]="al",
- [126598]="al",
- [126599]="al",
- [126600]="al",
- [126601]="al",
- [126603]="al",
- [126604]="al",
- [126605]="al",
- [126606]="al",
- [126607]="al",
- [126608]="al",
- [126609]="al",
- [126610]="al",
- [126611]="al",
- [126612]="al",
- [126613]="al",
- [126614]="al",
- [126615]="al",
- [126616]="al",
- [126617]="al",
- [126618]="al",
- [126619]="al",
- [126625]="al",
- [126626]="al",
- [126627]="al",
- [126629]="al",
- [126630]="al",
- [126631]="al",
- [126632]="al",
- [126633]="al",
- [126635]="al",
- [126636]="al",
- [126637]="al",
- [126638]="al",
- [126639]="al",
- [126640]="al",
- [126641]="al",
- [126642]="al",
- [126643]="al",
- [126644]="al",
- [126645]="al",
- [126646]="al",
- [126647]="al",
- [126648]="al",
- [126649]="al",
- [126650]="al",
- [126651]="al",
- [126704]="on",
- [126705]="on",
- [126976]="on",
- [126977]="on",
- [126978]="on",
- [126979]="on",
- [126980]="on",
- [126981]="on",
- [126982]="on",
- [126983]="on",
- [126984]="on",
- [126985]="on",
- [126986]="on",
- [126987]="on",
- [126988]="on",
- [126989]="on",
- [126990]="on",
- [126991]="on",
- [126992]="on",
- [126993]="on",
- [126994]="on",
- [126995]="on",
- [126996]="on",
- [126997]="on",
- [126998]="on",
- [126999]="on",
- [127000]="on",
- [127001]="on",
- [127002]="on",
- [127003]="on",
- [127004]="on",
- [127005]="on",
- [127006]="on",
- [127007]="on",
- [127008]="on",
- [127009]="on",
- [127010]="on",
- [127011]="on",
- [127012]="on",
- [127013]="on",
- [127014]="on",
- [127015]="on",
- [127016]="on",
- [127017]="on",
- [127018]="on",
- [127019]="on",
- [127024]="on",
- [127025]="on",
- [127026]="on",
- [127027]="on",
- [127028]="on",
- [127029]="on",
- [127030]="on",
- [127031]="on",
- [127032]="on",
- [127033]="on",
- [127034]="on",
- [127035]="on",
- [127036]="on",
- [127037]="on",
- [127038]="on",
- [127039]="on",
- [127040]="on",
- [127041]="on",
- [127042]="on",
- [127043]="on",
- [127044]="on",
- [127045]="on",
- [127046]="on",
- [127047]="on",
- [127048]="on",
- [127049]="on",
- [127050]="on",
- [127051]="on",
- [127052]="on",
- [127053]="on",
- [127054]="on",
- [127055]="on",
- [127056]="on",
- [127057]="on",
- [127058]="on",
- [127059]="on",
- [127060]="on",
- [127061]="on",
- [127062]="on",
- [127063]="on",
- [127064]="on",
- [127065]="on",
- [127066]="on",
- [127067]="on",
- [127068]="on",
- [127069]="on",
- [127070]="on",
- [127071]="on",
- [127072]="on",
- [127073]="on",
- [127074]="on",
- [127075]="on",
- [127076]="on",
- [127077]="on",
- [127078]="on",
- [127079]="on",
- [127080]="on",
- [127081]="on",
- [127082]="on",
- [127083]="on",
- [127084]="on",
- [127085]="on",
- [127086]="on",
- [127087]="on",
- [127088]="on",
- [127089]="on",
- [127090]="on",
- [127091]="on",
- [127092]="on",
- [127093]="on",
- [127094]="on",
- [127095]="on",
- [127096]="on",
- [127097]="on",
- [127098]="on",
- [127099]="on",
- [127100]="on",
- [127101]="on",
- [127102]="on",
- [127103]="on",
- [127104]="on",
- [127105]="on",
- [127106]="on",
- [127107]="on",
- [127108]="on",
- [127109]="on",
- [127110]="on",
- [127111]="on",
- [127112]="on",
- [127113]="on",
- [127114]="on",
- [127115]="on",
- [127116]="on",
- [127117]="on",
- [127118]="on",
- [127119]="on",
- [127120]="on",
- [127121]="on",
- [127122]="on",
- [127123]="on",
- [127136]="on",
- [127137]="on",
- [127138]="on",
- [127139]="on",
- [127140]="on",
- [127141]="on",
- [127142]="on",
- [127143]="on",
- [127144]="on",
- [127145]="on",
- [127146]="on",
- [127147]="on",
- [127148]="on",
- [127149]="on",
- [127150]="on",
- [127153]="on",
- [127154]="on",
- [127155]="on",
- [127156]="on",
- [127157]="on",
- [127158]="on",
- [127159]="on",
- [127160]="on",
- [127161]="on",
- [127162]="on",
- [127163]="on",
- [127164]="on",
- [127165]="on",
- [127166]="on",
- [127167]="on",
- [127169]="on",
- [127170]="on",
- [127171]="on",
- [127172]="on",
- [127173]="on",
- [127174]="on",
- [127175]="on",
- [127176]="on",
- [127177]="on",
- [127178]="on",
- [127179]="on",
- [127180]="on",
- [127181]="on",
- [127182]="on",
- [127183]="on",
- [127185]="on",
- [127186]="on",
- [127187]="on",
- [127188]="on",
- [127189]="on",
- [127190]="on",
- [127191]="on",
- [127192]="on",
- [127193]="on",
- [127194]="on",
- [127195]="on",
- [127196]="on",
- [127197]="on",
- [127198]="on",
- [127199]="on",
- [127200]="on",
- [127201]="on",
- [127202]="on",
- [127203]="on",
- [127204]="on",
- [127205]="on",
- [127206]="on",
- [127207]="on",
- [127208]="on",
- [127209]="on",
- [127210]="on",
- [127211]="on",
- [127212]="on",
- [127213]="on",
- [127214]="on",
- [127215]="on",
- [127216]="on",
- [127217]="on",
- [127218]="on",
- [127219]="on",
- [127220]="on",
- [127221]="on",
- [127232]="en",
- [127233]="en",
- [127234]="en",
- [127235]="en",
- [127236]="en",
- [127237]="en",
- [127238]="en",
- [127239]="en",
- [127240]="en",
- [127241]="en",
- [127242]="en",
- [127243]="on",
- [127244]="on",
- [127338]="on",
- [127339]="on",
- [127584]="on",
- [127585]="on",
- [127586]="on",
- [127587]="on",
- [127588]="on",
- [127589]="on",
- [127744]="on",
- [127745]="on",
- [127746]="on",
- [127747]="on",
- [127748]="on",
- [127749]="on",
- [127750]="on",
- [127751]="on",
- [127752]="on",
- [127753]="on",
- [127754]="on",
- [127755]="on",
- [127756]="on",
- [127757]="on",
- [127758]="on",
- [127759]="on",
- [127760]="on",
- [127761]="on",
- [127762]="on",
- [127763]="on",
- [127764]="on",
- [127765]="on",
- [127766]="on",
- [127767]="on",
- [127768]="on",
- [127769]="on",
- [127770]="on",
- [127771]="on",
- [127772]="on",
- [127773]="on",
- [127774]="on",
- [127775]="on",
- [127776]="on",
- [127777]="on",
- [127778]="on",
- [127779]="on",
- [127780]="on",
- [127781]="on",
- [127782]="on",
- [127783]="on",
- [127784]="on",
- [127785]="on",
- [127786]="on",
- [127787]="on",
- [127788]="on",
- [127789]="on",
- [127790]="on",
- [127791]="on",
- [127792]="on",
- [127793]="on",
- [127794]="on",
- [127795]="on",
- [127796]="on",
- [127797]="on",
- [127798]="on",
- [127799]="on",
- [127800]="on",
- [127801]="on",
- [127802]="on",
- [127803]="on",
- [127804]="on",
- [127805]="on",
- [127806]="on",
- [127807]="on",
- [127808]="on",
- [127809]="on",
- [127810]="on",
- [127811]="on",
- [127812]="on",
- [127813]="on",
- [127814]="on",
- [127815]="on",
- [127816]="on",
- [127817]="on",
- [127818]="on",
- [127819]="on",
- [127820]="on",
- [127821]="on",
- [127822]="on",
- [127823]="on",
- [127824]="on",
- [127825]="on",
- [127826]="on",
- [127827]="on",
- [127828]="on",
- [127829]="on",
- [127830]="on",
- [127831]="on",
- [127832]="on",
- [127833]="on",
- [127834]="on",
- [127835]="on",
- [127836]="on",
- [127837]="on",
- [127838]="on",
- [127839]="on",
- [127840]="on",
- [127841]="on",
- [127842]="on",
- [127843]="on",
- [127844]="on",
- [127845]="on",
- [127846]="on",
- [127847]="on",
- [127848]="on",
- [127849]="on",
- [127850]="on",
- [127851]="on",
- [127852]="on",
- [127853]="on",
- [127854]="on",
- [127855]="on",
- [127856]="on",
- [127857]="on",
- [127858]="on",
- [127859]="on",
- [127860]="on",
- [127861]="on",
- [127862]="on",
- [127863]="on",
- [127864]="on",
- [127865]="on",
- [127866]="on",
- [127867]="on",
- [127868]="on",
- [127869]="on",
- [127870]="on",
- [127871]="on",
- [127872]="on",
- [127873]="on",
- [127874]="on",
- [127875]="on",
- [127876]="on",
- [127877]="on",
- [127878]="on",
- [127879]="on",
- [127880]="on",
- [127881]="on",
- [127882]="on",
- [127883]="on",
- [127884]="on",
- [127885]="on",
- [127886]="on",
- [127887]="on",
- [127888]="on",
- [127889]="on",
- [127890]="on",
- [127891]="on",
- [127892]="on",
- [127893]="on",
- [127894]="on",
- [127895]="on",
- [127896]="on",
- [127897]="on",
- [127898]="on",
- [127899]="on",
- [127900]="on",
- [127901]="on",
- [127902]="on",
- [127903]="on",
- [127904]="on",
- [127905]="on",
- [127906]="on",
- [127907]="on",
- [127908]="on",
- [127909]="on",
- [127910]="on",
- [127911]="on",
- [127912]="on",
- [127913]="on",
- [127914]="on",
- [127915]="on",
- [127916]="on",
- [127917]="on",
- [127918]="on",
- [127919]="on",
- [127920]="on",
- [127921]="on",
- [127922]="on",
- [127923]="on",
- [127924]="on",
- [127925]="on",
- [127926]="on",
- [127927]="on",
- [127928]="on",
- [127929]="on",
- [127930]="on",
- [127931]="on",
- [127932]="on",
- [127933]="on",
- [127934]="on",
- [127935]="on",
- [127936]="on",
- [127937]="on",
- [127938]="on",
- [127939]="on",
- [127940]="on",
- [127941]="on",
- [127942]="on",
- [127943]="on",
- [127944]="on",
- [127945]="on",
- [127946]="on",
- [127947]="on",
- [127948]="on",
- [127949]="on",
- [127950]="on",
- [127951]="on",
- [127952]="on",
- [127953]="on",
- [127954]="on",
- [127955]="on",
- [127956]="on",
- [127957]="on",
- [127958]="on",
- [127959]="on",
- [127960]="on",
- [127961]="on",
- [127962]="on",
- [127963]="on",
- [127964]="on",
- [127965]="on",
- [127966]="on",
- [127967]="on",
- [127968]="on",
- [127969]="on",
- [127970]="on",
- [127971]="on",
- [127972]="on",
- [127973]="on",
- [127974]="on",
- [127975]="on",
- [127976]="on",
- [127977]="on",
- [127978]="on",
- [127979]="on",
- [127980]="on",
- [127981]="on",
- [127982]="on",
- [127983]="on",
- [127984]="on",
- [127985]="on",
- [127986]="on",
- [127987]="on",
- [127988]="on",
- [127989]="on",
- [127990]="on",
- [127991]="on",
- [127992]="on",
- [127993]="on",
- [127994]="on",
- [127995]="on",
- [127996]="on",
- [127997]="on",
- [127998]="on",
- [127999]="on",
- [128000]="on",
- [128001]="on",
- [128002]="on",
- [128003]="on",
- [128004]="on",
- [128005]="on",
- [128006]="on",
- [128007]="on",
- [128008]="on",
- [128009]="on",
- [128010]="on",
- [128011]="on",
- [128012]="on",
- [128013]="on",
- [128014]="on",
- [128015]="on",
- [128016]="on",
- [128017]="on",
- [128018]="on",
- [128019]="on",
- [128020]="on",
- [128021]="on",
- [128022]="on",
- [128023]="on",
- [128024]="on",
- [128025]="on",
- [128026]="on",
- [128027]="on",
- [128028]="on",
- [128029]="on",
- [128030]="on",
- [128031]="on",
- [128032]="on",
- [128033]="on",
- [128034]="on",
- [128035]="on",
- [128036]="on",
- [128037]="on",
- [128038]="on",
- [128039]="on",
- [128040]="on",
- [128041]="on",
- [128042]="on",
- [128043]="on",
- [128044]="on",
- [128045]="on",
- [128046]="on",
- [128047]="on",
- [128048]="on",
- [128049]="on",
- [128050]="on",
- [128051]="on",
- [128052]="on",
- [128053]="on",
- [128054]="on",
- [128055]="on",
- [128056]="on",
- [128057]="on",
- [128058]="on",
- [128059]="on",
- [128060]="on",
- [128061]="on",
- [128062]="on",
- [128063]="on",
- [128064]="on",
- [128065]="on",
- [128066]="on",
- [128067]="on",
- [128068]="on",
- [128069]="on",
- [128070]="on",
- [128071]="on",
- [128072]="on",
- [128073]="on",
- [128074]="on",
- [128075]="on",
- [128076]="on",
- [128077]="on",
- [128078]="on",
- [128079]="on",
- [128080]="on",
- [128081]="on",
- [128082]="on",
- [128083]="on",
- [128084]="on",
- [128085]="on",
- [128086]="on",
- [128087]="on",
- [128088]="on",
- [128089]="on",
- [128090]="on",
- [128091]="on",
- [128092]="on",
- [128093]="on",
- [128094]="on",
- [128095]="on",
- [128096]="on",
- [128097]="on",
- [128098]="on",
- [128099]="on",
- [128100]="on",
- [128101]="on",
- [128102]="on",
- [128103]="on",
- [128104]="on",
- [128105]="on",
- [128106]="on",
- [128107]="on",
- [128108]="on",
- [128109]="on",
- [128110]="on",
- [128111]="on",
- [128112]="on",
- [128113]="on",
- [128114]="on",
- [128115]="on",
- [128116]="on",
- [128117]="on",
- [128118]="on",
- [128119]="on",
- [128120]="on",
- [128121]="on",
- [128122]="on",
- [128123]="on",
- [128124]="on",
- [128125]="on",
- [128126]="on",
- [128127]="on",
- [128128]="on",
- [128129]="on",
- [128130]="on",
- [128131]="on",
- [128132]="on",
- [128133]="on",
- [128134]="on",
- [128135]="on",
- [128136]="on",
- [128137]="on",
- [128138]="on",
- [128139]="on",
- [128140]="on",
- [128141]="on",
- [128142]="on",
- [128143]="on",
- [128144]="on",
- [128145]="on",
- [128146]="on",
- [128147]="on",
- [128148]="on",
- [128149]="on",
- [128150]="on",
- [128151]="on",
- [128152]="on",
- [128153]="on",
- [128154]="on",
- [128155]="on",
- [128156]="on",
- [128157]="on",
- [128158]="on",
- [128159]="on",
- [128160]="on",
- [128161]="on",
- [128162]="on",
- [128163]="on",
- [128164]="on",
- [128165]="on",
- [128166]="on",
- [128167]="on",
- [128168]="on",
- [128169]="on",
- [128170]="on",
- [128171]="on",
- [128172]="on",
- [128173]="on",
- [128174]="on",
- [128175]="on",
- [128176]="on",
- [128177]="on",
- [128178]="on",
- [128179]="on",
- [128180]="on",
- [128181]="on",
- [128182]="on",
- [128183]="on",
- [128184]="on",
- [128185]="on",
- [128186]="on",
- [128187]="on",
- [128188]="on",
- [128189]="on",
- [128190]="on",
- [128191]="on",
- [128192]="on",
- [128193]="on",
- [128194]="on",
- [128195]="on",
- [128196]="on",
- [128197]="on",
- [128198]="on",
- [128199]="on",
- [128200]="on",
- [128201]="on",
- [128202]="on",
- [128203]="on",
- [128204]="on",
- [128205]="on",
- [128206]="on",
- [128207]="on",
- [128208]="on",
- [128209]="on",
- [128210]="on",
- [128211]="on",
- [128212]="on",
- [128213]="on",
- [128214]="on",
- [128215]="on",
- [128216]="on",
- [128217]="on",
- [128218]="on",
- [128219]="on",
- [128220]="on",
- [128221]="on",
- [128222]="on",
- [128223]="on",
- [128224]="on",
- [128225]="on",
- [128226]="on",
- [128227]="on",
- [128228]="on",
- [128229]="on",
- [128230]="on",
- [128231]="on",
- [128232]="on",
- [128233]="on",
- [128234]="on",
- [128235]="on",
- [128236]="on",
- [128237]="on",
- [128238]="on",
- [128239]="on",
- [128240]="on",
- [128241]="on",
- [128242]="on",
- [128243]="on",
- [128244]="on",
- [128245]="on",
- [128246]="on",
- [128247]="on",
- [128248]="on",
- [128249]="on",
- [128250]="on",
- [128251]="on",
- [128252]="on",
- [128253]="on",
- [128254]="on",
- [128255]="on",
- [128256]="on",
- [128257]="on",
- [128258]="on",
- [128259]="on",
- [128260]="on",
- [128261]="on",
- [128262]="on",
- [128263]="on",
- [128264]="on",
- [128265]="on",
- [128266]="on",
- [128267]="on",
- [128268]="on",
- [128269]="on",
- [128270]="on",
- [128271]="on",
- [128272]="on",
- [128273]="on",
- [128274]="on",
- [128275]="on",
- [128276]="on",
- [128277]="on",
- [128278]="on",
- [128279]="on",
- [128280]="on",
- [128281]="on",
- [128282]="on",
- [128283]="on",
- [128284]="on",
- [128285]="on",
- [128286]="on",
- [128287]="on",
- [128288]="on",
- [128289]="on",
- [128290]="on",
- [128291]="on",
- [128292]="on",
- [128293]="on",
- [128294]="on",
- [128295]="on",
- [128296]="on",
- [128297]="on",
- [128298]="on",
- [128299]="on",
- [128300]="on",
- [128301]="on",
- [128302]="on",
- [128303]="on",
- [128304]="on",
- [128305]="on",
- [128306]="on",
- [128307]="on",
- [128308]="on",
- [128309]="on",
- [128310]="on",
- [128311]="on",
- [128312]="on",
- [128313]="on",
- [128314]="on",
- [128315]="on",
- [128316]="on",
- [128317]="on",
- [128318]="on",
- [128319]="on",
- [128320]="on",
- [128321]="on",
- [128322]="on",
- [128323]="on",
- [128324]="on",
- [128325]="on",
- [128326]="on",
- [128327]="on",
- [128328]="on",
- [128329]="on",
- [128330]="on",
- [128331]="on",
- [128332]="on",
- [128333]="on",
- [128334]="on",
- [128335]="on",
- [128336]="on",
- [128337]="on",
- [128338]="on",
- [128339]="on",
- [128340]="on",
- [128341]="on",
- [128342]="on",
- [128343]="on",
- [128344]="on",
- [128345]="on",
- [128346]="on",
- [128347]="on",
- [128348]="on",
- [128349]="on",
- [128350]="on",
- [128351]="on",
- [128352]="on",
- [128353]="on",
- [128354]="on",
- [128355]="on",
- [128356]="on",
- [128357]="on",
- [128358]="on",
- [128359]="on",
- [128360]="on",
- [128361]="on",
- [128362]="on",
- [128363]="on",
- [128364]="on",
- [128365]="on",
- [128366]="on",
- [128367]="on",
- [128368]="on",
- [128369]="on",
- [128370]="on",
- [128371]="on",
- [128372]="on",
- [128373]="on",
- [128374]="on",
- [128375]="on",
- [128376]="on",
- [128377]="on",
- [128378]="on",
- [128379]="on",
- [128380]="on",
- [128381]="on",
- [128382]="on",
- [128383]="on",
- [128384]="on",
- [128385]="on",
- [128386]="on",
- [128387]="on",
- [128388]="on",
- [128389]="on",
- [128390]="on",
- [128391]="on",
- [128392]="on",
- [128393]="on",
- [128394]="on",
- [128395]="on",
- [128396]="on",
- [128397]="on",
- [128398]="on",
- [128399]="on",
- [128400]="on",
- [128401]="on",
- [128402]="on",
- [128403]="on",
- [128404]="on",
- [128405]="on",
- [128406]="on",
- [128407]="on",
- [128408]="on",
- [128409]="on",
- [128410]="on",
- [128411]="on",
- [128412]="on",
- [128413]="on",
- [128414]="on",
- [128415]="on",
- [128416]="on",
- [128417]="on",
- [128418]="on",
- [128419]="on",
- [128420]="on",
- [128421]="on",
- [128422]="on",
- [128423]="on",
- [128424]="on",
- [128425]="on",
- [128426]="on",
- [128427]="on",
- [128428]="on",
- [128429]="on",
- [128430]="on",
- [128431]="on",
- [128432]="on",
- [128433]="on",
- [128434]="on",
- [128435]="on",
- [128436]="on",
- [128437]="on",
- [128438]="on",
- [128439]="on",
- [128440]="on",
- [128441]="on",
- [128442]="on",
- [128443]="on",
- [128444]="on",
- [128445]="on",
- [128446]="on",
- [128447]="on",
- [128448]="on",
- [128449]="on",
- [128450]="on",
- [128451]="on",
- [128452]="on",
- [128453]="on",
- [128454]="on",
- [128455]="on",
- [128456]="on",
- [128457]="on",
- [128458]="on",
- [128459]="on",
- [128460]="on",
- [128461]="on",
- [128462]="on",
- [128463]="on",
- [128464]="on",
- [128465]="on",
- [128466]="on",
- [128467]="on",
- [128468]="on",
- [128469]="on",
- [128470]="on",
- [128471]="on",
- [128472]="on",
- [128473]="on",
- [128474]="on",
- [128475]="on",
- [128476]="on",
- [128477]="on",
- [128478]="on",
- [128479]="on",
- [128480]="on",
- [128481]="on",
- [128482]="on",
- [128483]="on",
- [128484]="on",
- [128485]="on",
- [128486]="on",
- [128487]="on",
- [128488]="on",
- [128489]="on",
- [128490]="on",
- [128491]="on",
- [128492]="on",
- [128493]="on",
- [128494]="on",
- [128495]="on",
- [128496]="on",
- [128497]="on",
- [128498]="on",
- [128499]="on",
- [128500]="on",
- [128501]="on",
- [128502]="on",
- [128503]="on",
- [128504]="on",
- [128505]="on",
- [128506]="on",
- [128507]="on",
- [128508]="on",
- [128509]="on",
- [128510]="on",
- [128511]="on",
- [128512]="on",
- [128513]="on",
- [128514]="on",
- [128515]="on",
- [128516]="on",
- [128517]="on",
- [128518]="on",
- [128519]="on",
- [128520]="on",
- [128521]="on",
- [128522]="on",
- [128523]="on",
- [128524]="on",
- [128525]="on",
- [128526]="on",
- [128527]="on",
- [128528]="on",
- [128529]="on",
- [128530]="on",
- [128531]="on",
- [128532]="on",
- [128533]="on",
- [128534]="on",
- [128535]="on",
- [128536]="on",
- [128537]="on",
- [128538]="on",
- [128539]="on",
- [128540]="on",
- [128541]="on",
- [128542]="on",
- [128543]="on",
- [128544]="on",
- [128545]="on",
- [128546]="on",
- [128547]="on",
- [128548]="on",
- [128549]="on",
- [128550]="on",
- [128551]="on",
- [128552]="on",
- [128553]="on",
- [128554]="on",
- [128555]="on",
- [128556]="on",
- [128557]="on",
- [128558]="on",
- [128559]="on",
- [128560]="on",
- [128561]="on",
- [128562]="on",
- [128563]="on",
- [128564]="on",
- [128565]="on",
- [128566]="on",
- [128567]="on",
- [128568]="on",
- [128569]="on",
- [128570]="on",
- [128571]="on",
- [128572]="on",
- [128573]="on",
- [128574]="on",
- [128575]="on",
- [128576]="on",
- [128577]="on",
- [128578]="on",
- [128579]="on",
- [128580]="on",
- [128581]="on",
- [128582]="on",
- [128583]="on",
- [128584]="on",
- [128585]="on",
- [128586]="on",
- [128587]="on",
- [128588]="on",
- [128589]="on",
- [128590]="on",
- [128591]="on",
- [128592]="on",
- [128593]="on",
- [128594]="on",
- [128595]="on",
- [128596]="on",
- [128597]="on",
- [128598]="on",
- [128599]="on",
- [128600]="on",
- [128601]="on",
- [128602]="on",
- [128603]="on",
- [128604]="on",
- [128605]="on",
- [128606]="on",
- [128607]="on",
- [128608]="on",
- [128609]="on",
- [128610]="on",
- [128611]="on",
- [128612]="on",
- [128613]="on",
- [128614]="on",
- [128615]="on",
- [128616]="on",
- [128617]="on",
- [128618]="on",
- [128619]="on",
- [128620]="on",
- [128621]="on",
- [128622]="on",
- [128623]="on",
- [128624]="on",
- [128625]="on",
- [128626]="on",
- [128627]="on",
- [128628]="on",
- [128629]="on",
- [128630]="on",
- [128631]="on",
- [128632]="on",
- [128633]="on",
- [128634]="on",
- [128635]="on",
- [128636]="on",
- [128637]="on",
- [128638]="on",
- [128639]="on",
- [128640]="on",
- [128641]="on",
- [128642]="on",
- [128643]="on",
- [128644]="on",
- [128645]="on",
- [128646]="on",
- [128647]="on",
- [128648]="on",
- [128649]="on",
- [128650]="on",
- [128651]="on",
- [128652]="on",
- [128653]="on",
- [128654]="on",
- [128655]="on",
- [128656]="on",
- [128657]="on",
- [128658]="on",
- [128659]="on",
- [128660]="on",
- [128661]="on",
- [128662]="on",
- [128663]="on",
- [128664]="on",
- [128665]="on",
- [128666]="on",
- [128667]="on",
- [128668]="on",
- [128669]="on",
- [128670]="on",
- [128671]="on",
- [128672]="on",
- [128673]="on",
- [128674]="on",
- [128675]="on",
- [128676]="on",
- [128677]="on",
- [128678]="on",
- [128679]="on",
- [128680]="on",
- [128681]="on",
- [128682]="on",
- [128683]="on",
- [128684]="on",
- [128685]="on",
- [128686]="on",
- [128687]="on",
- [128688]="on",
- [128689]="on",
- [128690]="on",
- [128691]="on",
- [128692]="on",
- [128693]="on",
- [128694]="on",
- [128695]="on",
- [128696]="on",
- [128697]="on",
- [128698]="on",
- [128699]="on",
- [128700]="on",
- [128701]="on",
- [128702]="on",
- [128703]="on",
- [128704]="on",
- [128705]="on",
- [128706]="on",
- [128707]="on",
- [128708]="on",
- [128709]="on",
- [128710]="on",
- [128711]="on",
- [128712]="on",
- [128713]="on",
- [128714]="on",
- [128715]="on",
- [128716]="on",
- [128717]="on",
- [128718]="on",
- [128719]="on",
- [128720]="on",
- [128721]="on",
- [128722]="on",
- [128723]="on",
- [128724]="on",
- [128736]="on",
- [128737]="on",
- [128738]="on",
- [128739]="on",
- [128740]="on",
- [128741]="on",
- [128742]="on",
- [128743]="on",
- [128744]="on",
- [128745]="on",
- [128746]="on",
- [128747]="on",
- [128748]="on",
- [128752]="on",
- [128753]="on",
- [128754]="on",
- [128755]="on",
- [128756]="on",
- [128757]="on",
- [128758]="on",
- [128759]="on",
- [128760]="on",
- [128768]="on",
- [128769]="on",
- [128770]="on",
- [128771]="on",
- [128772]="on",
- [128773]="on",
- [128774]="on",
- [128775]="on",
- [128776]="on",
- [128777]="on",
- [128778]="on",
- [128779]="on",
- [128780]="on",
- [128781]="on",
- [128782]="on",
- [128783]="on",
- [128784]="on",
- [128785]="on",
- [128786]="on",
- [128787]="on",
- [128788]="on",
- [128789]="on",
- [128790]="on",
- [128791]="on",
- [128792]="on",
- [128793]="on",
- [128794]="on",
- [128795]="on",
- [128796]="on",
- [128797]="on",
- [128798]="on",
- [128799]="on",
- [128800]="on",
- [128801]="on",
- [128802]="on",
- [128803]="on",
- [128804]="on",
- [128805]="on",
- [128806]="on",
- [128807]="on",
- [128808]="on",
- [128809]="on",
- [128810]="on",
- [128811]="on",
- [128812]="on",
- [128813]="on",
- [128814]="on",
- [128815]="on",
- [128816]="on",
- [128817]="on",
- [128818]="on",
- [128819]="on",
- [128820]="on",
- [128821]="on",
- [128822]="on",
- [128823]="on",
- [128824]="on",
- [128825]="on",
- [128826]="on",
- [128827]="on",
- [128828]="on",
- [128829]="on",
- [128830]="on",
- [128831]="on",
- [128832]="on",
- [128833]="on",
- [128834]="on",
- [128835]="on",
- [128836]="on",
- [128837]="on",
- [128838]="on",
- [128839]="on",
- [128840]="on",
- [128841]="on",
- [128842]="on",
- [128843]="on",
- [128844]="on",
- [128845]="on",
- [128846]="on",
- [128847]="on",
- [128848]="on",
- [128849]="on",
- [128850]="on",
- [128851]="on",
- [128852]="on",
- [128853]="on",
- [128854]="on",
- [128855]="on",
- [128856]="on",
- [128857]="on",
- [128858]="on",
- [128859]="on",
- [128860]="on",
- [128861]="on",
- [128862]="on",
- [128863]="on",
- [128864]="on",
- [128865]="on",
- [128866]="on",
- [128867]="on",
- [128868]="on",
- [128869]="on",
- [128870]="on",
- [128871]="on",
- [128872]="on",
- [128873]="on",
- [128874]="on",
- [128875]="on",
- [128876]="on",
- [128877]="on",
- [128878]="on",
- [128879]="on",
- [128880]="on",
- [128881]="on",
- [128882]="on",
- [128883]="on",
- [128896]="on",
- [128897]="on",
- [128898]="on",
- [128899]="on",
- [128900]="on",
- [128901]="on",
- [128902]="on",
- [128903]="on",
- [128904]="on",
- [128905]="on",
- [128906]="on",
- [128907]="on",
- [128908]="on",
- [128909]="on",
- [128910]="on",
- [128911]="on",
- [128912]="on",
- [128913]="on",
- [128914]="on",
- [128915]="on",
- [128916]="on",
- [128917]="on",
- [128918]="on",
- [128919]="on",
- [128920]="on",
- [128921]="on",
- [128922]="on",
- [128923]="on",
- [128924]="on",
- [128925]="on",
- [128926]="on",
- [128927]="on",
- [128928]="on",
- [128929]="on",
- [128930]="on",
- [128931]="on",
- [128932]="on",
- [128933]="on",
- [128934]="on",
- [128935]="on",
- [128936]="on",
- [128937]="on",
- [128938]="on",
- [128939]="on",
- [128940]="on",
- [128941]="on",
- [128942]="on",
- [128943]="on",
- [128944]="on",
- [128945]="on",
- [128946]="on",
- [128947]="on",
- [128948]="on",
- [128949]="on",
- [128950]="on",
- [128951]="on",
- [128952]="on",
- [128953]="on",
- [128954]="on",
- [128955]="on",
- [128956]="on",
- [128957]="on",
- [128958]="on",
- [128959]="on",
- [128960]="on",
- [128961]="on",
- [128962]="on",
- [128963]="on",
- [128964]="on",
- [128965]="on",
- [128966]="on",
- [128967]="on",
- [128968]="on",
- [128969]="on",
- [128970]="on",
- [128971]="on",
- [128972]="on",
- [128973]="on",
- [128974]="on",
- [128975]="on",
- [128976]="on",
- [128977]="on",
- [128978]="on",
- [128979]="on",
- [128980]="on",
- [129024]="on",
- [129025]="on",
- [129026]="on",
- [129027]="on",
- [129028]="on",
- [129029]="on",
- [129030]="on",
- [129031]="on",
- [129032]="on",
- [129033]="on",
- [129034]="on",
- [129035]="on",
- [129040]="on",
- [129041]="on",
- [129042]="on",
- [129043]="on",
- [129044]="on",
- [129045]="on",
- [129046]="on",
- [129047]="on",
- [129048]="on",
- [129049]="on",
- [129050]="on",
- [129051]="on",
- [129052]="on",
- [129053]="on",
- [129054]="on",
- [129055]="on",
- [129056]="on",
- [129057]="on",
- [129058]="on",
- [129059]="on",
- [129060]="on",
- [129061]="on",
- [129062]="on",
- [129063]="on",
- [129064]="on",
- [129065]="on",
- [129066]="on",
- [129067]="on",
- [129068]="on",
- [129069]="on",
- [129070]="on",
- [129071]="on",
- [129072]="on",
- [129073]="on",
- [129074]="on",
- [129075]="on",
- [129076]="on",
- [129077]="on",
- [129078]="on",
- [129079]="on",
- [129080]="on",
- [129081]="on",
- [129082]="on",
- [129083]="on",
- [129084]="on",
- [129085]="on",
- [129086]="on",
- [129087]="on",
- [129088]="on",
- [129089]="on",
- [129090]="on",
- [129091]="on",
- [129092]="on",
- [129093]="on",
- [129094]="on",
- [129095]="on",
- [129104]="on",
- [129105]="on",
- [129106]="on",
- [129107]="on",
- [129108]="on",
- [129109]="on",
- [129110]="on",
- [129111]="on",
- [129112]="on",
- [129113]="on",
- [129120]="on",
- [129121]="on",
- [129122]="on",
- [129123]="on",
- [129124]="on",
- [129125]="on",
- [129126]="on",
- [129127]="on",
- [129128]="on",
- [129129]="on",
- [129130]="on",
- [129131]="on",
- [129132]="on",
- [129133]="on",
- [129134]="on",
- [129135]="on",
- [129136]="on",
- [129137]="on",
- [129138]="on",
- [129139]="on",
- [129140]="on",
- [129141]="on",
- [129142]="on",
- [129143]="on",
- [129144]="on",
- [129145]="on",
- [129146]="on",
- [129147]="on",
- [129148]="on",
- [129149]="on",
- [129150]="on",
- [129151]="on",
- [129152]="on",
- [129153]="on",
- [129154]="on",
- [129155]="on",
- [129156]="on",
- [129157]="on",
- [129158]="on",
- [129159]="on",
- [129168]="on",
- [129169]="on",
- [129170]="on",
- [129171]="on",
- [129172]="on",
- [129173]="on",
- [129174]="on",
- [129175]="on",
- [129176]="on",
- [129177]="on",
- [129178]="on",
- [129179]="on",
- [129180]="on",
- [129181]="on",
- [129182]="on",
- [129183]="on",
- [129184]="on",
- [129185]="on",
- [129186]="on",
- [129187]="on",
- [129188]="on",
- [129189]="on",
- [129190]="on",
- [129191]="on",
- [129192]="on",
- [129193]="on",
- [129194]="on",
- [129195]="on",
- [129196]="on",
- [129197]="on",
- [129280]="on",
- [129281]="on",
- [129282]="on",
- [129283]="on",
- [129284]="on",
- [129285]="on",
- [129286]="on",
- [129287]="on",
- [129288]="on",
- [129289]="on",
- [129290]="on",
- [129291]="on",
- [129296]="on",
- [129297]="on",
- [129298]="on",
- [129299]="on",
- [129300]="on",
- [129301]="on",
- [129302]="on",
- [129303]="on",
- [129304]="on",
- [129305]="on",
- [129306]="on",
- [129307]="on",
- [129308]="on",
- [129309]="on",
- [129310]="on",
- [129311]="on",
- [129312]="on",
- [129313]="on",
- [129314]="on",
- [129315]="on",
- [129316]="on",
- [129317]="on",
- [129318]="on",
- [129319]="on",
- [129320]="on",
- [129321]="on",
- [129322]="on",
- [129323]="on",
- [129324]="on",
- [129325]="on",
- [129326]="on",
- [129327]="on",
- [129328]="on",
- [129329]="on",
- [129330]="on",
- [129331]="on",
- [129332]="on",
- [129333]="on",
- [129334]="on",
- [129335]="on",
- [129336]="on",
- [129337]="on",
- [129338]="on",
- [129339]="on",
- [129340]="on",
- [129341]="on",
- [129342]="on",
- [129344]="on",
- [129345]="on",
- [129346]="on",
- [129347]="on",
- [129348]="on",
- [129349]="on",
- [129350]="on",
- [129351]="on",
- [129352]="on",
- [129353]="on",
- [129354]="on",
- [129355]="on",
- [129356]="on",
- [129360]="on",
- [129361]="on",
- [129362]="on",
- [129363]="on",
- [129364]="on",
- [129365]="on",
- [129366]="on",
- [129367]="on",
- [129368]="on",
- [129369]="on",
- [129370]="on",
- [129371]="on",
- [129372]="on",
- [129373]="on",
- [129374]="on",
- [129375]="on",
- [129376]="on",
- [129377]="on",
- [129378]="on",
- [129379]="on",
- [129380]="on",
- [129381]="on",
- [129382]="on",
- [129383]="on",
- [129384]="on",
- [129385]="on",
- [129386]="on",
- [129387]="on",
- [129408]="on",
- [129409]="on",
- [129410]="on",
- [129411]="on",
- [129412]="on",
- [129413]="on",
- [129414]="on",
- [129415]="on",
- [129416]="on",
- [129417]="on",
- [129418]="on",
- [129419]="on",
- [129420]="on",
- [129421]="on",
- [129422]="on",
- [129423]="on",
- [129424]="on",
- [129425]="on",
- [129426]="on",
- [129427]="on",
- [129428]="on",
- [129429]="on",
- [129430]="on",
- [129431]="on",
- [129472]="on",
- [129488]="on",
- [129489]="on",
- [129490]="on",
- [129491]="on",
- [129492]="on",
- [129493]="on",
- [129494]="on",
- [129495]="on",
- [129496]="on",
- [129497]="on",
- [129498]="on",
- [129499]="on",
- [129500]="on",
- [129501]="on",
- [129502]="on",
- [129503]="on",
- [129504]="on",
- [129505]="on",
- [129506]="on",
- [129507]="on",
- [129508]="on",
- [129509]="on",
- [129510]="on",
- [917505]="bn",
- [917536]="bn",
- [917537]="bn",
- [917538]="bn",
- [917539]="bn",
- [917540]="bn",
- [917541]="bn",
- [917542]="bn",
- [917543]="bn",
- [917544]="bn",
- [917545]="bn",
- [917546]="bn",
- [917547]="bn",
- [917548]="bn",
- [917549]="bn",
- [917550]="bn",
- [917551]="bn",
- [917552]="bn",
- [917553]="bn",
- [917554]="bn",
- [917555]="bn",
- [917556]="bn",
- [917557]="bn",
- [917558]="bn",
- [917559]="bn",
- [917560]="bn",
- [917561]="bn",
- [917562]="bn",
- [917563]="bn",
- [917564]="bn",
- [917565]="bn",
- [917566]="bn",
- [917567]="bn",
- [917568]="bn",
- [917569]="bn",
- [917570]="bn",
- [917571]="bn",
- [917572]="bn",
- [917573]="bn",
- [917574]="bn",
- [917575]="bn",
- [917576]="bn",
- [917577]="bn",
- [917578]="bn",
- [917579]="bn",
- [917580]="bn",
- [917581]="bn",
- [917582]="bn",
- [917583]="bn",
- [917584]="bn",
- [917585]="bn",
- [917586]="bn",
- [917587]="bn",
- [917588]="bn",
- [917589]="bn",
- [917590]="bn",
- [917591]="bn",
- [917592]="bn",
- [917593]="bn",
- [917594]="bn",
- [917595]="bn",
- [917596]="bn",
- [917597]="bn",
- [917598]="bn",
- [917599]="bn",
- [917600]="bn",
- [917601]="bn",
- [917602]="bn",
- [917603]="bn",
- [917604]="bn",
- [917605]="bn",
- [917606]="bn",
- [917607]="bn",
- [917608]="bn",
- [917609]="bn",
- [917610]="bn",
- [917611]="bn",
- [917612]="bn",
- [917613]="bn",
- [917614]="bn",
- [917615]="bn",
- [917616]="bn",
- [917617]="bn",
- [917618]="bn",
- [917619]="bn",
- [917620]="bn",
- [917621]="bn",
- [917622]="bn",
- [917623]="bn",
- [917624]="bn",
- [917625]="bn",
- [917626]="bn",
- [917627]="bn",
- [917628]="bn",
- [917629]="bn",
- [917630]="bn",
- [917631]="bn",
- },
- ["mirrors"]={
- [40]=41,
- [41]=40,
- [60]=62,
- [62]=60,
- [91]=93,
- [93]=91,
- [123]=125,
- [125]=123,
- [171]=187,
- [187]=171,
- [3898]=3899,
- [3899]=3898,
- [3900]=3901,
- [3901]=3900,
- [5787]=5788,
- [5788]=5787,
- [8249]=8250,
- [8250]=8249,
- [8261]=8262,
- [8262]=8261,
- [8317]=8318,
- [8318]=8317,
- [8333]=8334,
- [8334]=8333,
- [8712]=8715,
- [8713]=8716,
- [8714]=8717,
- [8715]=8712,
- [8716]=8713,
- [8717]=8714,
- [8725]=10741,
- [8764]=8765,
- [8765]=8764,
- [8771]=8909,
- [8786]=8787,
- [8787]=8786,
- [8788]=8789,
- [8789]=8788,
- [8804]=8805,
- [8805]=8804,
- [8806]=8807,
- [8807]=8806,
- [8808]=8809,
- [8809]=8808,
- [8810]=8811,
- [8811]=8810,
- [8814]=8815,
- [8815]=8814,
- [8816]=8817,
- [8817]=8816,
- [8818]=8819,
- [8819]=8818,
- [8820]=8821,
- [8821]=8820,
- [8822]=8823,
- [8823]=8822,
- [8824]=8825,
- [8825]=8824,
- [8826]=8827,
- [8827]=8826,
- [8828]=8829,
- [8829]=8828,
- [8830]=8831,
- [8831]=8830,
- [8832]=8833,
- [8833]=8832,
- [8834]=8835,
- [8835]=8834,
- [8836]=8837,
- [8837]=8836,
- [8838]=8839,
- [8839]=8838,
- [8840]=8841,
- [8841]=8840,
- [8842]=8843,
- [8843]=8842,
- [8847]=8848,
- [8848]=8847,
- [8849]=8850,
- [8850]=8849,
- [8856]=10680,
- [8866]=8867,
- [8867]=8866,
- [8870]=10974,
- [8872]=10980,
- [8873]=10979,
- [8875]=10981,
- [8880]=8881,
- [8881]=8880,
- [8882]=8883,
- [8883]=8882,
- [8884]=8885,
- [8885]=8884,
- [8886]=8887,
- [8887]=8886,
- [8905]=8906,
- [8906]=8905,
- [8907]=8908,
- [8908]=8907,
- [8909]=8771,
- [8912]=8913,
- [8913]=8912,
- [8918]=8919,
- [8919]=8918,
- [8920]=8921,
- [8921]=8920,
- [8922]=8923,
- [8923]=8922,
- [8924]=8925,
- [8925]=8924,
- [8926]=8927,
- [8927]=8926,
- [8928]=8929,
- [8929]=8928,
- [8930]=8931,
- [8931]=8930,
- [8932]=8933,
- [8933]=8932,
- [8934]=8935,
- [8935]=8934,
- [8936]=8937,
- [8937]=8936,
- [8938]=8939,
- [8939]=8938,
- [8940]=8941,
- [8941]=8940,
- [8944]=8945,
- [8945]=8944,
- [8946]=8954,
- [8947]=8955,
- [8948]=8956,
- [8950]=8957,
- [8951]=8958,
- [8954]=8946,
- [8955]=8947,
- [8956]=8948,
- [8957]=8950,
- [8958]=8951,
- [8968]=8969,
- [8969]=8968,
- [8970]=8971,
- [8971]=8970,
- [9001]=9002,
- [9002]=9001,
- [10088]=10089,
- [10089]=10088,
- [10090]=10091,
- [10091]=10090,
- [10092]=10093,
- [10093]=10092,
- [10094]=10095,
- [10095]=10094,
- [10096]=10097,
- [10097]=10096,
- [10098]=10099,
- [10099]=10098,
- [10100]=10101,
- [10101]=10100,
- [10179]=10180,
- [10180]=10179,
- [10181]=10182,
- [10182]=10181,
- [10184]=10185,
- [10185]=10184,
- [10187]=10189,
- [10189]=10187,
- [10197]=10198,
- [10198]=10197,
- [10205]=10206,
- [10206]=10205,
- [10210]=10211,
- [10211]=10210,
- [10212]=10213,
- [10213]=10212,
- [10214]=10215,
- [10215]=10214,
- [10216]=10217,
- [10217]=10216,
- [10218]=10219,
- [10219]=10218,
- [10220]=10221,
- [10221]=10220,
- [10222]=10223,
- [10223]=10222,
- [10627]=10628,
- [10628]=10627,
- [10629]=10630,
- [10630]=10629,
- [10631]=10632,
- [10632]=10631,
- [10633]=10634,
- [10634]=10633,
- [10635]=10636,
- [10636]=10635,
- [10637]=10640,
- [10638]=10639,
- [10639]=10638,
- [10640]=10637,
- [10641]=10642,
- [10642]=10641,
- [10643]=10644,
- [10644]=10643,
- [10645]=10646,
- [10646]=10645,
- [10647]=10648,
- [10648]=10647,
- [10680]=8856,
- [10688]=10689,
- [10689]=10688,
- [10692]=10693,
- [10693]=10692,
- [10703]=10704,
- [10704]=10703,
- [10705]=10706,
- [10706]=10705,
- [10708]=10709,
- [10709]=10708,
- [10712]=10713,
- [10713]=10712,
- [10714]=10715,
- [10715]=10714,
- [10741]=8725,
- [10744]=10745,
- [10745]=10744,
- [10748]=10749,
- [10749]=10748,
- [10795]=10796,
- [10796]=10795,
- [10797]=10798,
- [10798]=10797,
- [10804]=10805,
- [10805]=10804,
- [10812]=10813,
- [10813]=10812,
- [10852]=10853,
- [10853]=10852,
- [10873]=10874,
- [10874]=10873,
- [10877]=10878,
- [10878]=10877,
- [10879]=10880,
- [10880]=10879,
- [10881]=10882,
- [10882]=10881,
- [10883]=10884,
- [10884]=10883,
- [10891]=10892,
- [10892]=10891,
- [10897]=10898,
- [10898]=10897,
- [10899]=10900,
- [10900]=10899,
- [10901]=10902,
- [10902]=10901,
- [10903]=10904,
- [10904]=10903,
- [10905]=10906,
- [10906]=10905,
- [10907]=10908,
- [10908]=10907,
- [10913]=10914,
- [10914]=10913,
- [10918]=10919,
- [10919]=10918,
- [10920]=10921,
- [10921]=10920,
- [10922]=10923,
- [10923]=10922,
- [10924]=10925,
- [10925]=10924,
- [10927]=10928,
- [10928]=10927,
- [10931]=10932,
- [10932]=10931,
- [10939]=10940,
- [10940]=10939,
- [10941]=10942,
- [10942]=10941,
- [10943]=10944,
- [10944]=10943,
- [10945]=10946,
- [10946]=10945,
- [10947]=10948,
- [10948]=10947,
- [10949]=10950,
- [10950]=10949,
- [10957]=10958,
- [10958]=10957,
- [10959]=10960,
- [10960]=10959,
- [10961]=10962,
- [10962]=10961,
- [10963]=10964,
- [10964]=10963,
- [10965]=10966,
- [10966]=10965,
- [10974]=8870,
- [10979]=8873,
- [10980]=8872,
- [10981]=8875,
- [10988]=10989,
- [10989]=10988,
- [10999]=11000,
- [11000]=10999,
- [11001]=11002,
- [11002]=11001,
- [11778]=11779,
- [11779]=11778,
- [11780]=11781,
- [11781]=11780,
- [11785]=11786,
- [11786]=11785,
- [11788]=11789,
- [11789]=11788,
- [11804]=11805,
- [11805]=11804,
- [11808]=11809,
- [11809]=11808,
- [11810]=11811,
- [11811]=11810,
- [11812]=11813,
- [11813]=11812,
- [11814]=11815,
- [11815]=11814,
- [11816]=11817,
- [11817]=11816,
- [12296]=12297,
- [12297]=12296,
- [12298]=12299,
- [12299]=12298,
- [12300]=12301,
- [12301]=12300,
- [12302]=12303,
- [12303]=12302,
- [12304]=12305,
- [12305]=12304,
- [12308]=12309,
- [12309]=12308,
- [12310]=12311,
- [12311]=12310,
- [12312]=12313,
- [12313]=12312,
- [12314]=12315,
- [12315]=12314,
- [65113]=65114,
- [65114]=65113,
- [65115]=65116,
- [65116]=65115,
- [65117]=65118,
- [65118]=65117,
- [65124]=65125,
- [65125]=65124,
- [65288]=65289,
- [65289]=65288,
- [65308]=65310,
- [65310]=65308,
- [65339]=65341,
- [65341]=65339,
- [65371]=65373,
- [65373]=65371,
- [65375]=65376,
- [65376]=65375,
- [65378]=65379,
- [65379]=65378,
- },
- ["textclasses"]={
- [40]="open",
- [41]="close",
- [60]="open",
- [62]="close",
- [91]="open",
- [93]="close",
- [123]="open",
- [125]="close",
- [171]="open",
- [187]="close",
- [8249]="open",
- [8250]="close",
- [8317]="open",
- [8318]="close",
- [8333]="open",
- [8334]="close",
- [10647]="open",
- [10648]="close",
- [65113]="open",
- [65114]="close",
- [65115]="open",
- [65116]="close",
- [65117]="open",
- [65118]="close",
- [65124]="open",
- [65125]="close",
- [65288]="open",
- [65289]="close",
- [65308]="open",
- [65310]="close",
- [65339]="open",
- [65341]="close",
- [65371]="open",
- [65373]="close",
- [65375]="open",
- [65376]="close",
- [65378]="open",
- [65379]="close",
- },
-}
diff --git a/context/data/textadept/context/data/scite-context-data-context.lua b/context/data/textadept/context/data/scite-context-data-context.lua
deleted file mode 100644
index 315e98bef..000000000
--- a/context/data/textadept/context/data/scite-context-data-context.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
- ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "allfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "accentitalickernmathcontrolcode", "delimiteritalickernmathcontrolcode", "orditalickernmathcontrolcode", "charitalicwidthmathcontrolcode", "charitalicnoreboxmathcontrolcode", "boxednoitalickernmathcontrolcode", "nostaircasekernmathcontrolcode", "textitalickernmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationmcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continuewhenlmtxmode" },
- ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "lessboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" },
-} \ No newline at end of file
diff --git a/context/data/textadept/context/data/scite-context-data-interfaces.lua b/context/data/textadept/context/data/scite-context-data-interfaces.lua
deleted file mode 100644
index d2b000645..000000000
--- a/context/data/textadept/context/data/scite-context-data-interfaces.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
- ["common"]={ "AEacute", "AEligature", "AEmacron", "AMSTEX", "Aacute", "Abreve", "Abreveacute", "Abrevedotbelow", "Abrevegrave", "Abrevehook", "Abrevetilde", "Acaron", "Acircumflex", "Acircumflexacute", "Acircumflexdotbelow", "Acircumflexgrave", "Acircumflexhook", "Acircumflextilde", "Adiaeresis", "Adiaeresismacron", "Adotaccent", "Adotaccentmacron", "Adotbelow", "Adoublegrave", "AfterPar", "Agrave", "Ahook", "Ainvertedbreve", "Alpha", "Alphabeticnumerals", "AmSTeX", "Amacron", "And", "Angstrom", "Aogonek", "Aring", "Aringacute", "Arrowvert", "Astroke", "Atilde", "BeforePar", "Beta", "Bhook", "Big", "Bigg", "Biggl", "Biggm", "Biggr", "Bigl", "Bigm", "Bigr", "Box", "Bumpeq", "CONTEXT", "Cacute", "Cap", "Caps", "Ccaron", "Ccedilla", "Ccircumflex", "Cdotaccent", "Character", "Characters", "Chi", "Chook", "ConTeXt", "Context", "ConvertConstantAfter", "ConvertToConstant", "Cstroke", "Cup", "DAYLONG", "DAYSHORT", "DZcaronligature", "DZligature", "Dafrican", "Dcaron", "Ddownarrow", "Delta", "Dhook", "Doteq", "Downarrow", "Dstroke", "Dzcaronligature", "Dzligature", "ETEX", "Eacute", "Ebreve", "Ecaron", "Ecedilla", "Ecircumflex", "Ecircumflexacute", "Ecircumflexdotbelow", "Ecircumflexgrave", "Ecircumflexhook", "Ecircumflextilde", "Ediaeresis", "Edotaccent", "Edotbelow", "Edoublegrave", "Egrave", "Ehook", "Einvertedbreve", "Emacron", "Eogonek", "Epsilon", "Eta", "Eth", "Etilde", "Eulerconst", "EveryLine", "EveryPar", "Fhook", "Finv", "Gacute", "Game", "Gamma", "Gbreve", "Gcaron", "Gcircumflex", "Gcommaaccent", "Gdotaccent", "GetPar", "Ghook", "GotoPar", "Greeknumerals", "Gstroke", "Hat", "Hcaron", "Hcircumflex", "Hstroke", "IJligature", "INRSTEX", "Iacute", "Ibreve", "Icaron", "Icircumflex", "Idiaeresis", "Idotaccent", "Idotbelow", "Idoublegrave", "Igrave", "Ihook", "Iinvertedbreve", "Im", "Imacron", "Iogonek", "Iota", "Istroke", "Itilde", "Jcircumflex", "Join", "Kappa", "Kcaron", "Kcommaaccent", "Khook", "LAMSTEX", "LATEX", "LJligature", "LUAJITTEX", "LUAMETATEX", "LUATEX", "LaTeX", "Lacute", "LamSTeX", "Lambda", "Lbar", "Lcaron", "Lcommaaccent", "Ldotmiddle", "Ldsh", "Leftarrow", "Leftrightarrow", "Ljligature", "Lleftarrow", "Longleftarrow", "Longleftrightarrow", "Longmapsfrom", "Longmapsto", "Longrightarrow", "Lsh", "Lstroke", "Lua", "LuaMetaTeX", "LuaTeX", "LuajitTeX", "METAFONT", "METAFUN", "METAPOST", "MKII", "MKIV", "MKIX", "MKLX", "MKVI", "MKXI", "MKXL", "MONTH", "MONTHLONG", "MONTHSHORT", "MPII", "MPIV", "MPLX", "MPVI", "MPXL", "MPanchor", "MPbetex", "MPc", "MPcode", "MPcolor", "MPcoloronly", "MPcolumn", "MPd", "MPdrawing", "MPfontsizehskip", "MPgetmultipars", "MPgetmultishape", "MPgetposboxes", "MPh", "MPinclusions", "MPleftskip", "MPll", "MPlr", "MPls", "MPmenubuttons", "MPn", "MPoptions", "MPoverlayanchor", "MPp", "MPpage", "MPpardata", "MPplus", "MPpos", "MPpositiongraphic", "MPposset", "MPr", "MPrawvar", "MPregion", "MPrest", "MPrightskip", "MPrs", "MPstring", "MPtext", "MPtransparency", "MPul", "MPur", "MPv", "MPvar", "MPvariable", "MPvv", "MPw", "MPwhd", "MPx", "MPxy", "MPxywhd", "MPy", "Mapsfrom", "Mapsto", "MetaFont", "MetaFun", "MetaPost", "Mu", "NJligature", "Nacute", "Ncaron", "Ncommaaccent", "Nearrow", "Neng", "Ngrave", "Njligature", "NormalizeFontHeight", "NormalizeFontWidth", "NormalizeTextHeight", "NormalizeTextWidth", "Ntilde", "Nu", "Numbers", "Nwarrow", "OEligature", "Oacute", "Obreve", "Ocaron", "Ocircumflex", "Ocircumflexacute", "Ocircumflexdotbelow", "Ocircumflexgrave", "Ocircumflexhook", "Ocircumflextilde", "Odiaeresis", "Odiaeresismacron", "Odotaccent", "Odotaccentmacron", "Odotbelow", "Odoublegrave", "Ograve", "Ohook", "Ohorn", "Ohornacute", "Ohorndotbelow", "Ohorngrave", "Ohornhook", "Ohorntilde", "Ohungarumlaut", "Oinvertedbreve", "Omacron", "Omega", "Omicron", "Oogonek", "Oogonekmacron", "Ostroke", "Ostrokeacute", "Otilde", "Otildemacron", "P", "PDFETEX", "PDFTEX", "PDFcolor", "PICTEX", "PPCHTEX", "PPCHTeX", "PRAGMA", "Phi", "Phook", "Pi", "PiCTeX", "Plankconst", "PointsToBigPoints", "PointsToReal", "PointsToWholeBigPoints", "PropertyLine", "Psi", "PtToCm", "Racute", "Rcaron", "Rcommaaccent", "Rdoublegrave", "Rdsh", "Re", "ReadFile", "Relbar", "Rho", "Rightarrow", "Rinvertedbreve", "Romannumerals", "Rrightarrow", "Rsh", "S", "Sacute", "ScaledPointsToBigPoints", "ScaledPointsToWholeBigPoints", "Scaron", "Scedilla", "Schwa", "Scircumflex", "Scommaaccent", "Searrow", "Sigma", "Smallcapped", "Subset", "Supset", "Swarrow", "TABLE", "TEX", "TaBlE", "Tau", "Tcaron", "Tcedilla", "Tcommaaccent", "TeX", "TheNormalizedFontSize", "Theta", "Thook", "Thorn", "TransparencyHack", "Tstroke", "Uacute", "Ubreve", "Ucaron", "Ucircumflex", "Udiaeresis", "Udiaeresisacute", "Udiaeresiscaron", "Udiaeresisgrave", "Udiaeresismacron", "Udotbelow", "Udoublegrave", "Ugrave", "Uhook", "Uhorn", "Uhornacute", "Uhorndotbelow", "Uhorngrave", "Uhornhook", "Uhorntilde", "Uhungarumlaut", "Uinvertedbreve", "Umacron", "Uogonek", "Uparrow", "Updownarrow", "Upsilon", "Uring", "Utilde", "Uuparrow", "VDash", "Vdash", "VerboseNumber", "Vert", "Vhook", "Vvdash", "WEEKDAY", "WORD", "WORDS", "Wcircumflex", "WidthSpanningText", "Word", "Words", "XETEX", "XeTeX", "Xi", "Yacute", "Ycircumflex", "Ydiaeresis", "Ydotbelow", "Ygrave", "Yhook", "Ymacron", "Ytilde", "Zacute", "Zcaron", "Zdotaccent", "Zeta", "Zhook", "Zstroke", "aacute", "abbreviation", "abjadnaivenumerals", "abjadnodotnumerals", "abjadnumerals", "about", "abreve", "abreveacute", "abrevedotbelow", "abrevegrave", "abrevehook", "abrevetilde", "acaron", "acircumflex", "acircumflexacute", "acircumflexdotbelow", "acircumflexgrave", "acircumflexhook", "acircumflextilde", "activatespacehandler", "actualday", "actualmonth", "actualyear", "actuarial", "acute", "acwopencirclearrow", "adaptcollector", "adaptfontfeature", "adaptlayout", "adaptpapersize", "addfeature", "addtoJSpreamble", "addtocommalist", "addvalue", "adiaeresis", "adiaeresismacron", "adotaccent", "adotaccentmacron", "adotbelow", "adoublegrave", "aeacute", "aeligature", "aemacron", "afghanicurrency", "aftersplitstring", "aftertestandsplitstring", "agrave", "ahook", "ainvertedbreve", "aleph", "alignbottom", "aligned", "alignedbox", "alignedline", "alignhere", "alignmentcharacter", "allinputpaths", "alpha", "alphabeticnumerals", "alwayscitation", "alwayscite", "amacron", "amalg", "ampersand", "anchor", "angle", "aogonek", "appendetoks", "appendgvalue", "appendtocommalist", "appendtoks", "appendtoksonce", "appendvalue", "apply", "applyalternativestyle", "applyprocessor", "applytocharacters", "applytofirstcharacter", "applytosplitstringchar", "applytosplitstringcharspaced", "applytosplitstringline", "applytosplitstringlinespaced", "applytosplitstringword", "applytosplitstringwordspaced", "applytowords", "approx", "approxEq", "approxeq", "approxnEq", "arabicakbar", "arabicalayhe", "arabicallah", "arabicallallahou", "arabicasterisk", "arabicbasmalah", "arabiccomma", "arabiccuberoot", "arabicdateseparator", "arabicdecimals", "arabicdisputedendofayah", "arabicendofayah", "arabicexnumerals", "arabicfootnotemarker", "arabicfourthroot", "arabichighain", "arabichighalayheassallam", "arabichigheqala", "arabichighesala", "arabichighfootnotemarker", "arabichighjeem", "arabichighlamalef", "arabichighmadda", "arabichighmeemlong", "arabichighmeemshort", "arabichighnisf", "arabichighnoon", "arabichighnoonkasra", "arabichighqaf", "arabichighqif", "arabichighradiallahouanhu", "arabichighrahmatullahalayhe", "arabichighrubc", "arabichighsad", "arabichighsajda", "arabichighsakta", "arabichighsallallahou", "arabichighseen", "arabichighsmallsafha", "arabichightah", "arabichightakhallus", "arabichighthalatha", "arabichighwaqf", "arabichighyeh", "arabichighzain", "arabicjallajalalouhou", "arabiclettermark", "arabiclowmeemlong", "arabiclownoonkasra", "arabiclowseen", "arabicmisra", "arabicmuhammad", "arabicnumber", "arabicnumberabove", "arabicnumerals", "arabicparenleft", "arabicparenright", "arabicpercent", "arabicperiod", "arabicpermille", "arabicpertenthousand", "arabicpoeticverse", "arabicqala", "arabicquestion", "arabicrasoul", "arabicray", "arabicrialsign", "arabicsafha", "arabicsajdah", "arabicsalla", "arabicsamvat", "arabicsanah", "arabicsemicolon", "arabicshighthreedots", "arabicslcm", "arabicstartofrubc", "arabictripledot", "arabicvowelwaw", "arabicvowelyeh", "arabicwasallam", "arg", "aring", "aringacute", "arrowvert", "asciimode", "asciistr", "aside", "assignalfadimension", "assigndimen", "assigndimension", "assignifempty", "assigntranslation", "assignvalue", "assignwidth", "assumelongusagecs", "ast", "astype", "asymp", "at", "atilde", "atleftmargin", "atpage", "atrightmargin", "attachment", "autocap", "autodirhbox", "autodirvbox", "autodirvtop", "autoinsertnextspace", "autointegral", "automathematics", "autoorientation", "autopagestaterealpage", "autopagestaterealpageorder", "autorule", "autosetups", "availablehsize", "averagecharwidth", "backepsilon", "background", "backgroundimage", "backgroundimagefill", "backgroundline", "backprime", "backsim", "backslash", "bar", "barleftarrow", "barleftarrowrightarrowbar", "barovernorthwestarrow", "barwedge", "basegrid", "baselinebottom", "baselineleftbox", "baselinemiddlebox", "baselinerightbox", "bbordermatrix", "bbox", "because", "beforesplitstring", "beforetestandsplitstring", "beta", "beth", "between", "bhook", "big", "bigbodyfont", "bigcap", "bigcirc", "bigcircle", "bigcup", "bigdiamond", "bigg", "bigger", "biggl", "biggm", "biggr", "bigl", "bigm", "bigodot", "bigoplus", "bigotimes", "bigr", "bigskip", "bigsqcap", "bigsqcup", "bigsquare", "bigstar", "bigtimes", "bigtriangledown", "bigtriangleup", "bigudot", "biguplus", "bigvee", "bigwedge", "binom", "bitmapimage", "blacklozenge", "blackrule", "blackrules", "blacksquare", "blacktriangle", "blacktriangledown", "blacktriangleleft", "blacktriangleright", "blank", "blap", "bleed", "bleedheight", "bleedwidth", "blockligatures", "blockquote", "blocksynctexfile", "blockuservariable", "bodyfontenvironmentlist", "bodyfontsize", "bold", "boldface", "bolditalic", "boldslanted", "bookmark", "booleanmodevalue", "bordermatrix", "bot", "bottombox", "bottomleftbox", "bottomrightbox", "bowtie", "boxcursor", "boxdot", "boxmarker", "boxminus", "boxofsize", "boxplus", "boxreference", "boxtimes", "bpos", "breakablethinspace", "breakhere", "breve", "bstroke", "btxabbreviatedjournal", "btxaddjournal", "btxalwayscitation", "btxauthorfield", "btxdetail", "btxdirect", "btxdoif", "btxdoifcombiinlistelse", "btxdoifelse", "btxdoifelsecombiinlist", "btxdoifelsesameasprevious", "btxdoifelsesameaspreviouschecked", "btxdoifelseuservariable", "btxdoifnot", "btxdoifsameaspreviouscheckedelse", "btxdoifsameaspreviouselse", "btxdoifuservariableelse", "btxexpandedjournal", "btxfield", "btxfieldname", "btxfieldtype", "btxfirstofrange", "btxflush", "btxflushauthor", "btxflushauthorinverted", "btxflushauthorinvertedshort", "btxflushauthorname", "btxflushauthornormal", "btxflushauthornormalshort", "btxflushsuffix", "btxfoundname", "btxfoundtype", "btxhiddencitation", "btxhybridcite", "btxlabellanguage", "btxlabeltext", "btxlistcitation", "btxloadjournalist", "btxoneorrange", "btxremapauthor", "btxsavejournalist", "btxsetup", "btxsingularorplural", "btxsingularplural", "btxtextcitation", "buildmathaccent", "buildtextaccent", "buildtextbottomcomma", "buildtextbottomdot", "buildtextcedilla", "buildtextgrave", "buildtextmacron", "buildtextognek", "bullet", "button", "cacute", "calligraphic", "camel", "cap", "capital", "carriagereturn", "catcodetablename", "cbox", "ccaron", "ccedilla", "ccircumflex", "ccurl", "cdot", "cdotaccent", "cdotp", "cdots", "centeraligned", "centerbox", "centerdot", "centeredbox", "centeredlastline", "centerednextbox", "centerline", "cfrac", "chapter", "character", "characters", "chardescription", "charwidthlanguage", "check", "checkcharacteralign", "checkedblank", "checkedchar", "checkedfiller", "checkedstrippedcsname", "checkinjector", "checkmark", "checknextindentation", "checknextinjector", "checkpage", "checkparameters", "checkpreviousinjector", "checksoundtrack", "checktwopassdata", "checkvariables", "chem", "chemical", "chemicalbottext", "chemicalmidtext", "chemicalsymbol", "chemicaltext", "chemicaltoptext", "chi", "chineseallnumerals", "chinesecapnumerals", "chinesenumerals", "chook", "circ", "circeq", "circlearrowleft", "circlearrowright", "circledR", "circledS", "circledast", "circledcirc", "circleddash", "circledequals", "circleonrightarrow", "citation", "cite", "clap", "classfont", "cldcommand", "cldcontext", "cldloadfile", "cldprocessfile", "cleftarrow", "clip", "clippedoverlayimage", "clonefield", "clubsuit", "collect", "collectedtext", "collectexpanded", "colon", "coloncolonequals", "colonequals", "color", "colorbar", "colorcomponents", "colored", "coloronly", "colorvalue", "column", "columnbreak", "columnsetspanwidth", "combinepages", "commalistelement", "commalistsentence", "commalistsize", "comment", "comparecolorgroup", "comparedimension", "comparedimensioneps", "comparepalet", "complement", "completebtxrendering", "completecontent", "completeindex", "completelist", "completelistofabbreviations", "completelistofchemicals", "completelistoffigures", "completelistofgraphics", "completelistofintermezzi", "completelistoflogos", "completelistofpublications", "completelistofsorts", "completelistofsynonyms", "completelistoftables", "completepagenumber", "completeregister", "complexes", "complexorsimple", "complexorsimpleempty", "component", "composedcollector", "composedlayer", "compounddiscretionary", "compresult", "cong", "constantdimen", "constantdimenargument", "constantemptyargument", "constantnumber", "constantnumberargument", "contentreference", "continuednumber", "continueifinputfile", "convertargument", "convertcommand", "convertedcounter", "converteddimen", "convertedsubcounter", "convertmonth", "convertnumber", "convertvalue", "convertvboxtohbox", "coprod", "copyboxfromcache", "copybtxlabeltext", "copyfield", "copyheadtext", "copylabeltext", "copymathlabeltext", "copyoperatortext", "copypages", "copyparameters", "copyposition", "copyprefixtext", "copyright", "copysetups", "copysuffixtext", "copytaglabeltext", "copyunittext", "correctwhitespace", "countersubs", "counttoken", "counttokens", "cramped", "crampedclap", "crampedllap", "crampedrlap", "crightarrow", "crightoverleftarrow", "crlf", "crlfplaceholder", "cstroke", "ctop", "ctxcommand", "ctxdirectcommand", "ctxdirectlua", "ctxfunction", "ctxlatecommand", "ctxlatelua", "ctxloadluafile", "ctxlua", "ctxluabuffer", "ctxluacode", "ctxreport", "ctxsprint", "cup", "curlyeqprec", "curlyeqsucc", "curlyvee", "curlywedge", "currentassignmentlistkey", "currentassignmentlistvalue", "currentbtxuservariable", "currentcommalistitem", "currentcomponent", "currentdate", "currentenvironment", "currentfeaturetest", "currentheadnumber", "currentinterface", "currentlanguage", "currentlistentrydestinationattribute", "currentlistentrylimitedtext", "currentlistentrynumber", "currentlistentrypagenumber", "currentlistentryreferenceattribute", "currentlistentrytitle", "currentlistentrytitlerendered", "currentlistsymbol", "currentmainlanguage", "currentmessagetext", "currentmoduleparameter", "currentoutputstream", "currentproduct", "currentproject", "currentregime", "currentregisterpageuserdata", "currentresponses", "currenttime", "currentvalue", "currentxtablecolumn", "currentxtablerow", "curvearrowleft", "curvearrowright", "cwopencirclearrow", "cyrillicA", "cyrillicAE", "cyrillicAbreve", "cyrillicAdiaeresis", "cyrillicB", "cyrillicBIGYUS", "cyrillicBIGYUSiotified", "cyrillicC", "cyrillicCH", "cyrillicCHEDC", "cyrillicCHEDCabkhasian", "cyrillicCHEabkhasian", "cyrillicCHEdiaeresis", "cyrillicCHEkhakassian", "cyrillicCHEvertstroke", "cyrillicD", "cyrillicDASIAPNEUMATA", "cyrillicDJE", "cyrillicDZE", "cyrillicDZEabkhasian", "cyrillicDZHE", "cyrillicE", "cyrillicELtail", "cyrillicEMtail", "cyrillicENDC", "cyrillicENGHE", "cyrillicENhook", "cyrillicENtail", "cyrillicEREV", "cyrillicERY", "cyrillicERtick", "cyrillicEbreve", "cyrillicEdiaeresis", "cyrillicEgrave", "cyrillicEiotified", "cyrillicF", "cyrillicFITA", "cyrillicG", "cyrillicGHEmidhook", "cyrillicGHEstroke", "cyrillicGHEupturn", "cyrillicGJE", "cyrillicH", "cyrillicHA", "cyrillicHADC", "cyrillicHRDSN", "cyrillicI", "cyrillicIE", "cyrillicII", "cyrillicISHRT", "cyrillicISHRTtail", "cyrillicIZHITSA", "cyrillicIZHITSAdoublegrave", "cyrillicIdiaeresis", "cyrillicIgrave", "cyrillicImacron", "cyrillicJE", "cyrillicK", "cyrillicKADC", "cyrillicKAbashkir", "cyrillicKAhook", "cyrillicKAstroke", "cyrillicKAvertstroke", "cyrillicKJE", "cyrillicKOPPA", "cyrillicKSI", "cyrillicL", "cyrillicLITTLEYUS", "cyrillicLITTLEYUSiotified", "cyrillicLJE", "cyrillicM", "cyrillicN", "cyrillicNJE", "cyrillicO", "cyrillicOMEGA", "cyrillicOMEGAround", "cyrillicOMEGAtitlo", "cyrillicOT", "cyrillicObarred", "cyrillicObarreddiaeresis", "cyrillicOdiaeresis", "cyrillicP", "cyrillicPALATALIZATION", "cyrillicPALOCHKA", "cyrillicPEmidhook", "cyrillicPSI", "cyrillicPSILIPNEUMATA", "cyrillicR", "cyrillicS", "cyrillicSCHWA", "cyrillicSCHWAdiaeresis", "cyrillicSDSC", "cyrillicSEMISOFT", "cyrillicSFTSN", "cyrillicSH", "cyrillicSHCH", "cyrillicSHHA", "cyrillicT", "cyrillicTEDC", "cyrillicTETSE", "cyrillicTITLO", "cyrillicTSHE", "cyrillicU", "cyrillicUK", "cyrillicUSHRT", "cyrillicUdiaeresis", "cyrillicUdoubleacute", "cyrillicUmacron", "cyrillicV", "cyrillicYA", "cyrillicYAT", "cyrillicYERUdiaeresis", "cyrillicYI", "cyrillicYO", "cyrillicYU", "cyrillicYstr", "cyrillicYstrstroke", "cyrillicZ", "cyrillicZDSC", "cyrillicZEdiaeresis", "cyrillicZH", "cyrillicZHEbreve", "cyrillicZHEdescender", "cyrillicZHEdiaeresis", "cyrillica", "cyrillicabreve", "cyrillicadiaeresis", "cyrillicae", "cyrillicb", "cyrillicbigyus", "cyrillicbigyusiotified", "cyrillicc", "cyrillicch", "cyrilliccheabkhasian", "cyrillicchedc", "cyrillicchedcabkhasian", "cyrillicchediaeresis", "cyrillicchekhakassian", "cyrillicchevertstroke", "cyrillicd", "cyrillicdje", "cyrillicdze", "cyrillicdzeabkhasian", "cyrillicdzhe", "cyrillice", "cyrillicebreve", "cyrillicediaeresis", "cyrillicegrave", "cyrilliceiotified", "cyrilliceltail", "cyrillicemtail", "cyrillicendc", "cyrillicenghe", "cyrillicenhook", "cyrillicentail", "cyrillicerev", "cyrillicertick", "cyrillicery", "cyrillicf", "cyrillicfita", "cyrillicg", "cyrillicghemidhook", "cyrillicghestroke", "cyrillicgheupturn", "cyrillicgje", "cyrillich", "cyrillicha", "cyrillichadc", "cyrillichrdsn", "cyrillici", "cyrillicidiaeresis", "cyrillicie", "cyrillicigrave", "cyrillicii", "cyrillicimacron", "cyrillicishrt", "cyrillicishrttail", "cyrillicizhitsa", "cyrillicizhitsadoublegrave", "cyrillicje", "cyrillick", "cyrillickabashkir", "cyrillickadc", "cyrillickahook", "cyrillickastroke", "cyrillickavertstroke", "cyrillickje", "cyrillickoppa", "cyrillicksi", "cyrillicl", "cyrilliclittleyus", "cyrilliclittleyusiotified", "cyrilliclje", "cyrillicm", "cyrillicn", "cyrillicnje", "cyrillico", "cyrillicobarred", "cyrillicobarreddiaeresis", "cyrillicodiaeresis", "cyrillicomega", "cyrillicomegaround", "cyrillicomegatitlo", "cyrillicot", "cyrillicp", "cyrillicpemidhook", "cyrillicpsi", "cyrillicr", "cyrillics", "cyrillicschwa", "cyrillicschwadiaeresis", "cyrillicsdsc", "cyrillicsemisoft", "cyrillicsftsn", "cyrillicsh", "cyrillicshch", "cyrillicshha", "cyrillict", "cyrillictedc", "cyrillictetse", "cyrillictshe", "cyrillicu", "cyrillicudiaeresis", "cyrillicudoubleacute", "cyrillicuk", "cyrillicumacron", "cyrillicushrt", "cyrillicv", "cyrillicya", "cyrillicyat", "cyrillicyerudiaeresis", "cyrillicyi", "cyrillicyo", "cyrillicystr", "cyrillicystrstroke", "cyrillicyu", "cyrillicz", "cyrilliczdsc", "cyrilliczediaeresis", "cyrilliczh", "cyrilliczhebreve", "cyrilliczhedescender", "cyrilliczhediaeresis", "d", "dag", "dagger", "daleth", "dasharrow", "dashedleftarrow", "dashedrightarrow", "dashv", "datasetvariable", "date", "daylong", "dayoftheweek", "dayshort", "dayspermonth", "dbinom", "dcaron", "dcurl", "ddag", "ddagger", "dddot", "ddot", "ddots", "decrement", "decrementcounter", "decrementedcounter", "decrementpagenumber", "decrementsubpagenumber", "decrementvalue", "defaultinterface", "defaultobjectpage", "defaultobjectreference", "defcatcodecommand", "defconvertedargument", "defconvertedcommand", "defconvertedvalue", "define", "defineMPinstance", "defineTABLEsetup", "defineaccent", "defineactivecharacter", "definealternativestyle", "defineanchor", "defineattachment", "defineattribute", "definebackground", "definebar", "defineblock", "definebodyfont", "definebodyfontenvironment", "definebodyfontswitch", "definebreakpoint", "definebreakpoints", "definebtx", "definebtxdataset", "definebtxregister", "definebtxrendering", "definebuffer", "definebutton", "definecapitals", "definecharacter", "definecharacterkerning", "definecharacterspacing", "definechemical", "definechemicals", "definechemicalsymbol", "definecollector", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecolumnsetarea", "definecolumnsetspan", "definecombination", "definecombinedlist", "definecommand", "definecomment", "definecomplexorsimple", "definecomplexorsimpleempty", "defineconversion", "defineconversionset", "definecounter", "definedataset", "definedate", "definedelimitedtext", "definedeq", "definedescription", "definedfont", "definedocument", "defineeffect", "defineenumeration", "defineexpandable", "defineexpansion", "defineexternalfigure", "definefacingfloat", "definefallbackfamily", "definefield", "definefieldbody", "definefieldbodyset", "definefieldcategory", "definefieldstack", "definefiguresymbol", "definefileconstant", "definefilefallback", "definefilesynonym", "definefiller", "definefirstline", "definefittingpage", "definefloat", "definefont", "definefontalternative", "definefontfallback", "definefontfamily", "definefontfamilypreset", "definefontfeature", "definefontfile", "definefontsize", "definefontsolution", "definefontstyle", "definefontsynonym", "defineformula", "defineformulaalternative", "defineformulaframed", "defineframed", "defineframedcontent", "defineframedtable", "defineframedtext", "definefrozenfont", "defineglobalcolor", "definegraphictypesynonym", "definegridsnapping", "definehbox", "definehead", "defineheadalternative", "definehelp", "definehigh", "definehighlight", "definehspace", "definehyphenationfeatures", "defineindentedtext", "defineindenting", "defineinitial", "defineinsertion", "defineinteraction", "defineinteractionbar", "defineinteractionmenu", "defineinterfaceconstant", "defineinterfaceelement", "defineinterfacevariable", "defineinterlinespace", "defineintermediatecolor", "defineitemgroup", "defineitems", "definelabel", "definelabelclass", "definelayer", "definelayerpreset", "definelayout", "definelinefiller", "definelinenote", "definelinenumbering", "definelines", "definelist", "definelistalternative", "definelistextra", "definelow", "definelowhigh", "definelowmidhigh", "definemakeup", "definemarginblock", "definemargindata", "definemarker", "definemarking", "definemathaccent", "definemathalignment", "definemathcases", "definemathcommand", "definemathdouble", "definemathdoubleextensible", "definemathematics", "definemathextensible", "definemathfence", "definemathfraction", "definemathframed", "definemathmatrix", "definemathornament", "definemathover", "definemathoverextensible", "definemathovertextextensible", "definemathradical", "definemathstackers", "definemathstyle", "definemathtriplet", "definemathunder", "definemathunderextensible", "definemathundertextextensible", "definemathunstacked", "definemeasure", "definemessageconstant", "definemixedcolumns", "definemode", "definemulticolumns", "definemultitonecolor", "definenamedcolor", "definenamespace", "definenarrower", "definenote", "defineorientation", "defineornament", "defineoutputroutine", "defineoutputroutinecommand", "defineoverlay", "definepage", "definepagebreak", "definepagechecker", "definepagecolumns", "definepageinjection", "definepageinjectionalternative", "definepageshift", "definepagestate", "definepairedbox", "definepalet", "definepapersize", "defineparagraph", "defineparagraphs", "defineparallel", "defineparbuilder", "defineperiodkerning", "defineplaceholder", "defineplacement", "definepositioning", "defineprefixset", "defineprocesscolor", "defineprocessor", "defineprofile", "defineprogram", "definepushbutton", "definepushsymbol", "definereference", "definereferenceformat", "defineregister", "definerenderingwindow", "defineresetset", "defineruby", "definescale", "definescript", "definesection", "definesectionblock", "definesectionlevels", "defineselector", "defineseparatorset", "defineshift", "definesidebar", "definesort", "definesorting", "definespotcolor", "definestartstop", "definestyle", "definestyleinstance", "definesubfield", "definesubformula", "definesymbol", "definesynonym", "definesynonyms", "definesystemattribute", "definesystemconstant", "definesystemvariable", "definetabletemplate", "definetabulate", "definetext", "definetextbackground", "definetextflow", "definetextnote", "definetokenlist", "definetooltip", "definetransparency", "definetwopasslist", "definetype", "definetypeface", "definetypescriptprefix", "definetypescriptsynonym", "definetypesetting", "definetyping", "defineunit", "defineuserdata", "defineuserdataalternative", "defineviewerlayer", "definevspace", "definevspacing", "definevspacingamount", "definextable", "defrostparagraphproperties", "delimited", "delimitedtext", "delta", "depthofstring", "depthonlybox", "depthspanningtext", "depthstrut", "determineheadnumber", "determinelistcharacteristics", "determinenoflines", "determineregistercharacteristics", "devanagarinumerals", "dfrac", "dhook", "diameter", "diamond", "diamondsuit", "differentialD", "differentiald", "digamma", "digits", "dimensiontocount", "directboxfromcache", "directcolor", "directcolored", "directconvertedcounter", "directcopyboxfromcache", "directdummyparameter", "directgetboxllx", "directgetboxlly", "directhighlight", "directlocalframed", "directluacode", "directparwrapper", "directselect", "directsetbar", "directsetup", "directsymbol", "directvspacing", "dis", "disabledirectives", "disableexperiments", "disablemode", "disableoutputstream", "disableparpositions", "disableregime", "disabletrackers", "displaymath", "displaymathematics", "displaymessage", "disposeluatable", "distributedhsize", "div", "dividedsize", "divideontimes", "divides", "doadaptleftskip", "doadaptrightskip", "doaddfeature", "doassign", "doassignempty", "doboundtext", "docheckassignment", "docheckedpair", "documentvariable", "dodoubleargument", "dodoubleargumentwithset", "dodoubleempty", "dodoubleemptywithset", "dodoublegroupempty", "doeassign", "doexpandedrecurse", "dofastloopcs", "dogetattribute", "dogetattributeid", "dogetcommacommandelement", "dogobbledoubleempty", "dogobblesingleempty", "dohyphens", "doif", "doifMPgraphicelse", "doifallcommon", "doifallcommonelse", "doifalldefinedelse", "doifallmodes", "doifallmodeselse", "doifassignmentelse", "doifassignmentelsecs", "doifblackelse", "doifbothsides", "doifbothsidesoverruled", "doifboxelse", "doifbufferelse", "doifcheckedpagestate", "doifcolor", "doifcolorelse", "doifcommandhandler", "doifcommandhandlerelse", "doifcommon", "doifcommonelse", "doifcontent", "doifconversiondefinedelse", "doifconversionnumberelse", "doifcounter", "doifcounterelse", "doifcurrentfonthasfeatureelse", "doifdefined", "doifdefinedcounter", "doifdefinedcounterelse", "doifdefinedelse", "doifdimensionelse", "doifdimenstringelse", "doifdocumentargument", "doifdocumentargumentelse", "doifdocumentfilename", "doifdocumentfilenameelse", "doifdocumentvariable", "doifdocumentvariableelse", "doifdrawingblackelse", "doifelse", "doifelseMPgraphic", "doifelseallcommon", "doifelsealldefined", "doifelseallmodes", "doifelseassignment", "doifelseassignmentcs", "doifelseblack", "doifelsebox", "doifelseboxincache", "doifelsebuffer", "doifelsecolor", "doifelsecommandhandler", "doifelsecommon", "doifelseconversiondefined", "doifelseconversionnumber", "doifelsecounter", "doifelsecurrentfonthasfeature", "doifelsecurrentsortingused", "doifelsecurrentsynonymshown", "doifelsecurrentsynonymused", "doifelsedefined", "doifelsedefinedcounter", "doifelsedimension", "doifelsedimenstring", "doifelsedocumentargument", "doifelsedocumentfilename", "doifelsedocumentvariable", "doifelsedrawingblack", "doifelseempty", "doifelseemptyvalue", "doifelseemptyvariable", "doifelseenv", "doifelsefastoptionalcheck", "doifelsefastoptionalcheckcs", "doifelsefieldbody", "doifelsefieldcategory", "doifelsefigure", "doifelsefile", "doifelsefiledefined", "doifelsefileexists", "doifelsefirstchar", "doifelseflagged", "doifelsefontchar", "doifelsefontfeature", "doifelsefontpresent", "doifelsefontsynonym", "doifelseframed", "doifelsehasspace", "doifelsehelp", "doifelseincsname", "doifelseindented", "doifelseinelement", "doifelseinputfile", "doifelseinsertion", "doifelseinset", "doifelseinstring", "doifelseinsymbolset", "doifelseintoks", "doifelseintwopassdata", "doifelseitalic", "doifelselanguage", "doifelselayerdata", "doifelselayoutdefined", "doifelselayoutsomeline", "doifelselayouttextline", "doifelseleapyear", "doifelselist", "doifelselocation", "doifelselocfile", "doifelsemainfloatbody", "doifelsemarkedcontent", "doifelsemarkedpage", "doifelsemarking", "doifelsemeaning", "doifelsemessage", "doifelsemode", "doifelsenextbgroup", "doifelsenextbgroupcs", "doifelsenextchar", "doifelsenextoptional", "doifelsenextoptionalcs", "doifelsenextparenthesis", "doifelsenonzeropositive", "doifelsenoteonsamepage", "doifelsenothing", "doifelsenumber", "doifelseobjectfound", "doifelseobjectreferencefound", "doifelseoddpage", "doifelseoddpagefloat", "doifelseoldercontext", "doifelseolderversion", "doifelseorientation", "doifelseoverlapping", "doifelseoverlay", "doifelseparallel", "doifelseparentfile", "doifelseparwrapper", "doifelsepath", "doifelsepathexists", "doifelsepatterns", "doifelseposition", "doifelsepositionaction", "doifelsepositiononpage", "doifelsepositionsonsamepage", "doifelsepositionsonthispage", "doifelsepositionsused", "doifelsereferencefound", "doifelserightpage", "doifelserightpagefloat", "doifelserighttoleftinbox", "doifelsesamelinereference", "doifelsesamestring", "doifelsesetups", "doifelsesomebackground", "doifelsesomespace", "doifelsesomething", "doifelsesometoks", "doifelsestringinstring", "doifelsestructurelisthasnumber", "doifelsestructurelisthaspage", "doifelsesymboldefined", "doifelsesymbolset", "doifelsetext", "doifelsetextflow", "doifelsetextflowcollector", "doifelsetopofpage", "doifelsetypingfile", "doifelseundefined", "doifelseurldefined", "doifelsevalue", "doifelsevaluenothing", "doifelsevariable", "doifempty", "doifemptyelse", "doifemptytoks", "doifemptyvalue", "doifemptyvalueelse", "doifemptyvariable", "doifemptyvariableelse", "doifenv", "doifenvelse", "doiffastoptionalcheckcselse", "doiffastoptionalcheckelse", "doiffieldbodyelse", "doiffieldcategoryelse", "doiffigureelse", "doiffile", "doiffiledefinedelse", "doiffileelse", "doiffileexistselse", "doiffirstcharelse", "doifflaggedelse", "doiffontcharelse", "doiffontfeatureelse", "doiffontpresentelse", "doiffontsynonymelse", "doifhasspaceelse", "doifhelpelse", "doifincsnameelse", "doifinelementelse", "doifinputfileelse", "doifinsertionelse", "doifinset", "doifinsetelse", "doifinstring", "doifinstringelse", "doifinsymbolset", "doifinsymbolsetelse", "doifintokselse", "doifintwopassdataelse", "doifitalicelse", "doiflanguageelse", "doiflayerdataelse", "doiflayoutdefinedelse", "doiflayoutsomelineelse", "doiflayouttextlineelse", "doifleapyearelse", "doiflistelse", "doiflocationelse", "doiflocfileelse", "doifmainfloatbodyelse", "doifmarkingelse", "doifmeaningelse", "doifmessageelse", "doifmode", "doifmodeelse", "doifnextbgroupcselse", "doifnextbgroupelse", "doifnextcharelse", "doifnextoptionalcselse", "doifnextoptionalelse", "doifnextparenthesiselse", "doifnonzeropositiveelse", "doifnot", "doifnotallcommon", "doifnotallmodes", "doifnotcommandhandler", "doifnotcommon", "doifnotcounter", "doifnotdocumentargument", "doifnotdocumentfilename", "doifnotdocumentvariable", "doifnotempty", "doifnotemptyvalue", "doifnotemptyvariable", "doifnotenv", "doifnoteonsamepageelse", "doifnotescollected", "doifnotfile", "doifnotflagged", "doifnothing", "doifnothingelse", "doifnotinset", "doifnotinsidesplitfloat", "doifnotinstring", "doifnotmode", "doifnotnumber", "doifnotsamestring", "doifnotsetups", "doifnotvalue", "doifnotvariable", "doifnumber", "doifnumberelse", "doifobjectfoundelse", "doifobjectreferencefoundelse", "doifoddpageelse", "doifoddpagefloatelse", "doifoldercontextelse", "doifolderversionelse", "doifoutervmode", "doifoverlappingelse", "doifoverlayelse", "doifparallelelse", "doifparentfileelse", "doifpathelse", "doifpathexistselse", "doifpatternselse", "doifposition", "doifpositionaction", "doifpositionactionelse", "doifpositionelse", "doifpositiononpageelse", "doifpositionsonsamepageelse", "doifpositionsonthispageelse", "doifpositionsusedelse", "doifreferencefoundelse", "doifrightpageelse", "doifrightpagefloatelse", "doifrighttoleftinboxelse", "doifsamelinereferenceelse", "doifsamestring", "doifsamestringelse", "doifsetups", "doifsetupselse", "doifsomebackground", "doifsomebackgroundelse", "doifsomespaceelse", "doifsomething", "doifsomethingelse", "doifsometoks", "doifsometokselse", "doifstringinstringelse", "doifstructurelisthasnumberelse", "doifstructurelisthaspageelse", "doifsymboldefinedelse", "doifsymbolsetelse", "doiftext", "doiftextelse", "doiftextflowcollectorelse", "doiftextflowelse", "doiftopofpageelse", "doiftypingfileelse", "doifundefined", "doifundefinedcounter", "doifundefinedelse", "doifunknownfontfeature", "doifurldefinedelse", "doifvalue", "doifvalueelse", "doifvaluenothing", "doifvaluenothingelse", "doifvaluesomething", "doifvariable", "doifvariableelse", "doindentation", "dollar", "doloop", "doloopoverlist", "donothing", "dontconvertfont", "dontleavehmode", "dontpermitspacesbetweengroups", "dopositionaction", "doprocesslocalsetups", "doquadrupleargument", "doquadrupleempty", "doquadruplegroupempty", "doquintupleargument", "doquintupleempty", "doquintuplegroupempty", "dorechecknextindentation", "dorecurse", "dorepeatwithcommand", "doreplacefeature", "doresetandafffeature", "doresetattribute", "dorotatebox", "dosetattribute", "dosetleftskipadaption", "dosetrightskipadaption", "dosetupcheckedinterlinespace", "doseventupleargument", "doseventupleempty", "dosingleargument", "dosingleempty", "dosinglegroupempty", "dosixtupleargument", "dosixtupleempty", "dosomebreak", "dostepwiserecurse", "dosubtractfeature", "dot", "doteq", "doteqdot", "dotfill", "dotfskip", "dotlessI", "dotlessJ", "dotlessi", "dotlessj", "dotlessjstroke", "dotminus", "dotoks", "dotplus", "dotripleargument", "dotripleargumentwithset", "dotripleempty", "dotripleemptywithset", "dotriplegroupempty", "dots", "dottedcircle", "dottedrightarrow", "doublebar", "doublebond", "doublebrace", "doublebracket", "doublecap", "doublecup", "doubleparent", "doubleprime", "doubleverticalbar", "dowith", "dowithnextbox", "dowithnextboxcontent", "dowithnextboxcontentcs", "dowithnextboxcs", "dowithpargument", "dowithrange", "dowithwargument", "downarrow", "downdasharrow", "downdownarrows", "downharpoonleft", "downharpoonright", "downuparrows", "downwhitearrow", "downzigzagarrow", "dpofstring", "dstroke", "dtail", "dummydigit", "dummyparameter", "dzcaronligature", "dzligature", "eTeX", "eacute", "ebreve", "ecaron", "ecedilla", "ecircumflex", "ecircumflexacute", "ecircumflexdotbelow", "ecircumflexgrave", "ecircumflexhook", "ecircumflextilde", "edefconvertedargument", "ediaeresis", "edotaccent", "edotbelow", "edoublegrave", "efcmaxheight", "efcmaxwidth", "efcminheight", "efcminwidth", "efcparameter", "effect", "egrave", "ehook", "einvertedbreve", "elapsedseconds", "elapsedsteptime", "elapsedtime", "eleftarrowfill", "eleftharpoondownfill", "eleftharpoonupfill", "eleftrightarrowfill", "ell", "em", "emacron", "emdash", "emphasisboldface", "emphasistypeface", "emptylines", "emptyset", "emquad", "emspace", "enableasciimode", "enabledirectives", "enableexperiments", "enablemode", "enableoutputstream", "enableparpositions", "enableregime", "enabletrackers", "endash", "endnote", "enquad", "enskip", "enspace", "env", "environment", "envvar", "eogonek", "eoverbarfill", "eoverbracefill", "eoverbracketfill", "eoverparentfill", "epos", "epsilon", "eq", "eqcirc", "eqeq", "eqeqeq", "eqgtr", "eqless", "eqsim", "eqslantgtr", "eqslantless", "equaldigits", "equalscolon", "equiv", "erightarrowfill", "erightharpoondownfill", "erightharpoonupfill", "eta", "eth", "ethiopic", "etilde", "etwoheadrightarrowfill", "eunderbarfill", "eunderbracefill", "eunderbracketfill", "eunderparentfill", "exclamdown", "executeifdefined", "exists", "exitloop", "exitloopnow", "expandcheckedcsname", "expanded", "expandeddoif", "expandeddoifelse", "expandeddoifnot", "expandfontsynonym", "expdoif", "expdoifcommonelse", "expdoifelse", "expdoifelsecommon", "expdoifelseinset", "expdoifinsetelse", "expdoifnot", "exponentiale", "externalfigure", "externalfigurecollectionmaxheight", "externalfigurecollectionmaxwidth", "externalfigurecollectionminheight", "externalfigurecollectionminwidth", "externalfigurecollectionparameter", "fakebox", "fallingdotseq", "fastdecrement", "fastincrement", "fastlocalframed", "fastloopfinal", "fastloopindex", "fastscale", "fastsetup", "fastsetupwithargument", "fastsetupwithargumentswapped", "fastswitchtobodyfont", "fastsxsy", "feature", "fence", "fenced", "fetchallmarkings", "fetchallmarks", "fetchmark", "fetchmarking", "fetchonemark", "fetchonemarking", "fetchruntinecommand", "fetchtwomarkings", "fetchtwomarks", "ffiligature", "ffligature", "fflligature", "fhook", "field", "fieldbody", "fieldstack", "fifthoffivearguments", "fifthofsixarguments", "figurefilename", "figurefilepath", "figurefiletype", "figurefullname", "figureheight", "figurenaturalheight", "figurenaturalwidth", "figurespace", "figuresymbol", "figurewidth", "filename", "filigature", "filledhboxb", "filledhboxc", "filledhboxg", "filledhboxk", "filledhboxm", "filledhboxr", "filledhboxy", "filler", "fillinline", "fillinrules", "fillintext", "fillupto", "filterfromnext", "filterfromvalue", "filterpages", "filterreference", "findtwopassdata", "finishregisterentry", "firstcharacter", "firstcounter", "firstcountervalue", "firstinlist", "firstoffivearguments", "firstoffourarguments", "firstofoneargument", "firstofoneunexpanded", "firstofsixarguments", "firstofthreearguments", "firstofthreeunexpanded", "firstoftwoarguments", "firstoftwounexpanded", "firstrealpage", "firstrealpagenumber", "firstsubcountervalue", "firstsubpage", "firstsubpagenumber", "firstuserpage", "firstuserpagenumber", "fitfield", "fitfieldframed", "fittopbaselinegrid", "fiveeighths", "fivesixths", "fixedspace", "fixedspaces", "flag", "flat", "flligature", "floatuserdataparameter", "flushbox", "flushboxregister", "flushcollector", "flushedrightlastline", "flushlayer", "flushlocalfloats", "flushnextbox", "flushnotes", "flushoutputstream", "flushshapebox", "flushtextflow", "flushtokens", "flushtoks", "fontalternative", "fontbody", "fontchar", "fontcharbyindex", "fontclass", "fontclassname", "fontface", "fontfeaturelist", "fontsize", "fontstyle", "footnote", "footnotetext", "forall", "forcecharacterstripping", "forcelocalfloats", "forgeteverypar", "forgetparagraphfreezing", "forgetparameters", "forgetparskip", "forgetparwrapper", "forgetragged", "formula", "formulanumber", "foundbox", "fourfifths", "fourperemspace", "fourthoffivearguments", "fourthoffourarguments", "fourthofsixarguments", "frac", "framed", "frameddimension", "framedparameter", "framedtext", "freezedimenmacro", "freezemeasure", "freezeparagraphproperties", "frenchspacing", "from", "fromlinenote", "frown", "frozenhbox", "frule", "gacute", "gamma", "gbreve", "gcaron", "gcircumflex", "gcommaaccent", "gdefconvertedargument", "gdefconvertedcommand", "gdotaccent", "ge", "geq", "geqq", "geqslant", "getMPdrawing", "getMPlayer", "getboxfromcache", "getboxllx", "getboxlly", "getbuffer", "getbufferdata", "getcommacommandsize", "getcommalistsize", "getdatavalue", "getdayoftheweek", "getdayspermonth", "getdefinedbuffer", "getdocumentargument", "getdocumentargumentdefault", "getdocumentfilename", "getdummyparameters", "getemptyparameters", "geteparameters", "getexpandedparameters", "getfiguredimensions", "getfirstcharacter", "getfirsttwopassdata", "getfromcommacommand", "getfromcommalist", "getfromluatable", "getfromtwopassdata", "getglyphdirect", "getglyphstyled", "getgparameters", "getinlineuserdata", "getlasttwopassdata", "getlocalfloat", "getlocalfloats", "getmarking", "getmessage", "getnamedglyphdirect", "getnamedglyphstyled", "getnamedtwopassdatalist", "getnaturaldimensions", "getnoflines", "getobject", "getobjectdimensions", "getpaletsize", "getparameters", "getparwrapper", "getprivatechar", "getprivateslot", "getrandomcount", "getrandomdimen", "getrandomfloat", "getrandomnumber", "getrandomseed", "getraweparameters", "getrawgparameters", "getrawnoflines", "getrawparameters", "getrawxparameters", "getreference", "getreferenceentry", "getroundednoflines", "gets", "getsubstring", "gettokenlist", "gettwopassdata", "gettwopassdatalist", "getuserdata", "getuvalue", "getvalue", "getvariable", "getvariabledefault", "getxparameters", "gg", "ggg", "gggtr", "gimel", "globaldisablemode", "globalenablemode", "globalletempty", "globalpopbox", "globalpopmacro", "globalpreventmode", "globalprocesscommalist", "globalpushbox", "globalpushmacro", "globalswapcounts", "globalswapdimens", "globalswapmacros", "globalundefine", "glyphfontfile", "gnapprox", "gneqq", "gnsim", "gobbledoubleempty", "gobbleeightarguments", "gobblefivearguments", "gobblefiveoptionals", "gobblefourarguments", "gobblefouroptionals", "gobbleninearguments", "gobbleoneargument", "gobbleoneoptional", "gobblesevenarguments", "gobblesingleempty", "gobblesixarguments", "gobblespacetokens", "gobbletenarguments", "gobblethreearguments", "gobblethreeoptionals", "gobbletwoarguments", "gobbletwooptionals", "gobbleuntil", "gobbleuntilrelax", "godown", "goto", "gotobox", "gotopage", "grabbufferdata", "grabbufferdatadirect", "grabuntil", "grave", "graycolor", "grayvalue", "greedysplitstring", "greekAlpha", "greekAlphadasia", "greekAlphadasiaperispomeni", "greekAlphadasiatonos", "greekAlphadasiavaria", "greekAlphaiotasub", "greekAlphaiotasubdasia", "greekAlphaiotasubdasiaperispomeni", "greekAlphaiotasubdasiatonos", "greekAlphaiotasubdasiavaria", "greekAlphaiotasubpsili", "greekAlphaiotasubpsiliperispomeni", "greekAlphaiotasubpsilitonos", "greekAlphaiotasubpsilivaria", "greekAlphamacron", "greekAlphapsili", "greekAlphapsiliperispomeni", "greekAlphapsilitonos", "greekAlphapsilivaria", "greekAlphatonos", "greekAlphavaria", "greekAlphavrachy", "greekBeta", "greekChi", "greekCoronis", "greekDelta", "greekEpsilon", "greekEpsilondasia", "greekEpsilondasiatonos", "greekEpsilondasiavaria", "greekEpsilonpsili", "greekEpsilonpsilitonos", "greekEpsilonpsilivaria", "greekEpsilontonos", "greekEpsilonvaria", "greekEta", "greekEtadasia", "greekEtadasiaperispomeni", "greekEtadasiatonos", "greekEtadasiavaria", "greekEtaiotasub", "greekEtaiotasubdasia", "greekEtaiotasubdasiaperispomeni", "greekEtaiotasubdasiatonos", "greekEtaiotasubdasiavaria", "greekEtaiotasubpsili", "greekEtaiotasubpsiliperispomeni", "greekEtaiotasubpsilitonos", "greekEtaiotasubpsilivaria", "greekEtapsili", "greekEtapsiliperispomeni", "greekEtapsilitonos", "greekEtapsilivaria", "greekEtatonos", "greekEtavaria", "greekGamma", "greekIota", "greekIotadasia", "greekIotadasiaperispomeni", "greekIotadasiatonos", "greekIotadasiavaria", "greekIotadialytika", "greekIotamacron", "greekIotapsili", "greekIotapsiliperispomeni", "greekIotapsilitonos", "greekIotapsilivaria", "greekIotatonos", "greekIotavaria", "greekIotavrachy", "greekKappa", "greekLambda", "greekMu", "greekNu", "greekOmega", "greekOmegadasia", "greekOmegadasiaperispomeni", "greekOmegadasiatonos", "greekOmegadasiavaria", "greekOmegaiotasub", "greekOmegaiotasubdasia", "greekOmegaiotasubdasiaperispomeni", "greekOmegaiotasubdasiatonos", "greekOmegaiotasubdasiavaria", "greekOmegaiotasubpsili", "greekOmegaiotasubpsiliperispomeni", "greekOmegaiotasubpsilitonos", "greekOmegaiotasubpsilivaria", "greekOmegapsili", "greekOmegapsiliperispomeni", "greekOmegapsilitonos", "greekOmegapsilivaria", "greekOmegatonos", "greekOmegavaria", "greekOmicron", "greekOmicrondasia", "greekOmicrondasiatonos", "greekOmicrondasiavaria", "greekOmicronpsili", "greekOmicronpsilitonos", "greekOmicronpsilivaria", "greekOmicrontonos", "greekOmicronvaria", "greekPhi", "greekPi", "greekPsi", "greekRho", "greekRhodasia", "greekSigma", "greekSigmalunate", "greekTau", "greekTheta", "greekUpsilon", "greekUpsilondasia", "greekUpsilondasiaperispomeni", "greekUpsilondasiatonos", "greekUpsilondasiavaria", "greekUpsilondialytika", "greekUpsilonmacron", "greekUpsilontonos", "greekUpsilonvaria", "greekUpsilonvrachy", "greekXi", "greekZeta", "greekalpha", "greekalphadasia", "greekalphadasiaperispomeni", "greekalphadasiatonos", "greekalphadasiavaria", "greekalphaiotasub", "greekalphaiotasubdasia", "greekalphaiotasubdasiaperispomeni", "greekalphaiotasubdasiatonos", "greekalphaiotasubdasiavaria", "greekalphaiotasubperispomeni", "greekalphaiotasubpsili", "greekalphaiotasubpsiliperispomeni", "greekalphaiotasubpsilitonos", "greekalphaiotasubpsilivaria", "greekalphaiotasubtonos", "greekalphaiotasubvaria", "greekalphamacron", "greekalphaoxia", "greekalphaperispomeni", "greekalphapsili", "greekalphapsiliperispomeni", "greekalphapsilitonos", "greekalphapsilivaria", "greekalphatonos", "greekalphavaria", "greekalphavrachy", "greekbeta", "greekbetaalt", "greekchi", "greekdasia", "greekdasiaperispomeni", "greekdasiavaria", "greekdelta", "greekdialytikaperispomeni", "greekdialytikatonos", "greekdialytikavaria", "greekdigamma", "greekepsilon", "greekepsilonalt", "greekepsilondasia", "greekepsilondasiatonos", "greekepsilondasiavaria", "greekepsilonoxia", "greekepsilonpsili", "greekepsilonpsilitonos", "greekepsilonpsilivaria", "greekepsilontonos", "greekepsilonvaria", "greeketa", "greeketadasia", "greeketadasiaperispomeni", "greeketadasiatonos", "greeketadasiavaria", "greeketaiotasub", "greeketaiotasubdasia", "greeketaiotasubdasiaperispomeni", "greeketaiotasubdasiatonos", "greeketaiotasubdasiavaria", "greeketaiotasubperispomeni", "greeketaiotasubpsili", "greeketaiotasubpsiliperispomeni", "greeketaiotasubpsilitonos", "greeketaiotasubpsilivaria", "greeketaiotasubtonos", "greeketaiotasubvaria", "greeketaoxia", "greeketaperispomeni", "greeketapsili", "greeketapsiliperispomeni", "greeketapsilitonos", "greeketapsilivaria", "greeketatonos", "greeketavaria", "greekfinalsigma", "greekgamma", "greekiota", "greekiotadasia", "greekiotadasiaperispomeni", "greekiotadasiatonos", "greekiotadasiavaria", "greekiotadialytika", "greekiotadialytikaperispomeni", "greekiotadialytikatonos", "greekiotadialytikavaria", "greekiotamacron", "greekiotaoxia", "greekiotaperispomeni", "greekiotapsili", "greekiotapsiliperispomeni", "greekiotapsilitonos", "greekiotapsilivaria", "greekiotatonos", "greekiotavaria", "greekiotavrachy", "greekkappa", "greekkoppa", "greeklambda", "greekmu", "greeknu", "greeknumerals", "greeknumkoppa", "greekomega", "greekomegadasia", "greekomegadasiaperispomeni", "greekomegadasiatonos", "greekomegadasiavaria", "greekomegaiotasub", "greekomegaiotasubdasia", "greekomegaiotasubdasiaperispomeni", "greekomegaiotasubdasiatonos", "greekomegaiotasubdasiavaria", "greekomegaiotasubperispomeni", "greekomegaiotasubpsili", "greekomegaiotasubpsiliperispomeni", "greekomegaiotasubpsilitonos", "greekomegaiotasubpsilivaria", "greekomegaiotasubtonos", "greekomegaiotasubvaria", "greekomegaoxia", "greekomegaperispomeni", "greekomegapsili", "greekomegapsiliperispomeni", "greekomegapsilitonos", "greekomegapsilivaria", "greekomegatonos", "greekomegavaria", "greekomicron", "greekomicrondasia", "greekomicrondasiatonos", "greekomicrondasiavaria", "greekomicronoxia", "greekomicronpsili", "greekomicronpsilitonos", "greekomicronpsilivaria", "greekomicrontonos", "greekomicronvaria", "greekoxia", "greekperispomeni", "greekphi", "greekphialt", "greekpi", "greekpialt", "greekprosgegrammeni", "greekpsi", "greekpsili", "greekpsiliperispomeni", "greekpsilivaria", "greekrho", "greekrhoalt", "greekrhodasia", "greekrhopsili", "greeksampi", "greeksigma", "greeksigmalunate", "greekstigma", "greektau", "greektheta", "greekthetaalt", "greektonos", "greekupsilon", "greekupsilondasia", "greekupsilondasiaperispomeni", "greekupsilondasiatonos", "greekupsilondasiavaria", "greekupsilondiaeresis", "greekupsilondialytikaperispomeni", "greekupsilondialytikatonos", "greekupsilondialytikavaria", "greekupsilonmacron", "greekupsilonoxia", "greekupsilonperispomeni", "greekupsilonpsili", "greekupsilonpsiliperispomeni", "greekupsilonpsilitonos", "greekupsilonpsilivaria", "greekupsilontonos", "greekupsilonvaria", "greekupsilonvrachy", "greekvaria", "greekxi", "greekzeta", "grid", "groupedcommand", "gsetboxllx", "gsetboxlly", "gstroke", "gt", "gtrapprox", "gtrdot", "gtreqless", "gtreqqless", "gtrless", "gtrsim", "guilsingleleft", "guilsingleright", "gujaratinumerals", "gurmurkhinumerals", "hairline", "hairspace", "halflinestrut", "halfstrut", "halfwaybox", "handletokens", "handwritten", "hangul", "hanzi", "hash", "hat", "hbar", "hboxofvbox", "hboxreference", "hcaron", "hcircumflex", "hdofstring", "headhbox", "headlanguage", "headnumber", "headnumbercontent", "headnumberdistance", "headnumberwidth", "headreferenceattributes", "headsetupspacing", "headtext", "headtextcontent", "headtextdistance", "headtexts", "headtextwidth", "headvbox", "headwidth", "heartsuit", "hebrewAlef", "hebrewAyin", "hebrewBet", "hebrewDalet", "hebrewGimel", "hebrewHe", "hebrewHet", "hebrewKaf", "hebrewKaffinal", "hebrewLamed", "hebrewMem", "hebrewMemfinal", "hebrewNun", "hebrewNunfinal", "hebrewPe", "hebrewPefinal", "hebrewQof", "hebrewResh", "hebrewSamekh", "hebrewShin", "hebrewTav", "hebrewTet", "hebrewTsadi", "hebrewTsadifinal", "hebrewVav", "hebrewYod", "hebrewZayin", "hebrewnumerals", "heightanddepthofstring", "heightofstring", "heightspanningtext", "helptext", "hexnumber", "hexstringtonumber", "hglue", "hiddenbar", "hiddencitation", "hiddencite", "hideblocks", "high", "highlight", "highordinalstr", "hilo", "himilo", "hl", "hookleftarrow", "hookrightarrow", "horizontalgrowingbar", "horizontalpositionbar", "hpackbox", "hpackedbox", "hphantom", "hpos", "hsizefraction", "hslash", "hsmash", "hsmashbox", "hsmashed", "hspace", "hstroke", "htdpofstring", "htofstring", "hyphen", "hyphenatedcoloredword", "hyphenatedfile", "hyphenatedfilename", "hyphenatedhbox", "hyphenatedpar", "hyphenatedurl", "hyphenatedword", "iacute", "ibox", "ibreve", "icaron", "icircumflex", "ideographichalffillspace", "ideographicspace", "idiaeresis", "idotaccent", "idotbelow", "idoublegrave", "idxfromluatable", "ifassignment", "iff", "ifinobject", "ifinoutputstream", "ifparameters", "iftrialtypesetting", "ignoreimplicitspaces", "ignoretagsinexport", "ignorevalue", "igrave", "ihook", "iiiint", "iiiintop", "iiint", "iiintop", "iint", "iintop", "iinvertedbreve", "ijligature", "imacron", "imaginaryi", "imaginaryj", "imath", "immediatesavetwopassdata", "impliedby", "implies", "imply", "in", "includemenu", "includesvgbuffer", "includesvgfile", "includeversioninfo", "increment", "incrementcounter", "incrementedcounter", "incrementpagenumber", "incrementsubpagenumber", "incrementvalue", "indentation", "index", "infofont", "infofontbold", "inframed", "infty", "infull", "inheritparameter", "inhibitblank", "ininner", "ininneredge", "ininnermargin", "initializeboxstack", "inleft", "inleftedge", "inleftmargin", "inline", "inlinebuffer", "inlinedbox", "inlinemath", "inlinemathematics", "inlinemessage", "inlineordisplaymath", "inlineprettyprintbuffer", "inlinerange", "inmargin", "inmframed", "innerflushshapebox", "inother", "inouter", "inouteredge", "inoutermargin", "input", "inputfilebarename", "inputfilename", "inputfilerealsuffix", "inputfilesuffix", "inputgivenfile", "inright", "inrightedge", "inrightmargin", "insertpages", "inspectluatable", "installactionhandler", "installactivecharacter", "installanddefineactivecharacter", "installattributestack", "installautocommandhandler", "installautosetuphandler", "installbasicautosetuphandler", "installbasicparameterhandler", "installbottomframerenderer", "installcommandhandler", "installcorenamespace", "installctxfunction", "installctxscanner", "installdefinehandler", "installdefinitionset", "installdefinitionsetmember", "installdirectcommandhandler", "installdirectparameterhandler", "installdirectparametersethandler", "installdirectsetuphandler", "installdirectstyleandcolorhandler", "installframedautocommandhandler", "installframedcommandhandler", "installglobalmacrostack", "installlanguage", "installleftframerenderer", "installmacrostack", "installnamespace", "installoutputroutine", "installpagearrangement", "installparameterhandler", "installparameterhashhandler", "installparametersethandler", "installparentinjector", "installprotectedctxfunction", "installprotectedctxscanner", "installrightframerenderer", "installrootparameterhandler", "installsetuphandler", "installsetuponlycommandhandler", "installshipoutmethod", "installsimplecommandhandler", "installsimpleframedcommandhandler", "installstyleandcolorhandler", "installswitchcommandhandler", "installswitchsetuphandler", "installtexdirective", "installtextracker", "installtopframerenderer", "installunitsseparator", "installunitsspace", "installversioninfo", "int", "intclockwise", "integerrounding", "integers", "interactionbar", "interactionbuttons", "interactionmenu", "intercal", "intertext", "interwordspaceafter", "interwordspacebefore", "interwordspaces", "interwordspacesafter", "interwordspacesbefore", "intop", "invisibletimes", "invokepagehandler", "iogonek", "iota", "italic", "italicbold", "italiccorrection", "italicface", "item", "items", "itemtag", "itilde", "jcaron", "jcircumflex", "jmath", "jobfilename", "jobfilesuffix", "kap", "kappa", "kcaron", "kcommaaccent", "keepblocks", "keeplinestogether", "keepunwantedspaces", "kerncharacters", "khook", "kkra", "koreancirclenumerals", "koreannumerals", "koreannumeralsc", "koreannumeralsp", "koreanparentnumerals", "lVert", "labellanguage", "labeltext", "labeltexts", "lacute", "lambda", "lambdabar", "land", "langle", "language", "languageCharacters", "languagecharacters", "languagecharwidth", "lastcounter", "lastcountervalue", "lastdigit", "lastlinewidth", "lastnaturalboxdp", "lastnaturalboxht", "lastnaturalboxwd", "lastparwrapper", "lastpredefinedsymbol", "lastrealpage", "lastrealpagenumber", "lastsubcountervalue", "lastsubpage", "lastsubpagenumber", "lasttwodigits", "lastuserpage", "lastuserpagenumber", "lateluacode", "latin", "layeredtext", "layerheight", "layerwidth", "lazysavetaggedtwopassdata", "lazysavetwopassdata", "lbar", "lbox", "lbrace", "lbracket", "lcaron", "lceil", "lchexnumber", "lchexnumbers", "lcommaaccent", "lcurl", "ldotmiddle", "ldotp", "ldots", "le", "leadsto", "left", "leftaligned", "leftarrow", "leftarrowtail", "leftarrowtriangle", "leftbottombox", "leftbox", "leftdasharrow", "leftguillemot", "leftharpoondown", "leftharpoonup", "lefthbox", "leftheadtext", "leftlabeltext", "leftleftarrows", "leftline", "leftmathlabeltext", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "leftrightarrow", "leftrightarrows", "leftrightarrowtriangle", "leftrightharpoons", "leftrightsquigarrow", "leftskipadaption", "leftsquigarrow", "leftsubguillemot", "leftthreetimes", "lefttopbox", "lefttoright", "lefttorighthbox", "lefttorightvbox", "lefttorightvtop", "leftwavearrow", "leftwhitearrow", "leq", "leqq", "leqslant", "lessapprox", "lessdot", "lesseqgtr", "lesseqqgtr", "lessgtr", "lesssim", "letbeundefined", "letcatcodecommand", "letcscsname", "letcsnamecs", "letcsnamecsname", "letdummyparameter", "letempty", "letgvalue", "letgvalueempty", "letgvalurelax", "letterampersand", "letterat", "letterbackslash", "letterbar", "letterbgroup", "letterclosebrace", "lettercolon", "letterdollar", "letterdoublequote", "letteregroup", "letterescape", "letterexclamationmark", "letterhash", "letterhat", "letterleftbrace", "letterleftbracket", "letterleftparenthesis", "letterless", "lettermore", "letteropenbrace", "letterpercent", "letterquestionmark", "letterrightbrace", "letterrightbracket", "letterrightparenthesis", "lettersinglequote", "letterslash", "letterspacing", "lettertilde", "letterunderscore", "letvalue", "letvalueempty", "letvaluerelax", "lfence", "lfloor", "lgroup", "lhbox", "lhooknwarrow", "lhooksearrow", "limitatefirstline", "limitatelines", "limitatetext", "line", "linebox", "linefeed", "linefillerhbox", "linefillervbox", "linefillervtop", "linenote", "linespanningtext", "linethickness", "linterval", "listcitation", "listcite", "listlength", "listnamespaces", "literalmode", "ljligature", "ll", "llangle", "llap", "llbracket", "llcorner", "lll", "llless", "llointerval", "lmoustache", "lnapprox", "lneq", "lneqq", "lnot", "lnsim", "loadanyfile", "loadanyfileonce", "loadbtxdefinitionfile", "loadbtxreplacementfile", "loadcldfile", "loadcldfileonce", "loadfontgoodies", "loadluafile", "loadluafileonce", "loadspellchecklist", "loadtexfile", "loadtexfileonce", "loadtypescriptfile", "localframed", "localframedwithsettings", "localhsize", "localpopbox", "localpopmacro", "localpushbox", "localpushmacro", "localundefine", "locatedfilepath", "locatefilepath", "locfilename", "logo", "lohi", "lointerval", "lomihi", "longleftarrow", "longleftrightarrow", "longmapsfrom", "longmapsto", "longrightarrow", "longrightsquigarrow", "looparrowleft", "looparrowright", "lor", "low", "lowerbox", "lowercased", "lowercasestring", "lowercasing", "lowerleftdoubleninequote", "lowerleftsingleninequote", "lowerrightdoubleninequote", "lowerrightsingleninequote", "lozenge", "lparent", "lrcorner", "lrointerval", "lrtbbox", "lstroke", "lt", "ltimes", "ltop", "ltrhbox", "ltrvbox", "ltrvtop", "luaTeX", "luacode", "luaconditional", "luaenvironment", "luaexpanded", "luaexpr", "luafunction", "luajitTeX", "luamajorversion", "luametaTeX", "luaminorversion", "luaparameterset", "luasetup", "luaversion", "lvert", "m", "mLeftarrow", "mLeftrightarrow", "mRightarrow", "mainlanguage", "makecharacteractive", "makerawcommalist", "makestrutofbox", "maltese", "mapfontsize", "mapsdown", "mapsfrom", "mapsto", "mapsup", "margindata", "margintext", "markcontent", "markedpages", "marking", "markinjector", "markpage", "markreferencepage", "mat", "math", "mathampersand", "mathbf", "mathbi", "mathblackboard", "mathbs", "mathdefault", "mathdollar", "mathdouble", "mathematics", "mathfraktur", "mathfunction", "mathhash", "mathhyphen", "mathit", "mathitalic", "mathlabellanguage", "mathlabeltext", "mathlabeltexts", "mathop", "mathover", "mathpercent", "mathrm", "mathscript", "mathsl", "mathss", "mathtext", "mathtextbf", "mathtextbi", "mathtextbs", "mathtextit", "mathtextsl", "mathtexttf", "mathtf", "mathtriplet", "mathtt", "mathunder", "mathupright", "mathword", "mathwordbf", "mathwordbi", "mathwordbs", "mathwordit", "mathwordsl", "mathwordtf", "maxaligned", "mbox", "mcframed", "measure", "measured", "measuredangle", "measuredeq", "medskip", "medspace", "menubutton", "mequal", "message", "mfence", "mframed", "mfunction", "mfunctionlabeltext", "mhbox", "mho", "mhookleftarrow", "mhookrightarrow", "mid", "midaligned", "middle", "middlealigned", "middlebox", "midhbox", "midsubsentence", "minimalhbox", "minus", "minuscolon", "mirror", "mixedcaps", "mkvibuffer", "mleftarrow", "mleftharpoondown", "mleftharpoonup", "mleftrightarrow", "mleftrightharpoons", "mmapsto", "models", "moduleparameter", "molecule", "mono", "monobold", "mononormal", "month", "monthlong", "monthshort", "mp", "mprandomnumber", "mrel", "mrightarrow", "mrightharpoondown", "mrightharpoonup", "mrightleftharpoons", "mrightoverleftarrow", "mtext", "mtriplerel", "mtwoheadleftarrow", "mtwoheadrightarrow", "mu", "multimap", "nHdownarrow", "nHuparrow", "nLeftarrow", "nLeftrightarrow", "nRightarrow", "nVDash", "nVdash", "nVleftarrow", "nVleftrightarrow", "nVrightarrow", "nabla", "nacute", "namedheadnumber", "namedstructureheadlocation", "namedstructureuservariable", "namedstructurevariable", "namedtaggedlabeltexts", "napostrophe", "napprox", "napproxEq", "narrownobreakspace", "nasymp", "natural", "naturalhbox", "naturalhpack", "naturalnumbers", "naturaltpack", "naturalvbox", "naturalvcenter", "naturalvpack", "naturalvtop", "naturalwd", "ncaron", "ncommaaccent", "ncong", "ncurl", "ndivides", "ne", "nearrow", "neg", "negatecolorbox", "negated", "negativesign", "negemspace", "negenspace", "negthinspace", "neng", "neq", "nequiv", "neswarrow", "newattribute", "newcatcodetable", "newcounter", "newevery", "newfrenchspacing", "newluatable", "newmode", "newsignal", "newsystemmode", "nexists", "nextbox", "nextboxdp", "nextboxht", "nextboxhtdp", "nextboxwd", "nextcounter", "nextcountervalue", "nextdepth", "nextparagraphs", "nextrealpage", "nextrealpagenumber", "nextsubcountervalue", "nextsubpage", "nextsubpagenumber", "nextuserpage", "nextuserpagenumber", "ngeq", "ngrave", "ngtr", "ngtrless", "ngtrsim", "ni", "nihongo", "nin", "njligature", "nleftarrow", "nleftrightarrow", "nleq", "nless", "nlessgtr", "nlesssim", "nmid", "nni", "nobar", "nobreakspace", "nocap", "nocharacteralign", "nocitation", "nocite", "nodetostring", "noffigurepages", "noflines", "noflinesinbox", "noflocalfloats", "noheaderandfooterlines", "noheightstrut", "nohyphens", "noindentation", "noitem", "nonfrenchspacing", "nonmathematics", "nonvalidassignment", "normal", "normalboldface", "normalframedwithsettings", "normalitalicface", "normalizebodyfontsize", "normalizedfontsize", "normalizefontdepth", "normalizefontheight", "normalizefontline", "normalizefontwidth", "normalizetextdepth", "normalizetextheight", "normalizetextline", "normalizetextwidth", "normalslantedface", "normaltypeface", "nospace", "not", "note", "notesymbol", "notin", "notopandbottomlines", "notragged", "nowns", "nparallel", "nprec", "npreccurlyeq", "nrightarrow", "nsim", "nsimeq", "nsqsubseteq", "nsqsupseteq", "nsubset", "nsubseteq", "nsucc", "nsucccurlyeq", "nsupset", "nsupseteq", "ntilde", "ntimes", "ntriangleleft", "ntrianglelefteq", "ntriangleright", "ntrianglerighteq", "nu", "numberofpoints", "numbers", "nvDash", "nvdash", "nvleftarrow", "nvleftrightarrow", "nvrightarrow", "nwarrow", "nwsearrow", "oacute", "obeydepth", "objectdepth", "objectheight", "objectmargin", "objectwidth", "obox", "obreve", "ocaron", "ocircumflex", "ocircumflexacute", "ocircumflexdotbelow", "ocircumflexgrave", "ocircumflexhook", "ocircumflextilde", "octnumber", "octstringtonumber", "odiaeresis", "odiaeresismacron", "odot", "odotaccent", "odotaccentmacron", "odotbelow", "odoublegrave", "oeligature", "offset", "offsetbox", "ograve", "ohm", "ohook", "ohorn", "ohornacute", "ohorndotbelow", "ohorngrave", "ohornhook", "ohorntilde", "ohungarumlaut", "oiiint", "oiint", "oint", "ointclockwise", "ointctrclockwise", "oinvertedbreve", "omacron", "omega", "omicron", "ominus", "onedigitrounding", "oneeighth", "onefifth", "onehalf", "onequarter", "onesixth", "onesuperior", "onethird", "oogonek", "oogonekmacron", "operatorlanguage", "operatortext", "oplus", "ordfeminine", "ordinaldaynumber", "ordinalstr", "ordmasculine", "ornamenttext", "oslash", "ostroke", "ostrokeacute", "otilde", "otildemacron", "otimes", "outputfilename", "outputstreambox", "outputstreamcopy", "outputstreamunvbox", "outputstreamunvcopy", "over", "overbar", "overbars", "overbartext", "overbarunderbar", "overbrace", "overbracetext", "overbraceunderbrace", "overbracket", "overbrackettext", "overbracketunderbracket", "overlaybutton", "overlaycolor", "overlaydepth", "overlayfigure", "overlayheight", "overlayimage", "overlaylinecolor", "overlaylinewidth", "overlayoffset", "overlayrollbutton", "overlaywidth", "overleftarrow", "overleftharpoondown", "overleftharpoonup", "overleftrightarrow", "overloaderror", "overparent", "overparenttext", "overparentunderparent", "overrightarrow", "overrightharpoondown", "overrightharpoonup", "overset", "overstrike", "overstrikes", "overtwoheadleftarrow", "overtwoheadrightarrow", "owns", "page", "pagearea", "pagebreak", "pagefigure", "pageinjection", "pagenumber", "pagereference", "pagestaterealpage", "pagestaterealpageorder", "paletsize", "paragraphmark", "parallel", "part", "partial", "pdfTeX", "pdfactualtext", "pdfbackendactualtext", "pdfbackendcurrentresources", "pdfbackendsetcatalog", "pdfbackendsetcolorspace", "pdfbackendsetextgstate", "pdfbackendsetinfo", "pdfbackendsetname", "pdfbackendsetpageattribute", "pdfbackendsetpageresource", "pdfbackendsetpagesattribute", "pdfbackendsetpattern", "pdfbackendsetshade", "pdfcolor", "pdfeTeX", "percent", "percentdimen", "periodcentered", "periods", "permitcaretescape", "permitcircumflexescape", "permitspacesbetweengroups", "perp", "persiandecimals", "persiandecimalseparator", "persiannumerals", "persianthousandsseparator", "perthousand", "phantom", "phantombox", "phi", "phook", "pi", "pickupgroupedcommand", "pitchfork", "placeattachments", "placebookmarks", "placebtxrendering", "placechemical", "placecitation", "placecombinedlist", "placecomments", "placecontent", "placecurrentformulanumber", "placedbox", "placefigure", "placefloat", "placefloatcaption", "placefloatwithsetups", "placefootnotes", "placeformula", "placeframed", "placegraphic", "placeheadnumber", "placeheadtext", "placehelp", "placeholder", "placeindex", "placeinitial", "placeintermezzo", "placelayer", "placelayeredtext", "placelegend", "placelist", "placelistofabbreviations", "placelistofchemicals", "placelistoffigures", "placelistofgraphics", "placelistofintermezzi", "placelistoflogos", "placelistofpublications", "placelistofsorts", "placelistofsynonyms", "placelistoftables", "placelocalfootnotes", "placelocalnotes", "placement", "placenamedfloat", "placenamedformula", "placenotes", "placeongrid", "placeontopofeachother", "placepagenumber", "placepairedbox", "placeparallel", "placerawheaddata", "placerawheadnumber", "placerawheadtext", "placerawlist", "placeregister", "placerenderingwindow", "placesidebyside", "placesubformula", "placetable", "pm", "popattribute", "popmacro", "popmode", "popsystemmode", "position", "positionoverlay", "positionregionoverlay", "positivesign", "postponenotes", "prec", "precapprox", "preccurlyeq", "preceq", "preceqq", "precnapprox", "precneq", "precneqq", "precnsim", "precsim", "predefinedfont", "predefinefont", "predefinesymbol", "prefixedpagenumber", "prefixlanguage", "prefixtext", "prependetoks", "prependgvalue", "prependtocommalist", "prependtoks", "prependtoksonce", "prependvalue", "prerollblank", "presetbtxlabeltext", "presetdocument", "presetfieldsymbols", "presetheadtext", "presetlabeltext", "presetmathlabeltext", "presetoperatortext", "presetprefixtext", "presetsuffixtext", "presettaglabeltext", "presetunittext", "pretocommalist", "prettyprintbuffer", "prevcounter", "prevcountervalue", "preventmode", "prevrealpage", "prevrealpagenumber", "prevsubcountervalue", "prevsubpage", "prevsubpagenumber", "prevuserpage", "prevuserpagenumber", "prime", "primes", "procent", "processMPbuffer", "processMPfigurefile", "processaction", "processallactionsinset", "processassignlist", "processassignmentcommand", "processassignmentlist", "processbetween", "processblocks", "processbodyfontenvironmentlist", "processcolorcomponents", "processcommacommand", "processcommalist", "processcommalistwithparameters", "processcontent", "processfile", "processfilemany", "processfilenone", "processfileonce", "processfirstactioninset", "processisolatedchars", "processisolatedwords", "processlinetablebuffer", "processlinetablefile", "processlist", "processmonth", "processranges", "processseparatedlist", "processtexbuffer", "processtokens", "processuntil", "processxtablebuffer", "processyear", "prod", "product", "profiledbox", "profilegivenbox", "program", "project", "propto", "pseudoMixedCapped", "pseudoSmallCapped", "pseudoSmallcapped", "pseudosmallcapped", "psi", "punctuationspace", "purenumber", "pushattribute", "pushbutton", "pushmacro", "pushmode", "pushoutputstream", "pushsystemmode", "putboxincache", "putnextboxincache", "qquad", "quad", "quadrupleprime", "quads", "quarterstrut", "questiondown", "questionedeq", "quitcommalist", "quitprevcommalist", "quittypescriptscanning", "quotation", "quote", "quotedbl", "quotedblbase", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "quotesingle", "quotesinglebase", "rVert", "racute", "raggedbottom", "raggedcenter", "raggedleft", "raggedright", "raggedwidecenter", "raisebox", "randomizetext", "randomnumber", "rangle", "rationals", "rawcounter", "rawcountervalue", "rawdate", "rawdoifelseinset", "rawdoifinset", "rawdoifinsetelse", "rawgetparameters", "rawprocessaction", "rawprocesscommacommand", "rawprocesscommalist", "rawstructurelistuservariable", "rawsubcountervalue", "rbox", "rbrace", "rbracket", "rcaron", "rceil", "rcommaaccent", "rdoublegrave", "readfile", "readfixfile", "readjobfile", "readlocfile", "readsetfile", "readsysfile", "readtexfile", "readxmlfile", "realSmallCapped", "realSmallcapped", "realpagenumber", "reals", "realsmallcapped", "recursedepth", "recurselevel", "recursestring", "redoconvertfont", "ref", "reference", "referencecolumnnumber", "referencepagedetail", "referencepagestate", "referenceprefix", "referencerealpage", "referencesymbol", "referring", "registerattachment", "registerctxluafile", "registered", "registerexternalfigure", "registerfontclass", "registerhyphenationexception", "registerhyphenationpattern", "registermenubuttons", "registerparwrapper", "registerparwrapperreverse", "registersort", "registersynonym", "registerunit", "regular", "relatemarking", "relateparameterhandlers", "relaxvalueifundefined", "relbar", "remainingcharacters", "remark", "removebottomthings", "removedepth", "removefromcommalist", "removelastskip", "removelastspace", "removemarkedcontent", "removepunctuation", "removesubstring", "removetoks", "removeunwantedspaces", "repeathead", "replacefeature", "replaceincommalist", "replaceword", "rescan", "rescanwithsetup", "resetMPdrawing", "resetMPenvironment", "resetMPinstance", "resetallattributes", "resetandaddfeature", "resetbar", "resetboxesincache", "resetbreakpoints", "resetbuffer", "resetcharacteralign", "resetcharacterkerning", "resetcharacterspacing", "resetcharacterstripping", "resetcollector", "resetcounter", "resetctxscanner", "resetdigitsmanipulation", "resetdirection", "resetfeature", "resetflag", "resetfontcolorsheme", "resetfontfallback", "resetfontsolution", "resethyphenationfeatures", "resetinjector", "resetinteractionmenu", "resetitaliccorrection", "resetlayer", "resetlocalfloats", "resetmarker", "resetmarking", "resetmode", "resetpagenumber", "resetparallel", "resetpath", "resetpenalties", "resetperiodkerning", "resetprofile", "resetrecurselevel", "resetreference", "resetreplacements", "resetscript", "resetsetups", "resetshownsynonyms", "resetsubpagenumber", "resetsymbolset", "resetsystemmode", "resettimer", "resettokenlist", "resettrackers", "resettrialtypesetting", "resetusedsortings", "resetusedsynonyms", "resetuserpagenumber", "resetvalue", "resetvisualizers", "reshapebox", "resolvedglyphdirect", "resolvedglyphstyled", "restartcounter", "restorebox", "restorecatcodes", "restorecounter", "restorecurrentattributes", "restoreendofline", "restoreglobalbodyfont", "restriction", "retestfeature", "reusableMPgraphic", "reuseMPgraphic", "reuserandomseed", "reverseddoubleprime", "reversedprime", "reversedtripleprime", "reversehbox", "reversehpack", "reversetpack", "reversevbox", "reversevboxcontent", "reversevpack", "reversevtop", "revivefeature", "rfence", "rfloor", "rgroup", "rhbox", "rho", "rhooknearrow", "rhookswarrow", "right", "rightaligned", "rightangle", "rightarrow", "rightarrowbar", "rightarrowtail", "rightarrowtriangle", "rightbottombox", "rightbox", "rightdasharrow", "rightguillemot", "rightharpoondown", "rightharpoonup", "righthbox", "rightheadtext", "rightlabeltext", "rightleftarrows", "rightleftharpoons", "rightline", "rightmathlabeltext", "rightorleftpageaction", "rightpageorder", "rightrightarrows", "rightskipadaption", "rightsquigarrow", "rightsubguillemot", "rightthreearrows", "rightthreetimes", "righttoleft", "righttolefthbox", "righttoleftvbox", "righttoleftvtop", "righttopbox", "rightwavearrow", "rightwhitearrow", "ring", "rinterval", "rinvertedbreve", "risingdotseq", "rlap", "rlointerval", "rmoustache", "rneq", "robustaddtocommalist", "robustdoifelseinset", "robustdoifinsetelse", "robustpretocommalist", "rointerval", "rollbutton", "roman", "romanC", "romanD", "romanI", "romanII", "romanIII", "romanIV", "romanIX", "romanL", "romanM", "romanV", "romanVI", "romanVII", "romanVIII", "romanX", "romanXI", "romanXII", "romanc", "romand", "romani", "romanii", "romaniii", "romaniv", "romanix", "romanl", "romanm", "romannumerals", "romanv", "romanvi", "romanvii", "romanviii", "romanx", "romanxi", "romanxii", "rootradical", "rotate", "rparent", "rrangle", "rrbracket", "rrointerval", "rtimes", "rtlhbox", "rtlvbox", "rtlvtop", "rtop", "ruby", "ruledhbox", "ruledhpack", "ruledmbox", "ruledtopv", "ruledtpack", "ruledvbox", "ruledvpack", "ruledvtop", "runMPbuffer", "runninghbox", "russianNumerals", "russiannumerals", "rvert", "sacute", "safechar", "samplefile", "sans", "sansbold", "sansnormal", "sansserif", "savebox", "savebtxdataset", "savebuffer", "savecounter", "savecurrentattributes", "savenormalmeaning", "savetaggedtwopassdata", "savetwopassdata", "sbox", "scale", "scaron", "scedilla", "schwa", "schwahook", "scircumflex", "scommaaccent", "screen", "searrow", "secondoffivearguments", "secondoffourarguments", "secondofsixarguments", "secondofthreearguments", "secondofthreeunexpanded", "secondoftwoarguments", "secondoftwounexpanded", "section", "sectionmark", "seeindex", "select", "selectblocks", "serializecommalist", "serializedcommalist", "serif", "serifbold", "serifnormal", "setJSpreamble", "setMPlayer", "setMPpositiongraphic", "setMPpositiongraphicrange", "setMPtext", "setMPvariable", "setMPvariables", "setautopagestaterealpageno", "setbar", "setbigbodyfont", "setboxllx", "setboxlly", "setbreakpoints", "setcapstrut", "setcatcodetable", "setcharacteralign", "setcharacteraligndetail", "setcharactercasing", "setcharactercleaning", "setcharacterkerning", "setcharacterspacing", "setcharacterstripping", "setcharstrut", "setcollector", "setcolormodell", "setcounter", "setcounterown", "setctxluafunction", "setcurrentfontclass", "setdataset", "setdatavalue", "setdefaultpenalties", "setdigitsmanipulation", "setdirection", "setdocumentargument", "setdocumentargumentdefault", "setdocumentfilename", "setdummyparameter", "setelementexporttag", "setemeasure", "setevalue", "setevariable", "setevariables", "setexpansion", "setfirstline", "setfirstpasscharacteralign", "setflag", "setfont", "setfontcolorsheme", "setfontfeature", "setfontsolution", "setfontstrut", "setfractions", "setglobalscript", "setgmeasure", "setgvalue", "setgvariable", "setgvariables", "sethboxregister", "sethyphenatedurlafter", "sethyphenatedurlbefore", "sethyphenatedurlnormal", "sethyphenationfeatures", "setinitial", "setinjector", "setinteraction", "setinterfacecommand", "setinterfaceconstant", "setinterfaceelement", "setinterfacemessage", "setinterfacevariable", "setinternalrendering", "setitaliccorrection", "setlayer", "setlayerframed", "setlayertext", "setlinefiller", "setlocalhsize", "setlocalscript", "setluatable", "setmainbodyfont", "setmainparbuilder", "setmarker", "setmarking", "setmathstyle", "setmeasure", "setmessagetext", "setminus", "setmode", "setnostrut", "setnote", "setnotetext", "setobject", "setoldstyle", "setpagereference", "setpagestate", "setpagestaterealpageno", "setparagraphfreezing", "setpenalties", "setpercentdimen", "setperiodkerning", "setposition", "setpositionbox", "setpositiondata", "setpositiondataplus", "setpositiononly", "setpositionplus", "setpositionstrut", "setprofile", "setrandomseed", "setreference", "setreferencedobject", "setregisterentry", "setreplacements", "setrigidcolumnbalance", "setrigidcolumnhsize", "setscript", "setsecondpasscharacteralign", "setsectionblock", "setsimplecolumnshsize", "setsmallbodyfont", "setsmallcaps", "setstackbox", "setstructurepageregister", "setstrut", "setsuperiors", "setsystemmode", "settabular", "settaggedmetadata", "settestcrlf", "settextcontent", "settightobject", "settightreferencedobject", "settightstrut", "settightunreferencedobject", "settokenlist", "settrialtypesetting", "setuevalue", "setugvalue", "setunreferencedobject", "setup", "setupMPgraphics", "setupMPinstance", "setupMPpage", "setupMPvariables", "setupTABLE", "setupTEXpage", "setupalign", "setupalternativestyles", "setuparranging", "setupattachment", "setupattachments", "setupbackend", "setupbackground", "setupbackgrounds", "setupbar", "setupbars", "setupblackrules", "setupblank", "setupbleeding", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbookmark", "setupbottom", "setupbottomtexts", "setupbtx", "setupbtxdataset", "setupbtxlabeltext", "setupbtxlist", "setupbtxregister", "setupbtxrendering", "setupbuffer", "setupbutton", "setupcapitals", "setupcaption", "setupcaptions", "setupcharacteralign", "setupcharacterkerning", "setupcharacterspacing", "setupchemical", "setupchemicalframed", "setupclipping", "setupcollector", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetarea", "setupcolumnsetareatext", "setupcolumnsetlines", "setupcolumnsetspan", "setupcolumnsetstart", "setupcombination", "setupcombinedlist", "setupcomment", "setupcontent", "setupcounter", "setupdataset", "setupdelimitedtext", "setupdescription", "setupdescriptions", "setupdirections", "setupdocument", "setupeffect", "setupenumeration", "setupenumerations", "setupenv", "setupexpansion", "setupexport", "setupexternalfigure", "setupexternalfigures", "setupexternalsoundtracks", "setupfacingfloat", "setupfield", "setupfieldbody", "setupfieldcategory", "setupfieldcontentframed", "setupfieldlabelframed", "setupfields", "setupfieldtotalframed", "setupfiller", "setupfillinlines", "setupfillinrules", "setupfirstline", "setupfittingpage", "setupfloat", "setupfloatframed", "setupfloats", "setupfloatsplitting", "setupfontexpansion", "setupfontprotrusion", "setupfonts", "setupfontsolution", "setupfooter", "setupfootertexts", "setupfootnotes", "setupforms", "setupformula", "setupformulae", "setupformulaframed", "setupframed", "setupframedcontent", "setupframedtable", "setupframedtablecolumn", "setupframedtablerow", "setupframedtext", "setupframedtexts", "setupglobalreferenceprefix", "setuphead", "setupheadalternative", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphelp", "setuphigh", "setuphighlight", "setuphyphenation", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupindex", "setupinitial", "setupinsertion", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupitaliccorrection", "setupitemgroup", "setupitemizations", "setupitemize", "setupitems", "setuplabel", "setuplabeltext", "setuplanguage", "setuplayer", "setuplayeredtext", "setuplayout", "setuplayouttext", "setuplegend", "setuplinefiller", "setuplinefillers", "setuplinenote", "setuplinenumbering", "setuplines", "setuplinetable", "setuplinewidth", "setuplist", "setuplistalternative", "setuplistextra", "setuplocalfloats", "setuplocalinterlinespace", "setuplow", "setuplowhigh", "setuplowmidhigh", "setupmakeup", "setupmarginblock", "setupmargindata", "setupmarginframed", "setupmarginrule", "setupmarginrules", "setupmarking", "setupmathalignment", "setupmathcases", "setupmathematics", "setupmathfence", "setupmathfraction", "setupmathfractions", "setupmathframed", "setupmathlabeltext", "setupmathmatrix", "setupmathornament", "setupmathradical", "setupmathstackers", "setupmathstyle", "setupmixedcolumns", "setupmodule", "setupmulticolumns", "setupnarrower", "setupnotation", "setupnotations", "setupnote", "setupnotes", "setupoffset", "setupoffsetbox", "setupoperatortext", "setupoppositeplacing", "setuporientation", "setupoutput", "setupoutputroutine", "setuppagechecker", "setuppagecolumns", "setuppagecomment", "setuppageinjection", "setuppageinjectionalternative", "setuppagenumber", "setuppagenumbering", "setuppageshift", "setuppagestate", "setuppagetransitions", "setuppairedbox", "setuppalet", "setuppaper", "setuppapersize", "setupparagraph", "setupparagraphintro", "setupparagraphnumbering", "setupparagraphs", "setupparallel", "setupperiodkerning", "setupperiods", "setupplaceholder", "setupplacement", "setuppositionbar", "setuppositioning", "setupprefixtext", "setupprocessor", "setupprofile", "setupprograms", "setupquotation", "setupquote", "setuprealpagenumber", "setupreferenceformat", "setupreferenceprefix", "setupreferencestructureprefix", "setupreferencing", "setupregister", "setupregisters", "setuprenderingwindow", "setuprotate", "setupruby", "setups", "setupscale", "setupscript", "setupscripts", "setupsectionblock", "setupselector", "setupshift", "setupsidebar", "setupsorting", "setupspacing", "setupspellchecking", "setupstartstop", "setupstretched", "setupstrut", "setupstyle", "setupsubformula", "setupsubformulas", "setupsubpagenumber", "setupsuffixtext", "setupsymbols", "setupsymbolset", "setupsynctex", "setupsynonyms", "setupsystem", "setuptables", "setuptabulate", "setuptagging", "setuptaglabeltext", "setuptext", "setuptextbackground", "setuptextflow", "setuptextnote", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptooltip", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunit", "setupunittext", "setupurl", "setupuserdata", "setupuserdataalternative", "setupuserpagenumber", "setupversion", "setupviewerlayer", "setupvspacing", "setupwhitespace", "setupwithargument", "setupwithargumentswapped", "setupxml", "setupxtable", "setuvalue", "setuxvalue", "setvalue", "setvariable", "setvariables", "setvboxregister", "setvisualizerfont", "setvtopregister", "setwidthof", "setxmeasure", "setxvalue", "setxvariable", "setxvariables", "seveneighths", "sfrac", "shapedhbox", "sharp", "shiftbox", "shiftdown", "shiftup", "showallmakeup", "showattributes", "showbodyfont", "showbodyfontenvironment", "showboxes", "showbtxdatasetauthors", "showbtxdatasetcompleteness", "showbtxdatasetfields", "showbtxfields", "showbtxhashedauthors", "showbtxtables", "showchardata", "showcharratio", "showcolor", "showcolorbar", "showcolorcomponents", "showcolorgroup", "showcolorset", "showcolorstruts", "showcounter", "showdirectives", "showdirsinmargin", "showedebuginfo", "showexperiments", "showfont", "showfontdata", "showfontexpansion", "showfontitalics", "showfontkerns", "showfontparameters", "showfontstrip", "showfontstyle", "showframe", "showglyphdata", "showglyphs", "showgrid", "showgridsnapping", "showhelp", "showhyphenationtrace", "showhyphens", "showinjector", "showjustification", "showkerning", "showlayout", "showlayoutcomponents", "showligature", "showligatures", "showlogcategories", "showluatables", "showmakeup", "showmargins", "showmessage", "showminimalbaseline", "shownextbox", "showotfcomposition", "showpalet", "showparentchain", "showparwrapperstate", "showprint", "showsetups", "showsetupsdefinition", "showstruts", "showsymbolset", "showtimer", "showtokens", "showtrackers", "showvalue", "showvariable", "showwarning", "sigma", "signalrightpage", "sim", "simeq", "simplealignedbox", "simplealignedboxplus", "simplealignedspreadbox", "simplegroupedcommand", "simplereversealignedbox", "simplereversealignedboxplus", "singalcharacteralign", "singlebond", "singleverticalbar", "sixperemspace", "sixthofsixarguments", "slanted", "slantedbold", "slantedface", "slash", "slicepages", "slong", "slovenianNumerals", "sloveniannumerals", "small", "smallbodyfont", "smallbold", "smallbolditalic", "smallboldslanted", "smallcappedcharacters", "smallcappedromannumerals", "smallcaps", "smaller", "smallitalicbold", "smallnormal", "smallskip", "smallslanted", "smallslantedbold", "smalltype", "smash", "smashbox", "smashboxed", "smashedhbox", "smashedvbox", "smile", "snaptogrid", "softhyphen", "solidus", "someheadnumber", "somekindoftab", "someline", "somelocalfloat", "somenamedheadnumber", "someplace", "somewhere", "space", "spaceddigits", "spaceddigitsmethod", "spaceddigitsseparator", "spaceddigitssymbol", "spadesuit", "spanishNumerals", "spanishnumerals", "speech", "sphericalangle", "splitatasterisk", "splitatcolon", "splitatcolons", "splitatcomma", "splitatperiod", "splitdfrac", "splitfilename", "splitfloat", "splitfrac", "splitoffbase", "splitofffull", "splitoffkind", "splitoffname", "splitoffpath", "splitoffroot", "splitofftokens", "splitofftype", "splitstring", "spreadhbox", "sqcap", "sqcup", "sqrt", "sqsubset", "sqsubseteq", "sqsubsetneq", "sqsupset", "sqsupseteq", "sqsupsetneq", "square", "squaredots", "ssharp", "stackrel", "stackscripts", "star", "stareq", "startJScode", "startJSpreamble", "startLUA", "startMP", "startMPclip", "startMPcode", "startMPdefinitions", "startMPdrawing", "startMPenvironment", "startMPextensions", "startMPinclusions", "startMPinitializations", "startMPpage", "startMPpositiongraphic", "startMPpositionmethod", "startMPrun", "startPARSEDXML", "startTABLE", "startTABLEbody", "startTABLEfoot", "startTABLEhead", "startTABLEnested", "startTABLEnext", "startTC", "startTD", "startTDs", "startTEX", "startTEXpage", "startTH", "startTN", "startTR", "startTRs", "startTX", "startTY", "startXML", "startalign", "startalignment", "startallmodes", "startappendices", "startarrangedpages", "startasciimode", "startaside", "startattachment", "startbackground", "startbackmatter", "startbar", "startbbordermatrix", "startbitmapimage", "startblockquote", "startbodymatter", "startbordermatrix", "startboxedcolumns", "startbtxlabeltext", "startbtxrenderingdefinitions", "startbuffer", "startcases", "startcatcodetable", "startcenteraligned", "startchapter", "startcharacteralign", "startcheckedfences", "startchemical", "startchemicaltext", "startcollect", "startcollecting", "startcolor", "startcolorintent", "startcoloronly", "startcolorset", "startcolumns", "startcolumnset", "startcolumnsetspan", "startcombination", "startcomment", "startcomponent", "startcontextcode", "startcontextdefinitioncode", "startctxfunction", "startctxfunctiondefinition", "startcurrentcolor", "startcurrentlistentrywrapper", "startdelimited", "startdelimitedtext", "startdisplaymath", "startdmath", "startdocument", "starteffect", "startelement", "startembeddedxtable", "startendnote", "startendofline", "startenvironment", "startexceptions", "startexpanded", "startexpandedcollect", "startextendedcatcodetable", "startexternalfigurecollection", "startfacingfloat", "startfact", "startfigure", "startfiguretext", "startfittingpage", "startfixed", "startfloatcombination", "startfont", "startfontclass", "startfontsolution", "startfootnote", "startformula", "startformulas", "startframed", "startframedcell", "startframedcontent", "startframedrow", "startframedtable", "startframedtext", "startfrontmatter", "startgoto", "startgraphictext", "startgridsnapping", "starthanging", "starthbox", "starthboxestohbox", "starthboxregister", "starthead", "startheadtext", "starthelptext", "starthiding", "starthighlight", "starthyphenation", "startimath", "startindentation", "startindentedtext", "startinteraction", "startinteractionmenu", "startinterface", "startintermezzotext", "startintertext", "startitem", "startitemgroup", "startitemgroupcolumns", "startitemize", "startknockout", "startlabeltext", "startlanguage", "startlayout", "startleftaligned", "startlegend", "startline", "startlinealignment", "startlinecorrection", "startlinefiller", "startlinenote", "startlinenumbering", "startlines", "startlinetable", "startlinetablebody", "startlinetablecell", "startlinetablehead", "startlocalfootnotes", "startlocalheadsetup", "startlocallinecorrection", "startlocalnotes", "startlocalsetups", "startlua", "startluacode", "startluaparameterset", "startluasetups", "startmakeup", "startmarginblock", "startmarginrule", "startmarkedcontent", "startmarkpages", "startmathalignment", "startmathcases", "startmathlabeltext", "startmathmatrix", "startmathmode", "startmathstyle", "startmatrices", "startmatrix", "startmaxaligned", "startmdformula", "startmidaligned", "startmiddlealigned", "startmiddlemakeup", "startmixedcolumns", "startmode", "startmodeset", "startmodule", "startmoduletestsection", "startmpformula", "startmulticolumns", "startnamedsection", "startnamedsubformulas", "startnarrow", "startnarrower", "startnegative", "startnicelyfilledbox", "startnointerference", "startnotallmodes", "startnotext", "startnotmode", "startoperatortext", "startopposite", "startoutputstream", "startoverlay", "startoverprint", "startpacked", "startpagecolumns", "startpagecomment", "startpagefigure", "startpagelayout", "startpagemakeup", "startpar", "startparagraph", "startparagraphs", "startparagraphscell", "startparbuilder", "startpart", "startpath", "startplacechemical", "startplacefigure", "startplacefloat", "startplaceformula", "startplacegraphic", "startplaceintermezzo", "startplacelegend", "startplacepairedbox", "startplacetable", "startpositioning", "startpositionoverlay", "startpositive", "startpostponing", "startpostponingnotes", "startprefixtext", "startprocessassignmentcommand", "startprocessassignmentlist", "startprocesscommacommand", "startprocesscommalist", "startproduct", "startproject", "startprotect", "startprotectedcolors", "startpublication", "startpunctuation", "startquotation", "startquote", "startrandomized", "startrandomseed", "startrawsetups", "startreadingfile", "startreferenceprefix", "startregime", "startregister", "startreusableMPgraphic", "startrightaligned", "startruby", "startscript", "startsdformula", "startsection", "startsectionblock", "startsectionblockenvironment", "startsectionlevel", "startsetups", "startshapebox", "startshift", "startsidebar", "startsimplecolumns", "startspecialitem", "startspeech", "startspformula", "startsplitformula", "startsplittext", "startspread", "startstandardmakeup", "startstaticMPfigure", "startstaticMPgraphic", "startstrictinspectnextcharacter", "startstructurepageregister", "startstrut", "startstyle", "startsubformulas", "startsubject", "startsubjectlevel", "startsubsection", "startsubsentence", "startsubstack", "startsubsubject", "startsubsubsection", "startsubsubsubject", "startsubsubsubsection", "startsubsubsubsubject", "startsubsubsubsubsection", "startsubsubsubsubsubject", "startsuffixtext", "startsymbolset", "starttable", "starttablehead", "starttables", "starttabletail", "starttabletext", "starttabulate", "starttabulatehead", "starttabulatetail", "starttagged", "starttaglabeltext", "starttexcode", "starttexdefinition", "starttext", "starttextbackground", "starttextbackgroundmanual", "starttextcolor", "starttextcolorintent", "starttextflow", "starttextmakeup", "starttextrule", "startthematrix", "starttitle", "starttokenlist", "starttokens", "starttransparent", "starttypescript", "starttypescriptcollection", "starttyping", "startuniqueMPgraphic", "startuniqueMPpagegraphic", "startunittext", "startunpacked", "startusableMPgraphic", "startuseMPgraphic", "startusemathstyleparameter", "startuserdata", "startusingbtxspecification", "startvbox", "startvboxregister", "startvboxtohbox", "startvboxtohboxseparator", "startviewerlayer", "startvtop", "startvtopregister", "startxcell", "startxcellgroup", "startxcolumn", "startxgroup", "startxmldisplayverbatim", "startxmlinlineverbatim", "startxmlraw", "startxmlsetups", "startxrow", "startxrowgroup", "startxtable", "startxtablebody", "startxtablefoot", "startxtablehead", "startxtablenext", "stligature", "stopJScode", "stopJSpreamble", "stopLUA", "stopMP", "stopMPclip", "stopMPcode", "stopMPdefinitions", "stopMPdrawing", "stopMPenvironment", "stopMPextensions", "stopMPinclusions", "stopMPinitializations", "stopMPpage", "stopMPpositiongraphic", "stopMPpositionmethod", "stopMPrun", "stopPARSEDXML", "stopTABLE", "stopTABLEbody", "stopTABLEfoot", "stopTABLEhead", "stopTABLEnested", "stopTABLEnext", "stopTC", "stopTD", "stopTDs", "stopTEX", "stopTEXpage", "stopTH", "stopTN", "stopTR", "stopTRs", "stopTX", "stopTY", "stopXML", "stopalign", "stopalignment", "stopallmodes", "stopappendices", "stoparrangedpages", "stopasciimode", "stopaside", "stopattachment", "stopbackground", "stopbackmatter", "stopbar", "stopbbordermatrix", "stopbitmapimage", "stopblockquote", "stopbodymatter", "stopbordermatrix", "stopboxedcolumns", "stopbtxlabeltext", "stopbtxrenderingdefinitions", "stopbuffer", "stopcases", "stopcatcodetable", "stopcenteraligned", "stopchapter", "stopcharacteralign", "stopcheckedfences", "stopchemical", "stopchemicaltext", "stopcollect", "stopcollecting", "stopcolor", "stopcolorintent", "stopcoloronly", "stopcolorset", "stopcolumns", "stopcolumnset", "stopcolumnsetspan", "stopcombination", "stopcomment", "stopcomponent", "stopcontextcode", "stopcontextdefinitioncode", "stopctxfunction", "stopctxfunctiondefinition", "stopcurrentcolor", "stopcurrentlistentrywrapper", "stopdelimited", "stopdelimitedtext", "stopdisplaymath", "stopdmath", "stopdocument", "stopeffect", "stopelement", "stopembeddedxtable", "stopendnote", "stopendofline", "stopenvironment", "stopexceptions", "stopexpanded", "stopexpandedcollect", "stopextendedcatcodetable", "stopexternalfigurecollection", "stopfacingfloat", "stopfact", "stopfigure", "stopfiguretext", "stopfittingpage", "stopfixed", "stopfloatcombination", "stopfont", "stopfontclass", "stopfontsolution", "stopfootnote", "stopformula", "stopformulas", "stopframed", "stopframedcell", "stopframedcontent", "stopframedrow", "stopframedtable", "stopframedtext", "stopfrontmatter", "stopgoto", "stopgraphictext", "stopgridsnapping", "stophanging", "stophbox", "stophboxestohbox", "stophboxregister", "stophead", "stopheadtext", "stophelptext", "stophiding", "stophighlight", "stophyphenation", "stopimath", "stopindentation", "stopindentedtext", "stopinteraction", "stopinteractionmenu", "stopinterface", "stopintermezzotext", "stopintertext", "stopitem", "stopitemgroup", "stopitemgroupcolumns", "stopitemize", "stopknockout", "stoplabeltext", "stoplanguage", "stoplayout", "stopleftaligned", "stoplegend", "stopline", "stoplinealignment", "stoplinecorrection", "stoplinefiller", "stoplinenote", "stoplinenumbering", "stoplines", "stoplinetable", "stoplinetablebody", "stoplinetablecell", "stoplinetablehead", "stoplocalfootnotes", "stoplocalheadsetup", "stoplocallinecorrection", "stoplocalnotes", "stoplocalsetups", "stoplua", "stopluacode", "stopluaparameterset", "stopluasetups", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopmarkedcontent", "stopmarkpages", "stopmathalignment", "stopmathcases", "stopmathlabeltext", "stopmathmatrix", "stopmathmode", "stopmathstyle", "stopmatrices", "stopmatrix", "stopmaxaligned", "stopmdformula", "stopmidaligned", "stopmiddlealigned", "stopmiddlemakeup", "stopmixedcolumns", "stopmode", "stopmodeset", "stopmodule", "stopmoduletestsection", "stopmpformula", "stopmulticolumns", "stopnamedsection", "stopnamedsubformulas", "stopnarrow", "stopnarrower", "stopnegative", "stopnicelyfilledbox", "stopnointerference", "stopnotallmodes", "stopnotext", "stopnotmode", "stopoperatortext", "stopopposite", "stopoutputstream", "stopoverlay", "stopoverprint", "stoppacked", "stoppagecolumns", "stoppagecomment", "stoppagefigure", "stoppagelayout", "stoppagemakeup", "stoppar", "stopparagraph", "stopparagraphs", "stopparagraphscell", "stopparbuilder", "stoppart", "stoppath", "stopplacechemical", "stopplacefigure", "stopplacefloat", "stopplaceformula", "stopplacegraphic", "stopplaceintermezzo", "stopplacelegend", "stopplacepairedbox", "stopplacetable", "stoppositioning", "stoppositionoverlay", "stoppositive", "stoppostponing", "stoppostponingnotes", "stopprefixtext", "stopprocessassignmentcommand", "stopprocessassignmentlist", "stopprocesscommacommand", "stopprocesscommalist", "stopproduct", "stopproject", "stopprotect", "stopprotectedcolors", "stoppublication", "stoppunctuation", "stopquotation", "stopquote", "stoprandomized", "stoprandomseed", "stoprawsetups", "stopreadingfile", "stopreferenceprefix", "stopregime", "stopreusableMPgraphic", "stoprightaligned", "stopruby", "stopscript", "stopsdformula", "stopsection", "stopsectionblock", "stopsectionblockenvironment", "stopsectionlevel", "stopsetups", "stopshapebox", "stopshift", "stopsidebar", "stopsimplecolumns", "stopspecialitem", "stopspeech", "stopspformula", "stopsplitformula", "stopsplittext", "stopspread", "stopstandardmakeup", "stopstaticMPfigure", "stopstaticMPgraphic", "stopstrictinspectnextcharacter", "stopstrut", "stopstyle", "stopsubformulas", "stopsubject", "stopsubjectlevel", "stopsubsection", "stopsubsentence", "stopsubstack", "stopsubsubject", "stopsubsubsection", "stopsubsubsubject", "stopsubsubsubsection", "stopsubsubsubsubject", "stopsubsubsubsubsection", "stopsubsubsubsubsubject", "stopsuffixtext", "stopsymbolset", "stoptable", "stoptablehead", "stoptables", "stoptabletail", "stoptabletext", "stoptabulate", "stoptabulatehead", "stoptabulatetail", "stoptagged", "stoptaglabeltext", "stoptexcode", "stoptexdefinition", "stoptext", "stoptextbackground", "stoptextbackgroundmanual", "stoptextcolor", "stoptextcolorintent", "stoptextflow", "stoptextmakeup", "stoptextrule", "stopthematrix", "stoptitle", "stoptokenlist", "stoptokens", "stoptransparent", "stoptypescript", "stoptypescriptcollection", "stoptyping", "stopuniqueMPgraphic", "stopuniqueMPpagegraphic", "stopunittext", "stopunpacked", "stopusableMPgraphic", "stopuseMPgraphic", "stopusemathstyleparameter", "stopuserdata", "stopusingbtxspecification", "stopvbox", "stopvboxregister", "stopvboxtohbox", "stopvboxtohboxseparator", "stopviewerlayer", "stopvtop", "stopvtopregister", "stopxcell", "stopxcellgroup", "stopxcolumn", "stopxgroup", "stopxmldisplayverbatim", "stopxmlinlineverbatim", "stopxmlraw", "stopxmlsetups", "stopxrow", "stopxrowgroup", "stopxtable", "stopxtablebody", "stopxtablefoot", "stopxtablehead", "stopxtablenext", "stretched", "strictdoifelsenextoptional", "strictdoifnextoptionalelse", "stripcharacter", "strippedcsname", "stripspaces", "structurelistuservariable", "structurenumber", "structuretitle", "structureuservariable", "structurevariable", "strut", "strutdp", "strutgap", "strutht", "struthtdp", "struttedbox", "strutwd", "style", "styleinstance", "subject", "subpagenumber", "subsection", "subsentence", "subset", "subseteq", "subseteqq", "subsetneq", "subsetneqq", "substituteincommalist", "subsubject", "subsubsection", "subsubsubject", "subsubsubsection", "subsubsubsubject", "subsubsubsubsection", "subsubsubsubsubject", "subtractfeature", "succ", "succapprox", "succcurlyeq", "succeq", "succeqq", "succnapprox", "succneq", "succneqq", "succnsim", "succsim", "suffixlanguage", "suffixtext", "sum", "supset", "supseteq", "supseteqq", "supsetneq", "supsetneqq", "surd", "surdradical", "swapcounts", "swapdimens", "swapface", "swapmacros", "swaptypeface", "swarrow", "switchstyleonly", "switchtobodyfont", "switchtocolor", "switchtointerlinespace", "symbol", "symbolreference", "synchronizeblank", "synchronizeindenting", "synchronizemarking", "synchronizeoutputstreams", "synchronizestrut", "synchronizewhitespace", "synctexblockfilename", "synctexresetfilename", "synctexsetfilename", "systemlog", "systemlogfirst", "systemloglast", "systemsetups", "tLeftarrow", "tLeftrightarrow", "tRightarrow", "tabulateautoline", "tabulateautorule", "tabulateline", "tabulaterule", "taggedctxcommand", "taggedlabeltexts", "taglabellanguage", "taglabeltext", "tau", "tbinom", "tbox", "tcaron", "tcedilla", "tcommaaccent", "tcurl", "tequal", "test", "testandsplitstring", "testcolumn", "testfeature", "testfeatureonce", "testpage", "testpageonly", "testpagesync", "testtokens", "tex", "texdefinition", "texsetup", "textAngstrom", "textacute", "textampersand", "textasciicircum", "textasciitilde", "textat", "textbackslash", "textbar", "textbottomcomma", "textbottomdot", "textbraceleft", "textbraceright", "textbreve", "textbrokenbar", "textbullet", "textcaron", "textcedilla", "textcelsius", "textcent", "textcircledP", "textcircumflex", "textcitation", "textcite", "textcomma", "textcontrolspace", "textcurrency", "textdag", "textddag", "textdegree", "textdiaeresis", "textdiv", "textdollar", "textdong", "textdotaccent", "textellipsis", "texteuro", "textflowcollector", "textfraction", "textgrave", "texthash", "texthorizontalbar", "texthungarumlaut", "texthyphen", "textkelvin", "textlognot", "textmacron", "textmath", "textmho", "textminus", "textmu", "textmultiply", "textnumero", "textogonek", "textohm", "textormathchar", "textormathchars", "textounce", "textpercent", "textperiod", "textplus", "textpm", "textreference", "textring", "textrule", "textslash", "textsterling", "texttilde", "textunderscore", "textvisiblespace", "textyen", "thai", "thainumerals", "thedatavalue", "thefirstcharacter", "thematrix", "thenormalizedbodyfontsize", "theorientation", "therefore", "theremainingcharacters", "theta", "thickspace", "thinrule", "thinrules", "thinspace", "thirdoffivearguments", "thirdoffourarguments", "thirdofsixarguments", "thirdofthreearguments", "thirdofthreeunexpanded", "thook", "thookleftarrow", "thookrightarrow", "thorn", "threedigitrounding", "threeeighths", "threefifths", "threeperemspace", "threequarter", "threesuperior", "tibetannumerals", "tightlayer", "tilde", "times", "tinyfont", "title", "tlap", "tleftarrow", "tleftharpoondown", "tleftharpoonup", "tleftrightarrow", "tleftrightharpoons", "tmapsto", "to", "tochar", "tolinenote", "tooltip", "top", "topbox", "topleftbox", "toplinebox", "toprightbox", "topskippedbox", "tracecatcodetables", "tracedfontname", "tracedpagestate", "traceoutputroutines", "tracepositions", "trademark", "translate", "transparencycomponents", "transparent", "trel", "triangle", "triangledown", "triangleleft", "triangleq", "triangleright", "trightarrow", "trightharpoondown", "trightharpoonup", "trightleftharpoons", "trightoverleftarrow", "triplebond", "tripleprime", "tripleverticalbar", "truefilename", "truefontname", "tstroke", "ttraggedright", "ttriplerel", "ttwoheadleftarrow", "ttwoheadrightarrow", "turnediota", "twodigitrounding", "twofifths", "twoheaddownarrow", "twoheadleftarrow", "twoheadrightarrow", "twoheadrightarrowtail", "twoheaduparrow", "twosuperior", "twothirds", "tx", "txx", "typ", "type", "typebuffer", "typedefinedbuffer", "typeface", "typefile", "typeinlinebuffer", "typescriptone", "typescriptprefix", "typescriptthree", "typescripttwo", "typesetbuffer", "typesetbufferonly", "typesetfile", "uacute", "ubreve", "ucaron", "uchexnumber", "uchexnumbers", "ucircumflex", "uconvertnumber", "udiaeresis", "udiaeresisacute", "udiaeresiscaron", "udiaeresisgrave", "udiaeresismacron", "udotbelow", "udots", "udoublegrave", "uedcatcodecommand", "ugrave", "uhook", "uhorn", "uhornacute", "uhorndotbelow", "uhorngrave", "uhornhook", "uhorntilde", "uhungarumlaut", "uinvertedbreve", "ulcorner", "umacron", "undefinevalue", "undepthed", "underbar", "underbars", "underbartext", "underbrace", "underbracetext", "underbracket", "underbrackettext", "underdash", "underdashes", "underdot", "underdots", "underleftarrow", "underleftharpoondown", "underleftharpoonup", "underleftrightarrow", "underparent", "underparenttext", "underrandom", "underrandoms", "underrightarrow", "underrightharpoondown", "underrightharpoonup", "underset", "understrike", "understrikes", "undertwoheadleftarrow", "undertwoheadrightarrow", "undoassign", "unexpandeddocumentvariable", "unframed", "unhhbox", "unihex", "uniqueMPgraphic", "uniqueMPpagegraphic", "unit", "unitlanguage", "unitshigh", "unitslow", "unittext", "unknown", "unprotected", "unregisterhyphenationpattern", "unregisterparwrapper", "unspaceafter", "unspaceargument", "unspaced", "unspacestring", "unstackscripts", "untexargument", "untexcommand", "uogonek", "upand", "uparrow", "updasharrow", "updateparagraphdemerits", "updateparagraphpenalties", "updateparagraphproperties", "updateparagraphshapes", "updownarrow", "updownarrowbar", "updownarrows", "upharpoonleft", "upharpoonright", "uplus", "uppercased", "uppercasestring", "uppercasing", "upperleftdoubleninequote", "upperleftdoublesixquote", "upperleftsingleninequote", "upperleftsinglesixquote", "upperrightdoubleninequote", "upperrightdoublesixquote", "upperrightsingleninequote", "upperrightsinglesixquote", "upsilon", "upuparrows", "upwhitearrow", "urcorner", "uring", "url", "useJSscripts", "useMPenvironmentbuffer", "useMPgraphic", "useMPlibrary", "useMPrun", "useMPvariables", "useURL", "usealignparameter", "useblankparameter", "useblocks", "usebodyfont", "usebodyfontparameter", "usebtxdataset", "usebtxdefinitions", "usecitation", "usecolors", "usecomponent", "usedirectory", "usedummycolorparameter", "usedummystyleandcolor", "usedummystyleparameter", "useenvironment", "useexternaldocument", "useexternalfigure", "useexternalrendering", "useexternalsoundtrack", "usefigurebase", "usefile", "usefontpath", "usegridparameter", "usehyphensparameter", "useindentingparameter", "useindentnextparameter", "useinterlinespaceparameter", "uselanguageparameter", "useluamodule", "useluatable", "usemathstyleparameter", "usemodule", "useproduct", "useprofileparameter", "useproject", "usereferenceparameter", "userpagenumber", "usesetupsparameter", "usestaticMPfigure", "usesubpath", "usesymbols", "usetexmodule", "usetypescript", "usetypescriptfile", "useurl", "usezipfile", "utfchar", "utflower", "utfupper", "utilde", "utilityregisterlength", "vDash", "validassignment", "varTheta", "varepsilon", "varkappa", "varnothing", "varphi", "varpi", "varrho", "varsigma", "vartheta", "vboxreference", "vdash", "vdots", "vec", "vee", "veebar", "veeeq", "verbatim", "verbatimstring", "verbosenumber", "version", "vert", "verticalgrowingbar", "verticalpositionbar", "veryraggedcenter", "veryraggedleft", "veryraggedright", "vglue", "viewerlayer", "vl", "vpackbox", "vpackedbox", "vphantom", "vpos", "vsmash", "vsmashbox", "vsmashed", "vspace", "vspacing", "wcircumflex", "wdofstring", "wedge", "wedgeeq", "weekday", "whitearrowupfrombar", "widehat", "widetilde", "widthofstring", "widthspanningtext", "withoutpt", "word", "wordright", "words", "wordtonumber", "wp", "wr", "writebetweenlist", "writedatatolist", "writestatus", "writetolist", "xLeftarrow", "xLeftrightarrow", "xRightarrow", "xdefconvertedargument", "xequal", "xfrac", "xhookleftarrow", "xhookrightarrow", "xi", "xleftarrow", "xleftharpoondown", "xleftharpoonup", "xleftrightarrow", "xleftrightharpoons", "xmapsto", "xmladdindex", "xmlafterdocumentsetup", "xmlaftersetup", "xmlall", "xmlappenddocumentsetup", "xmlappendsetup", "xmlapplyselectors", "xmlatt", "xmlattdef", "xmlattribute", "xmlattributedef", "xmlbadinclusions", "xmlbeforedocumentsetup", "xmlbeforesetup", "xmlchainatt", "xmlchainattdef", "xmlchecknamespace", "xmlcommand", "xmlconcat", "xmlconcatrange", "xmlcontext", "xmlcount", "xmldefaulttotext", "xmldepth", "xmldirectives", "xmldirectivesafter", "xmldirectivesbefore", "xmldisplayverbatim", "xmldoif", "xmldoifatt", "xmldoifelse", "xmldoifelseatt", "xmldoifelseempty", "xmldoifelseselfempty", "xmldoifelsetext", "xmldoifelsevalue", "xmldoifnot", "xmldoifnotatt", "xmldoifnotselfempty", "xmldoifnottext", "xmldoifselfempty", "xmldoiftext", "xmlelement", "xmlfilter", "xmlfirst", "xmlflush", "xmlflushcontext", "xmlflushdocumentsetups", "xmlflushlinewise", "xmlflushpure", "xmlflushspacewise", "xmlflushtext", "xmlinclude", "xmlinclusion", "xmlinclusions", "xmlinfo", "xmlinjector", "xmlinlineprettyprint", "xmlinlineprettyprinttext", "xmlinlineverbatim", "xmlinstalldirective", "xmllast", "xmllastatt", "xmllastmatch", "xmllastpar", "xmlloadbuffer", "xmlloaddata", "xmlloaddirectives", "xmlloadfile", "xmlloadonly", "xmlmain", "xmlmapvalue", "xmlname", "xmlnamespace", "xmlnonspace", "xmlpar", "xmlparam", "xmlpath", "xmlpos", "xmlposition", "xmlprependdocumentsetup", "xmlprependsetup", "xmlprettyprint", "xmlprettyprinttext", "xmlprocessbuffer", "xmlprocessdata", "xmlprocessfile", "xmlpure", "xmlraw", "xmlrefatt", "xmlregistereddocumentsetups", "xmlregisteredsetups", "xmlregisterns", "xmlremapname", "xmlremapnamespace", "xmlremovedocumentsetup", "xmlremovesetup", "xmlresetdocumentsetups", "xmlresetinjectors", "xmlresetsetups", "xmlsave", "xmlsetatt", "xmlsetattribute", "xmlsetentity", "xmlsetfunction", "xmlsetinjectors", "xmlsetpar", "xmlsetparam", "xmlsetsetup", "xmlsetup", "xmlshow", "xmlsnippet", "xmlstrip", "xmlstripnolines", "xmlstripped", "xmlstrippednolines", "xmltag", "xmltexentity", "xmltext", "xmltobuffer", "xmltobufferverbose", "xmltofile", "xmlvalue", "xmlverbatim", "xrel", "xrightarrow", "xrightharpoondown", "xrightharpoonup", "xrightleftharpoons", "xrightoverleftarrow", "xsplitstring", "xtriplerel", "xtwoheadleftarrow", "xtwoheadrightarrow", "xxfrac", "xypos", "yacute", "ycircumflex", "ydiaeresis", "ydotbelow", "yen", "ygrave", "yhook", "yiddishnumerals", "ymacron", "ytilde", "zacute", "zcaron", "zdotaccent", "zeronumberconversion", "zerowidthnobreakspace", "zerowidthspace", "zeta", "zhook", "zstroke", "zwj", "zwnj" },
- ["en"]={},
-} \ No newline at end of file
diff --git a/context/data/textadept/context/data/scite-context-data-metafun.lua b/context/data/textadept/context/data/scite-context-data-metafun.lua
deleted file mode 100644
index eea8198bc..000000000
--- a/context/data/textadept/context/data/scite-context-data-metafun.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
- ["commands"]={ "loadfile", "loadimage", "loadmodule", "dispose", "nothing", "transparency", "tolist", "topath", "tocycle", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "tanh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "unittriangle", "fulltriangle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "randomizedcontrols", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "perpendicular", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "drawdoublearrows", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "boundingradius", "boundingcircle", "boundingpoint", "crossingunder", "insideof", "outsideof", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", "sized", "xyscaled", "intersection_point", "intersection_found", "penpoint", "bbwidth", "bbheight", "withshade", "withcircularshade", "withlinearshade", "defineshade", "shaded", "shadedinto", "withshadecolors", "withshadedomain", "withshademethod", "withshadefactor", "withshadevector", "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadecenterone", "withshadecentertwo", "withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin", "shownshadedirection", "shownshadecenter", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "outlinetext", "filloutlinetext", "drawoutlinetext", "outlinetexttopath", "checkedbounds", "checkbounds", "strut", "rule", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "colordecimalslist", "textext", "thetextext", "rawtextext", "textextoffset", "texbox", "thetexbox", "rawtexbox", "istextext", "rawmadetext", "validtexbox", "onetimetextext", "rawfmttext", "thefmttext", "fmttext", "onetimefmttext", "notcached", "keepcached", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "withopacity", "property", "properties", "withproperties", "asgroup", "withpattern", "withpatternscale", "withpatternfloat", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "colorlike", "readfile", "clearxy", "unitvector", "center", "epsed", "anchored", "originpath", "infinite", "break", "xstretched", "ystretched", "snapped", "pathconnectors", "function", "constructedfunction", "constructedpath", "constructedpairs", "straightfunction", "straightpath", "straightpairs", "curvedfunction", "curvedpath", "curvedpairs", "evenly", "oddly", "condition", "pushcurrentpicture", "popcurrentpicture", "arrowpath", "resetarrows", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary", "complemented", "resolvedcolor", "normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths", "drawboundary", "drawwholepath", "drawpathonly", "visualizeddraw", "visualizedfill", "detaileddraw", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "pencilled", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "topair", "format", "formatted", "quotation", "quote", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "nofill", "dofill", "fillup", "eofillup", "nodraw", "dodraw", "area", "addbackground", "shadedup", "shadeddown", "shadedleft", "shadedright", "sortlist", "copylist", "shapedlist", "listtocurves", "listtolines", "listsize", "listlast", "uniquelist", "circularpath", "squarepath", "linearpath", "theoffset", "texmode", "systemmode", "texvar", "texstr", "isarray", "prefix", "dimension", "getmacro", "getdimen", "getcount", "gettoks", "setmacro", "setdimen", "setcount", "settoks", "setglobalmacro", "setglobaldimen", "setglobalcount", "setglobaltoks", "positionpath", "positioncurve", "positionxy", "positionparagraph", "positioncolumn", "positionwhd", "positionpage", "positionregion", "positionbox", "positionx", "positiony", "positionanchor", "positioninregion", "positionatanchor", "getposboxes", "getmultipars", "getpospage", "getposparagraph", "getposcolumn", "getposregion", "getposx", "getposy", "getposwidth", "getposheight", "getposdepth", "getposleftskip", "getposrightskip", "getposhsize", "getposparindent", "getposhangindent", "getposhangafter", "getposxy", "getposupperleft", "getposlowerleft", "getposupperright", "getposlowerright", "getposllx", "getposlly", "getposurx", "getposury", "wdpart", "htpart", "dppart", "texvar", "texstr", "inpath", "pointof", "leftof", "rightof", "utfnum", "utflen", "utfsub", "newhash", "disposehash", "inhash", "tohash", "fromhash", "isarray", "prefix", "isobject", "comment", "report", "lua", "lualist", "mp", "MP", "luacall", "mirrored", "mirroredabout", "scriptindex", "newscriptindex", "newcolor", "newrgbcolor", "newcmykcolor", "newnumeric", "newboolean", "newtransform", "newpath", "newpicture", "newstring", "newpair", "mpvard", "mpvarn", "mpvars", "mpvar", "withtolerance" },
- ["internals"]={ "nocolormodel", "greycolormodel", "graycolormodel", "rgbcolormodel", "cmykcolormodel", "shadefactor", "shadeoffset", "textextoffset", "textextanchor", "normaltransparent", "multiplytransparent", "screentransparent", "overlaytransparent", "softlighttransparent", "hardlighttransparent", "colordodgetransparent", "colorburntransparent", "darkentransparent", "lightentransparent", "differencetransparent", "exclusiontransparent", "huetransparent", "saturationtransparent", "colortransparent", "luminositytransparent", "ahvariant", "ahdimple", "ahfactor", "ahscale", "metapostversion", "maxdimensions", "drawoptionsfactor", "dq", "sq", "crossingscale", "crossingoption", "contextlmtxmode", "metafunversion", "minifunversion", "getparameters", "presetparameters", "hasparameter", "hasoption", "getparameter", "getparameterdefault", "getparametercount", "getmaxparametercount", "getparameterpath", "getparameterpen", "getparametertext", "applyparameters", "pushparameters", "popparameters", "setluaparameter", "definecolor", "record", "newrecord", "setrecord", "getrecord", "anchorxy", "anchorx", "anchory", "anchorht", "anchordp", "anchorul", "anchorll", "anchorlr", "anchorur", "localanchorbox", "localanchorcell", "localanchorspan", "anchorbox", "anchorcell", "anchorspan", "matrixbox", "matrixcell", "matrixspan" },
-} \ No newline at end of file
diff --git a/context/data/textadept/context/data/scite-context-data-metapost.lua b/context/data/textadept/context/data/scite-context-data-metapost.lua
deleted file mode 100644
index cb376cc87..000000000
--- a/context/data/textadept/context/data/scite-context-data-metapost.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-return {
- ["commands"]={ "on", "off", "interpath", "upto", "downto", "beginfig", "endfig", "beginglyph", "endglyph", "beginfont", "endfont", "rotatedaround", "reflectedabout", "arrowhead", "currentpen", "currentpicture", "cuttings", "defaultfont", "extra_beginfig", "extra_endfig", "down", "evenly", "fullcircle", "halfcircle", "identity", "in", "left", "pensquare", "penrazor", "penspec", "origin", "quartercircle", "right", "unitsquare", "up", "withdots", "abs", "bbox", "ceiling", "center", "cutafter", "cutbefore", "dir", "directionpoint", "div", "dotprod", "intersectionpoint", "inverse", "mod", "round", "unitvector", "whatever", "cutdraw", "draw", "drawarrow", "drawdblarrow", "fill", "filldraw", "drawdot", "loggingall", "interact", "tracingall", "tracingnone", "pickup", "undraw", "unfill", "unfilldraw", "buildcycle", "dashpattern", "decr", "dotlabel", "dotlabels", "drawoptions", "incr", "label", "labels", "max", "min", "thelabel", "z", "beginchar", "blacker", "capsule_end", "change_width", "define_blacker_pixels", "define_corrected_pixels", "define_good_x_pixels", "define_good_y_pixels", "define_horizontal_corrected_pixels", "define_pixels", "define_whole_blacker_pixels", "define_whole_pixels", "define_whole_vertical_blacker_pixels", "define_whole_vertical_pixels", "endchar", "extra_beginchar", "extra_endchar", "extra_setup", "font_coding_scheme", "clearxy", "clearit", "clearpen", "shipit", "font_extra_space", "exitunless", "relax", "hide", "gobble", "gobbled", "stop", "blankpicture", "counterclockwise", "tensepath", "takepower", "direction", "softjoin", "makelabel", "rotatedabout", "flex", "superellipse", "image", "nullpen", "savepen", "clearpen", "penpos", "penlabels", "range", "thru", "z", "laboff", "bye", "red", "green", "blue", "cyan", "magenta", "yellow", "black", "white", "background", "mm", "pt", "dd", "bp", "cm", "pc", "cc", "in", "dk", "triplet", "quadruplet", "totransform", "bymatrix", "closedcurve", "closedlines", "primitive", "permanent", "immutable", "mutable", "frozen", "showproperty", "showhashentry" },
- ["disabled"]={ "verbatimtex", "troffmode" },
- ["internals"]={ "mitered", "rounded", "beveled", "butt", "squared", "eps", "epsilon", "infinity", "bboxmargin", "ahlength", "ahangle", "labeloffset", "dotlabeldiam", "defaultpen", "defaultscale", "join_radius", "charscale", "inicatcoderegime", "texcatcoderegime", "luacatcoderegime", "notcatcoderegime", "vrbcatcoderegime", "prtcatcoderegime", "ctxcatcoderegime", "txtcatcoderegime", "catcoderegime", "ditto", "EOF", "pen_lft", "pen_rt", "pen_top", "pen_bot" },
- ["metafont"]={ "autorounding", "beginchar", "blacker", "boundarychar", "capsule_def", "capsule_end", "change_width", "chardp", "chardx", "chardy", "charexists", "charext", "charht", "charic", "charlist", "charwd", "cull", "cullit", "currenttransform", "currentwindow", "define_blacker_pixels", "define_corrected_pixels", "define_good_x_pixels", "define_good_y_pixels", "define_horizontal_corrected_pixels", "define_pixels", "define_whole_blacker_pixels", "define_whole_pixels", "define_whole_vertical_blacker_pixels", "define_whole_vertical_pixels", "designsize", "display", "displaying", "endchar", "extensible", "extra_beginchar", "extra_endchar", "extra_setup", "fillin", "font_coding_scheme", "font_extra_space", "font_identifier", "font_normal_shrink", "font_normal_space", "font_normal_stretch", "font_quad", "font_size", "font_slant", "font_x_height", "fontdimen", "fontmaking", "gfcorners", "granularity", "grayfont", "headerbyte", "hppp", "hround", "imagerules", "italcorr", "kern", "labelfont", "ligtable", "lowres_fix", "makebox", "makegrid", "maketicks", "mode_def", "mode_setup", "nodisplays", "notransforms", "numspecial", "o_correction", "openit", "openwindow", "pixels_per_inch", "proofing", "proofoffset", "proofrule", "proofrulethickness", "rulepen", "screenchars", "screenrule", "screenstrokes", "screen_cols", "screen_rows", "showit", "slantfont", "smode", "smoothing", "titlefont", "totalweight", "tracingedges", "tracingpens", "turningcheck", "unitpixel", "vppp", "vround", "xoffset", "yoffset" },
- ["primitives"]={ "charcode", "day", "linecap", "linejoin", "miterlimit", "stacking", "month", "pausing", "prologues", "showstopping", "time", "tracingcapsules", "tracingchoices", "mpprocset", "tracingcommands", "tracingequations", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingrestores", "tracingspecs", "tracingstats", "tracingtitles", "truecorners", "warningcheck", "year", "false", "nullpicture", "pencircle", "penspec", "true", "and", "angle", "arclength", "arctime", "ASCII", "boolean", "bot", "char", "color", "cosd", "cycle", "decimal", "directiontime", "floor", "fontsize", "hex", "infont", "intersectiontimes", "known", "void", "length", "llcorner", "lrcorner", "makepath", "makepen", "mexp", "mlog", "normaldeviate", "not", "numeric", "oct", "odd", "or", "path", "pair", "pen", "penoffset", "picture", "point", "postcontrol", "precontrol", "reverse", "rotated", "scaled", "shifted", "sind", "slanted", "sqrt", "str", "string", "subpath", "substring", "transform", "transformed", "ulcorner", "uniformdeviate", "unknown", "urcorner", "xpart", "xscaled", "xxpart", "xypart", "ypart", "yscaled", "yxpart", "yypart", "zscaled", "addto", "clip", "input", "interim", "let", "newinternal", "save", "setbounds", "setgroup", "shipout", "show", "showdependencies", "showtoken", "showvariable", "special", "begingroup", "endgroup", "of", "curl", "tension", "and", "controls", "def", "vardef", "enddef", "expr", "suffix", "text", "primary", "secondary", "tertiary", "primarydef", "secondarydef", "tertiarydef", "randomseed", "also", "contour", "doublepath", "withcolor", "withcmykcolor", "withpen", "withstacking", "dashed", "envelope", "if", "else", "elseif", "fi", "for", "endfor", "forever", "exitif", "within", "forsuffixes", "step", "until", "charlist", "extensible", "fontdimen", "headerbyte", "kern", "ligtable", "boundarychar", "chardp", "charext", "charht", "charic", "charwd", "designsize", "fontmaking", "charexists", "cullit", "currenttransform", "gfcorners", "grayfont", "hround", "imagerules", "lowres_fix", "nodisplays", "notransforms", "openit", "displaying", "currentwindow", "screen_rows", "screen_cols", "pixels_per_inch", "cull", "display", "openwindow", "numspecial", "totalweight", "autorounding", "fillin", "proofing", "tracingpens", "xoffset", "chardx", "granularity", "smoothing", "turningcheck", "yoffset", "chardy", "hppp", "tracingedges", "vppp", "extra_beginfig", "extra_endfig", "mpxbreak", "endinput", "message", "delimiters", "turningnumber", "errmessage", "scantokens", "end", "outer", "inner", "write", "to", "readfrom", "closefrom", "withprescript", "withpostscript", "top", "bot", "lft", "rt", "ulft", "urt", "llft", "lrt", "redpart", "greenpart", "bluepart", "cyanpart", "magentapart", "yellowpart", "blackpart", "prescriptpart", "postscriptpart", "rgbcolor", "cmykcolor", "colormodel", "graypart", "greypart", "greycolor", "graycolor", "dashpart", "penpart", "stackingpart", "stroked", "filled", "textual", "clipped", "bounded", "pathpart", "expandafter", "minute", "hour", "outputformat", "outputtemplate", "filenametemplate", "fontmapfile", "fontmapline", "fontpart", "fontsize", "glyph", "restoreclipcolor", "troffmode", "runscript", "maketext", "numbersystem", "overloadmode", "setproperty" },
- ["shortcuts"]={ "..", "...", "--", "---", "&", "\\" },
- ["tex"]={ "btex", "etex", "verbatimtex" },
-} \ No newline at end of file
diff --git a/context/data/textadept/context/data/scite-context-data-tex.lua b/context/data/textadept/context/data/scite-context-data-tex.lua
deleted file mode 100644
index b02efe91e..000000000
--- a/context/data/textadept/context/data/scite-context-data-tex.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-return {
- ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" },
- ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracinglevels", "tracingnesting", "unexpanded", "unless", "widowpenalties" },
- ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbaseheight", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathextrasubpreshift", "Umathextrasubshift", "Umathextrasuppreshift", "Umathextrasupshift", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathvextensiblevariant", "Umathvoid", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uradical", "Uright", "Uroot", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentmarks", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontid", "fontmathcontrol", "fontspecifiedsize", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphyoffset", "glyphyscale", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastchkdim", "lastchknum", "lastnamedcs", "lastnodesubtype", "lastparcontext", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathcontrolmode", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathfontcontrol", "mathitalicsmode", "mathnolimitsmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscale", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "mugluespecdef", "mutable", "noaligned", "noboundary", "nohrule", "norelax", "normalizelinemode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "pageboundary", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "semiexpanded", "semiprotected", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingalignments", "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracinginserts", "tracingmarks", "tracingmath", "undent", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoksapp", "xtokspre" },
- ["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" },
- ["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" },
- ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "beginsimplegroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "endsimplegroup", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "todimension", "tointeger", "toks", "toksdef", "tolerance", "topmark", "topskip", "toscaled", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
- ["xetex"]={ "XeTeXversion" },
-} \ No newline at end of file
diff --git a/context/data/textadept/context/init.lua b/context/data/textadept/context/init.lua
deleted file mode 100644
index d5da25fc8..000000000
--- a/context/data/textadept/context/init.lua
+++ /dev/null
@@ -1,147 +0,0 @@
-local info = {
- version = 1.002,
- comment = "ini for textadept for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- Note for myself: I need to check the latest greatest textadept and also see if
--- the lpeg lexer interface has been ported to the latest scite. If not I need to
--- come up with a backup plan (vscode?).
-
-if not textadept then
- return
-end
-
--- The textadept documentation says that there can be a lexers directory under a user
--- directory but it's not in the package path. The next involved a bit or trial and
--- error in order to avoid crashes so I suppose it can be done better. If I use
--- textadept alongside scite I will make a different key binding. The code below is
--- a bit of a mess, which is a side effect of stepwise adaption combined with shared
--- iuse of code.
---
--- We use the commandline switch -u to point to the location where this file is located
--- as we then can keep it outside the program area. We also put some other files under
--- themes.
---
--- A problem is that scite needs the lexer.lua file while for textadept we don't want
--- to touch that one. So we end up with duplicate files. We cannot configure scite to
--- use an explicit lexer so both lexer paths have the same files except that the textadept
--- one has no lexer.lua there. Unfortunately themes is not requires's but always looked
--- up with an explicit path. (Maybe I should patch that.)
---
--- We are in one of:
---
--- tex/texmf-context/context/data/textadept/context
--- data/develop/context/scite/data/context/textadept
-
-package.path = table.concat ( {
- --
- _USERHOME .. "/?.lua",
- --
- _USERHOME .. "/lexers/?.lua",
- _USERHOME .. "/modules/?.lua",
- _USERHOME .. "/themes/?.lua",
- _USERHOME .. "/data/?.lua",
- --
- package.path
- --
-}, ';')
-
--- We now reset the session location to a writeable user area. We also take the opportunity
--- to increase the list.
-
-local sessionpath = os.getenv(not WIN32 and 'HOME' or 'USERPROFILE') .. '/.textadept'
-local sessionfile = not CURSES and 'session' or 'session_term'
-
-textadept.session.default_session = sessionpath .. "/" .. sessionfile
-textadept.session.save_on_quit = true
-textadept.session.max_recent_files = 25
-
--- Let's load our adapted lexer framework.
-
-require("scite-context-lexer")
-require("textadept-context-runner")
-require("textadept-context-files")
-require("scite-context-theme")
-require("textadept-context-settings")
-require("textadept-context-types")
-
--- This prevents other themes to spoil our settings.
-
--- ui.set_theme("scite-context-theme")
-buffer:set_theme("scite-context-theme")
-
--- Since version 10 there is some settings stuff in the main init file but that
--- crashes on load_settings. It has to do with the replacement of properties
--- but we already had that replaced for a while. There is some blob made that
--- gets loaded but it's not robust (should be done different I think). Anyway,
--- intercepting the two event handlers is easiest. Maybe some day I will
--- replace that init anyway (if these fundamentals keep changing between
--- versions.)
---
--- I admit that it's not a beautiful solution but it works ok and I already
--- spent too much time figuring things out anyway.
-
-local events_connect = events.connect
-
-local function events_newbuffer()
- local buffer = _G.buffer
- local SETDIRECTFUNCTION = _SCINTILLA.properties.direct_function[1]
- local SETDIRECTPOINTER = _SCINTILLA.properties.doc_pointer[2]
- local SETLUASTATE = _SCINTILLA.functions.change_lexer_state[1]
- local SETLEXERLANGUAGE = _SCINTILLA.properties.lexer_language[2]
- buffer.lexer_language = 'lpeg'
- buffer:private_lexer_call(SETDIRECTFUNCTION, buffer.direct_function)
- buffer:private_lexer_call(SETDIRECTPOINTER, buffer.direct_pointer)
- buffer:private_lexer_call(SETLUASTATE, _LUA)
- buffer.property['lexer.lpeg.home'] = _USERHOME..'/lexers/?.lua;'.. _HOME..'/lexers'
- -- load_settings()
- buffer:private_lexer_call(SETLEXERLANGUAGE, 'text')
- if buffer == ui.command_entry then
- buffer.caret_line_visible = false
- end
-end
-
--- Why these resets:
-
-local ctrl_keys = {
- '[', ']', '/', '\\', 'Z', 'Y', 'X', 'C', 'V', 'A', 'L', 'T', 'D', 'U'
-}
-
-local ctrl_shift_keys = {
- 'L', 'T', 'U', 'Z'
-}
-
-local function events_newview()
- local buffer = _G.buffer
- for i=1, #ctrl_keys do
- buffer:clear_cmd_key(string.byte(ctrl_keys[i]) | buffer.MOD_CTRL << 16)
- end
- for i=1, #ctrl_shift_keys do
- buffer:clear_cmd_key(string.byte(ctrl_shift_keys[i]) | (buffer.MOD_CTRL | buffer.MOD_SHIFT) << 16)
- end
- if #_VIEWS > 1 then
- -- load_settings()
- local SETLEXERLANGUAGE = _SCINTILLA.properties.lexer_language[2]
- buffer:private_lexer_call(SETLEXERLANGUAGE, buffer._lexer or 'text')
- end
-end
-
-events.connect = function(where,what,location)
- if location == 1 then
- if where == events.BUFFER_NEW then
- return events_connect(where,events_newbuffer,location)
- elseif where == events.VIEW_NEW then
- return events_connect(where,events_newview,location)
- end
- end
- return events_connect(where,what,location)
-end
-
-local savedrequire = require
-
-require = function(name,...)
- return savedrequire(name == "lexer" and "scite-context-lexer" or name,...)
-end
diff --git a/context/data/textadept/context/lexers/lexer.lua b/context/data/textadept/context/lexers/lexer.lua
deleted file mode 100644
index 289697b72..000000000
--- a/context/data/textadept/context/lexers/lexer.lua
+++ /dev/null
@@ -1,2686 +0,0 @@
-local info = {
- version = 1.400,
- comment = "basics for scintilla lpeg lexer for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
- comment = "contains copyrighted code from mitchell.att.foicica.com",
-
-}
-
--- We need a copy of this file to lexer.lua in the same path. This was not needed
--- before version 10 but I can't figure out what else to do. It looks like there
--- is some loading of lexer.lua but I can't see where.
-
--- For a while it looked like we're stuck with scite 3 because there would be no
--- update of scintillua for the newer versions (c++ changes) but now it looks that
--- there will be updates (2021). There is a dll for scite >= 5 but it doesn't
--- work (yet). In version 5.20+ the scintillua dll makes scite crash (alsl when I
--- use the recommended import). In an early 5.02 loading the (shipped) lpeg lexer
--- does nothing at all. There have been changes in the lua interface too but I need
--- to compare the old and new lib. For now I gave up and got back to version 3+. It
--- would be nice if error messages would go to the log pane so that wget an idea
--- what happens. After all the code involved (below) is not that much and not that
--- complex either.
---
--- Actually, scite 5.22 also crashed when a program was launched so better wait
--- for a while. (In the worst case, when it all stops working, we need to migrate
--- to visual code, which is out backup/fallback plan.) I didn't test if the latest
--- textadept still works with our lexer variant. In the meantime that editor has
--- grown to some 30 MB so it is no longer a lightweight option (scite with scintilla
--- is still quite small).
-
-if lpeg.setmaxstack then lpeg.setmaxstack(1000) end
-
-local log = false
-local trace = false
-local detail = false
-local show = false -- nice for tracing (also for later)
-local collapse = false -- can save some 15% (maybe easier on scintilla)
-local inspect = false -- can save some 15% (maybe easier on scintilla)
-
--- local log = true
--- local trace = true
-
--- GET GOING
---
--- You need to copy this file over lexer.lua. In principle other lexers could work
--- too but not now. Maybe some day. All patterns will move into the patterns name
--- space. I might do the same with styles. If you run an older version of SciTE you
--- can take one of the archives. Pre 3.41 versions can just be copied to the right
--- path, as there we still use part of the normal lexer. Below we mention some
--- issues with different versions of SciTE. We try to keep up with changes but best
--- check careful if the version that yuou install works as expected because SciTE
--- and the scintillua dll need to be in sync.
---
--- REMARK
---
--- We started using lpeg lexing as soon as it came available. Because we had rather
--- demanding files and also wanted to use nested lexers, we ended up with our own
--- variant. At least at that time this was more robust and also much faster (as we
--- have some pretty large Lua data files and also work with large xml files). As a
--- consequence successive versions had to be adapted to changes in the (at that time
--- still unstable) api. In addition to lexing we also have spell checking and such.
--- Around version 3.60 things became more stable so I don't expect to change much.
---
--- LEXING
---
--- When pc's showed up we wrote our own editor (texedit) in MODULA 2. It was fast,
--- had multiple overlapping (text) windows, could run in the at most 1M memory at
--- that time, etc. The realtime file browsing with lexing that we had at that time
--- is still on my current wish list. The color scheme and logic that we used related
--- to the logic behind the ConTeXt user interface that evolved.
---
--- Later I rewrote the editor in perl/tk. I don't like the perl syntax but tk
--- widgets are very powerful and hard to beat. In fact, TextAdept reminds me of
--- that: wrap your own interface around a framework (tk had an edit control that one
--- could control completely not that different from scintilla). Last time I checked
--- it still ran fine so I might try to implement something like its file handling in
--- TextAdept.
---
--- In the end I settled for SciTE for which I wrote TeX and MetaPost lexers that
--- could handle keyword sets. With respect to lexing (syntax highlighting) ConTeXt
--- has a long history, if only because we need it for manuals. Anyway, in the end we
--- arrived at lpeg based lexing (which is quite natural as we have lots of lpeg
--- usage in ConTeXt). The basic color schemes haven't changed much. The most
--- prominent differences are the nested lexers.
---
--- In the meantime I made the lexer suitable for typesetting sources which was no
--- big deal as we already had that in place (ConTeXt used lpeg from the day it
--- showed up so we have several lexing options there too).
---
--- Keep in mind that in ConTeXt (typesetting) lexing can follow several approaches:
--- line based (which is handy for verbatim mode), syntax mode (which is nice for
--- tutorials), and tolerant mode (so that one can also show bad examples or errors).
--- These demands can clash.
---
--- HISTORY
---
--- The remarks below are more for myself so that I keep track of changes in the
--- way we adapt to the changes in the scintillua and scite.
---
--- The fold and lex functions are copied and patched from original code by Mitchell
--- (see lexer.lua) in the scintillua distribution. So whatever I say below, assume
--- that all errors are mine. The ability to use lpeg in scintilla is a real nice
--- addition and a brilliant move. The code is a byproduct of the (mainly Lua based)
--- TextAdept which at the time I ran into it was a rapidly moving target so I
--- decided to stick ot SciTE. When I played with it, it had no realtime output pane
--- although that seems to be dealt with now (2017). I need to have a look at it in
--- more detail but a first test again made the output hang and it was a bit slow too
--- (and I also want the log pane as SciTE has it, on the right, in view). So, for
--- now I stick to SciTE even when it's somewhat crippled by the fact that we cannot
--- hook our own (language dependent) lexer into the output pane (somehow the
--- errorlist lexer is hard coded into the editor). Hopefully that will change some
--- day. The ConTeXt distribution has cmd runner for textdept that will plug in the
--- lexers discussed here as well as a dedicated runner. Considere it an experiment.
---
--- The basic code hasn't changed much but we had to adapt a few times to changes in
--- the api and/or work around bugs. Starting with SciTE version 3.20 there was an
--- issue with coloring. We still lacked a connection with SciTE itself (properties
--- as well as printing to the log pane) and we could not trace this (on windows).
--- However on unix we can see messages! As far as I can see, there are no
--- fundamental changes in lexer.lua or LexLPeg.cxx so it must be/have been in
--- Scintilla itself. So we went back to 3.10. Indicators of issues are: no lexing of
--- 'next' and 'goto <label>' in the Lua lexer and no brace highlighting either.
--- Interesting is that it does work ok in the cld lexer (so the Lua code is okay).
--- All seems to be ok again in later versions, so, when you update best check first
--- and just switch back to an older version as normally a SciTE update is not
--- critital. When char-def.lua lexes real fast this is a signal that the lexer quits
--- somewhere halfway. Maybe there are some hard coded limitations on the amount of
--- styles and/or length of names.
---
--- Anyway, after checking 3.24 and adapting to the new lexer tables things are okay
--- again. So, this version assumes 3.24 or higher. In 3.24 we have a different token
--- result, i.e. no longer a { tag, pattern } but just two return values. I didn't
--- check other changes but will do that when I run into issues. I had already
--- optimized these small tables by hashing which was much more efficient (and maybe
--- even more efficient than the current approach) but this is no longer needed. For
--- the moment we keep some of that code around as I don't know what happens in
--- future versions. I'm anyway still happy with this kind of lexing.
---
--- In 3.31 another major change took place: some helper constants (maybe they're no
--- longer constants) and functions were moved into the lexer modules namespace but
--- the functions are assigned to the Lua module afterward so we cannot alias them
--- beforehand. We're probably getting close to a stable interface now. At that time
--- for the first time I considered making a whole copy and patch the other functions
--- too as we need an extra nesting model. However, I don't want to maintain too
--- much. An unfortunate change in 3.03 is that no longer a script can be specified.
--- This means that instead of loading the extensions via the properties file, we now
--- need to load them in our own lexers, unless of course we replace lexer.lua
--- completely (which adds another installation issue).
---
--- Another change has been that _LEXERHOME is no longer available. It looks like
--- more and more functionality gets dropped so maybe at some point we need to ship
--- our own dll/so files. For instance, I'd like to have access to the current
--- filename and other SciTE properties. We could then cache some info with each
--- file, if only we had knowledge of what file we're dealing with. This all makes a
--- nice installation more complex and (worse) makes it hard to share files between
--- different editors usign s similar directory structure.
---
--- For huge files folding can be pretty slow and I do have some large ones that I
--- keep open all the time. Loading is normally no ussue, unless one has remembered
--- the status and the cursor is at the last line of a 200K line file. Optimizing the
--- fold function brought down loading of char-def.lua from 14 sec => 8 sec.
--- Replacing the word_match function and optimizing the lex function gained another
--- 2+ seconds. A 6 second load is quite ok for me. The changed lexer table structure
--- (no subtables) brings loading down to a few seconds.
---
--- When the lexer path is copied to the TextAdept lexer path, and the theme
--- definition to theme path (as lexer.lua), the lexer works there as well. Although
--- ... when I decided to check the state of TextAdept I had to adapt some loader
--- code. The solution is not pretty but works and also permits overloading. When I
--- have time and motive I will make a proper setup file to tune the look and feel a
--- bit more than we do now. The TextAdept editor nwo has tabs and a console so it
--- has become more useable for me (it's still somewhat slower than SciTE).
--- Interesting is that the jit version of TextAdept crashes on lexing large files
--- (and does not feel faster either; maybe a side effect of known limitations as we
--- know that Luajit is more limited than stock Lua).
---
--- Function load(lexer_name) starts with _lexers.WHITESPACE = lexer_name ..
--- '_whitespace' which means that we need to have it frozen at the moment we load
--- another lexer. Because spacing is used to revert to a parent lexer we need to
--- make sure that we load children as late as possible in order not to get the wrong
--- whitespace trigger. This took me quite a while to figure out (not being that
--- familiar with the internals). The lex and fold functions have been optimized. It
--- is a pitty that there is no proper print available. Another thing needed is a
--- default style in our own theme style definition, as otherwise we get wrong nested
--- lexers, especially if they are larger than a view. This is the hardest part of
--- getting things right.
---
--- It's a pitty that there is no scintillua library for the OSX version of SciTE.
--- Even better would be to have the scintillua library as integral part of SciTE as
--- that way I could use OSX alongside windows and linux (depending on needs). Also
--- nice would be to have a proper interface to SciTE then because currently the
--- lexer is rather isolated and the Lua version does not provide all standard
--- libraries. It would also be good to have lpeg support in the regular SciTE Lua
--- extension (currently you need to pick it up from someplace else). I keep hoping.
---
--- With 3.41 the interface changed again so it became time to look into the C++ code
--- and consider compiling and patching myself, something that I like to avoid.
--- Loading is more complicated now as the lexer gets loaded automatically so we have
--- little control over extending the code now. After a few days trying all kind of
--- solutions I decided to follow a different approach: drop in a complete
--- replacement. This of course means that I need to keep track of even more changes
--- (which for sure will happen) but at least I get rid of interferences. Till 3.60
--- the api (lexing and configuration) was simply too unstable across versions which
--- is a pitty because we expect authors to install SciTE without hassle. Maybe in a
--- few years things will have stabelized. Maybe it's also not really expected that
--- one writes lexers at all. A side effect is that I now no longer will use shipped
--- lexers for languages that I made no lexer for, but just the built-in ones in
--- addition to the ConTeXt lpeg lexers. Not that it matters much as the ConTeXt
--- lexers cover what I need (and I can always write more). For editing TeX files one
--- only needs a limited set of lexers (TeX, MetaPost, Lua, BibTeX, C/W, PDF, SQL,
--- etc). I can add more when I want.
---
--- In fact, the transition to 3.41 was triggered by an unfateful update of Ubuntu
--- which left me with an incompatible SciTE and lexer library and updating was not
--- possible due to the lack of 64 bit libraries. We'll see what the future brings.
--- For now I can use SciTE under wine on linux. The fact that scintillua ships
--- independently is a showstopper.
---
--- Promissing is that the library now can use another Lua instance so maybe some day
--- it will get properly in SciTE and we can use more clever scripting.
---
--- In some lexers we use embedded ones even if we could do it directly, The reason
--- is that when the end token is edited (e.g. -->), backtracking to the space before
--- the begin token (e.g. <!--) results in applying the surrounding whitespace which
--- in turn means that when the end token is edited right, backtracking doesn't go
--- back. One solution (in the dll) would be to backtrack several space categories.
--- After all, lexing is quite fast (applying the result is much slower).
---
--- For some reason the first blob of text tends to go wrong (pdf and web). It would
--- be nice to have 'whole doc' initial lexing. Quite fishy as it makes it impossible
--- to lex the first part well (for already opened documents) because only a partial
--- text is passed.
---
--- So, maybe I should just write this from scratch (assuming more generic usage)
--- because after all, the dll expects just tables, based on a string. I can then
--- also do some more aggressive resource sharing (needed when used generic).
---
--- I think that nested lexers are still bugged (esp over longer ranges). It never
--- was robust or maybe it's simply not meant for too complex cases (well, it
--- probably *is* tricky material). The 3.24 version was probably the best so far.
--- The fact that styles bleed between lexers even if their states are isolated is an
--- issue. Another issus is that zero characters in the text passed to the lexer can
--- mess things up (pdf files have them in streams).
---
--- For more complex 'languages', like web or xml, we need to make sure that we use
--- e.g. 'default' for spacing that makes up some construct. Ok, we then still have a
--- backtracking issue but less.
---
--- Good news for some ConTeXt users: there is now a scintillua plugin for notepad++
--- and we ship an ini file for that editor with some installation instructions
--- embedded. Also, TextAdept has a console so that we can run realtime. The spawner
--- is still not perfect (sometimes hangs) but it was enough reason to spend time on
--- making our lexer work with TextAdept and create a setup.
---
--- Some bad news. The interface changed (again) in textadept 10, some for the better
--- (but a bit different from what happens here) and some for the worse, especially
--- moving some code to the init file so we now need some bad hacks. I decided to
--- stay with the old method of defining lexers and because the lexer cannot be run
--- in parallel any more (some change in the binary?) I will probably also cleanup
--- code below as we no longer need to be compatible. Unfortunately textadept is too
--- much a moving target to simply kick in some (tex related) production flow (apart
--- from the fact that it doesn't yet have the scite like realtime console). I'll
--- keep an eye on it. Because we don't need many added features I might as well decide
--- to make a lean and mean instance (after all the license permits forking).
-
--- TRACING
---
--- The advantage is that we now can check more easily with regular Lua(TeX). We can
--- also use wine and print to the console (somehow stdout is intercepted there.) So,
--- I've added a bit of tracing. Interesting is to notice that each document gets its
--- own instance which has advantages but also means that when we are spellchecking
--- we reload the word lists each time. (In the past I assumed a shared instance and
--- took some precautions. But I can fix this.)
---
--- TODO
---
--- It would be nice if we could load some ConTeXt Lua modules (the basic set) and
--- then use resolvers and such. But it might not work well with scite.
---
--- The current lexer basics are still a mix between old and new. Maybe I should redo
--- some more. This is probably easier in TextAdept than in SciTE.
---
--- We have to make sure we don't overload ConTeXt definitions when this code is used
--- in ConTeXt. I still have to add some of the goodies that we have there in lexers
--- into these.
---
--- Maybe I should use a special stripped on the one hand and extended version of the
--- dll (stable api) and at least add a bit more interfacing to scintilla.
---
--- I need to investigate if we can use the already built in Lua instance so that we
--- can combine the power of lexing with extensions.
---
--- I need to play with hotspot and other properties like indicators (whatever they
--- are).
---
--- I want to get rid of these lexers.STYLE_XX and lexers.XX things. This is possible
--- when we give up compatibility. Generalize the helpers that I wrote for SciTE so
--- that they also can be used TextAdept.
---
--- I can make an export to ConTeXt, but first I'll redo the code that makes the
--- grammar, as we only seem to need
---
--- lexer._TOKENSTYLES : table
--- lexer._CHILDREN : flag
--- lexer._EXTRASTYLES : table
--- lexer._GRAMMAR : flag
---
--- lexers.load : function
--- lexers.lex : function
---
--- So, if we drop compatibility with other lex definitions, we can make things
--- simpler. However, in the meantime one can just do this:
---
--- context --extra=listing --scite [--compact --verycompact] somefile.tex
---
--- and get a printable document. So, this todo is a bit obsolete.
---
--- Properties is an ugly mess ... due to chages in the interface we're now left
--- with some hybrid that sort of works ok
-
--- textadept: buffer:colourise(0,-1)
-
-local lpeg = require("lpeg")
-
-local global = _G
-local find, gmatch, match, lower, upper, gsub, sub, format, byte = string.find, string.gmatch, string.match, string.lower, string.upper, string.gsub, string.sub, string.format, string.byte
-local concat, sort = table.concat, table.sort
-local type, next, setmetatable, rawset, tonumber, tostring = type, next, setmetatable, rawset, tonumber, tostring
-local R, P, S, V, C, Cp, Cs, Ct, Cmt, Cc, Cf, Cg, Carg = lpeg.R, lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Cp, lpeg.Cs, lpeg.Ct, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Carg
-local lpegmatch = lpeg.match
-
-local usage = (textadept and "textadept") or (resolvers and "context") or "scite"
-local nesting = 0
-local output = nil
-
------ print = textadept and ui and ui.print or print -- crashes when ui is not yet defined
-
-local function print(...)
- if not output then
- output = io.open("lexer.log","w")
- end
- output:write(...,"\n")
- output:flush()
-end
-
-local function report(fmt,str,...)
- if log then
- if str then
- fmt = format(fmt,str,...)
- end
- print(format("scite lpeg lexer > %s > %s",nesting == 0 and "-" or nesting,fmt))
- end
-end
-
-local function inform(...)
- if log and trace then
- report(...)
- end
-end
-
-inform("loading context lexer module (global table: %s)",tostring(global))
-
-do
-
- local floor = math and math.floor
- local format = format
- local tonumber = tonumber
-
- if not floor then
-
- if tonumber(string.match(_VERSION,"%d%.%d")) < 5.3 then
- floor = function(n)
- return tonumber(format("%d",n))
- end
- else
- -- 5.3 has a mixed number system and format %d doesn't work with
- -- floats any longer ... no fun
- floor = function(n)
- return (n - n % 1)
- end
- end
-
- math = math or { }
-
- math.floor = floor
-
- end
-
-end
-
-local floor = math.floor
-
-if not package.searchpath then
-
- -- Unfortunately the io library is only available when we end up
- -- in this branch of code.
-
- inform("using adapted function 'package.searchpath' (if used at all)")
-
- function package.searchpath(name,path)
- local tried = { }
- for part in gmatch(path,"[^;]+") do
- local filename = gsub(part,"%?",name)
- local f = io.open(filename,"r")
- if f then
- inform("file found on path: %s",filename)
- f:close()
- return filename
- end
- tried[#tried + 1] = format("no file '%s'",filename)
- end
- -- added: local path .. for testing
- local f = io.open(filename,"r")
- if f then
- inform("file found on current path: %s",filename)
- f:close()
- return filename
- end
- --
- tried[#tried + 1] = format("no file '%s'",filename)
- return nil, concat(tried,"\n")
- end
-
-end
-
-local lexers = { }
-local context = { }
-local helpers = { }
-lexers.context = context
-lexers.helpers = helpers
-
-local patterns = { }
-context.patterns = patterns -- todo: lexers.patterns
-
-context.report = report
-context.inform = inform
-
-lexers.LEXERPATH = package.path -- can be multiple paths separated by ;
-
-if resolvers then
- -- todo: set LEXERPATH
- -- todo: set report
-end
-
-local function sortedkeys(hash) -- simple version, good enough for here
- local t, n = { }, 0
- for k, v in next, hash do
- t[#t+1] = k
- local l = #tostring(k)
- if l > n then
- n = l
- end
- end
- sort(t)
- return t, n
-end
-
-helpers.sortedkeys = sortedkeys
-
-local usedlexers = { }
-local parent_lexer = nil
-
--- The problem with styles is that there is some nasty interaction with scintilla
--- and each version of lexer dll/so has a different issue. So, from now on we will
--- just add them here. There is also a limit on some 30 styles. Maybe I should
--- hash them in order to reuse.
-
--- todo: work with proper hashes and analyze what styles are really used by a
--- lexer
-
-local default = {
- "nothing", "whitespace", "comment", "string", "number", "keyword",
- "identifier", "operator", "error", "preprocessor", "constant", "variable",
- "function", "type", "label", "embedded",
- "quote", "special", "extra", "reserved", "okay", "warning",
- "command", "internal", "preamble", "grouping", "primitive", "plain",
- "user",
- -- not used (yet) .. we cross the 32 boundary so had to patch the initializer, see (1)
- "char", "class", "data", "definition", "invisible", "regex",
- "standout", "tag",
- "text",
-}
-
-local predefined = {
- "default", "linenumber", "bracelight", "bracebad", "controlchar",
- "indentguide", "calltip",
- -- seems new
- "folddisplaytext"
-}
-
--- Bah ... ugly ... nicer would be a proper hash .. we now have properties
--- as well as STYLE_* and some connection between them ... why .. ok, we
--- could delay things but who cares. Anyway, at this moment the properties
--- are still unknown.
-
-local function preparestyles(list)
- local reverse = { }
- for i=1,#list do
- local k = list[i]
- local K = upper(k)
- local s = "style." .. k
- lexers[K] = k -- is this used
- lexers["STYLE_"..K] = "$(" .. k .. ")"
- reverse[k] = true
- end
- return reverse
-end
-
-local defaultstyles = preparestyles(default)
-local predefinedstyles = preparestyles(predefined)
-
--- These helpers are set afterwards so we delay their initialization ... there
--- is no need to alias each time again and this way we can more easily adapt
--- to updates.
-
--- These keep changing (values, functions, tables ...) so we nee to check these
--- with each update. Some of them are set in the loader (the require 'lexer' is
--- in fact not a real one as the lexer code is loaded in the dll). It's also not
--- getting more efficient.
-
--- FOLD_BASE = lexers.FOLD_BASE or SC_FOLDLEVELBASE
--- FOLD_HEADER = lexers.FOLD_HEADER or SC_FOLDLEVELHEADERFLAG
--- FOLD_BLANK = lexers.FOLD_BLANK or SC_FOLDLEVELWHITEFLAG
--- get_style_at = lexers.get_style_at or GetStyleAt
--- get_indent_amount = lexers.get_indent_amount or GetIndentAmount
--- get_property = lexers.get_property or GetProperty
--- get_fold_level = lexers.get_fold_level or GetFoldLevel
-
--- It needs checking: do we have access to all properties now? I'll clean
--- this up anyway as I want a simple clean and stable model.
-
--- This is somewhat messy. The lexer dll provides some virtual fields:
---
--- + property
--- + property_int
--- + style_at
--- + fold_level
--- + indent_amount
---
--- but for some reasons not:
---
--- + property_expanded
---
--- As a consequence we need to define it here because otherwise the
--- lexer will crash. The fuzzy thing is that we don't have to define
--- the property and property_int tables but we do have to define the
--- expanded beforehand. The folding properties are no longer interfaced
--- so the interface to scite is now rather weak (only a few hard coded
--- properties).
-
-local FOLD_BASE = 0
-local FOLD_HEADER = 0
-local FOLD_BLANK = 0
-
-local style_at = { }
-local indent_amount = { }
-local fold_level = { }
-
-local function check_main_properties()
- if not lexers.property then
- lexers.property = { }
- end
- if not lexers.property_int then
- lexers.property_int = setmetatable({ }, {
- __index = function(t,k)
- -- why the tostring .. it relies on lua casting to a number when
- -- doing a comparison
- return tonumber(lexers.property[k]) or 0 -- tostring removed
- end,
- -- __newindex = function(t,k,v)
- -- report("properties are read-only, '%s' is not changed",k)
- -- end,
- })
- end
-end
-
-lexers.property_expanded = setmetatable({ }, {
- __index = function(t,k)
- -- better be safe for future changes .. what if at some point this is
- -- made consistent in the dll ... we need to keep an eye on that
- local property = lexers.property
- if not property then
- check_main_properties()
- end
- --
--- return gsub(property[k],"[$%%]%b()", function(k)
--- return t[sub(k,3,-2)]
--- end)
- local v = property[k]
- if v then
- v = gsub(v,"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end
- return v
- end,
- __newindex = function(t,k,v)
- report("properties are read-only, '%s' is not changed",k)
- end,
-})
-
--- A downward compatible feature but obsolete:
-
--- local function get_property(tag,default)
--- return lexers.property_int[tag] or lexers.property[tag] or default
--- end
-
--- We still want our own properties (as it keeps changing so better play
--- safe from now on). At some point I can freeze them.
-
-local function check_properties(lexer)
- if lexer.properties then
- return lexer
- end
- check_main_properties()
- -- we use a proxy
- local mainproperties = lexers.property
- local properties = { }
- local expanded = setmetatable({ }, {
- __index = function(t,k)
- return gsub(properties[k] or mainproperties[k],"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end,
- })
- lexer.properties = setmetatable(properties, {
- __index = mainproperties,
- __call = function(t,k,default) -- expands
- local v = expanded[k]
- local t = type(default)
- if t == "number" then
- return tonumber(v) or default
- elseif t == "boolean" then
- return v == nil and default or v
- else
- return v or default
- end
- end,
- })
- return lexer
-end
-
--- do
--- lexers.property = { foo = 123, red = "R" }
--- local a = check_properties({}) print("a.foo",a.properties.foo)
--- a.properties.foo = "bar" print("a.foo",a.properties.foo)
--- a.properties.foo = "bar:$(red)" print("a.foo",a.properties.foo) print("a.foo",a.properties("foo"))
--- end
-
-local function set(value,default)
- if value == 0 or value == false or value == "0" then
- return false
- elseif value == 1 or value == true or value == "1" then
- return true
- else
- return default
- end
-end
-
-local function check_context_properties()
- local property = lexers.property -- let's hope that this stays
- log = set(property["lexer.context.log"], log)
- trace = set(property["lexer.context.trace"], trace)
- detail = set(property["lexer.context.detail"], detail)
- show = set(property["lexer.context.show"], show)
- collapse = set(property["lexer.context.collapse"],collapse)
- inspect = set(property["lexer.context.inspect"], inspect)
-end
-
-function context.registerproperties(p) -- global
- check_main_properties()
- local property = lexers.property -- let's hope that this stays
- for k, v in next, p do
- property[k] = v
- end
- check_context_properties()
-end
-
-context.properties = setmetatable({ }, {
- __index = lexers.property,
- __newindex = function(t,k,v)
- check_main_properties()
- lexers.property[k] = v
- check_context_properties()
- end,
-})
-
--- We want locals to we set them delayed. Once.
-
-local function initialize()
- FOLD_BASE = lexers.FOLD_BASE
- FOLD_HEADER = lexers.FOLD_HEADER
- FOLD_BLANK = lexers.FOLD_BLANK
- --
- style_at = lexers.style_at -- table
- indent_amount = lexers.indent_amount -- table
- fold_level = lexers.fold_level -- table
- --
- check_main_properties()
- --
- initialize = nil
-end
-
--- Style handler.
---
--- The property table will be set later (after loading) by the library. The
--- styleset is not needed any more as we predefine all styles as defaults
--- anyway (too bug sensitive otherwise).
-
-local function tocolors(colors)
- local colorset = { }
- local property_int = lexers.property_int or { }
- for k, v in next, colors do
- if type(v) == "table" then
- local r, g, b = v[1], v[2], v[3]
- if r and g and b then
- v = tonumber(format("%02X%02X%02X",b,g,r),16) or 0 -- hm
- elseif r then
- v = tonumber(format("%02X%02X%02X",r,r,r),16) or 0
- else
- v = 0
- end
- end
- colorset[k] = v
- property_int["color."..k] = v
- end
- return colorset
-end
-
-local function toproperty(specification)
- local serialized = { }
- for key, value in next, specification do
- if value == true then
- serialized[#serialized+1] = key
- elseif type(value) == "table" then
- local r, g, b = value[1], value[2], value[3]
- if r and g and b then
- value = format("#%02X%02X%02X",r,g,b) or "#000000"
- elseif r then
- value = format("#%02X%02X%02X",r,r,r) or "#000000"
- else
- value = "#000000"
- end
- serialized[#serialized+1] = key .. ":" .. value
- else
- serialized[#serialized+1] = key .. ":" .. tostring(value)
- end
- end
- return concat(serialized,",")
-end
-
-local function tostyles(styles)
- local styleset = { }
- local property = lexers.property or { }
- for k, v in next, styles do
- v = toproperty(v)
- styleset[k] = v
- property["style."..k] = v
- end
- return styleset
-end
-
-context.toproperty = toproperty
-context.tostyles = tostyles
-context.tocolors = tocolors
-
--- If we had one instance/state of Lua as well as all regular libraries
--- preloaded we could use the context base libraries. So, let's go poor-
--- mans solution now.
-
-function context.registerstyles(styles)
- local styleset = tostyles(styles)
- context.styles = styles
- context.styleset = styleset
- if detail then
- local t, n = sortedkeys(styleset)
- local template = " %-" .. n .. "s : %s"
- report("initializing styleset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,styleset[k])
- end
- elseif trace then
- report("initializing styleset")
- end
-end
-
-function context.registercolors(colors) -- needed for textadept
- local colorset = tocolors(colors)
- context.colors = colors
- context.colorset = colorset
- if detail then
- local t, n = sortedkeys(colorset)
- local template = " %-" .. n .. "s : %i"
- report("initializing colorset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,colorset[k])
- end
- elseif trace then
- report("initializing colorset")
- end
-end
-
--- Some spell checking related stuff. Unfortunately we cannot use a path set
--- by property. This will get a hook for resolvers.
-
-local locations = {
- "context/lexers", -- context lexers
- "context/lexers/data", -- context lexers
- "../lexers", -- original lexers
- "../lexers/data", -- original lexers
- ".", -- whatever
- "./data", -- whatever
-}
-
--- local function collect(name)
--- local root = gsub(lexers.LEXERPATH or ".","/.-lua$","") .. "/" -- this is a horrible hack
--- -- report("module '%s' locating '%s'",tostring(lexers),name)
--- for i=1,#locations do
--- local fullname = root .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
--- if trace then
--- report("attempt to locate '%s'",fullname)
--- end
--- local okay, result = pcall(function () return dofile(fullname) end)
--- if okay then
--- return result, fullname
--- end
--- end
--- end
-
-local collect
-
-if usage == "context" then
-
- collect = function(name)
- return require(name), name
- end
-
-else
-
- collect = function(name)
- local rootlist = lexers.LEXERPATH or "."
- for root in gmatch(rootlist,"[^;]+") do
- local root = gsub(root,"/[^/]-lua$","")
- for i=1,#locations do
- local fullname = root .. "/" .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
- if trace then
- report("attempt to locate '%s'",fullname)
- end
- local okay, result = pcall(function () return dofile(fullname) end)
- if okay then
- return result, fullname
- end
- end
- end
- -- return require(name), name
- end
-
-end
-
-function context.loadluafile(name)
- local data, fullname = collect(name)
- if data then
- if trace then
- report("lua file '%s' has been loaded",fullname)
- end
- return data, fullname
- end
- if not textadept then
- report("unable to load lua file '%s'",name)
- end
-end
-
--- in fact we could share more as we probably process the data but then we need
--- to have a more advanced helper
-
-local cache = { }
-
-function context.loaddefinitions(name)
- local data = cache[name]
- if data then
- if trace then
- report("reusing definitions '%s'",name)
- end
- return data
- elseif trace and data == false then
- report("definitions '%s' were not found",name)
- end
- local data, fullname = collect(name)
- if not data then
- if not textadept then
- report("unable to load definition file '%s'",name)
- end
- data = false
- elseif trace then
- report("definition file '%s' has been loaded",fullname)
- if detail then
- local t, n = sortedkeys(data)
- local template = " %-" .. n .. "s : %s"
- for i=1,#t do
- local k = t[i]
- local v = data[k]
- if type(v) ~= "table" then
- report(template,k,tostring(v))
- elseif #v > 0 then
- report(template,k,#v)
- else
- -- no need to show hash
- end
- end
- end
- end
- cache[name] = data
- return type(data) == "table" and data
-end
-
--- A bit of regression in textadept > 10 so updated ... done a bit different.
--- We don't use this in the context lexers anyway.
-
-function context.word_match(words,word_chars,case_insensitive)
- -- used to be proper tables ...
- if type(words) == "string" then
- local clean = gsub(words,"%-%-[^\n]+","")
- local split = { }
- for s in gmatch(clean,"%S+") do
- split[#split+1] = s
- end
- words = split
- end
- local list = { }
- for i=1,#words do
- list[words[i]] = true
- end
- if case_insensitive then
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- local chars = S(word_chars or "")
- for i=1,#words do
- chars = chars + S(words[i])
- end
- local match = case_insensitive and
- function(input,index,word)
- -- We can speed mixed case if needed.
- return (list[word] or list[lower(word)]) and index or nil
- end
- or
- function(input,index,word)
- return list[word] and index or nil
- end
- return Cmt(chars^1,match)
-end
-
--- Patterns are grouped in a separate namespace but the regular lexers expect
--- shortcuts to be present in the lexers library. Maybe I'll incorporate some
--- of l-lpeg later.
-
-do
-
- local anything = P(1)
- local idtoken = R("az","AZ","\127\255","__")
- local digit = R("09")
- local sign = S("+-")
- local period = P(".")
- local octdigit = R("07")
- local hexdigit = R("09","AF","af")
- local lower = R("az")
- local upper = R("AZ")
- local alpha = upper + lower
- local space = S(" \n\r\t\f\v")
- local eol = S("\r\n")
- local backslash = P("\\")
- local decimal = digit^1
- local octal = P("0")
- * octdigit^1
- local hexadecimal = P("0") * S("xX")
- * (hexdigit^0 * period * hexdigit^1 + hexdigit^1 * period * hexdigit^0 + hexdigit^1)
- * (S("pP") * sign^-1 * hexdigit^1)^-1 -- *
- local integer = sign^-1
- * (hexadecimal + octal + decimal)
- local float = sign^-1
- * (digit^0 * period * digit^1 + digit^1 * period * digit^0 + digit^1)
- * S("eE") * sign^-1 * digit^1 -- *
-
- patterns.idtoken = idtoken
- patterns.digit = digit
- patterns.sign = sign
- patterns.period = period
- patterns.octdigit = octdigit
- patterns.hexdigit = hexdigit
- patterns.ascii = R("\000\127") -- useless
- patterns.extend = R("\000\255") -- useless
- patterns.control = R("\000\031")
- patterns.lower = lower
- patterns.upper = upper
- patterns.alpha = alpha
- patterns.decimal = decimal
- patterns.octal = octal
- patterns.hexadecimal = hexadecimal
- patterns.float = float
- patterns.cardinal = decimal
-
- patterns.signeddecimal = sign^-1 * decimal
- patterns.signedoctal = sign^-1 * octal
- patterns.signedhexadecimal = sign^-1 * hexadecimal
- patterns.integer = integer
- patterns.real =
- sign^-1 * ( -- at most one
- digit^1 * period * digit^0 -- 10.0 10.
- + digit^0 * period * digit^1 -- 0.10 .10
- + digit^1 -- 10
- )
-
- patterns.anything = anything
- patterns.any = anything
- patterns.restofline = (1-eol)^1
- patterns.space = space
- patterns.spacing = space^1
- patterns.nospacing = (1-space)^1
- patterns.eol = eol
- patterns.newline = P("\r\n") + eol
- patterns.backslash = backslash
-
- local endof = S("\n\r\f")
-
- patterns.startofline = P(function(input,index)
- return (index == 1 or lpegmatch(endof,input,index-1)) and index
- end)
-
- -- These are the expected ones for other lexers. Maybe all in own namespace
- -- and provide compatibility layer. or should I just remove them?
-
- lexers.any = anything
- lexers.ascii = ascii
- lexers.extend = extend
- lexers.alpha = alpha
- lexers.digit = digit
- lexers.alnum = alpha + digit
- lexers.lower = lower
- lexers.upper = upper
- lexers.xdigit = hexdigit
- lexers.cntrl = control
- lexers.graph = R("!~")
- lexers.print = R(" ~")
- lexers.punct = R("!/", ":@", "[\'", "{~")
- lexers.space = space
- lexers.newline = S("\r\n\f")^1
- lexers.nonnewline = 1 - lexers.newline
- lexers.nonnewline_esc = 1 - (lexers.newline + '\\') + backslash * anything
- lexers.dec_num = decimal
- lexers.oct_num = octal
- lexers.hex_num = hexadecimal
- lexers.integer = integer
- lexers.float = float
- lexers.word = (alpha + "_") * (alpha + digit + "_")^0 -- weird, why digits
-
-end
-
--- end of patterns
-
-function context.exact_match(words,word_chars,case_insensitive)
- local characters = concat(words)
- local pattern -- the concat catches _ etc
- if word_chars == true or word_chars == false or word_chars == nil then
- word_chars = ""
- end
- if type(word_chars) == "string" then
- pattern = S(characters) + patterns.idtoken
- if case_insensitive then
- pattern = pattern + S(upper(characters)) + S(lower(characters))
- end
- if word_chars ~= "" then
- pattern = pattern + S(word_chars)
- end
- elseif word_chars then
- pattern = word_chars
- end
- if case_insensitive then
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[lower(k)] = v
- end
- else
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[lower(s)] -- and i or nil
- end)
- else
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[k] = v
- end
- else
- for i=1,#words do
- list[words[i]] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[s] -- and i or nil
- end)
- end
-end
-
-function context.just_match(words)
- local p = P(words[1])
- for i=2,#words do
- p = p + P(words[i])
- end
- return p
-end
-
--- spell checking (we can only load lua files)
---
--- return {
--- min = 3,
--- max = 40,
--- n = 12345,
--- words = {
--- ["someword"] = "someword",
--- ["anotherword"] = "Anotherword",
--- },
--- }
-
-local lists = { }
-local disabled = false
-
-function context.disablewordcheck()
- disabled = true
-end
-
-function context.setwordlist(tag,limit) -- returns hash (lowercase keys and original values)
- if not tag or tag == "" then
- return false, 3
- end
- local list = lists[tag]
- if not list then
- list = context.loaddefinitions("spell-" .. tag)
- if not list or type(list) ~= "table" then
- if not textadept then
- report("invalid spell checking list for '%s'",tag)
- end
- list = { words = false, min = 3 }
- else
- list.words = list.words or false
- list.min = list.min or 3
- end
- lists[tag] = list
- end
- if trace then
- report("enabling spell checking for '%s' with minimum '%s'",tag,list.min)
- end
- return list.words, list.min
-end
-
-patterns.wordtoken = R("az","AZ","\127\255")
-patterns.wordpattern = patterns.wordtoken^3 -- todo: if limit and #s < limit then
-
-function context.checkedword(validwords,validminimum,s,i) -- ,limit
- if not validwords then -- or #s < validminimum then
- return true, "text", i -- true, "default", i
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- elseif upper(s) == s then
- return true, "warning", i -- probably a logo or acronym
- else
- return true, "error", i
- end
- end
- end
-end
-
-function context.styleofword(validwords,validminimum,s) -- ,limit
- if not validwords or #s < validminimum then
- return "text"
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- elseif upper(s) == s then
- return "warning" -- probably a logo or acronym
- else
- return "error"
- end
- end
- end
-end
-
--- overloaded functions
-
-local h_table, b_table, n_table = { }, { }, { } -- from the time small tables were used (optimization)
-
-setmetatable(h_table, { __index = function(t,level) local v = { level, FOLD_HEADER } t[level] = v return v end })
-setmetatable(b_table, { __index = function(t,level) local v = { level, FOLD_BLANK } t[level] = v return v end })
-setmetatable(n_table, { __index = function(t,level) local v = { level } t[level] = v return v end })
-
-local newline = patterns.newline
-local p_yes = Cp() * Cs((1-newline)^1) * newline^-1
-local p_nop = newline
-
-local folders = { }
-
--- Snippets from the > 10 code .. but we do things different so ...
-
-local function fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- local folder = folders[lexer]
- if not folder then
- --
- local pattern, folds, text, start_pos, line_num, prev_level, current_level
- --
- local fold_symbols = lexer._foldsymbols
- local fold_pattern = lexer._foldpattern -- use lpeg instead (context extension)
- --
- -- textadept >= 10
- --
- -- local zerosumlines = lexer.property_int["fold.on.zero.sum.lines"] > 0 -- not done
- -- local compact = lexer.property_int['fold.compact'] > 0 -- not done
- -- local lowercase = lexer._CASEINSENSITIVEFOLDPOINTS -- useless (utf will distort)
- --
- if fold_pattern then
- -- if no functions are found then we could have a faster one
- fold_pattern = Cp() * C(fold_pattern) / function(s,match)
- local symbols = fold_symbols[style_at[start_pos + s]]
- if symbols then
- local l = symbols[match]
- if l then
- current_level = current_level + l
- end
- end
- end
- local action_y = function()
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = ((fold_pattern + (1-newline))^1 * newline / action_y + newline/action_n)^0
-
- else
- -- the traditional one but a bit optimized
- local fold_symbols_patterns = fold_symbols._patterns
- local action_y = function(pos,line)
- for j=1, #fold_symbols_patterns do
- for s, match in gmatch(line,fold_symbols_patterns[j]) do -- "()(" .. patterns[i] .. ")"
- local symbols = fold_symbols[style_at[start_pos + pos + s - 1]]
- local l = symbols and symbols[match]
- local t = type(l)
- if t == "number" then
- current_level = current_level + l
- elseif t == "function" then
- current_level = current_level + l(text, pos, line, s, match)
- end
- end
- end
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = (p_yes/action_y + p_nop/action_n)^0
- end
- --
- local reset_parser = lexer._reset_parser
- --
- folder = function(_text_,_start_pos_,_start_line_,_start_level_)
- if reset_parser then
- reset_parser()
- end
- folds = { }
- text = _text_
- start_pos = _start_pos_
- line_num = _start_line_
- prev_level = _start_level_
- current_level = prev_level
- lpegmatch(pattern,text)
- -- make folds collectable
- local t = folds
- folds = nil
- return t
- end
- folders[lexer] = folder
- end
- return folder(text,start_pos,start_line,start_level,lexer)
-end
-
-local folds, current_line, prev_level
-
-local function action_y()
- local current_level = FOLD_BASE + indent_amount[current_line]
- if current_level > prev_level then -- next level
- local i = current_line - 1
- local f
- while true do
- f = folds[i]
- if not f then
- break
- elseif f[2] == FOLD_BLANK then
- i = i - 1
- else
- f[2] = FOLD_HEADER -- low indent
- break
- end
- end
- folds[current_line] = { current_level } -- high indent
- elseif current_level < prev_level then -- prev level
- local f = folds[current_line - 1]
- if f then
- f[1] = prev_level -- high indent
- end
- folds[current_line] = { current_level } -- low indent
- else -- same level
- folds[current_line] = { prev_level }
- end
- prev_level = current_level
- current_line = current_line + 1
-end
-
-local function action_n()
- folds[current_line] = { prev_level, FOLD_BLANK }
- current_line = current_line + 1
-end
-
-local pattern = ( S("\t ")^0 * ( (1-patterns.eol)^1 / action_y + P(true) / action_n) * newline )^0
-
-local function fold_by_indentation(text,start_pos,start_line,start_level)
- -- initialize
- folds = { }
- current_line = start_line
- prev_level = start_level
- -- define
- -- -- not here .. pattern binds and local functions are not frozen
- -- analyze
- lpegmatch(pattern,text)
- -- flatten
- for line, level in next, folds do
- folds[line] = level[1] + (level[2] or 0)
- end
- -- done, make folds collectable
- local t = folds
- folds = nil
- return t
-end
-
-local function fold_by_line(text,start_pos,start_line,start_level)
- local folds = { }
- -- can also be lpeg'd
- for _ in gmatch(text,".-\r?\n") do
- folds[start_line] = n_table[start_level] -- { start_level } -- stile tables ? needs checking
- start_line = start_line + 1
- end
- return folds
-end
-
-local threshold_by_lexer = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_parsing = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_indentation = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_line = 512 * 1024 -- we don't know the filesize yet
-
-function context.fold(lexer,text,start_pos,start_line,start_level) -- hm, we had size thresholds .. where did they go
- if text == "" then
- return { }
- end
- if initialize then
- initialize()
- end
- local fold_by_lexer = lexer._fold
- local fold_by_symbols = lexer._foldsymbols
- local filesize = 0 -- we don't know that
- if fold_by_lexer then
- if filesize <= threshold_by_lexer then
- return fold_by_lexer(text,start_pos,start_line,start_level,lexer)
- end
- elseif fold_by_symbols then -- and lexer.properties("fold.by.parsing",1) > 0 then
- if filesize <= threshold_by_parsing then
- return fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYINDENTATION or lexer.properties("fold.by.indentation",1) > 0 then
- if filesize <= threshold_by_indentation then
- return fold_by_indentation(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYLINE or lexer.properties("fold.by.line",1) > 0 then
- if filesize <= threshold_by_line then
- return fold_by_line(text,start_pos,start_line,start_level,lexer)
- end
- end
- return { }
-end
-
--- The following code is mostly unchanged:
-
-local function add_rule(lexer,id,rule) -- unchanged
- if not lexer._RULES then
- lexer._RULES = { }
- lexer._RULEORDER = { }
- end
- lexer._RULES[id] = rule
- lexer._RULEORDER[#lexer._RULEORDER + 1] = id
-end
-
-local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- lexer._RULES[id] = rule
-end
-
-local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- return lexer._RULES[id]
-end
-
--- I finally figured out that adding more styles was an issue because of several
--- reasons:
---
--- + in old versions there was a limit in the amount, so we overran the built-in
--- hard coded scintilla range
--- + then, the add_style function didn't check for already known ones, so again
--- we had an overrun (with some magic that could be avoided)
--- + then, when I messed with a new default set I realized that there is no check
--- in initializing _TOKENSTYLES (here the inspect function helps)
--- + of course it was mostly a side effect of passing all the used styles to the
--- _tokenstyles instead of only the not-default ones but such a thing should not
--- matter (read: intercepted)
---
--- This finally removed a head-ache and was revealed by lots of tracing, which I
--- should have built in way earlier.
-
-local function add_style(lexer,token_name,style) -- changed a bit around 3.41
- -- We don't add styles that are already defined as this can overflow the
- -- amount possible (in old versions of scintilla).
- if defaultstyles[token_name] then
- if trace and detail then
- report("default style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- elseif predefinedstyles[token_name] then
- if trace and detail then
- report("predefined style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- else
- if trace and detail then
- report("adding extra style '%s' as '%s'",token_name,style)
- end
- end
- -- This is unchanged. We skip the dangerous zone.
- local num_styles = lexer._numstyles
- if num_styles == 32 then
- num_styles = num_styles + 8
- end
- if num_styles >= 255 then
- report("there can't be more than %s styles",255)
- end
- lexer._TOKENSTYLES[token_name] = num_styles
- lexer._EXTRASTYLES[token_name] = style
- lexer._numstyles = num_styles + 1
- -- hm, the original (now) also copies to the parent ._lexer
-end
-
-local function check_styles(lexer)
- -- Here we also use a check for the dangerous zone. That way we can have a
- -- larger default set. The original code just assumes that #default is less
- -- than the dangerous zone's start.
- local numstyles = 0
- local tokenstyles = { }
- for i=1, #default do
- if numstyles == 32 then
- numstyles = numstyles + 8
- end
- tokenstyles[default[i]] = numstyles
- numstyles = numstyles + 1
- end
- -- Unchanged.
- for i=1, #predefined do
- tokenstyles[predefined[i]] = i + 31
- end
- lexer._TOKENSTYLES = tokenstyles
- lexer._numstyles = numstyles
- lexer._EXTRASTYLES = { }
- return lexer
-end
-
--- At some point an 'any' append showed up in the original code ...
--- but I see no need to catch that case ... beter fix the specification.
---
--- hm, why are many joined twice
-
-local function join_tokens(lexer) -- slightly different from the original (no 'any' append)
- local patterns = lexer._RULES
- local order = lexer._RULEORDER
- -- report("lexer: %s, tokens: %s",lexer._NAME,table.concat(order," + "))
- if patterns and order then
- local token_rule = patterns[order[1]] -- normally whitespace
- for i=2,#order do
- token_rule = token_rule + patterns[order[i]]
- end
- if lexer._TYPE ~= "context" then
- token_rule = token_rule + lexers.token(lexers.DEFAULT, patterns.any)
- end
- lexer._TOKENRULE = token_rule
- return token_rule
- else
- return P(1)
- end
-end
-
--- hm, maybe instead of a grammer just a flat one
-
-local function add_lexer(grammar, lexer) -- mostly the same as the original
- local token_rule = join_tokens(lexer)
- local lexer_name = lexer._NAME
- local children = lexer._CHILDREN
- for i=1,#children do
- local child = children[i]
- if child._CHILDREN then
- add_lexer(grammar, child)
- end
- local child_name = child._NAME
- local rules = child._EMBEDDEDRULES[lexer_name]
- local rules_token_rule = grammar["__" .. child_name] or rules.token_rule
- local pattern = (-rules.end_rule * rules_token_rule)^0 * rules.end_rule^-1
- grammar[child_name] = pattern * V(lexer_name)
- local embedded_child = "_" .. child_name
- grammar[embedded_child] = rules.start_rule * pattern
- token_rule = V(embedded_child) + token_rule
- end
- if trace then
- report("adding lexer '%s' with %s children",lexer_name,#children)
- end
- grammar["__" .. lexer_name] = token_rule
- grammar[lexer_name] = token_rule^0
-end
-
-local function build_grammar(lexer,initial_rule) -- same as the original
- local children = lexer._CHILDREN
- local lexer_name = lexer._NAME
- local preamble = lexer._preamble
- local grammar = lexer._grammar
- -- if grammar then
- -- -- experiment
- -- elseif children then
- if children then
- if not initial_rule then
- initial_rule = lexer_name
- end
- grammar = { initial_rule }
- add_lexer(grammar, lexer)
- lexer._INITIALRULE = initial_rule
- grammar = Ct(P(grammar))
- if trace then
- report("building grammar for '%s' with whitespace '%s'and %s children",lexer_name,lexer.whitespace or "?",#children)
- end
- else
- grammar = Ct(join_tokens(lexer)^0)
- if trace then
- report("building grammar for '%s' with whitespace '%s'",lexer_name,lexer.whitespace or "?")
- end
- end
- if preamble then
- grammar = preamble^-1 * grammar
- end
- lexer._GRAMMAR = grammar
-end
-
--- So far. We need these local functions in the next one.
-
-local lineparsers = { }
-
-local maxmatched = 100
-
-local function collapsed(t)
- local lasttoken = nil
- local lastindex = nil
- for i=1,#t,2 do
- local token = t[i]
- local position = t[i+1]
- if token == lasttoken then
- t[lastindex] = position
- elseif lastindex then
- lastindex = lastindex + 1
- t[lastindex] = token
- lastindex = lastindex + 1
- t[lastindex] = position
- lasttoken = token
- else
- lastindex = i+1
- lasttoken = token
- end
- end
- for i=#t,lastindex+1,-1 do
- t[i] = nil
- end
- return t
-end
-
-local function matched(lexer,grammar,text)
- -- text = string.gsub(text,"\z","!")
- local t = lpegmatch(grammar,text)
- if trace then
- if show then
- report("output of lexer: %s (max %s entries)",lexer._NAME,maxmatched)
- local s = lexer._TOKENSTYLES
- local p = 1
- for i=1,2*maxmatched,2 do
- local n = i + 1
- local ti = t[i]
- local tn = t[n]
- if ti then
- local txt = sub(text,p,tn-1)
- if txt then
- txt = gsub(txt,"[%s]"," ")
- else
- txt = "!no text!"
- end
- report("%4i : %s > %s (%s) (%s)",floor(n/2),ti,tn,s[ti] or "!unset!",txt)
- p = tn
- else
- break
- end
- end
- end
- report("lexer results: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- if collapse then
- t = collapsed(t)
- report("lexer collapsed: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- end
- elseif collapse then
- t = collapsed(t)
- end
- return t
-end
-
--- Todo: make nice generic lexer (extra argument with start/stop commands) for
--- context itself.
---
--- In textadept >= 10 grammar building seem to have changed a bit. So, in retrospect
--- I could better have just dropped compatibility and stick to ctx lexers only.
-
-function context.lex(lexer,text,init_style)
- -- local lexer = global._LEXER
- local grammar = lexer._GRAMMAR
- if initialize then
- initialize()
- end
- if not grammar then
- return { }
- elseif lexer._LEXBYLINE then -- we could keep token
- local tokens = { }
- local offset = 0
- local noftokens = 0
- local lineparser = lineparsers[lexer]
- if not lineparser then -- probably a cmt is more efficient
- lineparser = C((1-newline)^0 * newline) / function(line)
- local length = #line
- local line_tokens = length > 0 and lpegmatch(grammar,line)
- if line_tokens then
- for i=1,#line_tokens,2 do
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i]
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i + 1] + offset
- end
- end
- offset = offset + length
- if noftokens > 0 and tokens[noftokens] ~= offset then
- noftokens = noftokens + 1
- tokens[noftokens] = "default"
- noftokens = noftokens + 1
- tokens[noftokens] = offset + 1
- end
- end
- lineparser = lineparser^0
- lineparsers[lexer] = lineparser
- end
- lpegmatch(lineparser,text)
- return tokens
- elseif lexer._CHILDREN then
- local hash = lexer._HASH -- hm, was _hash
- if not hash then
- hash = { }
- lexer._HASH = hash
- end
- grammar = hash[init_style]
- if grammar then
- lexer._GRAMMAR = grammar
- -- lexer._GRAMMAR = lexer._GRAMMAR or grammar
- else
- for style, style_num in next, lexer._TOKENSTYLES do
- if style_num == init_style then
- -- the name of the lexers is filtered from the whitespace
- -- specification .. weird code, should be a reverse hash
- local lexer_name = match(style,"^(.+)_whitespace") or lexer._NAME
- if lexer._INITIALRULE ~= lexer_name then
- grammar = hash[lexer_name]
- if not grammar then
- build_grammar(lexer,lexer_name)
- grammar = lexer._GRAMMAR
- hash[lexer_name] = grammar
- end
- end
- break
- end
- end
- grammar = grammar or lexer._GRAMMAR
- hash[init_style] = grammar
- end
- if trace then
- report("lexing '%s' with initial style '%s' and %s children", lexer._NAME,init_style,#lexer._CHILDREN or 0)
- end
- return matched(lexer,grammar,text)
- else
- if trace then
- report("lexing '%s' with initial style '%s'",lexer._NAME,init_style)
- end
- return matched(lexer,grammar,text)
- end
-end
-
--- hm, changed in 3.24 .. no longer small table but one table (so we could remove our
--- agressive optimization which worked quite well)
-
-function context.token(name, patt)
- return patt * Cc(name) * Cp()
-end
-
--- The next ones were mostly unchanged (till now), we moved it here when 3.41
--- became close to impossible to combine with cq. overload and a merge was
--- the only solution. It makes later updates more painful but the update to
--- 3.41 was already a bit of a nightmare anyway.
-
--- Loading lexers is rather interwoven with what the dll/so sets and
--- it changes over time. So, we need to keep an eye on changes. One
--- problem that we always faced were the limitations in length of
--- lexer names (as they get app/prepended occasionally to strings with
--- a hard coded limit). So, we always used alternative names and now need
--- to make sure this doesn't clash. As I no longer intend to use shipped
--- lexers I could strip away some of the code in the future, but keeping
--- it as reference makes sense.
-
--- I spend quite some time figuring out why 3.41 didn't work or crashed which
--- is hard when no stdout is available and when the io library is absent. In
--- the end of of the problems was in the _NAME setting. We set _NAME
--- to e.g. 'tex' but load from a file with a longer name, which we do
--- as we don't want to clash with existing files, we end up in
--- lexers not being found.
-
-local whitespaces = { }
-
-local function push_whitespace(name)
- table.insert(whitespaces,lexers.WHITESPACE or "whitespace")
- lexers.WHITESPACE = name .. "_whitespace"
-end
-
-local function pop_whitespace()
- lexers.WHITESPACE = table.remove(whitespaces) or "whitespace"
-end
-
-local function check_whitespace(lexer,name)
- if lexer then
- lexer.whitespace = (name or lexer.name or lexer._NAME) .. "_whitespace"
- end
-end
-
-function context.new(name,filename)
- local lexer = {
- _TYPE = "context",
- --
- _NAME = name, -- used for token building
- _FILENAME = filename, -- for diagnostic purposed
- --
- name = name,
- filename = filename,
- }
- if trace then
- report("initializing lexer tagged '%s' from file '%s'",name,filename or name)
- end
- check_whitespace(lexer)
- check_styles(lexer)
- check_properties(lexer)
- lexer._tokenstyles = context.styleset
- return lexer
-end
-
-local function nolexer(name)
- local lexer = {
- _TYPE = "unset",
- _NAME = name,
- -- _rules = { },
- }
- check_styles(lexer)
- check_whitespace(lexer)
- check_properties(lexer)
- return lexer
-end
-
-local function load_lexer(name,namespace)
- if trace then
- report("loading lexer file '%s'",name)
- end
- push_whitespace(namespace or name) -- for traditional lexers .. no alt_name yet
- local lexer, fullname = context.loadluafile(name)
- pop_whitespace()
- if not lexer then
- report("invalid lexer file '%s'",name)
- elseif trace then
- report("lexer file '%s' has been loaded",fullname)
- end
- if type(lexer) ~= "table" then
- if trace then
- report("lexer file '%s' gets a dummy lexer",name)
- end
- return nolexer(name)
- end
- if lexer._TYPE ~= "context" then
- lexer._TYPE = "native"
- check_styles(lexer)
- check_whitespace(lexer,namespace or name)
- check_properties(lexer)
- end
- if not lexer._NAME then
- lexer._NAME = name -- so: filename
- end
- if name ~= namespace then
- lexer._NAME = namespace
- end
- return lexer
-end
-
--- tracing ...
-
-local function inspect_lexer(lexer,level)
- -- If we had the regular libs available I could use the usual
- -- helpers.
- local parent = lexer._lexer
- lexer._lexer = nil -- prevent endless recursion
- local name = lexer._NAME
- local function showstyles_1(tag,styles)
- local numbers = { }
- for k, v in next, styles do
- numbers[v] = k
- end
- -- sort by number and make number hash too
- local keys = sortedkeys(numbers)
- for i=1,#keys do
- local k = keys[i]
- local v = numbers[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local function showstyles_2(tag,styles)
- local keys = sortedkeys(styles)
- for i=1,#keys do
- local k = keys[i]
- local v = styles[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local keys = sortedkeys(lexer)
- for i=1,#keys do
- local k = keys[i]
- local v = lexer[k]
- report("[%s %s] root key : %s = %s",level,name,k,tostring(v))
- end
- showstyles_1("token style",lexer._TOKENSTYLES)
- showstyles_2("extra style",lexer._EXTRASTYLES)
- local children = lexer._CHILDREN
- if children then
- for i=1,#children do
- inspect_lexer(children[i],level+1)
- end
- end
- lexer._lexer = parent
-end
-
-function context.inspect(lexer)
- inspect_lexer(lexer,0)
-end
-
--- An optional second argument has been introduced so that one can embed a lexer
--- more than once ... maybe something to look into (as not it's done by remembering
--- the start sequence ... quite okay but maybe suboptimal ... anyway, never change
--- a working solution).
-
--- namespace can be automatic: if parent then use name of parent (chain)
-
--- The original lexer framework had a rather messy user uinterface (e.g. moving
--- stuff from _rules to _RULES at some point but I could live with that. Now it uses
--- add_ helpers. But the subsystem is still not clean and pretty. Now, I can move to
--- the add_ but there is no gain in it so we support a mix which gives somewhat ugly
--- code. In fact, there should be proper subtables for this. I might actually do
--- this because we now always overload the normal lexer (parallel usage seems no
--- longer possible). For SciTE we can actually do a conceptual upgrade (more the
--- context way) because there is no further development there. That way we could
--- make even more advanced lexers.
-
-local savedrequire = require
-
-local escapes = {
- ["%"] = "%%",
- ["."] = "%.",
- ["+"] = "%+", ["-"] = "%-", ["*"] = "%*",
- ["["] = "%[", ["]"] = "%]",
- ["("] = "%(", [")"] = "%)",
- -- ["{"] = "%{", ["}"] = "%}"
- -- ["^"] = "%^", ["$"] = "%$",
-}
-
-function context.loadlexer(filename,namespace)
-
- if textadept then
- require = function(name)
- return savedrequire(name == "lexer" and "scite-context-lexer" or name)
- end
- end
-
- nesting = nesting + 1
- if not namespace then
- namespace = filename
- end
- local lexer = usedlexers[namespace] -- we load by filename but the internal name can be short
- if lexer then
- if trace then
- report("reusing lexer '%s'",namespace)
- end
- nesting = nesting - 1
- return lexer
- elseif trace then
- report("loading lexer '%s'",namespace)
- end
- --
- if initialize then
- initialize()
- end
- --
- parent_lexer = nil
- --
- lexer = load_lexer(filename,namespace) or nolexer(filename,namespace)
- usedlexers[filename] = lexer
- --
- if not lexer._rules and not lexer._lexer and not lexer_grammar then -- hmm should be lexer._grammar
- lexer._lexer = parent_lexer
- end
- --
- if lexer._lexer then
- local _l = lexer._lexer
- local _r = lexer._rules
- local _s = lexer._tokenstyles
- if not _l._tokenstyles then
- _l._tokenstyles = { }
- end
- if _r then
- local rules = _l._rules
- local name = lexer.name
- for i=1,#_r do
- local rule = _r[i]
- rules[#rules + 1] = {
- name .. "_" .. rule[1],
- rule[2],
- }
- end
- end
- if _s then
- local tokenstyles = _l._tokenstyles
- for token, style in next, _s do
- tokenstyles[token] = style
- end
- end
- lexer = _l
- end
- --
- local _r = lexer._rules
- local _g = lexer._grammar
- -- if _r or _g then
- if _r then
- local _s = lexer._tokenstyles
- if _s then
- for token, style in next, _s do
- add_style(lexer, token, style)
- end
- end
- if _r then
- for i=1,#_r do
- local rule = _r[i]
- add_rule(lexer, rule[1], rule[2])
- end
- end
- build_grammar(lexer)
- else
- -- other lexers
- build_grammar(lexer)
- end
- --
- add_style(lexer, lexer.whitespace, lexers.STYLE_WHITESPACE)
- --
- local foldsymbols = lexer._foldsymbols
- if foldsymbols then
- local patterns = foldsymbols._patterns
- if patterns then
- for i = 1, #patterns do
- patterns[i] = "()(" .. gsub(patterns[i],".",escapes) .. ")"
- end
- end
- end
- --
- lexer.lex = lexers.lex
- lexer.fold = lexers.fold
- --
- nesting = nesting - 1
- --
- if inspect then
- context.inspect(lexer)
- end
- --
- if textadept then
- require = savedrequire
- end
- --
- return lexer
-end
-
--- I probably need to check this occasionally with the original as I've messed around a bit
--- in the past to get nesting working well as one can hit the max number of styles, get
--- clashes due to fuzzy inheritance etc. so there is some interplay with the other patched
--- code.
-
-function context.embed_lexer(parent, child, start_rule, end_rule) -- mostly the same as the original
- local embeddedrules = child._EMBEDDEDRULES
- if not embeddedrules then
- embeddedrules = { }
- child._EMBEDDEDRULES = embeddedrules
- end
- if not child._RULES then
- local rules = child._rules
- if not rules then
- report("child lexer '%s' has no rules",child._NAME or "unknown")
- rules = { }
- child._rules = rules
- end
- for i=1,#rules do
- local rule = rules[i]
- add_rule(child, rule[1], rule[2])
- end
- end
- embeddedrules[parent._NAME] = {
- ["start_rule"] = start_rule,
- ["token_rule"] = join_tokens(child),
- ["end_rule"] = end_rule
- }
- local children = parent._CHILDREN
- if not children then
- children = { }
- parent._CHILDREN = children
- end
- children[#children + 1] = child
- local tokenstyles = parent._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- parent._tokenstyles = tokenstyles
- end
- local childname = child._NAME
- local whitespace = childname .. "_whitespace"
- tokenstyles[whitespace] = lexers.STYLE_WHITESPACE -- all these STYLE_THINGS will go .. just a proper hash
- if trace then
- report("using whitespace '%s' as trigger for '%s' with property '%s'",whitespace,childname,lexers.STYLE_WHITESPACE)
- end
- local childstyles = child._tokenstyles
- if childstyles then
- for token, style in next, childstyles do
- tokenstyles[token] = style
- end
- end
- -- new, a bit redone, untested, no clue yet what it is for
- local parentsymbols = parent._foldsymbols
- local childsymbols = child ._foldsymbols
- if not parentsymbols then
- parentsymbols = { }
- parent._foldsymbols = parentsymbols
- end
- if childsymbols then
- for token, symbols in next, childsymbols do
- local tokensymbols = parentsymbols[token]
- if not tokensymbols then
- tokensymbols = { }
- parentsymbols[token] = tokensymbols
- end
- for k, v in next, symbols do
- if type(k) == 'number' then
- tokensymbols[#tokensymbols + 1] = v
- elseif not tokensymbols[k] then
- tokensymbols[k] = v
- end
- end
- end
- end
- --
- child._lexer = parent
- parent_lexer = parent
-end
-
--- we now move the adapted code to the lexers namespace
-
-lexers.new = context.new
-lexers.load = context.loadlexer
-------.loadlexer = context.loadlexer
-lexers.loadluafile = context.loadluafile
-lexers.embed_lexer = context.embed_lexer
-lexers.fold = context.fold
-lexers.lex = context.lex
-lexers.token = context.token
-lexers.word_match = context.word_match
-lexers.exact_match = context.exact_match
-lexers.just_match = context.just_match
-lexers.inspect = context.inspect
-lexers.report = context.report
-lexers.inform = context.inform
-
--- helper .. alas ... in scite the lexer's lua instance is rather crippled .. not
--- even math is part of it
-
-do
-
- local floor = math and math.floor
- local char = string.char
- local format = format
- local tonumber = tonumber
-
- local function utfchar(n)
- if n < 0x80 then
- return char(n)
- elseif n < 0x800 then
- return char(
- 0xC0 + floor(n/0x40),
- 0x80 + (n % 0x40)
- )
- elseif n < 0x10000 then
- return char(
- 0xE0 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
- )
- elseif n < 0x40000 then
- return char(
- 0xF0 + floor(n/0x40000),
- 0x80 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
- )
- else
- -- return char(
- -- 0xF1 + floor(n/0x1000000),
- -- 0x80 + floor(n/0x40000),
- -- 0x80 + floor(n/0x1000),
- -- 0x80 + (floor(n/0x40) % 0x40),
- -- 0x80 + (n % 0x40)
- -- )
- return "?"
- end
- end
-
- context.utfchar = utfchar
-
- -- -- the next one is good enough for use here but not perfect (see context for a
- -- -- better one)
- --
- -- local function make(t)
- -- local p
- -- for k, v in next, t do
- -- if not p then
- -- if next(v) then
- -- p = P(k) * make(v)
- -- else
- -- p = P(k)
- -- end
- -- else
- -- if next(v) then
- -- p = p + P(k) * make(v)
- -- else
- -- p = p + P(k)
- -- end
- -- end
- -- end
- -- return p
- -- end
- --
- -- function lpeg.utfchartabletopattern(list)
- -- local tree = { }
- -- for i=1,#list do
- -- local t = tree
- -- for c in gmatch(list[i],".") do
- -- if not t[c] then
- -- t[c] = { }
- -- end
- -- t = t[c]
- -- end
- -- end
- -- return make(tree)
- -- end
-
- local utf8next = R("\128\191")
- local utf8one = R("\000\127")
- local utf8two = R("\194\223") * utf8next
- local utf8three = R("\224\239") * utf8next * utf8next
- local utf8four = R("\240\244") * utf8next * utf8next * utf8next
-
- local utfidentifier = utf8two + utf8three + utf8four
- helpers.utfidentifier = (R("AZ","az","__") + utfidentifier)
- * (R("AZ","az","__","09") + utfidentifier)^0
-
- helpers.utfcharpattern = P(1) * utf8next^0 -- unchecked but fast
- helpers.utfbytepattern = utf8one / byte
- + utf8two / function(s) local c1, c2 = byte(s,1,2) return c1 * 64 + c2 - 12416 end
- + utf8three / function(s) local c1, c2, c3 = byte(s,1,3) return (c1 * 64 + c2) * 64 + c3 - 925824 end
- + utf8four / function(s) local c1, c2, c3, c4 = byte(s,1,4) return ((c1 * 64 + c2) * 64 + c3) * 64 + c4 - 63447168 end
-
- local p_false = P(false)
- local p_true = P(true)
-
- local function make(t)
- local function making(t)
- local p = p_false
- local keys = sortedkeys(t)
- for i=1,#keys do
- local k = keys[i]
- if k ~= "" then
- local v = t[k]
- if v == true then
- p = p + P(k) * p_true
- elseif v == false then
- -- can't happen
- else
- p = p + P(k) * making(v)
- end
- end
- end
- if t[""] then
- p = p + p_true
- end
- return p
- end
- local p = p_false
- local keys = sortedkeys(t)
- for i=1,#keys do
- local k = keys[i]
- if k ~= "" then
- local v = t[k]
- if v == true then
- p = p + P(k) * p_true
- elseif v == false then
- -- can't happen
- else
- p = p + P(k) * making(v)
- end
- end
- end
- return p
- end
-
- local function collapse(t,x)
- if type(t) ~= "table" then
- return t, x
- else
- local n = next(t)
- if n == nil then
- return t, x
- elseif next(t,n) == nil then
- -- one entry
- local k = n
- local v = t[k]
- if type(v) == "table" then
- return collapse(v,x..k)
- else
- return v, x .. k
- end
- else
- local tt = { }
- for k, v in next, t do
- local vv, kk = collapse(v,k)
- tt[kk] = vv
- end
- return tt, x
- end
- end
- end
-
- function helpers.utfchartabletopattern(list)
- local tree = { }
- local n = #list
- if n == 0 then
- for s in next, list do
- local t = tree
- local p, pk
- for c in gmatch(s,".") do
- if t == true then
- t = { [c] = true, [""] = true }
- p[pk] = t
- p = t
- t = false
- elseif t == false then
- t = { [c] = false }
- p[pk] = t
- p = t
- t = false
- else
- local tc = t[c]
- if not tc then
- tc = false
- t[c] = false
- end
- p = t
- t = tc
- end
- pk = c
- end
- if t == false then
- p[pk] = true
- elseif t == true then
- -- okay
- else
- t[""] = true
- end
- end
- else
- for i=1,n do
- local s = list[i]
- local t = tree
- local p, pk
- for c in gmatch(s,".") do
- if t == true then
- t = { [c] = true, [""] = true }
- p[pk] = t
- p = t
- t = false
- elseif t == false then
- t = { [c] = false }
- p[pk] = t
- p = t
- t = false
- else
- local tc = t[c]
- if not tc then
- tc = false
- t[c] = false
- end
- p = t
- t = tc
- end
- pk = c
- end
- if t == false then
- p[pk] = true
- elseif t == true then
- -- okay
- else
- t[""] = true
- end
- end
- end
- collapse(tree,"")
- -- inspect(tree)
- return make(tree)
- end
-
- patterns.invisibles = helpers.utfchartabletopattern {
- utfchar(0x00A0), -- nbsp
- utfchar(0x2000), -- enquad
- utfchar(0x2001), -- emquad
- utfchar(0x2002), -- enspace
- utfchar(0x2003), -- emspace
- utfchar(0x2004), -- threeperemspace
- utfchar(0x2005), -- fourperemspace
- utfchar(0x2006), -- sixperemspace
- utfchar(0x2007), -- figurespace
- utfchar(0x2008), -- punctuationspace
- utfchar(0x2009), -- breakablethinspace
- utfchar(0x200A), -- hairspace
- utfchar(0x200B), -- zerowidthspace
- utfchar(0x202F), -- narrownobreakspace
- utfchar(0x205F), -- math thinspace
- }
-
- -- now we can make:
-
- patterns.iwordtoken = patterns.wordtoken - patterns.invisibles
- patterns.iwordpattern = patterns.iwordtoken^3
-
-end
-
--- The following helpers are not used, partially replaced by other mechanisms and
--- when needed I'll first optimize them. I only made them somewhat more readable.
-
-function lexers.delimited_range(chars, single_line, no_escape, balanced) -- unchanged
- local s = sub(chars,1,1)
- local e = #chars == 2 and sub(chars,2,2) or s
- local range
- local b = balanced and s or ""
- local n = single_line and "\n" or ""
- if no_escape then
- local invalid = S(e .. n .. b)
- range = patterns.any - invalid
- else
- local invalid = S(e .. n .. b) + patterns.backslash
- range = patterns.any - invalid + patterns.backslash * patterns.any
- end
- if balanced and s ~= e then
- return P {
- s * (range + V(1))^0 * e
- }
- else
- return s * range^0 * P(e)^-1
- end
-end
-
-function lexers.starts_line(patt) -- unchanged
- return P ( function(input, index)
- if index == 1 then
- return index
- end
- local char = sub(input,index - 1,index - 1)
- if char == "\n" or char == "\r" or char == "\f" then
- return index
- end
- end ) * patt
-end
-
-function lexers.last_char_includes(s) -- unchanged
- s = "[" .. gsub(s,"[-%%%[]", "%%%1") .. "]"
- return P ( function(input, index)
- if index == 1 then
- return index
- end
- local i = index
- while match(sub(input,i - 1,i - 1),"[ \t\r\n\f]") do
- i = i - 1
- end
- if match(sub(input,i - 1,i - 1),s) then
- return index
- end
- end)
-end
-
-function lexers.nested_pair(start_chars, end_chars) -- unchanged
- local s = start_chars
- local e = P(end_chars)^-1
- return P {
- s * (patterns.any - s - end_chars + V(1))^0 * e
- }
-end
-
-local function prev_line_is_comment(prefix, text, pos, line, s) -- unchanged
- local start = find(line,"%S")
- if start < s and not find(line,prefix,start,true) then
- return false
- end
- local p = pos - 1
- if sub(text,p,p) == "\n" then
- p = p - 1
- if sub(text,p,p) == "\r" then
- p = p - 1
- end
- if sub(text,p,p) ~= "\n" then
- while p > 1 and sub(text,p - 1,p - 1) ~= "\n"
- do p = p - 1
- end
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
- end
- return sub(text,p,p + #prefix - 1) == prefix
- end
- end
- return false
-end
-
-local function next_line_is_comment(prefix, text, pos, line, s)
- local p = find(text,"\n",pos + s)
- if p then
- p = p + 1
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
- end
- return sub(text,p,p + #prefix - 1) == prefix
- end
- return false
-end
-
-function lexers.fold_line_comments(prefix)
- local property_int = lexers.property_int
- return function(text, pos, line, s)
- if property_int["fold.line.comments"] == 0 then
- return 0
- end
- if s > 1 and match(line,"^%s*()") < s then
- return 0
- end
- local prev_line_comment = prev_line_is_comment(prefix, text, pos, line, s)
- local next_line_comment = next_line_is_comment(prefix, text, pos, line, s)
- if not prev_line_comment and next_line_comment then
- return 1
- end
- if prev_line_comment and not next_line_comment then
- return -1
- end
- return 0
- end
-end
-
--- There are some fundamental changes in textadept version 10 and I don't want to
--- adapt again so we go the reverse route: map new to old. This is needed because
--- we need to load other lexers which is teh result of not being able to load the
--- lexer framework in parallel. Something happened in 10 that makes the main lexer
--- always enforced so now we need to really replace that one (and even then it loads
--- twice (i can probably sort that out). Maybe there's now some hard coded magic
--- in the binary.
-
-if textadept then
-
- -- Folds are still somewhat weak because of the end condition not being
- -- bound to a start .. probably to complex and it seems to work anyhow. As
- -- we have extended thinsg we just remap.
-
- local function add_fold_point(lexer,token_name,start_symbol,end_symbol)
- if type(start_symbol) == "string" then
- local foldsymbols = lexer._foldsymbols
- if not foldsymbols then
- foldsymbols = { }
- lexer._foldsymbols = foldsymbols
- end
- local patterns = foldsymbols._patterns
- if not patterns then
- patterns = { }
- usedpatt = { } -- > 10 uses a mixed index/hash (we don't use patterns)
- foldsymbols._patterns = patterns
- foldsymbols._usedpatt = usedpatt
- end
- local foldsymbol = foldsymbols[token_name]
- if not foldsymbol then
- foldsymbol = { }
- foldsymbols[token_name] = foldsymbol
- end
- if not usedpatt[start_symbol] then
- patterns[#patterns+1] = start_symbol
- usedpatt[start_symbol] = true
- end
- if type(end_symbol) == "string" then
- foldsymbol[start_symbol] = 1
- foldsymbol[end_symbol] = -1
- if not usedpatt[end_symbol] then
- patterns[#patterns+1] = end_symbol
- usedpatt[end_symbol] = true
- end
- else
- foldsymbol[start_symbol] = end_symbol
- end
- end
- end
-
- local function add_style(lexer,name,style)
- local tokenstyles = lexer._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- lexer._tokenstyles = tokenstyles
- end
- tokenstyles[name] = style
- end
-
- local function add_rule(lexer,id,rule)
- local rules = lexer._rules
- if not rules then
- rules = { }
- lexer._rules = rules
- end
- rules[#rules+1] = { id, rule }
- end
-
- local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- local RULES = lexer._RULES
- if RULES then
- RULES[id] = rule
- end
- end
-
- local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- local RULES = lexer._RULES
- if RULES then
- return RULES[id]
- end
- end
-
- local new = context.new
- local lmt = {
- __index = {
-
- add_rule = add_rule,
- modify_rule = modify_rule,
- get_rule = get_rule,
- add_style = add_style,
- add_fold_point = add_fold_point,
-
- join_tokens = join_tokens,
- build_grammar = build_grammar,
-
- embed = lexers.embed,
- lex = lexers.lex,
- fold = lexers.fold
-
- }
- }
-
- function lexers.new(name,options)
- local lexer = new(name)
- if options then
- lexer._LEXBYLINE = options['lex_by_line']
- lexer._FOLDBYINDENTATION = options['fold_by_indentation']
- lexer._CASEINSENSITIVEFOLDPOINTS = options['case_insensitive_fold_points']
- lexer._lexer = options['inherit']
- end
- setmetatable(lexer,lmt)
- return lexer
- end
-
-end
-
--- done
-
-return lexers
diff --git a/context/data/textadept/context/lexers/lexer.rme b/context/data/textadept/context/lexers/lexer.rme
deleted file mode 100644
index 5e9604f63..000000000
--- a/context/data/textadept/context/lexers/lexer.rme
+++ /dev/null
@@ -1 +0,0 @@
-We have no lexer.lua here!
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-bibtex.lua b/context/data/textadept/context/lexers/scite-context-lexer-bibtex.lua
deleted file mode 100644
index b53da82ea..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-bibtex.lua
+++ /dev/null
@@ -1,195 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for bibtex",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-local type = type
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local bibtexlexer = lexer.new("bib","scite-context-lexer-bibtex")
-local whitespace = bibtexlexer.whitespace
-
-local escape, left, right = P("\\"), P('{'), P('}')
-
-patterns.balanced = P {
- [1] = ((escape * (left+right)) + (1 - (left+right)) + V(2))^0,
- [2] = left * V(1) * right
-}
-
--- taken from bibl-bib.lua
-
-local anything = patterns.anything
-local percent = P("%")
-local start = P("@")
-local comma = P(",")
-local hash = P("#")
-local escape = P("\\")
-local single = P("'")
-local double = P('"')
-local left = P('{')
-local right = P('}')
-local lineending = S("\n\r")
-local space = S(" \t\n\r\f")
-local spaces = space^1
-local equal = P("=")
-
-local keyword = (R("az","AZ","09") + S("@_:-"))^1
------ s_quoted = ((escape*single) + spaces + (1-single))^0
------ d_quoted = ((escape*double) + spaces + (1-double))^0
-local s_quoted = ((escape*single) + (1-single))^0
-local d_quoted = ((escape*double) + (1-double))^0
-
-local balanced = patterns.balanced
-
-local t_spacing = token(whitespace, space^1)
-local t_optionalws = token("default", space^1)^0
-
-local t_equal = token("operator",equal)
-local t_left = token("grouping",left)
-local t_right = token("grouping",right)
-local t_comma = token("operator",comma)
-local t_hash = token("operator",hash)
-
-local t_s_value = token("operator",single)
- * token("text",s_quoted)
- * token("operator",single)
-local t_d_value = token("operator",double)
- * token("text",d_quoted)
- * token("operator",double)
-local t_b_value = token("operator",left)
- * token("text",balanced)
- * token("operator",right)
-local t_r_value = token("text",keyword)
-
-local t_keyword = token("keyword",keyword)
-local t_key = token("command",keyword)
-local t_label = token("warning",keyword)
-
-local t_somevalue = t_s_value + t_d_value + t_b_value + t_r_value
-local t_value = t_somevalue
- * ((t_optionalws * t_hash * t_optionalws) * t_somevalue)^0
-
-local t_assignment = t_optionalws
- * t_key
- * t_optionalws
- * t_equal
- * t_optionalws
- * t_value
-
-local t_shortcut = t_keyword
- * t_optionalws
- * t_left
- * t_optionalws
- * (t_assignment * t_comma^0)^0
- * t_optionalws
- * t_right
-
-local t_definition = t_keyword
- * t_optionalws
- * t_left
- * t_optionalws
- * t_label
- * t_optionalws
- * t_comma
- * (t_assignment * t_comma^0)^0
- * t_optionalws
- * t_right
-
-local t_comment = t_keyword
- * t_optionalws
- * t_left
- * token("text",(1-t_right)^0)
- * t_optionalws
- * t_right
-
-local t_forget = token("comment",percent^1 * (1-lineending)^0)
-
-local t_rest = token("default",anything)
-
--- this kind of lexing seems impossible as the size of the buffer passed to the lexer is not
--- large enough .. but we can cheat and use this:
---
--- function OnOpen(filename) editor:Colourise(1,editor.TextLength) end -- or is it 0?
-
--- somehow lexing fails on this more complex lexer when we insert something, there is no
--- backtracking to whitespace when we have no embedded lexer, so we fake one ... this works
--- to some extend but not in all cases (e.g. editing inside line fails) .. maybe i need to
--- patch the dll ... (better not)
-
-local dummylexer = lexer.load("scite-context-lexer-dummy","bib-dum")
-
-local dummystart = token("embedded",P("\001")) -- an unlikely to be used character
-local dummystop = token("embedded",P("\002")) -- an unlikely to be used character
-
-lexer.embed_lexer(bibtexlexer,dummylexer,dummystart,dummystop)
-
--- maybe we need to define each functional block as lexer (some 4) so i'll do that when
--- this issue is persistent ... maybe consider making a local lexer options (not load,
--- just lexer.new or so) .. or maybe do the reverse, embed the main one in a dummy child
-
-bibtexlexer._rules = {
- { "whitespace", t_spacing },
- { "forget", t_forget },
- { "shortcut", t_shortcut },
- { "definition", t_definition },
- { "comment", t_comment },
- { "rest", t_rest },
-}
-
--- local t_assignment = t_key
--- * t_optionalws
--- * t_equal
--- * t_optionalws
--- * t_value
---
--- local t_shortcut = t_keyword
--- * t_optionalws
--- * t_left
---
--- local t_definition = t_keyword
--- * t_optionalws
--- * t_left
--- * t_optionalws
--- * t_label
--- * t_optionalws
--- * t_comma
---
--- bibtexlexer._rules = {
--- { "whitespace", t_spacing },
--- { "assignment", t_assignment },
--- { "definition", t_definition },
--- { "shortcut", t_shortcut },
--- { "right", t_right },
--- { "comma", t_comma },
--- { "forget", t_forget },
--- { "comment", t_comment },
--- { "rest", t_rest },
--- }
-
-bibtexlexer._tokenstyles = context.styleset
-
-bibtexlexer._foldpattern = P("{") + P("}")
-
-bibtexlexer._foldsymbols = {
- _patterns = {
- "{",
- "}",
- },
- ["grouping"] = {
- ["{"] = 1,
- ["}"] = -1,
- },
-}
-
-return bibtexlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-bidi.lua b/context/data/textadept/context/lexers/scite-context-lexer-bidi.lua
deleted file mode 100644
index ea9c56712..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-bidi.lua
+++ /dev/null
@@ -1,598 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for plain text (with spell checking)",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P, S, Cmt, Cp = lpeg.P, lpeg.S, lpeg.Cmt, lpeg.Cp
-local find, match = string.find, string.match
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local bidilexer = lexer.new("bidi","scite-context-lexer-bidi")
-local whitespace = bidilexer.whitespace
-
-local space = patterns.space
-local any = patterns.any
-
--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-require("char-def")
-
-characters.directions = { }
-
-setmetatable(characters.directions,{ __index = function(t,k)
- local d = data[k]
- if d then
- local v = d.direction
- if v then
- t[k] = v
- return v
- end
- end
- t[k] = false -- maybe 'l'
- return false
-end })
-
-characters.mirrors = { }
-
-setmetatable(characters.mirrors,{ __index = function(t,k)
- local d = data[k]
- if d then
- local v = d.mirror
- if v then
- t[k] = v
- return v
- end
- end
- t[k] = false
- return false
-end })
-
-characters.textclasses = { }
-
-setmetatable(characters.textclasses,{ __index = function(t,k)
- local d = data[k]
- if d then
- local v = d.textclass
- if v then
- t[k] = v
- return v
- end
- end
- t[k] = false
- return false
-end })
-
-local directiondata = characters.directions
-local mirrordata = characters.mirrors
-local textclassdata = characters.textclasses
-
-local maximum_stack = 0xFF -- unicode: 60, will be jumped to 125, we don't care too much
-local analyze_fences = false
-
-local whitespace = {
- lre = true,
- rle = true,
- lro = true,
- rlo = true,
- pdf = true,
- bn = true,
- ws = true,
-}
-
-local b_s_ws_on = {
- b = true,
- s = true,
- ws = true,
- on = true
-}
-
-local mt_space = { __index = { char = 0x0020, direction = "ws", original = "ws", level = 0 } }
-local mt_lre = { __index = { char = 0x202A, direction = "lre", original = "lre", level = 0 } }
-local mt_rle = { __index = { char = 0x202B, direction = "rle", original = "rle", level = 0 } }
-local mt_pdf = { __index = { char = 0x202C, direction = "pdf", original = "pdf", level = 0 } }
-local mt_object = { __index = { char = 0xFFFC, direction = "on", original = "on", level = 0 } }
-
-local list = { }
-local stack = { }
-
-setmetatable(stack, { __index = function(t,k) local v = { } t[k] = v return v end })
-
-local function build_list(head)
- -- P1
- local size = 0
- lpegmatch(pattern,head)
- return list, size
-end
-
-local function resolve_fences(list,size,start,limit)
- -- N0: funny effects, not always better, so it's an option
- local nofstack = 0
- for i=start,limit do
- local entry = list[i]
- if entry.direction == "on" then
- local char = entry.char
- local mirror = mirrordata[char]
- if mirror then
- local class = textclassdata[char]
- entry.mirror = mirror
- entry.class = class
- if class == "open" then
- nofstack = nofstack + 1
- local stacktop = stack[nofstack]
- stacktop[1] = mirror
- stacktop[2] = i
- stacktop[3] = false -- not used
- elseif nofstack == 0 then
- -- skip
- elseif class == "close" then
- while nofstack > 0 do
- local stacktop = stack[nofstack]
- if stacktop[1] == char then
- local open = stacktop[2]
- local close = i
- list[open ].paired = close
- list[close].paired = open
- break
- else
- -- do we mirror or not
- end
- nofstack = nofstack - 1
- end
- end
- end
- end
- end
-end
-
-local function get_baselevel(list,size,direction)
- if direction == "TRT" then
- return 1, "TRT", true
- elseif direction == "TLT" then
- return 0, "TLT", true
- end
- -- P2, P3:
- for i=1,size do
- local entry = list[i]
- local direction = entry.direction
- if direction == "r" or direction == "al" then -- and an ?
- return 1, "TRT", true
- elseif direction == "l" then
- return 0, "TLT", true
- end
- end
- return 0, "TLT", false
-end
-
-local function resolve_explicit(list,size,baselevel)
--- if list.rle or list.lre or list.rlo or list.lro then
- -- X1
- local level = baselevel
- local override = "on"
- local nofstack = 0
- for i=1,size do
- local entry = list[i]
- local direction = entry.direction
- -- X2
- if direction == "rle" then
- if nofstack < maximum_stack then
- nofstack = nofstack + 1
- local stacktop = stack[nofstack]
- stacktop[1] = level
- stacktop[2] = override
- level = level + (level % 2 == 1 and 2 or 1) -- least_greater_odd(level)
- override = "on"
- entry.level = level
- entry.direction = "bn"
- entry.remove = true
- end
- -- X3
- elseif direction == "lre" then
- if nofstack < maximum_stack then
- nofstack = nofstack + 1
- local stacktop = stack[nofstack]
- stacktop[1] = level
- stacktop[2] = override
- level = level + (level % 2 == 1 and 1 or 2) -- least_greater_even(level)
- override = "on"
- entry.level = level
- entry.direction = "bn"
- entry.remove = true
- end
- -- X4
- elseif direction == "rlo" then
- if nofstack < maximum_stack then
- nofstack = nofstack + 1
- local stacktop = stack[nofstack]
- stacktop[1] = level
- stacktop[2] = override
- level = level + (level % 2 == 1 and 2 or 1) -- least_greater_odd(level)
- override = "r"
- entry.level = level
- entry.direction = "bn"
- entry.remove = true
- end
- -- X5
- elseif direction == "lro" then
- if nofstack < maximum_stack then
- nofstack = nofstack + 1
- local stacktop = stack[nofstack]
- stacktop[1] = level
- stacktop[2] = override
- level = level + (level % 2 == 1 and 1 or 2) -- least_greater_even(level)
- override = "l"
- entry.level = level
- entry.direction = "bn"
- entry.remove = true
- end
- -- X7
- elseif direction == "pdf" then
- if nofstack < maximum_stack then
- local stacktop = stack[nofstack]
- level = stacktop[1]
- override = stacktop[2]
- nofstack = nofstack - 1
- entry.level = level
- entry.direction = "bn"
- entry.remove = true
- end
- -- X6
- else
- entry.level = level
- if override ~= "on" then
- entry.direction = override
- end
- end
- end
--- else
--- for i=1,size do
--- list[i].level = baselevel
--- end
--- end
- -- X8 (reset states and overrides after paragraph)
-end
-
-local function resolve_weak(list,size,start,limit,orderbefore,orderafter)
- -- W1: non spacing marks get the direction of the previous character
--- if list.nsm then
- for i=start,limit do
- local entry = list[i]
- if entry.direction == "nsm" then
- if i == start then
- entry.direction = orderbefore
- else
- entry.direction = list[i-1].direction
- end
- end
- end
--- end
- -- W2: mess with numbers and arabic
--- if list.en then
- for i=start,limit do
- local entry = list[i]
- if entry.direction == "en" then
- for j=i-1,start,-1 do
- local prev = list[j]
- local direction = prev.direction
- if direction == "al" then
- entry.direction = "an"
- break
- elseif direction == "r" or direction == "l" then
- break
- end
- end
- end
- end
--- end
- -- W3
--- if list.al then
- for i=start,limit do
- local entry = list[i]
- if entry.direction == "al" then
- entry.direction = "r"
- end
- end
--- end
- -- W4: make separators number
--- if list.es or list.cs then
- -- skip
--- if false then
- if false then
- for i=start+1,limit-1 do
- local entry = list[i]
- local direction = entry.direction
- if direction == "es" then
- if list[i-1].direction == "en" and list[i+1].direction == "en" then
- entry.direction = "en"
- end
- elseif direction == "cs" then
- local prevdirection = list[i-1].direction
- if prevdirection == "en" then
- if list[i+1].direction == "en" then
- entry.direction = "en"
- end
- elseif prevdirection == "an" and list[i+1].direction == "an" then
- entry.direction = "an"
- end
- end
- end
- else -- only more efficient when we have es/cs
- local runner = start + 2
- local before = list[start]
- local entry = list[start + 1]
- local after = list[runner]
- while after do
- local direction = entry.direction
- if direction == "es" then
- if before.direction == "en" and after.direction == "en" then
- entry.direction = "en"
- end
- elseif direction == "cs" then
- local prevdirection = before.direction
- if prevdirection == "en" then
- if after.direction == "en" then
- entry.direction = "en"
- end
- elseif prevdirection == "an" and after.direction == "an" then
- entry.direction = "an"
- end
- end
- before = current
- current = after
- after = list[runner]
- runner = runner + 1
- end
- end
--- end
- -- W5
--- if list.et then
- local i = start
- while i <= limit do
- if list[i].direction == "et" then
- local runstart = i
- local runlimit = runstart
- for i=runstart,limit do
- if list[i].direction == "et" then
- runlimit = i
- else
- break
- end
- end
- local rundirection = runstart == start and sor or list[runstart-1].direction
- if rundirection ~= "en" then
- rundirection = runlimit == limit and orderafter or list[runlimit+1].direction
- end
- if rundirection == "en" then
- for j=runstart,runlimit do
- list[j].direction = "en"
- end
- end
- i = runlimit
- end
- i = i + 1
- end
--- end
- -- W6
--- if list.es or list.cs or list.et then
- for i=start,limit do
- local entry = list[i]
- local direction = entry.direction
- if direction == "es" or direction == "et" or direction == "cs" then
- entry.direction = "on"
- end
- end
--- end
- -- W7
- for i=start,limit do
- local entry = list[i]
- if entry.direction == "en" then
- local prev_strong = orderbefore
- for j=i-1,start,-1 do
- local direction = list[j].direction
- if direction == "l" or direction == "r" then
- prev_strong = direction
- break
- end
- end
- if prev_strong == "l" then
- entry.direction = "l"
- end
- end
- end
-end
-
-local function resolve_neutral(list,size,start,limit,orderbefore,orderafter)
- -- N1, N2
- for i=start,limit do
- local entry = list[i]
- if b_s_ws_on[entry.direction] then
- -- this needs checking
- local leading_direction, trailing_direction, resolved_direction
- local runstart = i
- local runlimit = runstart
- for j=runstart+1,limit do
- if b_s_ws_on[list[j].direction] then
- runlimit = j
- else
- break
- end
- end
- if runstart == start then
- leading_direction = orderbefore
- else
- leading_direction = list[runstart-1].direction
- if leading_direction == "en" or leading_direction == "an" then
- leading_direction = "r"
- end
- end
- if runlimit == limit then
- trailing_direction = orderafter
- else
- trailing_direction = list[runlimit+1].direction
- if trailing_direction == "en" or trailing_direction == "an" then
- trailing_direction = "r"
- end
- end
- if leading_direction == trailing_direction then
- -- N1
- resolved_direction = leading_direction
- else
- -- N2 / does the weird period
- resolved_direction = entry.level % 2 == 1 and "r" or "l"
- end
- for j=runstart,runlimit do
- list[j].direction = resolved_direction
- end
- i = runlimit
- end
- i = i + 1
- end
-end
-
-local function resolve_implicit(list,size,start,limit,orderbefore,orderafter,baselevel)
- for i=start,limit do
- local entry = list[i]
- local level = entry.level
- local direction = entry.direction
- if level % 2 ~= 1 then -- even
- -- I1
- if direction == "r" then
- entry.level = level + 1
- elseif direction == "an" or direction == "en" then
- entry.level = level + 2
- end
- else
- -- I2
- if direction == "l" or direction == "en" or direction == "an" then
- entry.level = level + 1
- end
- end
- end
-end
-
-local function resolve_levels(list,size,baselevel,analyze_fences)
- -- X10
- local start = 1
- while start < size do
- local level = list[start].level
- local limit = start + 1
- while limit < size and list[limit].level == level do
- limit = limit + 1
- end
- local prev_level = start == 1 and baselevel or list[start-1].level
- local next_level = limit == size and baselevel or list[limit+1].level
- local orderbefore = (level > prev_level and level or prev_level) % 2 == 1 and "r" or "l"
- local orderafter = (level > next_level and level or next_level) % 2 == 1 and "r" or "l"
- -- W1 .. W7
- resolve_weak(list,size,start,limit,orderbefore,orderafter)
- -- N0
- if analyze_fences then
- resolve_fences(list,size,start,limit)
- end
- -- N1 .. N2
- resolve_neutral(list,size,start,limit,orderbefore,orderafter)
- -- I1 .. I2
- resolve_implicit(list,size,start,limit,orderbefore,orderafter,baselevel)
- start = limit
- end
- -- L1
- for i=1,size do
- local entry = list[i]
- local direction = entry.original
- -- (1)
- if direction == "s" or direction == "b" then
- entry.level = baselevel
- -- (2)
- for j=i-1,1,-1 do
- local entry = list[j]
- if whitespace[entry.original] then
- entry.level = baselevel
- else
- break
- end
- end
- end
- end
- -- (3)
- for i=size,1,-1 do
- local entry = list[i]
- if whitespace[entry.original] then
- entry.level = baselevel
- else
- break
- end
- end
- -- L4
- if analyze_fences then
- for i=1,size do
- local entry = list[i]
- if entry.level % 2 == 1 then -- odd(entry.level)
- if entry.mirror and not entry.paired then
- entry.mirror = false
- end
- -- okay
- elseif entry.mirror then
- entry.mirror = false
- end
- end
- else
- for i=1,size do
- local entry = list[i]
- if entry.level % 2 == 1 then -- odd(entry.level)
- local mirror = mirrordata[entry.char]
- if mirror then
- entry.mirror = mirror
- end
- end
- end
- end
-end
-
-local index = 1
-
-local function process(head,direction)
- local list, size = build_list(head)
- local baselevel = get_baselevel(list,size,direction) -- we always have an inline dir node in context
- resolve_explicit(list,size,baselevel)
- resolve_levels(list,size,baselevel,analyze_fences)
- index = 1
- return list, size
-end
-
--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-local utf = lexer.helpers.utfbytepattern
-
--- local t_start = token("default", utf, function(s,i) if i == 1 then index = 1 process(s) end end))
--- local t_bidi = token("error", utf / function() index = index + 1 return list[index].direction == "r" end)
--- local t_rest = token("default", any)
-
--- bidilexer._rules = {
--- { "start", t_start },
--- { "bidi", t_bidi },
--- { "rest", t_rest },
--- }
-
-bidilexer._grammar = #utf * function(s,i)
- process(s)
- local t = { }
- local n = 0
- for i=1,size do
- n = n + 1 t[n] = i
- n = n + 1 t[n] = "error"
- end
- return t
-end
-
-bidilexer._tokenstyles = context.styleset
-
-return bidilexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-bnf.lua b/context/data/textadept/context/lexers/scite-context-lexer-bnf.lua
deleted file mode 100644
index ce57642ba..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-bnf.lua
+++ /dev/null
@@ -1,99 +0,0 @@
-local info = {
- version = 1.001,
- comment = "scintilla lpeg lexer for bnf",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- will replace the one in metafun
-
-local global, lpeg = _G, lpeg
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local bnflexer = lexer.new("bnf","scite-context-lexer-bnf")
-local whitespace = bnflexer.whitespace
-
--- from wikipedia:
---
--- <syntax> ::= <rule> | <rule> <syntax>
--- <rule> ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end>
--- <opt-whitespace> ::= " " <opt-whitespace> | ""
--- <expression> ::= <list> | <list> <opt-whitespace> "|" <opt-whitespace> <expression>
--- <line-end> ::= <opt-whitespace> <EOL> | <line-end> <line-end>
--- <list> ::= <term> | <term> <opt-whitespace> <list>
--- <term> ::= <literal> | "<" <rule-name> ">"
--- <literal> ::= '"' <text1> '"' | "'" <text2> "'"
--- <text1> ::= "" | <character1> <text1>
--- <text2> ::= "" | <character2> <text2>
--- <character> ::= <letter> | <digit> | <symbol>
--- <letter> ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
--- <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
--- <symbol> ::= "|" | " " | "-" | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | ">" | "=" | "<" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "}" | "~"
--- <character1> ::= <character> | "'"
--- <character2> ::= <character> | '"'
--- <rule-name> ::= <letter> | <rule-name> <rule-char>
--- <rule-char> ::= <letter> | <digit> | "-"
-
-local anything = patterns.anything
-local separator = P("|")
-local left = P("<")
-local right = P(">")
-local space = S(" \t\n\r\f")
-local spaces = space^1
-local letter = R("AZ","az")
-local digit = R("09")
-local symbol = S([[| -!#$%&()*+,-./:;>=<?@[\]^_`{}~]])
-local text = (letter + digit + symbol^0)
-local name = letter * (letter + digit + P("-"))^0
-local becomes = P("::=")
-local extra = P("|")
-local single = P("'")
-local double = P('"')
-
-local t_spacing = token(whitespace,space^1)
-local t_term = token("command",left)
- * token("text",name)
- * token("command",right)
-local t_text = token("quote",single)
- * token("text",text)
- * token("quote",single)
- + token("quote",double)
- * token("text",text)
- * token("quote",double)
-local t_becomes = token("operator",becomes)
-local t_extra = token("extra",extra)
-local t_rest = token("default",anything)
-
-bnflexer._rules = {
- { "whitespace", t_spacing },
- { "term", t_term },
- { "text", t_text },
- { "becomes", t_becomes },
- { "extra", t_extra },
- { "rest", t_rest },
-}
-
-bnflexer._tokenstyles = context.styleset
-
-bnflexer._foldpattern = left + right
-
-bnflexer._foldsymbols = {
- _patterns = {
- "<",
- ">",
- },
- ["grouping"] = {
- ["<"] = 1,
- [">"] = -1,
- },
-}
-
-return bnflexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-cld.lua b/context/data/textadept/context/lexers/scite-context-lexer-cld.lua
deleted file mode 100644
index 7bda7800e..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-cld.lua
+++ /dev/null
@@ -1,23 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for cld",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local cldlexer = lexer.new("cld","scite-context-lexer-cld")
-local lualexer = lexer.load("scite-context-lexer-lua")
-
--- can probably be done nicer now, a bit of a hack
-
-cldlexer._rules = lualexer._rules_cld
-cldlexer._tokenstyles = lualexer._tokenstyles
-cldlexer._foldsymbols = lualexer._foldsymbols
-cldlexer._directives = lualexer._directives
-
-return cldlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-cpp-web.lua b/context/data/textadept/context/lexers/scite-context-lexer-cpp-web.lua
deleted file mode 100644
index 631a802fe..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-cpp-web.lua
+++ /dev/null
@@ -1,23 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for cpp web",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local cppweblexer = lexer.new("cpp-web","scite-context-lexer-cpp")
-local cpplexer = lexer.load("scite-context-lexer-cpp")
-
--- can probably be done nicer now, a bit of a hack
-
-cppweblexer._rules = cpplexer._rules_web
-cppweblexer._tokenstyles = cpplexer._tokenstyles
-cppweblexer._foldsymbols = cpplexer._foldsymbols
-cppweblexer._directives = cpplexer._directives
-
-return cppweblexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-cpp.lua b/context/data/textadept/context/lexers/scite-context-lexer-cpp.lua
deleted file mode 100644
index a50cdaa17..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-cpp.lua
+++ /dev/null
@@ -1,199 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for cpp",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- looks liks the original cpp lexer but web ready (so nothing special here yet)
-
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local cpplexer = lexer.new("cpp","scite-context-lexer-cpp")
-local whitespace = cpplexer.whitespace
-
-local keywords = { -- copied from cpp.lua
- -- c
- "asm", "auto", "break", "case", "const", "continue", "default", "do", "else",
- "extern", "false", "for", "goto", "if", "inline", "register", "return",
- "sizeof", "static", "switch", "true", "typedef", "volatile", "while",
- "restrict",
- -- hm
- "_Bool", "_Complex", "_Pragma", "_Imaginary",
- "boolean",
- -- c++.
- "catch", "class", "const_cast", "delete", "dynamic_cast", "explicit",
- "export", "friend", "mutable", "namespace", "new", "operator", "private",
- "protected", "public", "signals", "slots", "reinterpret_cast",
- "static_assert", "static_cast", "template", "this", "throw", "try", "typeid",
- "typename", "using", "virtual"
-}
-
-local datatypes = { -- copied from cpp.lua
- "bool", "char", "double", "enum", "float", "int", "long", "short", "signed",
- "struct", "union", "unsigned", "void"
-}
-
-local macros = { -- copied from cpp.lua
- "define", "elif", "else", "endif", "error", "if", "ifdef", "ifndef", "import",
- "include", "line", "pragma", "undef", "using", "warning"
-}
-
-local luatexs = {
- "word", "halfword", "quarterword", "scaledwhd", "scaled", "pointer", "glueratio", "strnumber",
- "dumpstream", "memoryword",
-}
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local restofline = patterns.restofline
-local startofline = patterns.startofline
-
-local squote = P("'")
-local dquote = P('"')
-local period = P(".")
-local escaped = P("\\") * P(1)
-local slashes = P("//")
-local begincomment = P("/*")
-local endcomment = P("*/")
-local percent = P("%")
-
-local hexadecimal = patterns.hexadecimal
-local decimal = patterns.decimal
-local float = patterns.float
-local integer = P("-")^-1 * (hexadecimal + decimal) -- also in patterns ?
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-
-local shortcomment = token("comment", slashes * restofline^0)
-local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomment^-1)
-
-local shortstring = token("quote", dquote) -- can be shared
- * token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
- * token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
-
-local number = token("number", float + integer)
-
-local validword = R("AZ","az","__") * R("AZ","az","__","09")^0
-local identifier = token("default",validword)
-
-local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-
------ optionalspace = spacing^0
-
-local p_keywords = exact_match(keywords)
-local p_datatypes = exact_match(datatypes)
-local p_macros = exact_match(macros)
-local p_luatexs = exact_match(luatexs)
-
-local keyword = token("keyword", p_keywords)
-local datatype = token("keyword", p_datatypes)
-local identifier = token("default", validword)
-local luatex = token("command", p_luatexs)
-
-local macro = token("data", #P("#") * startofline * P("#") * S("\t ")^0 * p_macros)
-
-cpplexer._rules = {
- { "whitespace", spacing },
- { "keyword", keyword },
- { "type", datatype },
- { "luatex", luatex },
- { "identifier", identifier },
- { "string", shortstring },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "number", number },
- { "macro", macro },
- { "operator", operator },
- { "rest", rest },
-}
-
-local web = lexer.loadluafile("scite-context-lexer-web-snippets")
-
-if web then
-
- lexer.inform("supporting web snippets in cpp lexer")
-
- cpplexer._rules_web = {
- { "whitespace", spacing },
- { "keyword", keyword },
- { "type", datatype },
- { "luatex", luatex },
- { "identifier", identifier },
- { "string", shortstring },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "web", web.pattern },
- { "number", number },
- { "macro", macro },
- { "operator", operator },
- { "rest", rest },
- }
-
-else
-
- lexer.report("not supporting web snippets in cpp lexer")
-
- cpplexer._rules_web = {
- { "whitespace", spacing },
- { "keyword", keyword },
- { "type", datatype },
- { "luatex", luatex },
- { "identifier", identifier },
- { "string", shortstring },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "number", number },
- { "macro", macro },
- { "operator", operator },
- { "rest", rest },
- }
-
-end
-
-cpplexer._tokenstyles = context.styleset
-
-cpplexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference (singular?)
-
-cpplexer._foldsymbols = {
- _patterns = {
- "[{}]",
- "/%*",
- "%*/",
- },
- -- ["data"] = { -- macro
- -- ["region"] = 1,
- -- ["endregion"] = -1,
- -- ["if"] = 1,
- -- ["ifdef"] = 1,
- -- ["ifndef"] = 1,
- -- ["endif"] = -1,
- -- },
- ["special"] = { -- operator
- ["{"] = 1,
- ["}"] = -1,
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
-}
-
--- -- by indentation:
-
-cpplexer._foldpatterns = nil
-cpplexer._foldsymbols = nil
-
-return cpplexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-dummy.lua b/context/data/textadept/context/lexers/scite-context-lexer-dummy.lua
deleted file mode 100644
index 5d3096b7d..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-dummy.lua
+++ /dev/null
@@ -1,35 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer that triggers whitespace backtracking",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- the lexer dll doesn't backtrack when there is no embedded lexer so
--- we need to trigger that, for instance in the bibtex lexer, but still
--- we get failed lexing
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local dummylexer = lexer.new("dummy","scite-context-lexer-dummy")
-local whitespace = dummylexer.whitespace
-
-local space = patterns.space
-local nospace = (1-space)
-
-local t_spacing = token(whitespace, space ^1)
-local t_rest = token("default", nospace^1)
-
-dummylexer._rules = {
- { "whitespace", t_spacing },
- { "rest", t_rest },
-}
-
-dummylexer._tokenstyles = context.styleset
-
-return dummylexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-json.lua b/context/data/textadept/context/lexers/scite-context-lexer-json.lua
deleted file mode 100644
index ca7add07d..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-json.lua
+++ /dev/null
@@ -1,101 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for json",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-local type = type
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local jsonlexer = lexer.new("json","scite-context-lexer-json")
-local whitespace = jsonlexer.whitespace
-
-local anything = patterns.anything
-local comma = P(",")
-local colon = P(":")
-local escape = P("\\")
------ single = P("'")
-local double = P('"')
-local openarray = P('[')
-local closearray = P(']')
-local openhash = P('{')
-local closehash = P('}')
------ lineending = S("\n\r")
-local space = S(" \t\n\r\f")
-local spaces = space^1
-local operator = S(':,{}[]')
-local fence = openarray + closearray + openhash + closehash
-
-local escape_un = P("\\u") * S("09","AF","af")
-local escape_bs = P("\\") * P(1)
------ content = (escape_un + escape_bs + (1-double))^0
-local content = (escape_bs + (1-double))^0
-
-local reserved = P("true")
- + P("false")
- + P("null")
-
-local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal)
-local float = patterns.float
-
-local t_number = token("number", float + integer)
- * (token("error",R("AZ","az","__")^1))^0
-
-local t_spacing = token(whitespace, space^1)
-local t_optionalws = token("default", space^1)^0
-
-local t_operator = token("special", operator)
-
-local t_string = token("operator",double)
- * token("string",content)
- * token("operator",double)
-
-local t_key = token("operator",double)
- * token("text",content)
- * token("operator",double)
- * t_optionalws
- * token("operator",colon)
-
-local t_fences = token("operator",fence) -- grouping
-
-local t_reserved = token("primitive",reserved)
-
-local t_rest = token("default",anything)
-
-jsonlexer._rules = {
- { "whitespace", t_spacing },
- { "reserved", t_reserved },
- { "key", t_key },
- { "number", t_number },
- { "string", t_string },
- { "fences", t_fences },
- { "operator", t_operator },
- { "rest", t_rest },
-}
-
-jsonlexer._tokenstyles = context.styleset
-
-jsonlexer._foldpattern = fence
-
-jsonlexer._foldsymbols = {
- _patterns = {
- "{", "}",
- "[", "]",
- },
- ["grouping"] = {
- ["{"] = 1, ["}"] = -1,
- ["["] = 1, ["]"] = -1,
- },
-}
-
-return jsonlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-lua-longstring.lua b/context/data/textadept/context/lexers/scite-context-lexer-lua-longstring.lua
deleted file mode 100644
index b1304f65c..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-lua-longstring.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for lua longstrings",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local stringlexer = lexer.new("lua-longstring","scite-context-lexer-lua-longstring")
-local whitespace = stringlexer.whitespace
-
-local space = patterns.space
-local nospace = 1 - space
-
-local p_spaces = token(whitespace, space ^1)
-local p_string = token("string", nospace^1)
-
-stringlexer._rules = {
- { "whitespace", p_spaces },
- { "string", p_string },
-}
-
-stringlexer._tokenstyles = context.styleset
-
-return stringlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-lua.lua b/context/data/textadept/context/lexers/scite-context-lexer-lua.lua
deleted file mode 100644
index 0e54d56ba..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-lua.lua
+++ /dev/null
@@ -1,396 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for lua",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- beware: all multiline is messy, so even if it's no lexer, it should be an embedded lexer
--- we probably could use a local whitespace variant but this is cleaner
-
-local P, R, S, C, Cmt, Cp = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cmt, lpeg.Cp
-local match, find = string.match, string.find
-local setmetatable = setmetatable
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-local just_match = lexer.just_match
-
-local lualexer = lexer.new("lua","scite-context-lexer-lua")
-local whitespace = lualexer.whitespace
-
-local stringlexer = lexer.load("scite-context-lexer-lua-longstring")
------ labellexer = lexer.load("scite-context-lexer-lua-labelstring")
-
-local directives = { } -- communication channel
-
--- this will be extended
-
--- we could combine some in a hash that returns the class that then makes the token
--- this can save time on large files
-
-local keywords = {
- "and", "break", "do", "else", "elseif", "end", "false", "for", "function", -- "goto",
- "if", "in", "local", "nil", "not", "or", "repeat", "return", "then", "true",
- "until", "while",
-}
-
-local functions = {
- "assert", "collectgarbage", "dofile", "error", "getmetatable",
- "ipairs", "load", "loadfile", "module", "next", "pairs",
- "pcall", "print", "rawequal", "rawget", "rawset", "require",
- "setmetatable", "tonumber", "tostring", "type", "unpack", "xpcall", "select",
-
- "string", "table", "coroutine", "debug", "file", "io", "lpeg", "math", "os", "package", "bit32", "utf8",
-}
-
-local constants = {
- "_G", "_VERSION", "_M", "...", "_ENV",
- -- here too
- "__add", "__call", "__concat", "__div", "__idiv", "__eq", "__gc", "__index",
- "__le", "__lt", "__metatable", "__mode", "__mul", "__newindex",
- "__pow", "__sub", "__tostring", "__unm", "__len",
- "__pairs", "__ipairs",
- "__close",
- "NaN",
- "<const>", "<toclose>",
-}
-
--- local tokenmappings = { }
---
--- for i=1,#keywords do tokenmappings[keywords [i]] = "keyword" }
--- for i=1,#functions do tokenmappings[functions[i]] = "function" }
--- for i=1,#constants do tokenmappings[constants[i]] = "constant" }
-
-local internals = { -- __
- "add", "call", "concat", "div", "idiv", "eq", "gc", "index",
- "le", "lt", "metatable", "mode", "mul", "newindex",
- "pow", "sub", "tostring", "unm", "len",
- "pairs", "ipairs",
- "close",
-}
-
-local depricated = {
- "arg", "arg.n",
- "loadstring", "setfenv", "getfenv",
- "pack",
-}
-
-local csnames = { -- todo: option
- "commands",
- "context",
- -- "ctxcmd",
- -- "ctx",
- "metafun",
- "metapost",
-}
-
-local level = nil
-local setlevel = function(_,i,s) level = s return i end
-
-local equals = P("=")^0
-
-local longonestart = P("[[")
-local longonestop = P("]]")
-local longonestring = (1-longonestop)^0
-
-local longtwostart = P("[") * Cmt(equals,setlevel) * P("[")
-local longtwostop = P("]") * equals * P("]")
-
-local sentinels = { } setmetatable(sentinels, { __index = function(t,k) local v = "]" .. k .. "]" t[k] = v return v end })
-
-local longtwostring = P(function(input,index)
- if level then
- -- local sentinel = "]" .. level .. "]"
- local sentinel = sentinels[level]
- local _, stop = find(input,sentinel,index,true)
- return stop and stop + 1 - #sentinel or #input + 1
- end
-end)
-
- local longtwostring_body = longtwostring
-
- local longtwostring_end = P(function(input,index)
- if level then
- -- local sentinel = "]" .. level .. "]"
- local sentinel = sentinels[level]
- local _, stop = find(input,sentinel,index,true)
- return stop and stop + 1 or #input + 1
- end
- end)
-
-local longcomment = Cmt(#("[[" + ("[" * C(equals) * "[")), function(input,index,level)
- -- local sentinel = "]" .. level .. "]"
- local sentinel = sentinels[level]
- local _, stop = find(input,sentinel,index,true)
- return stop and stop + 1 or #input + 1
-end)
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local eol = patterns.eol
-
-local squote = P("'")
-local dquote = P('"')
-local escaped = P("\\") * P(1)
-local dashes = P("--")
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-
-local shortcomment = token("comment", dashes * (1-eol)^0)
-local longcomment = token("comment", dashes * longcomment)
-
--- fails on very long string with \ at end of lines (needs embedded lexer)
--- and also on newline before " but it makes no sense to waste time on it
-
-local shortstring = token("quote", dquote)
- * token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
- * token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
-
------ longstring = token("quote", longonestart)
------ * token("string", longonestring)
------ * token("quote", longonestop)
------ + token("quote", longtwostart)
------ * token("string", longtwostring)
------ * token("quote", longtwostop)
-
-local string = shortstring
------ + longstring
-
-lexer.embed_lexer(lualexer, stringlexer, token("quote",longtwostart), token("string",longtwostring_body) * token("quote",longtwostring_end))
-
-local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal)
-local number = token("number", patterns.float + integer)
- * (token("error",R("AZ","az","__")^1))^0
-
--- officially 127-255 are ok but not utf so useless
-
------ validword = R("AZ","az","__") * R("AZ","az","__","09")^0
-
-local utf8character = P(1) * R("\128\191")^1
-local validword = (R("AZ","az","__") + utf8character) * (R("AZ","az","__","09") + utf8character)^0
-local validsuffix = (R("AZ","az") + utf8character) * (R("AZ","az","__","09") + utf8character)^0
-
-local identifier = token("default",validword)
-
------ operator = token("special", P('..') + P('~=') + S('+-*/%^#=<>;:,.{}[]()')) -- maybe split off {}[]()
------ operator = token("special", S('+-*/%^#=<>;:,{}[]()') + P('..') + P('.') + P('~=') ) -- maybe split off {}[]()
------ operator = token("special", S('+-*/%^#=<>;:,{}[]().') + P('~=') ) -- no ^1 because of nested lexers
-local operator = token("special", S('+-*/%^#=<>;:,{}[]().|~')) -- no ^1 because of nested lexers
-
-local structure = token("special", S('{}[]()'))
-
-local optionalspace = spacing^0
-local hasargument = #S("{([")
-
--- ideal should be an embedded lexer ..
-
-local gotokeyword = token("keyword", P("goto"))
- * spacing
- * token("grouping",validword)
-local gotolabel = token("keyword", P("::"))
- * (spacing + shortcomment)^0
- * token("grouping",validword)
- * (spacing + shortcomment)^0
- * token("keyword", P("::"))
-
------ p_keywords = exact_match(keywords)
------ p_functions = exact_match(functions)
------ p_constants = exact_match(constants)
------ p_internals = P("__")
------ * exact_match(internals)
-
-local p_finish = #(1-R("az","AZ","__"))
-local p_keywords = lexer.helpers.utfchartabletopattern(keywords) * p_finish -- exact_match(keywords)
-local p_functions = lexer.helpers.utfchartabletopattern(functions) * p_finish -- exact_match(functions)
-local p_constants = lexer.helpers.utfchartabletopattern(constants) * p_finish -- exact_match(constants)
-local p_internals = P("__")
- * lexer.helpers.utfchartabletopattern(internals) * p_finish -- exact_match(internals)
-
-local p_csnames = lexer.helpers.utfchartabletopattern(csnames) -- * p_finish -- just_match(csnames)
-local p_ctnames = P("ctx") * R("AZ","az","__")^0
-local keyword = token("keyword", p_keywords)
-local builtin = token("plain", p_functions)
-local constant = token("data", p_constants)
-local internal = token("data", p_internals)
-local csname = token("user", p_csnames + p_ctnames)
- * p_finish * optionalspace * (
- hasargument
- + ( token("special", S(".:")) * optionalspace * token("user", validword) )^1
- )^-1
-
--- we could also check S(".:") * p_keyword etc, could be faster
-
-local identifier = token("default", validword)
- * ( optionalspace * token("special", S(".:")) * optionalspace * (
- token("warning", p_keywords) +
- token("data", p_internals) + -- needs checking
- token("default", validword )
- ) )^0
-
--- local t = { } for k, v in next, tokenmappings do t[#t+1] = k end t = table.concat(t)
--- -- local experimental = (S(t)^1) / function(s) return tokenmappings[s] end * Cp()
---
--- local experimental = Cmt(S(t)^1, function(_,i,s)
--- local t = tokenmappings[s]
--- if t then
--- return true, t, i
--- end
--- end)
-
-lualexer._rules = {
- { "whitespace", spacing },
- { "keyword", keyword }, -- can be combined
- -- { "structure", structure },
- { "function", builtin }, -- can be combined
- { "constant", constant }, -- can be combined
- -- { "experimental", experimental }, -- works but better split
- { "csname", csname },
- { "goto", gotokeyword },
- { "identifier", identifier },
- { "string", string },
- { "number", number },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "label", gotolabel },
- { "operator", operator },
- { "rest", rest },
-}
-
--- -- experiment
---
--- local idtoken = R("az","AZ","__")
---
--- function context.one_of_match(specification)
--- local pattern = idtoken -- the concat catches _ etc
--- local list = { }
--- for i=1,#specification do
--- local style = specification[i][1]
--- local words = specification[i][2]
--- pattern = pattern + S(table.concat(words))
--- for i=1,#words do
--- list[words[i]] = style
--- end
--- end
--- return Cmt(pattern^1, function(_,i,s)
--- local style = list[s]
--- if style then
--- return true, { style, i } -- and i or nil
--- else
--- -- fail
--- end
--- end)
--- end
---
--- local whatever = context.one_of_match {
--- { "keyword", keywords }, -- keyword
--- { "plain", functions }, -- builtin
--- { "data", constants }, -- constant
--- }
---
--- lualexer._rules = {
--- { "whitespace", spacing },
--- { "whatever", whatever },
--- { "csname", csname },
--- { "goto", gotokeyword },
--- { "identifier", identifier },
--- { "string", string },
--- { "number", number },
--- { "longcomment", longcomment },
--- { "shortcomment", shortcomment },
--- { "label", gotolabel },
--- { "operator", operator },
--- { "rest", rest },
--- }
-
-lualexer._tokenstyles = context.styleset
-
--- lualexer._foldpattern = R("az")^2 + S("{}[]") -- separate entry else interference
-
-lualexer._foldpattern = (P("end") + P("if") + P("do") + P("function") + P("repeat") + P("until")) * P(#(1 - R("az")))
- + S("{}[]")
-
-lualexer._foldsymbols = {
- _patterns = {
- "[a-z][a-z]+",
- "[{}%[%]]",
- },
- ["keyword"] = { -- challenge: if=0 then=1 else=-1 elseif=-1
- ["if"] = 1, -- if .. [then|else] .. end
- ["do"] = 1, -- [while] do .. end
- ["function"] = 1, -- function .. end
- ["repeat"] = 1, -- repeat .. until
- ["until"] = -1,
- ["end"] = -1,
- },
- ["comment"] = {
- ["["] = 1, ["]"] = -1,
- },
- -- ["quote"] = { -- confusing
- -- ["["] = 1, ["]"] = -1,
- -- },
- ["special"] = {
- -- ["("] = 1, [")"] = -1,
- ["{"] = 1, ["}"] = -1,
- },
-}
-
--- embedded in tex:
-
-local cstoken = R("az","AZ","\127\255") + S("@!?_")
-local texcsname = P("\\") * cstoken^1
-local commentline = P("%") * (1-S("\n\r"))^0
-
-local texcomment = token("comment", Cmt(commentline, function() return directives.cld_inline end))
-
-local longthreestart = P("\\!!bs")
-local longthreestop = P("\\!!es")
-local longthreestring = (1-longthreestop)^0
-
-local texstring = token("quote", longthreestart)
- * token("string", longthreestring)
- * token("quote", longthreestop)
-
------ texcommand = token("user", texcsname)
-local texcommand = token("warning", texcsname)
-
--- local texstring = token("quote", longthreestart)
--- * (texcommand + token("string",P(1-texcommand-longthreestop)^1) - longthreestop)^0 -- we match long non-\cs sequences
--- * token("quote", longthreestop)
-
--- local whitespace = "whitespace"
--- local spacing = token(whitespace, space^1)
-
-lualexer._directives = directives
-
-lualexer._rules_cld = {
- { "whitespace", spacing },
- { "texstring", texstring },
- { "texcomment", texcomment },
- { "texcommand", texcommand },
- -- { "structure", structure },
- { "keyword", keyword },
- { "function", builtin },
- { "csname", csname },
- { "goto", gotokeyword },
- { "constant", constant },
- { "identifier", identifier },
- { "string", string },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment }, -- should not be used inline so best signal it as comment (otherwise complex state till end of inline)
- { "number", number },
- { "label", gotolabel },
- { "operator", operator },
- { "rest", rest },
-}
-
-return lualexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-mps.lua b/context/data/textadept/context/lexers/scite-context-lexer-mps.lua
deleted file mode 100644
index 356bf1f6b..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-mps.lua
+++ /dev/null
@@ -1,189 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-local type = type
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local metafunlexer = lexer.new("mps","scite-context-lexer-mps")
-local whitespace = metafunlexer.whitespace
-
-local metapostprimitives = { }
-local metapostinternals = { }
-local metapostshortcuts = { }
-local metapostcommands = { }
-
-local metafuninternals = { }
-local metafunshortcuts = { }
-local metafuncommands = { }
-
-local mergedshortcuts = { }
-local mergedinternals = { }
-
-do
-
- local definitions = context.loaddefinitions("scite-context-data-metapost")
-
- if definitions then
- metapostprimitives = definitions.primitives or { }
- metapostinternals = definitions.internals or { }
- metapostshortcuts = definitions.shortcuts or { }
- metapostcommands = definitions.commands or { }
- end
-
- local definitions = context.loaddefinitions("scite-context-data-metafun")
-
- if definitions then
- metafuninternals = definitions.internals or { }
- metafunshortcuts = definitions.shortcuts or { }
- metafuncommands = definitions.commands or { }
- end
-
- for i=1,#metapostshortcuts do
- mergedshortcuts[#mergedshortcuts+1] = metapostshortcuts[i]
- end
- for i=1,#metafunshortcuts do
- mergedshortcuts[#mergedshortcuts+1] = metafunshortcuts[i]
- end
-
- for i=1,#metapostinternals do
- mergedinternals[#mergedinternals+1] = metapostinternals[i]
- end
- for i=1,#metafuninternals do
- mergedinternals[#mergedinternals+1] = metafuninternals[i]
- end
-
-end
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-
-local dquote = P('"')
-local cstoken = patterns.idtoken
-local mptoken = patterns.alpha
-local leftbrace = P("{")
-local rightbrace = P("}")
-local number = patterns.real
-
-local cstokentex = R("az","AZ","\127\255") + S("@!?_")
-
--- we could collapse as in tex
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-local comment = token("comment", P("%") * (1-S("\n\r"))^0)
-local internal = token("reserved", exact_match(mergedshortcuts,false))
-local shortcut = token("data", exact_match(mergedinternals))
-
-local helper = token("command", exact_match(metafuncommands))
-local plain = token("plain", exact_match(metapostcommands))
-local quoted = token("quote", dquote)
- * token("string", P(1-dquote)^0)
- * token("quote", dquote)
-local separator = P(" ") + S("\n\r")^1
-local btex = (P("btex") + P("verbatimtex")) * separator
-local etex = separator * P("etex")
-local texstuff = token("quote", btex)
- * token("string", (1-etex)^0)
- * token("quote", etex)
-local primitive = token("primitive", exact_match(metapostprimitives))
-local identifier = token("default", cstoken^1)
-local number = token("number", number)
-local grouping = token("grouping", S("()[]{}")) -- can be an option
-local suffix = token("number", P("#@") + P("@#") + P("#"))
-local special = token("special", P("#@") + P("@#") + S("#()[]{}<>=:\"")) -- or else := <> etc split
-local texlike = token("warning", P("\\") * cstokentex^1)
-local extra = token("extra", P("+-+") + P("++") + S("`~%^&_-+*/\'|\\"))
-
-local nested = P { leftbrace * (V(1) + (1-rightbrace))^0 * rightbrace }
-local texlike = token("embedded", P("\\") * (P("MP") + P("mp")) * mptoken^1)
- * spacing^0
- * token("grouping", leftbrace)
- * token("default", (nested + (1-rightbrace))^0 )
- * token("grouping", rightbrace)
- + token("warning", P("\\") * cstokentex^1)
-
--- lua: we assume: lua ( "lua code" )
-
-local cldlexer = lexer.load("scite-context-lexer-cld","mps-cld")
-
-local startlua = P("lua") * space^0 * P('(') * space^0 * P('"')
-local stoplua = P('"') * space^0 * P(')')
-
-local startluacode = token("embedded", startlua)
-local stopluacode = #stoplua * token("embedded", stoplua)
-
-lexer.embed_lexer(metafunlexer, cldlexer, startluacode, stopluacode)
-
-local luacall = token("embedded",P("lua") * ( P(".") * R("az","AZ","__")^1 )^1)
-
-local keyword = token("default", (R("AZ","az","__")^1) * # P(space^0 * P("=")))
-
-metafunlexer._rules = {
- { "whitespace", spacing },
- { "comment", comment },
- { "keyword", keyword }, -- experiment, maybe to simple
- { "internal", internal },
- { "shortcut", shortcut },
- { "luacall", luacall },
- { "helper", helper },
- { "plain", plain },
- { "primitive", primitive },
- { "texstuff", texstuff },
- { "suffix", suffix },
- { "identifier", identifier },
- { "number", number },
- { "quoted", quoted },
- -- { "grouping", grouping }, -- can be an option
- { "special", special },
- { "texlike", texlike },
- { "extra", extra },
- { "rest", rest },
-}
-
-metafunlexer._tokenstyles = context.styleset
-
-metafunlexer._foldpattern = patterns.lower^2 -- separate entry else interference
-
-metafunlexer._foldsymbols = {
- _patterns = {
- "[a-z][a-z]+",
- },
- ["plain"] = {
- ["beginfig"] = 1,
- ["endfig"] = -1,
- ["beginglyph"] = 1,
- ["endglyph"] = -1,
- -- ["begingraph"] = 1,
- -- ["endgraph"] = -1,
- },
- ["primitive"] = {
- ["def"] = 1,
- ["vardef"] = 1,
- ["primarydef"] = 1,
- ["secondarydef" ] = 1,
- ["tertiarydef"] = 1,
- ["enddef"] = -1,
- ["if"] = 1,
- ["fi"] = -1,
- ["for"] = 1,
- ["forever"] = 1,
- ["endfor"] = -1,
- }
-}
-
--- if inspect then inspect(metafunlexer) end
-
-return metafunlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-pdf-object.lua b/context/data/textadept/context/lexers/scite-context-lexer-pdf-object.lua
deleted file mode 100644
index 155a9bd51..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-pdf-object.lua
+++ /dev/null
@@ -1,136 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for pdf objects",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- no longer used: nesting lexers with whitespace in start/stop is unreliable
-
-local P, R, S, C, V = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.V
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local pdfobjectlexer = lexer.new("pdfobj","scite-context-lexer-pdf-object")
-local whitespace = pdfobjectlexer.whitespace
-
-local space = patterns.space
-local spacing = patterns.spacing
-local nospacing = patterns.nospacing
-local anything = patterns.anything
-local newline = patterns.eol
-local real = patterns.real
-local cardinal = patterns.cardinal
-
-local lparent = P("(")
-local rparent = P(")")
-local langle = P("<")
-local rangle = P(">")
-local escape = P("\\")
-local unicodetrigger = P("feff")
-
-local nametoken = 1 - space - S("<>/[]()")
-local name = P("/") * nametoken^1
-
-local p_string = P { ( escape * anything + lparent * V(1) * rparent + (1 - rparent) )^0 }
-
-local t_spacing = token(whitespace, spacing)
-local t_spaces = token(whitespace, spacing)^0
-local t_rest = token("default", nospacing) -- anything
-
-local p_stream = P("stream")
-local p_endstream = P("endstream")
-local p_obj = P("obj")
-local p_endobj = P("endobj")
-local p_reference = P("R")
-
-local p_objectnumber = patterns.cardinal
-local p_comment = P("%") * (1-S("\n\r"))^0
-
-local t_string = token("quote", lparent)
- * token("string", p_string)
- * token("quote", rparent)
-local t_unicode = token("quote", langle)
- * token("plain", unicodetrigger)
- * token("string", (1-rangle)^1)
- * token("quote", rangle)
-local t_whatsit = token("quote", langle)
- * token("string", (1-rangle)^1)
- * token("quote", rangle)
-local t_keyword = token("command", name)
-local t_constant = token("constant", name)
-local t_number = token("number", real)
--- t_reference = token("number", cardinal)
--- * t_spacing
--- * token("number", cardinal)
-local t_reserved = token("number", P("true") + P("false") + P("NULL"))
-local t_reference = token("warning", cardinal)
- * t_spacing
- * token("warning", cardinal)
- * t_spacing
- * token("keyword", p_reference)
-
-local t_comment = token("comment", p_comment)
-
-local t_openobject = token("warning", p_objectnumber * spacing)
--- * t_spacing
- * token("warning", p_objectnumber * spacing)
--- * t_spacing
- * token("keyword", p_obj)
-local t_closeobject = token("keyword", p_endobj)
-
-local t_opendictionary = token("grouping", P("<<"))
-local t_closedictionary = token("grouping", P(">>"))
-
-local t_openarray = token("grouping", P("["))
-local t_closearray = token("grouping", P("]"))
-
--- todo: comment
-
-local t_stream = token("keyword", p_stream)
--- * token("default", newline * (1-newline*p_endstream*newline)^1 * newline)
--- * token("text", (1 - p_endstream)^1)
- * (token("text", (1 - p_endstream-spacing)^1) + t_spacing)^1
- * token("keyword", p_endstream)
-
-local t_dictionary = { "dictionary",
- dictionary = t_opendictionary * (t_spaces * t_keyword * t_spaces * V("whatever"))^0 * t_spaces * t_closedictionary,
- array = t_openarray * (t_spaces * V("whatever"))^0 * t_spaces * t_closearray,
- whatever = V("dictionary") + V("array") + t_constant + t_reference + t_string + t_unicode + t_number + t_reserved + t_whatsit,
- }
-
------ t_object = { "object", -- weird that we need to catch the end here (probably otherwise an invalid lpeg)
------ object = t_spaces * (V("dictionary") * t_spaces * t_stream^-1 + V("array") + V("number") + t_spaces) * t_spaces * t_closeobject,
------ dictionary = t_opendictionary * (t_spaces * t_keyword * t_spaces * V("whatever"))^0 * t_spaces * t_closedictionary,
------ array = t_openarray * (t_spaces * V("whatever"))^0 * t_spaces * t_closearray,
------ whatever = V("dictionary") + V("array") + t_constant + t_reference + t_string + t_unicode + t_number + t_reserved + t_whatsit,
------ number = t_number,
------ }
-
-local t_object = { "object", -- weird that we need to catch the end here (probably otherwise an invalid lpeg)
- dictionary = t_dictionary.dictionary,
- array = t_dictionary.array,
- whatever = t_dictionary.whatever,
- object = t_openobject^-1 * t_spaces * (V("dictionary") * t_spaces * t_stream^-1 + V("array") + V("number") + t_spaces) * t_spaces * t_closeobject,
- number = t_number,
- }
-
-pdfobjectlexer._shared = {
- dictionary = t_dictionary,
- object = t_object,
- stream = t_stream,
-}
-
-pdfobjectlexer._rules = {
- { "whitespace", t_spacing }, -- in fact, here we don't want whitespace as it's top level lexer work
- { "object", t_object },
-}
-
-pdfobjectlexer._tokenstyles = context.styleset
-
-return pdfobjectlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-pdf-xref.lua b/context/data/textadept/context/lexers/scite-context-lexer-pdf-xref.lua
deleted file mode 100644
index 14ba5296b..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-pdf-xref.lua
+++ /dev/null
@@ -1,43 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for pdf xref",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- no longer used: nesting lexers with whitespace in start/stop is unreliable
-
-local P, R = lpeg.P, lpeg.R
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local pdfxreflexer = lexer.new("pdfxref","scite-context-lexer-pdf-xref")
-local whitespace = pdfxreflexer.whitespace
-
-local spacing = patterns.spacing
-local cardinal = patterns.cardinal
-local alpha = patterns.alpha
-
-local t_spacing = token(whitespace, spacing)
-
-local p_xref = P("xref")
-local t_xref = token("keyword",p_xref)
- * token("number", cardinal * spacing * cardinal * spacing)
-
-local t_number = token("number", cardinal * spacing * cardinal * spacing)
- * token("keyword", alpha)
-
-pdfxreflexer._rules = {
- { "whitespace", t_spacing },
- { "xref", t_xref },
- { "number", t_number },
-}
-
-pdfxreflexer._tokenstyles = context.styleset
-
-return pdfxreflexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-pdf.lua b/context/data/textadept/context/lexers/scite-context-lexer-pdf.lua
deleted file mode 100644
index 1956071b7..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-pdf.lua
+++ /dev/null
@@ -1,218 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for pdf",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- pdf is normally static .. i.e. not edited so we don't really
--- need embedded lexers.
-
-local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local pdflexer = lexer.new("pdf","scite-context-lexer-pdf")
-local whitespace = pdflexer.whitespace
-
------ pdfobjectlexer = lexer.load("scite-context-lexer-pdf-object")
------ pdfxreflexer = lexer.load("scite-context-lexer-pdf-xref")
-
-local anything = patterns.anything
-local space = patterns.space
-local spacing = patterns.spacing
-local nospacing = patterns.nospacing
-local anything = patterns.anything
-local restofline = patterns.restofline
-
-local t_whitespace = token(whitespace, spacing)
-local t_spacing = token("default", spacing)
------ t_rest = token("default", nospacing)
-local t_rest = token("default", anything)
-
-local p_comment = P("%") * restofline
-local t_comment = token("comment", p_comment)
-
--- whatever
-
-local space = patterns.space
-local spacing = patterns.spacing
-local nospacing = patterns.nospacing
-local anything = patterns.anything
-local newline = patterns.eol
-local real = patterns.real
-local cardinal = patterns.cardinal
-local alpha = patterns.alpha
-
-local lparent = P("(")
-local rparent = P(")")
-local langle = P("<")
-local rangle = P(">")
-local escape = P("\\")
-local unicodetrigger = P("feff")
-
-local nametoken = 1 - space - S("<>/[]()")
-local name = P("/") * nametoken^1
-
-local p_string = P { ( escape * anything + lparent * V(1) * rparent + (1 - rparent) )^0 }
-
-local t_spacing = token("default", spacing)
-local t_spaces = token("default", spacing)^0
-local t_rest = token("default", nospacing) -- anything
-
-local p_stream = P("stream")
-local p_endstream = P("endstream")
-local p_obj = P("obj")
-local p_endobj = P("endobj")
-local p_reference = P("R")
-
-local p_objectnumber = patterns.cardinal
-local p_comment = P("%") * (1-S("\n\r"))^0
-
-local t_string = token("quote", lparent)
- * token("string", p_string)
- * token("quote", rparent)
-local t_unicode = token("quote", langle)
- * token("plain", unicodetrigger)
- * token("string", (1-rangle)^1)
- * token("quote", rangle)
-local t_whatsit = token("quote", langle)
- * token("string", (1-rangle)^1)
- * token("quote", rangle)
-local t_keyword = token("command", name)
-local t_constant = token("constant", name)
-local t_number = token("number", real)
--- t_reference = token("number", cardinal)
--- * t_spacing
--- * token("number", cardinal)
-local t_reserved = token("number", P("true") + P("false") + P("null"))
--- t_reference = token("warning", cardinal * spacing * cardinal * spacing)
--- * token("keyword", p_reference)
-local t_reference = token("warning", cardinal)
- * t_spacing
- * token("warning", cardinal)
- * t_spacing
- * token("keyword", p_reference)
-
-local t_comment = token("comment", p_comment)
-
-local t_openobject = token("warning", p_objectnumber)
- * t_spacing
- * token("warning", p_objectnumber)
- * t_spacing
- * token("keyword", p_obj)
--- t_openobject = token("warning", p_objectnumber * spacing)
--- * token("warning", p_objectnumber * spacing)
--- * token("keyword", p_obj)
-local t_closeobject = token("keyword", p_endobj)
-
-local t_opendictionary = token("grouping", P("<<"))
-local t_closedictionary = token("grouping", P(">>"))
-
-local t_openarray = token("grouping", P("["))
-local t_closearray = token("grouping", P("]"))
-
-local t_stream = token("keyword", p_stream)
- * token("text", (1 - p_endstream)^1)
- * token("keyword", p_endstream)
-
-local t_other = t_constant + t_reference + t_string + t_unicode + t_number + t_reserved + t_whatsit
-
-local t_dictionary = { "dictionary",
- dictionary = t_opendictionary
- * (t_spaces * t_keyword * t_spaces * V("whatever"))^0
- * t_spaces
- * t_closedictionary,
- array = t_openarray
- * (t_spaces * V("whatever"))^0
- * t_spaces
- * t_closearray,
- whatever = V("dictionary")
- + V("array")
- + t_other,
- }
-
-local t_object = { "object", -- weird that we need to catch the end here (probably otherwise an invalid lpeg)
- dictionary = t_dictionary.dictionary,
- array = t_dictionary.array,
- whatever = t_dictionary.whatever,
- object = t_openobject
- * t_spaces
- * (V("dictionary") * t_spaces * t_stream^-1 + V("array") + t_other)
- * t_spaces
- * t_closeobject,
- number = t_number,
- }
-
--- objects ... sometimes NUL characters play havoc ... and in xref we have
--- issues with embedded lexers that have spaces in the start and stop
--- conditions and this cannot be handled well either ... so, an imperfect
--- solution ... but anyway, there is not that much that can end up in
--- the root of the tree see we're sort of safe
-
-local p_trailer = P("trailer")
-local t_trailer = token("keyword", p_trailer)
- * t_spacing
- * t_dictionary
--- t_trailer = token("keyword", p_trailer * spacing)
--- * t_dictionary
-
-local p_startxref = P("startxref")
-local t_startxref = token("keyword", p_startxref)
- * t_spacing
- * token("number", cardinal)
--- t_startxref = token("keyword", p_startxref * spacing)
--- * token("number", cardinal)
-
-local p_xref = P("xref")
-local t_xref = token("keyword",p_xref)
- * t_spacing
- * token("number", cardinal)
- * t_spacing
- * token("number", cardinal)
- * spacing
--- t_xref = token("keyword",p_xref)
--- * token("number", spacing * cardinal * spacing * cardinal * spacing)
-
-local t_number = token("number", cardinal)
- * t_spacing
- * token("number", cardinal)
- * t_spacing
- * token("keyword", S("fn"))
--- t_number = token("number", cardinal * spacing * cardinal * spacing)
--- * token("keyword", S("fn"))
-
-pdflexer._rules = {
- { "whitespace", t_whitespace },
- { "object", t_object },
- { "comment", t_comment },
- { "trailer", t_trailer },
- { "startxref", t_startxref },
- { "xref", t_xref },
- { "number", t_number },
- { "rest", t_rest },
-}
-
-pdflexer._tokenstyles = context.styleset
-
--- lexer.inspect(pdflexer)
-
--- collapser: obj endobj stream endstream
-
-pdflexer._foldpattern = p_obj + p_endobj + p_stream + p_endstream
-
-pdflexer._foldsymbols = {
- ["keyword"] = {
- ["obj"] = 1,
- ["endobj"] = -1,
- ["stream"] = 1,
- ["endstream"] = -1,
- },
-}
-
-return pdflexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-sas.lua b/context/data/textadept/context/lexers/scite-context-lexer-sas.lua
deleted file mode 100644
index e36569911..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-sas.lua
+++ /dev/null
@@ -1,102 +0,0 @@
-local info = {
- version = 1.001,
- comment = "scintilla lpeg lexer for sas",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- todo: make this ok for the sas syntax as now it's sql
-
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local saslexer = lexer.new("sas","scite-context-lexer-sAs")
-local whitespace = saslexer.whitespace
-
-local keywords_standard = {
- "anova" , "data", "run", "proc",
-}
-
-local keywords_dialects = {
- "class" , "do", "end" , "int" , "for" , "model" , "rannor" , "to" , "output"
-}
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local restofline = patterns.restofline
-local startofline = patterns.startofline
-
-local squote = P("'")
-local dquote = P('"')
-local bquote = P('`')
-local escaped = P("\\") * P(1)
-
-local begincomment = P("/*")
-local endcomment = P("*/")
-
-local decimal = patterns.decimal
-local float = patterns.float
-local integer = P("-")^-1 * decimal
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-
-local shortcomment = token("comment", (P("#") + P("--")) * restofline^0)
-local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomment^-1)
-
-local identifier = token("default",lexer.helpers.utfidentifier)
-
-local shortstring = token("quote", dquote) -- can be shared
- * token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
- * token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
- + token("quote", bquote)
- * token("string", (escaped + (1-bquote))^0)
- * token("quote", bquote)
-
-local p_keywords_s = exact_match(keywords_standard,nil,true)
-local p_keywords_d = exact_match(keywords_dialects,nil,true)
-local keyword_s = token("keyword", p_keywords_s)
-local keyword_d = token("command", p_keywords_d)
-
-local number = token("number", float + integer)
-local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-
-saslexer._tokenstyles = context.styleset
-
-saslexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference
-
-saslexer._foldsymbols = {
- _patterns = {
- "/%*",
- "%*/",
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
-}
-
-saslexer._rules = {
- { "whitespace", spacing },
- { "keyword-s", keyword_s },
- { "keyword-d", keyword_d },
- { "identifier", identifier },
- { "string", shortstring },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "number", number },
- { "operator", operator },
- { "rest", rest },
-}
-
-return saslexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-sql.lua b/context/data/textadept/context/lexers/scite-context-lexer-sql.lua
deleted file mode 100644
index cf0a03331..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-sql.lua
+++ /dev/null
@@ -1,238 +0,0 @@
-local info = {
- version = 1.001,
- comment = "scintilla lpeg lexer for sql",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local sqllexer = lexer.new("sql","scite-context-lexer-sql")
-local whitespace = sqllexer.whitespace
-
--- ANSI SQL 92 | 99 | 2003
-
-local keywords_standard = {
- "absolute", "action", "add", "after", "all", "allocate", "alter", "and", "any",
- "are", "array", "as", "asc", "asensitive", "assertion", "asymmetric", "at",
- "atomic", "authorization", "avg", "before", "begin", "between", "bigint",
- "binary", "bit", "bit_length", "blob", "boolean", "both", "breadth", "by",
- "call", "called", "cascade", "cascaded", "case", "cast", "catalog", "char",
- "char_length", "character", "character_length", "check", "clob", "close",
- "coalesce", "collate", "collation", "column", "commit", "condition", "connect",
- "connection", "constraint", "constraints", "constructor", "contains", "continue",
- "convert", "corresponding", "count", "create", "cross", "cube", "current",
- "current_date", "current_default_transform_group", "current_path",
- "current_role", "current_time", "current_timestamp",
- "current_transform_group_for_type", "current_user", "cursor", "cycle", "data",
- "date", "day", "deallocate", "dec", "decimal", "declare", "default",
- "deferrable", "deferred", "delete", "depth", "deref", "desc", "describe",
- "descriptor", "deterministic", "diagnostics", "disconnect", "distinct", "do",
- "domain", "double", "drop", "dynamic", "each", "element", "else", "elseif",
- "end", "equals", "escape", "except", "exception", "exec", "execute", "exists",
- "exit", "external", "extract", "false", "fetch", "filter", "first", "float",
- "for", "foreign", "found", "free", "from", "full", "function", "general", "get",
- "global", "go", "goto", "grant", "group", "grouping", "handler", "having",
- "hold", "hour", "identity", "if", "immediate", "in", "indicator", "initially",
- "inner", "inout", "input", "insensitive", "insert", "int", "integer",
- "intersect", "interval", "into", "is", "isolation", "iterate", "join", "key",
- "language", "large", "last", "lateral", "leading", "leave", "left", "level",
- "like", "local", "localtime", "localtimestamp", "locator", "loop", "lower",
- "map", "match", "max", "member", "merge", "method", "min", "minute", "modifies",
- "module", "month", "multiset", "names", "national", "natural", "nchar", "nclob",
- "new", "next", "no", "none", "not", "null", "nullif", "numeric", "object",
- "octet_length", "of", "old", "on", "only", "open", "option", "or", "order",
- "ordinality", "out", "outer", "output", "over", "overlaps", "pad", "parameter",
- "partial", "partition", "path", "position", "precision", "prepare", "preserve",
- "primary", "prior", "privileges", "procedure", "public", "range", "read",
- "reads", "real", "recursive", "ref", "references", "referencing", "relative",
- "release", "repeat", "resignal", "restrict", "result", "return", "returns",
- "revoke", "right", "role", "rollback", "rollup", "routine", "row", "rows",
- "savepoint", "schema", "scope", "scroll", "search", "second", "section",
- "select", "sensitive", "session", "session_user", "set", "sets", "signal",
- "similar", "size", "smallint", "some", "space", "specific", "specifictype",
- "sql", "sqlcode", "sqlerror", "sqlexception", "sqlstate", "sqlwarning", "start",
- "state", "static", "submultiset", "substring", "sum", "symmetric", "system",
- "system_user", "table", "tablesample", "temporary", "then", "time", "timestamp",
- "timezone_hour", "timezone_minute", "to", "trailing", "transaction", "translate",
- "translation", "treat", "trigger", "trim", "true", "under", "undo", "union",
- "unique", "unknown", "unnest", "until", "update", "upper", "usage", "user",
- "using", "value", "values", "varchar", "varying", "view", "when", "whenever",
- "where", "while", "window", "with", "within", "without", "work", "write", "year",
- "zone",
-}
-
--- The dialects list is taken from drupal.org with standard subtracted.
---
--- MySQL 3.23.x | 4.x | 5.x
--- PostGreSQL 8.1
--- MS SQL Server 2000
--- MS ODBC
--- Oracle 10.2
-
-local keywords_dialects = {
- "a", "abort", "abs", "access", "ada", "admin", "aggregate", "alias", "also",
- "always", "analyse", "analyze", "assignment", "attribute", "attributes", "audit",
- "auto_increment", "avg_row_length", "backup", "backward", "bernoulli", "bitvar",
- "bool", "break", "browse", "bulk", "c", "cache", "cardinality", "catalog_name",
- "ceil", "ceiling", "chain", "change", "character_set_catalog",
- "character_set_name", "character_set_schema", "characteristics", "characters",
- "checked", "checkpoint", "checksum", "class", "class_origin", "cluster",
- "clustered", "cobol", "collation_catalog", "collation_name", "collation_schema",
- "collect", "column_name", "columns", "command_function", "command_function_code",
- "comment", "committed", "completion", "compress", "compute", "condition_number",
- "connection_name", "constraint_catalog", "constraint_name", "constraint_schema",
- "containstable", "conversion", "copy", "corr", "covar_pop", "covar_samp",
- "createdb", "createrole", "createuser", "csv", "cume_dist", "cursor_name",
- "database", "databases", "datetime", "datetime_interval_code",
- "datetime_interval_precision", "day_hour", "day_microsecond", "day_minute",
- "day_second", "dayofmonth", "dayofweek", "dayofyear", "dbcc", "defaults",
- "defined", "definer", "degree", "delay_key_write", "delayed", "delimiter",
- "delimiters", "dense_rank", "deny", "derived", "destroy", "destructor",
- "dictionary", "disable", "disk", "dispatch", "distinctrow", "distributed", "div",
- "dual", "dummy", "dump", "dynamic_function", "dynamic_function_code", "enable",
- "enclosed", "encoding", "encrypted", "end-exec", "enum", "errlvl", "escaped",
- "every", "exclude", "excluding", "exclusive", "existing", "exp", "explain",
- "fields", "file", "fillfactor", "final", "float4", "float8", "floor", "flush",
- "following", "force", "fortran", "forward", "freetext", "freetexttable",
- "freeze", "fulltext", "fusion", "g", "generated", "granted", "grants",
- "greatest", "header", "heap", "hierarchy", "high_priority", "holdlock", "host",
- "hosts", "hour_microsecond", "hour_minute", "hour_second", "identified",
- "identity_insert", "identitycol", "ignore", "ilike", "immutable",
- "implementation", "implicit", "include", "including", "increment", "index",
- "infile", "infix", "inherit", "inherits", "initial", "initialize", "insert_id",
- "instance", "instantiable", "instead", "int1", "int2", "int3", "int4", "int8",
- "intersection", "invoker", "isam", "isnull", "k", "key_member", "key_type",
- "keys", "kill", "lancompiler", "last_insert_id", "least", "length", "less",
- "limit", "lineno", "lines", "listen", "ln", "load", "location", "lock", "login",
- "logs", "long", "longblob", "longtext", "low_priority", "m", "matched",
- "max_rows", "maxextents", "maxvalue", "mediumblob", "mediumint", "mediumtext",
- "message_length", "message_octet_length", "message_text", "middleint",
- "min_rows", "minus", "minute_microsecond", "minute_second", "minvalue",
- "mlslabel", "mod", "mode", "modify", "monthname", "more", "move", "mumps",
- "myisam", "name", "nesting", "no_write_to_binlog", "noaudit", "nocheck",
- "nocompress", "nocreatedb", "nocreaterole", "nocreateuser", "noinherit",
- "nologin", "nonclustered", "normalize", "normalized", "nosuperuser", "nothing",
- "notify", "notnull", "nowait", "nullable", "nulls", "number", "octets", "off",
- "offline", "offset", "offsets", "oids", "online", "opendatasource", "openquery",
- "openrowset", "openxml", "operation", "operator", "optimize", "optionally",
- "options", "ordering", "others", "outfile", "overlay", "overriding", "owner",
- "pack_keys", "parameter_mode", "parameter_name", "parameter_ordinal_position",
- "parameter_specific_catalog", "parameter_specific_name",
- "parameter_specific_schema", "parameters", "pascal", "password", "pctfree",
- "percent", "percent_rank", "percentile_cont", "percentile_disc", "placing",
- "plan", "pli", "postfix", "power", "preceding", "prefix", "preorder", "prepared",
- "print", "proc", "procedural", "process", "processlist", "purge", "quote",
- "raid0", "raiserror", "rank", "raw", "readtext", "recheck", "reconfigure",
- "regexp", "regr_avgx", "regr_avgy", "regr_count", "regr_intercept", "regr_r2",
- "regr_slope", "regr_sxx", "regr_sxy", "regr_syy", "reindex", "reload", "rename",
- "repeatable", "replace", "replication", "require", "reset", "resource",
- "restart", "restore", "returned_cardinality", "returned_length",
- "returned_octet_length", "returned_sqlstate", "rlike", "routine_catalog",
- "routine_name", "routine_schema", "row_count", "row_number", "rowcount",
- "rowguidcol", "rowid", "rownum", "rule", "save", "scale", "schema_name",
- "schemas", "scope_catalog", "scope_name", "scope_schema", "second_microsecond",
- "security", "self", "separator", "sequence", "serializable", "server_name",
- "setof", "setuser", "share", "show", "shutdown", "simple", "soname", "source",
- "spatial", "specific_name", "sql_big_result", "sql_big_selects",
- "sql_big_tables", "sql_calc_found_rows", "sql_log_off", "sql_log_update",
- "sql_low_priority_updates", "sql_select_limit", "sql_small_result",
- "sql_warnings", "sqlca", "sqrt", "ssl", "stable", "starting", "statement",
- "statistics", "status", "stddev_pop", "stddev_samp", "stdin", "stdout",
- "storage", "straight_join", "strict", "string", "structure", "style",
- "subclass_origin", "sublist", "successful", "superuser", "synonym", "sysdate",
- "sysid", "table_name", "tables", "tablespace", "temp", "template", "terminate",
- "terminated", "text", "textsize", "than", "ties", "tinyblob", "tinyint",
- "tinytext", "toast", "top", "top_level_count", "tran", "transaction_active",
- "transactions_committed", "transactions_rolled_back", "transform", "transforms",
- "trigger_catalog", "trigger_name", "trigger_schema", "truncate", "trusted",
- "tsequal", "type", "uescape", "uid", "unbounded", "uncommitted", "unencrypted",
- "unlisten", "unlock", "unnamed", "unsigned", "updatetext", "use",
- "user_defined_type_catalog", "user_defined_type_code", "user_defined_type_name",
- "user_defined_type_schema", "utc_date", "utc_time", "utc_timestamp", "vacuum",
- "valid", "validate", "validator", "var_pop", "var_samp", "varbinary", "varchar2",
- "varcharacter", "variable", "variables", "verbose", "volatile", "waitfor",
- "width_bucket", "writetext", "x509", "xor", "year_month", "zerofill",
-}
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local restofline = patterns.restofline
-local startofline = patterns.startofline
-
-local squote = P("'")
-local dquote = P('"')
-local bquote = P('`')
-local escaped = P("\\") * P(1)
-
-local begincomment = P("/*")
-local endcomment = P("*/")
-
-local decimal = patterns.decimal
-local float = patterns.float
-local integer = P("-")^-1 * decimal
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-
-local shortcomment = token("comment", (P("#") + P("--")) * restofline^0)
-local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomment^-1)
-
-local p_validword = R("AZ","az","__") * R("AZ","az","__","09")^0
-local identifier = token("default",p_validword)
-
-local shortstring = token("quote", dquote) -- can be shared
- * token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
- * token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
- + token("quote", bquote)
- * token("string", (escaped + (1-bquote))^0)
- * token("quote", bquote)
-
-local p_keywords_s = exact_match(keywords_standard,nil,true)
-local p_keywords_d = exact_match(keywords_dialects,nil,true)
-local keyword_s = token("keyword", p_keywords_s)
-local keyword_d = token("command", p_keywords_d)
-
-local number = token("number", float + integer)
-local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-
-sqllexer._tokenstyles = context.styleset
-
-sqllexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference
-
-sqllexer._foldsymbols = {
- _patterns = {
- "/%*",
- "%*/",
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
-}
-
-sqllexer._rules = {
- { "whitespace", spacing },
- { "keyword-s", keyword_s },
- { "keyword-d", keyword_d },
- { "identifier", identifier },
- { "string", shortstring },
- { "longcomment", longcomment },
- { "shortcomment", shortcomment },
- { "number", number },
- { "operator", operator },
- { "rest", rest },
-}
-
-return sqllexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-tex-web.lua b/context/data/textadept/context/lexers/scite-context-lexer-tex-web.lua
deleted file mode 100644
index 88499a9c2..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-tex-web.lua
+++ /dev/null
@@ -1,23 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for tex web",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local texweblexer = lexer.new("tex-web","scite-context-lexer-tex")
-local texlexer = lexer.load("scite-context-lexer-tex")
-
--- can probably be done nicer now, a bit of a hack
-
-texweblexer._rules = texlexer._rules_web
-texweblexer._tokenstyles = texlexer._tokenstyles
-texweblexer._foldsymbols = texlexer._foldsymbols
-texweblexer._directives = texlexer._directives
-
-return texweblexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-tex.lua b/context/data/textadept/context/lexers/scite-context-lexer-tex.lua
deleted file mode 100644
index 71cfce0f5..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-tex.lua
+++ /dev/null
@@ -1,588 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for context",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- maybe: _LINEBYLINE variant for large files (no nesting)
--- maybe: protected_macros
-
---[[
-
- experiment dd 2009/10/28 .. todo:
-
- -- figure out if tabs instead of splits are possible
- -- locate an option to enter name in file dialogue (like windows permits)
- -- figure out why loading a file fails
- -- we cannot print to the log pane
- -- we cannot access props["keywordclass.macros.context.en"]
- -- lexer.get_property only handles integers
- -- we cannot run a command to get the location of mult-def.lua
-
- -- local interface = props["keywordclass.macros.context.en"]
- -- local interface = lexer.get_property("keywordclass.macros.context.en","")
-
-]]--
-
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, V, C, Cmt, Cp, Cc, Ct = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cmt, lpeg.Cp, lpeg.Cc, lpeg.Ct
-local type, next = type, next
-local find, match, lower, upper = string.find, string.match, string.lower, string.upper
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-local inform = context.inform
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local contextlexer = lexer.new("tex","scite-context-lexer-tex")
-local whitespace = contextlexer.whitespace
-
-local cldlexer = lexer.load("scite-context-lexer-cld")
-local mpslexer = lexer.load("scite-context-lexer-mps")
-
-local commands = { en = { } }
-local primitives = { }
-local helpers = { }
-local constants = { }
-
-do -- todo: only once, store in global
-
- -- commands helpers primitives
-
- local definitions = context.loaddefinitions("scite-context-data-interfaces")
-
- if definitions then
- local used = { }
- for interface, list in next, definitions do
- if interface ~= "common" then
- used[#used+1] = interface
- local c = { }
- -- these are shared
- local list = definitions.common
- if list then
- for i=1,#list do
- c[list[i]] = true
- end
- end
- -- normally this one is empty
- list = definitions.en
- if list then
- for i=1,#list do
- c[list[i]] = true
- end
- end
- -- these are interface specific
- if interface ~= "en" then
- for i=1,#list do
- c[list[i]] = true
- end
- end
- commands[interface] = c
- end
- end
- table.sort(used)
- inform("context user interfaces '%s' supported",table.concat(used," "))
- end
-
- local definitions = context.loaddefinitions("scite-context-data-context")
- local overloaded = { }
-
- if definitions then
- helpers = definitions.helpers or { }
- constants = definitions.constants or { }
- for i=1,#helpers do
- overloaded[helpers[i]] = true
- end
- for i=1,#constants do
- overloaded[constants[i]] = true
- end
- end
-
- local definitions = context.loaddefinitions("scite-context-data-tex")
-
- if definitions then
- local function add(data,normal)
- for k, v in next, data do
- if v ~= "/" and v ~= "-" then
- if not overloaded[v] then
- primitives[#primitives+1] = v
- end
- if normal then
- v = "normal" .. v
- if not overloaded[v] then
- primitives[#primitives+1] = v
- end
- end
- end
- end
- end
- add(definitions.tex,true)
- add(definitions.etex,true)
- add(definitions.pdftex,true)
- add(definitions.aleph,true)
- add(definitions.omega,true)
- add(definitions.luatex,true)
- add(definitions.xetex,true)
- end
-
-end
-
-local currentcommands = commands.en or { }
-
-local cstoken = R("az","AZ","\127\255") + S("@!?_")
-
-local knowncommand = Cmt(cstoken^1, function(_,i,s)
- return currentcommands[s] and i
-end)
-
-local utfchar = context.utfchar
-local wordtoken = context.patterns.wordtoken
-local iwordtoken = context.patterns.iwordtoken
-local wordpattern = context.patterns.wordpattern
-local iwordpattern = context.patterns.iwordpattern
-local invisibles = context.patterns.invisibles
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
-local validwords = false
-local validminimum = 3
-
--- % language=uk
-
--- fails (empty loop message) ... latest lpeg issue?
-
--- todo: Make sure we only do this at the beginning .. a pitty that we
--- can't store a state .. now is done too often.
-
-local knownpreamble = Cmt(P("% "), function(input,i,_) -- todo : utfbomb, was #P("% ")
- if i < 10 then
- validwords, validminimum = false, 3
- local s, e, word = find(input,"^(.-)[\n\r]",i) -- combine with match
- if word then
- local interface = match(word,"interface=([a-z][a-z]+)")
- if interface and #interface == 2 then
- inform("enabling context user interface '%s'",interface)
- currentcommands = commands[interface] or commands.en or { }
- end
- local language = match(word,"language=([a-z][a-z]+)")
- validwords, validminimum = setwordlist(language)
- end
- end
- return false
-end)
-
--- -- the token list contains { "style", endpos } entries
--- --
--- -- in principle this is faster but it is also crash sensitive for large files
-
--- local constants_hash = { } for i=1,#constants do constants_hash [constants [i]] = true end
--- local helpers_hash = { } for i=1,#helpers do helpers_hash [helpers [i]] = true end
--- local primitives_hash = { } for i=1,#primitives do primitives_hash[primitives[i]] = true end
-
--- local specialword = Ct( P("\\") * Cmt( C(cstoken^1), function(input,i,s)
--- if currentcommands[s] then
--- return true, "command", i
--- elseif constants_hash[s] then
--- return true, "data", i
--- elseif helpers_hash[s] then
--- return true, "plain", i
--- elseif primitives_hash[s] then
--- return true, "primitive", i
--- else -- if starts with if then primitive
--- return true, "user", i
--- end
--- end) )
-
--- local specialword = P("\\") * Cmt( C(cstoken^1), function(input,i,s)
--- if currentcommands[s] then
--- return true, { "command", i }
--- elseif constants_hash[s] then
--- return true, { "data", i }
--- elseif helpers_hash[s] then
--- return true, { "plain", i }
--- elseif primitives_hash[s] then
--- return true, { "primitive", i }
--- else -- if starts with if then primitive
--- return true, { "user", i }
--- end
--- end)
-
--- experiment: keep space with whatever ... less tables
-
--- 10pt
-
-local commentline = P("%") * (1-S("\n\r"))^0
-local endline = S("\n\r")^1
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local backslash = P("\\")
-local hspace = S(" \t")
-
-local p_spacing = space^1
-local p_rest = any
-
-local p_preamble = knownpreamble
-local p_comment = commentline
------ p_command = backslash * knowncommand
------ p_constant = backslash * exact_match(constants)
------ p_helper = backslash * exact_match(helpers)
------ p_primitive = backslash * exact_match(primitives)
-
-local p_csdone = #(1-cstoken) + P(-1)
-
-local p_command = backslash * lexer.helpers.utfchartabletopattern(currentcommands) * p_csdone
-local p_constant = backslash * lexer.helpers.utfchartabletopattern(constants) * p_csdone
-local p_helper = backslash * lexer.helpers.utfchartabletopattern(helpers) * p_csdone
-local p_primitive = backslash * lexer.helpers.utfchartabletopattern(primitives) * p_csdone
-
-local p_ifprimitive = P("\\if") * cstoken^1
-local p_csname = backslash * (cstoken^1 + P(1))
-local p_grouping = S("{$}")
-local p_special = S("#()[]<>=\"")
-local p_extra = S("`~%^&_-+/\'|")
-local p_text = iwordtoken^1 --maybe add punctuation and space
-
-local p_reserved = backslash * (
- P("??") + R("az") * P("!")
- ) * cstoken^1
-
-local p_number = context.patterns.real
-local p_unit = P("pt") + P("bp") + P("sp") + P("mm") + P("cm") + P("cc") + P("dd")
-
--- no looking back = #(1-S("[=")) * cstoken^3 * #(1-S("=]"))
-
--- This one gives stack overflows:
---
--- local p_word = Cmt(iwordpattern, function(_,i,s)
--- if validwords then
--- return checkedword(validwords,validminimum,s,i)
--- else
--- -- return true, { "text", i }
--- return true, "text", i
--- end
--- end)
---
--- So we use this one instead:
-
------ p_word = Ct( iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() ) -- the function can be inlined
-local p_word = iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
-
------ p_text = (1 - p_grouping - p_special - p_extra - backslash - space + hspace)^1
-
--- keep key pressed at end-of syst-aux.mkiv:
---
--- 0 : 15 sec
--- 1 : 13 sec
--- 2 : 10 sec
---
--- the problem is that quite some style subtables get generated so collapsing ranges helps
-
-local option = 1
-
-if option == 1 then
-
- p_comment = p_comment^1
- p_grouping = p_grouping^1
- p_special = p_special^1
- p_extra = p_extra^1
-
- p_command = p_command^1
- p_constant = p_constant^1
- p_helper = p_helper^1
- p_primitive = p_primitive^1
- p_ifprimitive = p_ifprimitive^1
- p_reserved = p_reserved^1
-
-elseif option == 2 then
-
- local included = space^0
-
- p_comment = (p_comment * included)^1
- p_grouping = (p_grouping * included)^1
- p_special = (p_special * included)^1
- p_extra = (p_extra * included)^1
-
- p_command = (p_command * included)^1
- p_constant = (p_constant * included)^1
- p_helper = (p_helper * included)^1
- p_primitive = (p_primitive * included)^1
- p_ifprimitive = (p_ifprimitive * included)^1
- p_reserved = (p_reserved * included)^1
-
-end
-
-local p_invisible = invisibles^1
-
-local spacing = token(whitespace, p_spacing )
-
-local rest = token("default", p_rest )
-local preamble = token("preamble", p_preamble )
-local comment = token("comment", p_comment )
-local command = token("command", p_command )
-local constant = token("data", p_constant )
-local helper = token("plain", p_helper )
-local primitive = token("primitive", p_primitive )
-local ifprimitive = token("primitive", p_ifprimitive)
-local reserved = token("reserved", p_reserved )
-local csname = token("user", p_csname )
-local grouping = token("grouping", p_grouping )
-local number = token("number", p_number )
- * token("constant", p_unit )
-local special = token("special", p_special )
-local reserved = token("reserved", p_reserved ) -- reserved internal preproc
-local extra = token("extra", p_extra )
-local invisible = token("invisible", p_invisible )
-local text = token("default", p_text )
-local word = p_word
-
------ startluacode = token("grouping", P("\\startluacode"))
------ stopluacode = token("grouping", P("\\stopluacode"))
-
-local luastatus = false
-local luatag = nil
-local lualevel = 0
-
-local function startdisplaylua(_,i,s)
- luatag = s
- luastatus = "display"
- cldlexer._directives.cld_inline = false
- return true
-end
-
-local function stopdisplaylua(_,i,s)
- local ok = luatag == s
- if ok then
- cldlexer._directives.cld_inline = false
- luastatus = false
- end
- return ok
-end
-
-local function startinlinelua(_,i,s)
- if luastatus == "display" then
- return false
- elseif not luastatus then
- luastatus = "inline"
- cldlexer._directives.cld_inline = true
- lualevel = 1
- return true
- else-- if luastatus == "inline" then
- lualevel = lualevel + 1
- return true
- end
-end
-
-local function stopinlinelua_b(_,i,s) -- {
- if luastatus == "display" then
- return false
- elseif luastatus == "inline" then
- lualevel = lualevel + 1 -- ?
- return false
- else
- return true
- end
-end
-
-local function stopinlinelua_e(_,i,s) -- }
- if luastatus == "display" then
- return false
- elseif luastatus == "inline" then
- lualevel = lualevel - 1
- local ok = lualevel <= 0 -- was 0
- if ok then
- cldlexer._directives.cld_inline = false
- luastatus = false
- end
- return ok
- else
- return true
- end
-end
-
-contextlexer._reset_parser = function()
- luastatus = false
- luatag = nil
- lualevel = 0
-end
-
-local luaenvironment = P("lua") * (P("setups") + P("code") + P("parameterset") + P(true))
- + P("ctxfunction") * (P("definition") + P(true))
-
-local inlinelua = P("\\") * (
- P("ctx") * (P("lua") + P("command") + P("late") * (P("lua") + P("command")) + P("function"))
- + P("cld") * (P("command") + P("context"))
- + P("lua") * (P("expr") + P("script") + P("thread"))
- + (P("direct") + P("late")) * P("lua")
- )
-
-local startlua = P("\\start") * Cmt(luaenvironment,startdisplaylua)
- + P("<?lua") * Cmt(P(true),startdisplaylua)
- + inlinelua * space^0 * ( Cmt(P("{"),startinlinelua) )
-
-local stoplua = P("\\stop") * Cmt(luaenvironment,stopdisplaylua)
- + P("?>") * Cmt(P(true),stopdisplaylua)
- + Cmt(P("{"),stopinlinelua_b)
- + Cmt(P("}"),stopinlinelua_e)
-
-local startluacode = token("embedded", startlua)
-local stopluacode = #stoplua * token("embedded", stoplua)
-
-local luacall = P("clf_") * R("az","__","AZ")^1
-
-local metafuncall = ( P("reusable") + P("usable") + P("unique") + P("use") + P("reuse") + P("overlay") ) * ("MPgraphic")
- + P("uniqueMPpagegraphic")
- + P("MPpositiongraphic")
-
-local metafunenvironment = metafuncall -- ( P("use") + P("reusable") + P("unique") ) * ("MPgraphic")
- + P("MP") * ( P("code")+ P("page") + P("inclusions") + P("initializations") + P("definitions") + P("extensions") + P("graphic") + P("calculation") )
-
-local startmetafun = P("\\start") * metafunenvironment
-local stopmetafun = P("\\stop") * metafunenvironment -- todo match start
-
------ subsystem = token("embedded", P("\\xml") * R("az")^1 + (P("\\st") * (P("art") + P("op")) * P("xmlsetups")))
-local subsystemtags = P("xml") + P("btx") -- will be pluggable or maybe even a proper list of valid commands
-local subsystemmacro = P("\\") * (subsystemtags * R("az")^1 + (R("az")-subsystemtags)^1 * subsystemtags * R("az")^1)
-local subsystem = token("embedded", subsystemmacro)
-
-local openargument = token("special", P("{"))
-local closeargument = token("special", P("}"))
-local argumentcontent = token("default",(1-P("}"))^0) -- maybe space needs a treatment
-
-local metafunarguments = (spacing^0 * openargument * argumentcontent * closeargument)^-2
-
-local startmetafuncode = token("embedded", startmetafun) * metafunarguments
-local stopmetafuncode = token("embedded", stopmetafun)
-
-local callers = token("embedded", P("\\") * metafuncall) * metafunarguments
- + token("embedded", P("\\") * luacall)
-
-lexer.embed_lexer(contextlexer, mpslexer, startmetafuncode, stopmetafuncode)
-lexer.embed_lexer(contextlexer, cldlexer, startluacode, stopluacode)
-
--- preamble is inefficient as it probably gets called each time (so some day I really need to
--- patch the plugin)
-
-contextlexer._preamble = preamble
-
-contextlexer._rules = {
- { "whitespace", spacing },
- -- { "preamble", preamble },
- { "word", word },
- { "text", text }, -- non words
- { "comment", comment },
- { "constant", constant },
- -- { "subsystem", subsystem },
- { "callers", callers },
- { "subsystem", subsystem },
- { "ifprimitive", ifprimitive },
- { "helper", helper },
- { "command", command },
- { "primitive", primitive },
- -- { "subsystem", subsystem },
- { "reserved", reserved },
- { "csname", csname },
- -- { "whatever", specialword }, -- not yet, crashes
- { "grouping", grouping },
- -- { "number", number },
- { "special", special },
- { "extra", extra },
- { "invisible", invisible },
- { "rest", rest },
-}
-
--- Watch the text grabber, after all, we're talking mostly of text (beware,
--- no punctuation here as it can be special). We might go for utf here.
-
-local web = lexer.loadluafile("scite-context-lexer-web-snippets")
-
-if web then
-
- lexer.inform("supporting web snippets in tex lexer")
-
- contextlexer._rules_web = {
- { "whitespace", spacing },
- { "text", text }, -- non words
- { "comment", comment },
- { "constant", constant },
- { "callers", callers },
- { "ifprimitive", ifprimitive },
- { "helper", helper },
- { "command", command },
- { "primitive", primitive },
- { "reserved", reserved },
- { "csname", csname },
- { "grouping", grouping },
- { "special", special },
- { "extra", extra },
- { "invisible", invisible },
- { "web", web.pattern },
- { "rest", rest },
- }
-
-else
-
- lexer.report("not supporting web snippets in tex lexer")
-
- contextlexer._rules_web = {
- { "whitespace", spacing },
- { "text", text }, -- non words
- { "comment", comment },
- { "constant", constant },
- { "callers", callers },
- { "ifprimitive", ifprimitive },
- { "helper", helper },
- { "command", command },
- { "primitive", primitive },
- { "reserved", reserved },
- { "csname", csname },
- { "grouping", grouping },
- { "special", special },
- { "extra", extra },
- { "invisible", invisible },
- { "rest", rest },
- }
-
-end
-
-contextlexer._tokenstyles = context.styleset
-
-local environment = {
- ["\\start"] = 1, ["\\stop"] = -1,
- -- ["\\begin"] = 1, ["\\end" ] = -1,
-}
-
--- local block = {
--- ["\\begin"] = 1, ["\\end" ] = -1,
--- }
-
-local group = {
- ["{"] = 1, ["}"] = -1,
-}
-
-contextlexer._foldpattern = P("\\" ) * (P("start") + P("stop")) + S("{}") -- separate entry else interference
-
-contextlexer._foldsymbols = { -- these need to be style references .. todo: multiple styles
- _patterns = {
- "\\start", "\\stop", -- regular environments
- -- "\\begin", "\\end", -- (moveable) blocks
- "[{}]",
- },
- ["command"] = environment,
- ["constant"] = environment,
- ["data"] = environment,
- ["user"] = environment,
- ["embedded"] = environment,
- ["helper"] = environment,
- ["plain"] = environment,
- ["grouping"] = group,
-}
-
--- context.inspect(contextlexer)
-
-return contextlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-txt.lua b/context/data/textadept/context/lexers/scite-context-lexer-txt.lua
deleted file mode 100644
index 8ecfff7cb..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-txt.lua
+++ /dev/null
@@ -1,80 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for plain text (with spell checking)",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P, S, Cmt, Cp = lpeg.P, lpeg.S, lpeg.Cmt, lpeg.Cp
-local find, match = string.find, string.match
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local textlexer = lexer.new("txt","scite-context-lexer-txt")
-local whitespace = textlexer.whitespace
-
-local space = patterns.space
-local any = patterns.any
-local wordtoken = patterns.wordtoken
-local wordpattern = patterns.wordpattern
-
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
-local validwords = false
-local validminimum = 3
-
--- local styleset = context.newstyleset {
--- "default",
--- "text", "okay", "error", "warning",
--- "preamble",
--- }
-
--- [#!-%] language=uk
-
-local p_preamble = Cmt((S("#!-%") * P(" ")), function(input,i,_) -- todo: utf bomb no longer #
- if i == 1 then -- < 10 then
- validwords, validminimum = false, 3
- local s, e, line = find(input,"^[#!%-%%](.+)[\n\r]",i)
- if line then
- local language = match(line,"language=([a-z]+)")
- if language then
- validwords, validminimum = setwordlist(language)
- end
- end
- end
- return false
-end)
-
-local t_preamble =
- token("preamble", p_preamble)
-
-local t_word =
- wordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
-
-local t_text =
- token("default", wordtoken^1)
-
-local t_rest =
- token("default", (1-wordtoken-space)^1)
-
-local t_spacing =
- token(whitespace, space^1)
-
-textlexer._rules = {
- { "whitespace", t_spacing },
- { "preamble", t_preamble },
- { "word", t_word }, -- words >= 3
- { "text", t_text }, -- non words
- { "rest", t_rest },
-}
-
-textlexer._LEXBYLINE = true -- new (needs testing, not yet as the system changed in 3.24)
-textlexer._tokenstyles = context.styleset
-
-return textlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-web-snippets.lua b/context/data/textadept/context/lexers/scite-context-lexer-web-snippets.lua
deleted file mode 100644
index 5121030cc..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-web-snippets.lua
+++ /dev/null
@@ -1,132 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for web snippets",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P, R, S, C, Cg, Cb, Cs, Cmt, lpegmatch = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cg, lpeg.Cb, lpeg.Cs, lpeg.Cmt, lpeg.match
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local websnippets = { }
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local restofline = patterns.restofline
-local startofline = patterns.startofline
-
-local squote = P("'")
-local dquote = P('"')
-local period = P(".")
-
-local t_whitespace = token(whitespace, space^1)
-local t_spacing = token("default", space^1)
-local t_rest = token("default", any)
-
--- the web subset
-
-local p_beginofweb = P("@")
-local p_endofweb = P("@>")
-
--- @, @/ @| @# @+ @; @[ @]
-
-local p_directive_1 = p_beginofweb * S(",/|#+;[]")
-local t_directive_1 = token("label",p_directive_1)
-
--- @.text @>(monospaced)
--- @:text @>(macro driven)
--- @= verbose@>
--- @! underlined @>
--- @t text @> (hbox)
--- @q ignored @>
-
-local p_typeset = p_beginofweb * S(".:=!tq")
-local t_typeset = token("label",p_typeset) * token("warning",(1-p_endofweb)^1) * token("label",p_endofweb)
-
--- @^index@>
-
-local p_index = p_beginofweb * P("^")
-local t_index = token("label",p_index) * token("function",(1-p_endofweb)^1) * token("label",p_endofweb)
-
--- @f text renderclass
-
-local p_render = p_beginofweb * S("f")
-local t_render = token("label",p_render) * t_spacing * token("warning",(1-space)^1) * t_spacing * token("label",(1-space)^1)
-
--- @s idem
--- @p idem
--- @& strip (spaces before)
--- @h
-
-local p_directive_2 = p_beginofweb * S("sp&h")
-local t_directive_2 = token("label",p_directive_2)
-
--- @< ... @> [=|+=|]
--- @(foo@>
-
-local p_reference = p_beginofweb * S("<(")
-local t_reference = token("label",p_reference) * token("function",(1-p_endofweb)^1) * token("label",p_endofweb * (P("+=") + P("="))^-1)
-
--- @'char' (ascii code)
-
-local p_character = p_beginofweb * squote
-local t_character = token("label",p_character) * token("reserved",(1-squote)^1) * token("label",squote)
-
--- @l nonascii
-
-local p_nonascii = p_beginofweb * S("l")
-local t_nonascii = token("label",p_nonascii) * t_spacing * token("reserved",(1-space)^1)
-
--- @x @y @z changefile
--- @i webfile
-
-local p_filename = p_beginofweb * S("xyzi")
-local t_filename = token("label",p_filename) * t_spacing * token("reserved",(1-space)^1)
-
--- @@ escape
-
-local p_escape = p_beginofweb * p_beginofweb
-local t_escape = token("text",p_escape)
-
--- structure
-
--- @* title.
-
--- local p_section = p_beginofweb * P("*")^1
--- local t_section = token("label",p_section) * t_spacing * token("function",(1-period)^1) * token("label",period)
-
--- @ explanation
-
--- local p_explanation = p_beginofweb
--- local t_explanation = token("label",p_explanation) * t_spacing^1
-
--- @d macro
-
--- local p_macro = p_beginofweb * P("d")
--- local t_macro = token("label",p_macro)
-
--- @c code
-
--- local p_code = p_beginofweb * P("c")
--- local t_code = token("label",p_code)
-
-websnippets.pattern = P (
- t_typeset
- + t_index
- + t_render
- + t_reference
- + t_filename
- + t_directive_1
- + t_directive_2
- + t_character
- + t_nonascii
- + t_escape
-)
-
-return websnippets
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-web.lua b/context/data/textadept/context/lexers/scite-context-lexer-web.lua
deleted file mode 100644
index 81a6f90df..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-web.lua
+++ /dev/null
@@ -1,67 +0,0 @@
-local info = {
- version = 1.003,
- comment = "scintilla lpeg lexer for web",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local weblexer = lexer.new("web","scite-context-lexer-web")
-local whitespace = weblexer.whitespace
-
-local space = patterns.space -- S(" \n\r\t\f\v")
-local any = patterns.any
-local restofline = patterns.restofline
-local startofline = patterns.startofline
-
-local period = P(".")
-local percent = P("%")
-
-local spacing = token(whitespace, space^1)
-local rest = token("default", any)
-
-local eop = P("@>")
-local eos = eop * P("+")^-1 * P("=")
-
--- we can put some of the next in the web-snippets file
--- is f okay here?
-
-local texcomment = token("comment", percent * restofline^0)
-
-local texpart = token("label",P("@")) * #spacing
- + token("label",P("@") * P("*")^1) * token("function",(1-period)^1) * token("label",period)
-local midpart = token("label",P("@d")) * #spacing
- + token("label",P("@f")) * #spacing
-local cpppart = token("label",P("@c")) * #spacing
- + token("label",P("@p")) * #spacing
- + token("label",P("@") * S("<(")) * token("function",(1-eop)^1) * token("label",eos)
-
-local anypart = P("@") * ( P("*")^1 + S("dfcp") + space^1 + S("<(") * (1-eop)^1 * eos )
-local limbo = 1 - anypart - percent
-
-local texlexer = lexer.load("scite-context-lexer-tex-web")
-local cpplexer = lexer.load("scite-context-lexer-cpp-web")
-
-lexer.embed_lexer(weblexer, texlexer, texpart + limbo, #anypart)
-lexer.embed_lexer(weblexer, cpplexer, cpppart + midpart, #anypart)
-
-local texcomment = token("comment", percent * restofline^0)
-
-weblexer._rules = {
- { "whitespace", spacing },
- { "texcomment", texcomment }, -- else issues with first tex section
- { "rest", rest },
-}
-
-weblexer._tokenstyles = context.styleset
-
-return weblexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-xml-cdata.lua b/context/data/textadept/context/lexers/scite-context-lexer-xml-cdata.lua
deleted file mode 100644
index f5ca86cb2..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-xml-cdata.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for xml cdata",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P = lpeg.P
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local xmlcdatalexer = lexer.new("xml-cdata","scite-context-lexer-xml-cdata")
-local whitespace = xmlcdatalexer.whitespace
-
-local space = patterns.space
-local nospace = 1 - space - P("]]>")
-
-local t_spaces = token(whitespace, space ^1)
-local t_cdata = token("comment", nospace^1)
-
-xmlcdatalexer._rules = {
- { "whitespace", t_spaces },
- { "cdata", t_cdata },
-}
-
-xmlcdatalexer._tokenstyles = context.styleset
-
-return xmlcdatalexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-xml-comment.lua b/context/data/textadept/context/lexers/scite-context-lexer-xml-comment.lua
deleted file mode 100644
index 40de8f603..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-xml-comment.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for xml comments",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P = lpeg.P
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local xmlcommentlexer = lexer.new("xml-comment","scite-context-lexer-xml-comment")
-local whitespace = xmlcommentlexer.whitespace
-
-local space = patterns.space
-local nospace = 1 - space - P("-->")
-
-local t_spaces = token(whitespace, space ^1)
-local t_comment = token("comment", nospace^1)
-
-xmlcommentlexer._rules = {
- { "whitespace", t_spaces },
- { "comment", t_comment },
-}
-
-xmlcommentlexer._tokenstyles = context.styleset
-
-return xmlcommentlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-xml-script.lua b/context/data/textadept/context/lexers/scite-context-lexer-xml-script.lua
deleted file mode 100644
index a1b717a6a..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-xml-script.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for xml script",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local P = lpeg.P
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local xmlscriptlexer = lexer.new("xml-script","scite-context-lexer-xml-script")
-local whitespace = xmlscriptlexer.whitespace
-
-local space = patterns.space
-local nospace = 1 - space - (P("</") * P("script") + P("SCRIPT")) * P(">")
-
-local t_spaces = token(whitespace, space ^1)
-local t_script = token("default", nospace^1)
-
-xmlscriptlexer._rules = {
- { "whitespace", t_spaces },
- { "script", t_script },
-}
-
-xmlscriptlexer._tokenstyles = context.styleset
-
-return xmlscriptlexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer-xml.lua b/context/data/textadept/context/lexers/scite-context-lexer-xml.lua
deleted file mode 100644
index bbdb3febc..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer-xml.lua
+++ /dev/null
@@ -1,350 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer for xml",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- adapted from the regular context pretty printer code (after all, lexing
--- boils down to much of the same and there are only so many ways to do
--- things). Simplified a bit as we have a different nesting model.
-
--- todo: parse entities in attributes
-
-local global, string, table, lpeg = _G, string, table, lpeg
-local P, R, S, C, Cmt, Cp = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cmt, lpeg.Cp
-local type = type
-local match, find = string.match, string.find
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-local exact_match = lexer.exact_match
-
-local xmllexer = lexer.new("xml","scite-context-lexer-xml")
-local whitespace = xmllexer.whitespace
-
-local xmlcommentlexer = lexer.load("scite-context-lexer-xml-comment")
-local xmlcdatalexer = lexer.load("scite-context-lexer-xml-cdata")
-local xmlscriptlexer = lexer.load("scite-context-lexer-xml-script")
-local lualexer = lexer.load("scite-context-lexer-lua")
-
-local space = patterns.space
-local any = patterns.any
-
-local dquote = P('"')
-local squote = P("'")
-local colon = P(":")
-local semicolon = P(";")
-local equal = P("=")
-local ampersand = P("&")
-
-local name = (R("az","AZ","09") + S("_-."))^1
-local openbegin = P("<")
-local openend = P("</")
-local closebegin = P("/>") + P(">")
-local closeend = P(">")
-local opencomment = P("<!--")
-local closecomment = P("-->")
-local openinstruction = P("<?")
-local closeinstruction = P("?>")
-local opencdata = P("<![CDATA[")
-local closecdata = P("]]>")
-local opendoctype = P("<!DOCTYPE") -- could grab the whole doctype
-local closedoctype = P("]>") + P(">")
-local openscript = openbegin * (P("script") + P("SCRIPT")) * (1-closeend)^0 * closeend -- begin
-local closescript = openend * (P("script") + P("SCRIPT")) * closeend
-
-local openlua = "<?lua"
-local closelua = "?>"
-
--- <!DOCTYPE Something PUBLIC "... ..." "..." [ ... ] >
--- <!DOCTYPE Something PUBLIC "... ..." "..." >
--- <!DOCTYPE Something SYSTEM "... ..." [ ... ] >
--- <!DOCTYPE Something SYSTEM "... ..." >
--- <!DOCTYPE Something [ ... ] >
--- <!DOCTYPE Something >
-
-local entity = ampersand * (1-semicolon)^1 * semicolon
-
-local utfchar = context.utfchar
-local wordtoken = context.patterns.wordtoken
-local iwordtoken = context.patterns.iwordtoken
-local wordpattern = context.patterns.wordpattern
-local iwordpattern = context.patterns.iwordpattern
-local invisibles = context.patterns.invisibles
-local checkedword = context.checkedword
-local styleofword = context.styleofword
-local setwordlist = context.setwordlist
-local validwords = false
-local validminimum = 3
-
--- <?xml version="1.0" encoding="UTF-8" language="uk" ?>
---
--- <?context-directive editor language us ?>
-
-local t_preamble = Cmt(P("<?xml "), function(input,i,_) -- todo: utf bomb, no longer #
- if i < 200 then
- validwords, validminimum = false, 3
- local language = match(input,"^<%?xml[^>]*%?>%s*<%?context%-directive%s+editor%s+language%s+(..)%s+%?>")
- -- if not language then
- -- language = match(input,"^<%?xml[^>]*language=[\"\'](..)[\"\'][^>]*%?>",i)
- -- end
- if language then
- validwords, validminimum = setwordlist(language)
- end
- end
- return false
-end)
-
-local t_word =
--- Ct( iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() ) -- the function can be inlined
- iwordpattern / function(s) return styleofword(validwords,validminimum,s) end * Cp() -- the function can be inlined
-
-local t_rest =
- token("default", any)
-
-local t_text =
- token("default", (1-S("<>&")-space)^1)
-
-local t_spacing =
- token(whitespace, space^1)
-
-local t_optionalwhitespace =
- token("default", space^1)^0
-
-local t_localspacing =
- token("default", space^1)
-
--- Because we want a differently colored open and close we need an embedded lexer (whitespace
--- trigger). What is actually needed is that scintilla applies the current whitespace style.
--- Even using different style keys is not robust as they can be shared. I'll fix the main
--- lexer code.
-
-local t_sstring =
- token("quote",dquote)
- * token("string",(1-dquote)^0) -- different from context
- * token("quote",dquote)
-
-local t_dstring =
- token("quote",squote)
- * token("string",(1-squote)^0) -- different from context
- * token("quote",squote)
-
--- local t_comment =
--- token("command",opencomment)
--- * token("comment",(1-closecomment)^0) -- different from context
--- * token("command",closecomment)
-
--- local t_cdata =
--- token("command",opencdata)
--- * token("comment",(1-closecdata)^0) -- different from context
--- * token("command",closecdata)
-
--- maybe cdata just text (then we don't need the extra lexer as we only have one comment then)
-
--- <!DOCTYPE Something PUBLIC "... ..." "..." [ ... ] >
--- <!DOCTYPE Something PUBLIC "... ..." "..." >
--- <!DOCTYPE Something SYSTEM "... ..." [ ... ] >
--- <!DOCTYPE Something SYSTEM "... ..." >
--- <!DOCTYPE Something [ ... ] >
--- <!DOCTYPE Something >
-
--- <!ENTITY xxxx SYSTEM "yyyy" NDATA zzzz>
--- <!ENTITY xxxx PUBLIC "yyyy" >
--- <!ENTITY xxxx "yyyy" >
-
-local t_docstr = t_dstring + t_sstring
-
-local t_docent = token("command",P("<!ENTITY"))
- * t_optionalwhitespace
- * token("keyword",name)
- * t_optionalwhitespace
- * (
- (
- token("constant",P("SYSTEM"))
- * t_optionalwhitespace
- * t_docstr
- * t_optionalwhitespace
- * token("constant",P("NDATA"))
- * t_optionalwhitespace
- * token("keyword",name)
- ) + (
- token("constant",P("PUBLIC"))
- * t_optionalwhitespace
- * t_docstr
- ) + (
- t_docstr
- )
- )
- * t_optionalwhitespace
- * token("command",P(">"))
-
-local t_docele = token("command",P("<!ELEMENT"))
- * t_optionalwhitespace
- * token("keyword",name)
- * t_optionalwhitespace
- * token("command",P("("))
- * (
- t_localspacing
- + token("constant",P("#CDATA") + P("#PCDATA") + P("ANY"))
- + token("text",P(","))
- + token("comment",(1-S(",)"))^1)
- )^1
- * token("command",P(")"))
- * t_optionalwhitespace
- * token("command",P(">"))
-
-local t_docset = token("command",P("["))
- * t_optionalwhitespace
- * ((t_optionalwhitespace * (t_docent + t_docele))^1 + token("comment",(1-P("]"))^0))
- * t_optionalwhitespace
- * token("command",P("]"))
-
-local t_doctype = token("command",P("<!DOCTYPE"))
- * t_optionalwhitespace
- * token("keyword",name)
- * t_optionalwhitespace
- * (
- (
- token("constant",P("PUBLIC"))
- * t_optionalwhitespace
- * t_docstr
- * t_optionalwhitespace
- * t_docstr
- * t_optionalwhitespace
- ) + (
- token("constant",P("SYSTEM"))
- * t_optionalwhitespace
- * t_docstr
- * t_optionalwhitespace
- )
- )^-1
- * t_docset^-1
- * t_optionalwhitespace
- * token("command",P(">"))
-
-lexer.embed_lexer(xmllexer, lualexer, token("command", openlua), token("command", closelua))
-lexer.embed_lexer(xmllexer, xmlcommentlexer, token("command", opencomment), token("command", closecomment))
-lexer.embed_lexer(xmllexer, xmlcdatalexer, token("command", opencdata), token("command", closecdata))
-lexer.embed_lexer(xmllexer, xmlscriptlexer, token("command", openscript), token("command", closescript))
-
--- local t_name =
--- token("plain",name)
--- * (
--- token("default",colon)
--- * token("keyword",name)
--- )
--- + token("keyword",name)
-
-local t_name = -- more robust
- token("plain",name * colon)^-1
- * token("keyword",name)
-
--- local t_key =
--- token("plain",name)
--- * (
--- token("default",colon)
--- * token("constant",name)
--- )
--- + token("constant",name)
-
-local t_key =
- token("plain",name * colon)^-1
- * token("constant",name)
-
-local t_attributes = (
- t_optionalwhitespace
- * t_key
- * t_optionalwhitespace
- * token("plain",equal)
- * t_optionalwhitespace
- * (t_dstring + t_sstring)
- * t_optionalwhitespace
-)^0
-
-local t_open =
- token("keyword",openbegin)
- * (
- t_name
- * t_optionalwhitespace
- * t_attributes
- * token("keyword",closebegin)
- +
- token("error",(1-closebegin)^1)
- )
-
-local t_close =
- token("keyword",openend)
- * (
- t_name
- * t_optionalwhitespace
- * token("keyword",closeend)
- +
- token("error",(1-closeend)^1)
- )
-
-local t_entity =
- token("constant",entity)
-
-local t_instruction =
- token("command",openinstruction * P("xml"))
- * t_optionalwhitespace
- * t_attributes
- * t_optionalwhitespace
- * token("command",closeinstruction)
- + token("command",openinstruction * name)
- * token("default",(1-closeinstruction)^1)
- * token("command",closeinstruction)
-
-local t_invisible =
- token("invisible",invisibles^1)
-
--- local t_preamble =
--- token("preamble", t_preamble )
-
-xmllexer._rules = {
- { "whitespace", t_spacing },
- { "preamble", t_preamble },
- { "word", t_word },
- -- { "text", t_text },
- -- { "comment", t_comment },
- -- { "cdata", t_cdata },
- { "doctype", t_doctype },
- { "instruction", t_instruction },
- { "close", t_close },
- { "open", t_open },
- { "entity", t_entity },
- { "invisible", t_invisible },
- { "rest", t_rest },
-}
-
-xmllexer._tokenstyles = context.styleset
-
-xmllexer._foldpattern = P("</") + P("<") + P("/>") -- separate entry else interference
-+ P("<!--") + P("-->")
-
-xmllexer._foldsymbols = {
- _patterns = {
- "</",
- "/>",
- "<",
- },
- ["keyword"] = {
- ["</"] = -1,
- ["/>"] = -1,
- ["<"] = 1,
- },
- ["command"] = {
- ["</"] = -1,
- ["/>"] = -1,
- ["<!--"] = 1,
- ["-->"] = -1,
- ["<"] = 1,
- },
-}
-
-return xmllexer
diff --git a/context/data/textadept/context/lexers/scite-context-lexer.lua b/context/data/textadept/context/lexers/scite-context-lexer.lua
deleted file mode 100644
index 289697b72..000000000
--- a/context/data/textadept/context/lexers/scite-context-lexer.lua
+++ /dev/null
@@ -1,2686 +0,0 @@
-local info = {
- version = 1.400,
- comment = "basics for scintilla lpeg lexer for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
- comment = "contains copyrighted code from mitchell.att.foicica.com",
-
-}
-
--- We need a copy of this file to lexer.lua in the same path. This was not needed
--- before version 10 but I can't figure out what else to do. It looks like there
--- is some loading of lexer.lua but I can't see where.
-
--- For a while it looked like we're stuck with scite 3 because there would be no
--- update of scintillua for the newer versions (c++ changes) but now it looks that
--- there will be updates (2021). There is a dll for scite >= 5 but it doesn't
--- work (yet). In version 5.20+ the scintillua dll makes scite crash (alsl when I
--- use the recommended import). In an early 5.02 loading the (shipped) lpeg lexer
--- does nothing at all. There have been changes in the lua interface too but I need
--- to compare the old and new lib. For now I gave up and got back to version 3+. It
--- would be nice if error messages would go to the log pane so that wget an idea
--- what happens. After all the code involved (below) is not that much and not that
--- complex either.
---
--- Actually, scite 5.22 also crashed when a program was launched so better wait
--- for a while. (In the worst case, when it all stops working, we need to migrate
--- to visual code, which is out backup/fallback plan.) I didn't test if the latest
--- textadept still works with our lexer variant. In the meantime that editor has
--- grown to some 30 MB so it is no longer a lightweight option (scite with scintilla
--- is still quite small).
-
-if lpeg.setmaxstack then lpeg.setmaxstack(1000) end
-
-local log = false
-local trace = false
-local detail = false
-local show = false -- nice for tracing (also for later)
-local collapse = false -- can save some 15% (maybe easier on scintilla)
-local inspect = false -- can save some 15% (maybe easier on scintilla)
-
--- local log = true
--- local trace = true
-
--- GET GOING
---
--- You need to copy this file over lexer.lua. In principle other lexers could work
--- too but not now. Maybe some day. All patterns will move into the patterns name
--- space. I might do the same with styles. If you run an older version of SciTE you
--- can take one of the archives. Pre 3.41 versions can just be copied to the right
--- path, as there we still use part of the normal lexer. Below we mention some
--- issues with different versions of SciTE. We try to keep up with changes but best
--- check careful if the version that yuou install works as expected because SciTE
--- and the scintillua dll need to be in sync.
---
--- REMARK
---
--- We started using lpeg lexing as soon as it came available. Because we had rather
--- demanding files and also wanted to use nested lexers, we ended up with our own
--- variant. At least at that time this was more robust and also much faster (as we
--- have some pretty large Lua data files and also work with large xml files). As a
--- consequence successive versions had to be adapted to changes in the (at that time
--- still unstable) api. In addition to lexing we also have spell checking and such.
--- Around version 3.60 things became more stable so I don't expect to change much.
---
--- LEXING
---
--- When pc's showed up we wrote our own editor (texedit) in MODULA 2. It was fast,
--- had multiple overlapping (text) windows, could run in the at most 1M memory at
--- that time, etc. The realtime file browsing with lexing that we had at that time
--- is still on my current wish list. The color scheme and logic that we used related
--- to the logic behind the ConTeXt user interface that evolved.
---
--- Later I rewrote the editor in perl/tk. I don't like the perl syntax but tk
--- widgets are very powerful and hard to beat. In fact, TextAdept reminds me of
--- that: wrap your own interface around a framework (tk had an edit control that one
--- could control completely not that different from scintilla). Last time I checked
--- it still ran fine so I might try to implement something like its file handling in
--- TextAdept.
---
--- In the end I settled for SciTE for which I wrote TeX and MetaPost lexers that
--- could handle keyword sets. With respect to lexing (syntax highlighting) ConTeXt
--- has a long history, if only because we need it for manuals. Anyway, in the end we
--- arrived at lpeg based lexing (which is quite natural as we have lots of lpeg
--- usage in ConTeXt). The basic color schemes haven't changed much. The most
--- prominent differences are the nested lexers.
---
--- In the meantime I made the lexer suitable for typesetting sources which was no
--- big deal as we already had that in place (ConTeXt used lpeg from the day it
--- showed up so we have several lexing options there too).
---
--- Keep in mind that in ConTeXt (typesetting) lexing can follow several approaches:
--- line based (which is handy for verbatim mode), syntax mode (which is nice for
--- tutorials), and tolerant mode (so that one can also show bad examples or errors).
--- These demands can clash.
---
--- HISTORY
---
--- The remarks below are more for myself so that I keep track of changes in the
--- way we adapt to the changes in the scintillua and scite.
---
--- The fold and lex functions are copied and patched from original code by Mitchell
--- (see lexer.lua) in the scintillua distribution. So whatever I say below, assume
--- that all errors are mine. The ability to use lpeg in scintilla is a real nice
--- addition and a brilliant move. The code is a byproduct of the (mainly Lua based)
--- TextAdept which at the time I ran into it was a rapidly moving target so I
--- decided to stick ot SciTE. When I played with it, it had no realtime output pane
--- although that seems to be dealt with now (2017). I need to have a look at it in
--- more detail but a first test again made the output hang and it was a bit slow too
--- (and I also want the log pane as SciTE has it, on the right, in view). So, for
--- now I stick to SciTE even when it's somewhat crippled by the fact that we cannot
--- hook our own (language dependent) lexer into the output pane (somehow the
--- errorlist lexer is hard coded into the editor). Hopefully that will change some
--- day. The ConTeXt distribution has cmd runner for textdept that will plug in the
--- lexers discussed here as well as a dedicated runner. Considere it an experiment.
---
--- The basic code hasn't changed much but we had to adapt a few times to changes in
--- the api and/or work around bugs. Starting with SciTE version 3.20 there was an
--- issue with coloring. We still lacked a connection with SciTE itself (properties
--- as well as printing to the log pane) and we could not trace this (on windows).
--- However on unix we can see messages! As far as I can see, there are no
--- fundamental changes in lexer.lua or LexLPeg.cxx so it must be/have been in
--- Scintilla itself. So we went back to 3.10. Indicators of issues are: no lexing of
--- 'next' and 'goto <label>' in the Lua lexer and no brace highlighting either.
--- Interesting is that it does work ok in the cld lexer (so the Lua code is okay).
--- All seems to be ok again in later versions, so, when you update best check first
--- and just switch back to an older version as normally a SciTE update is not
--- critital. When char-def.lua lexes real fast this is a signal that the lexer quits
--- somewhere halfway. Maybe there are some hard coded limitations on the amount of
--- styles and/or length of names.
---
--- Anyway, after checking 3.24 and adapting to the new lexer tables things are okay
--- again. So, this version assumes 3.24 or higher. In 3.24 we have a different token
--- result, i.e. no longer a { tag, pattern } but just two return values. I didn't
--- check other changes but will do that when I run into issues. I had already
--- optimized these small tables by hashing which was much more efficient (and maybe
--- even more efficient than the current approach) but this is no longer needed. For
--- the moment we keep some of that code around as I don't know what happens in
--- future versions. I'm anyway still happy with this kind of lexing.
---
--- In 3.31 another major change took place: some helper constants (maybe they're no
--- longer constants) and functions were moved into the lexer modules namespace but
--- the functions are assigned to the Lua module afterward so we cannot alias them
--- beforehand. We're probably getting close to a stable interface now. At that time
--- for the first time I considered making a whole copy and patch the other functions
--- too as we need an extra nesting model. However, I don't want to maintain too
--- much. An unfortunate change in 3.03 is that no longer a script can be specified.
--- This means that instead of loading the extensions via the properties file, we now
--- need to load them in our own lexers, unless of course we replace lexer.lua
--- completely (which adds another installation issue).
---
--- Another change has been that _LEXERHOME is no longer available. It looks like
--- more and more functionality gets dropped so maybe at some point we need to ship
--- our own dll/so files. For instance, I'd like to have access to the current
--- filename and other SciTE properties. We could then cache some info with each
--- file, if only we had knowledge of what file we're dealing with. This all makes a
--- nice installation more complex and (worse) makes it hard to share files between
--- different editors usign s similar directory structure.
---
--- For huge files folding can be pretty slow and I do have some large ones that I
--- keep open all the time. Loading is normally no ussue, unless one has remembered
--- the status and the cursor is at the last line of a 200K line file. Optimizing the
--- fold function brought down loading of char-def.lua from 14 sec => 8 sec.
--- Replacing the word_match function and optimizing the lex function gained another
--- 2+ seconds. A 6 second load is quite ok for me. The changed lexer table structure
--- (no subtables) brings loading down to a few seconds.
---
--- When the lexer path is copied to the TextAdept lexer path, and the theme
--- definition to theme path (as lexer.lua), the lexer works there as well. Although
--- ... when I decided to check the state of TextAdept I had to adapt some loader
--- code. The solution is not pretty but works and also permits overloading. When I
--- have time and motive I will make a proper setup file to tune the look and feel a
--- bit more than we do now. The TextAdept editor nwo has tabs and a console so it
--- has become more useable for me (it's still somewhat slower than SciTE).
--- Interesting is that the jit version of TextAdept crashes on lexing large files
--- (and does not feel faster either; maybe a side effect of known limitations as we
--- know that Luajit is more limited than stock Lua).
---
--- Function load(lexer_name) starts with _lexers.WHITESPACE = lexer_name ..
--- '_whitespace' which means that we need to have it frozen at the moment we load
--- another lexer. Because spacing is used to revert to a parent lexer we need to
--- make sure that we load children as late as possible in order not to get the wrong
--- whitespace trigger. This took me quite a while to figure out (not being that
--- familiar with the internals). The lex and fold functions have been optimized. It
--- is a pitty that there is no proper print available. Another thing needed is a
--- default style in our own theme style definition, as otherwise we get wrong nested
--- lexers, especially if they are larger than a view. This is the hardest part of
--- getting things right.
---
--- It's a pitty that there is no scintillua library for the OSX version of SciTE.
--- Even better would be to have the scintillua library as integral part of SciTE as
--- that way I could use OSX alongside windows and linux (depending on needs). Also
--- nice would be to have a proper interface to SciTE then because currently the
--- lexer is rather isolated and the Lua version does not provide all standard
--- libraries. It would also be good to have lpeg support in the regular SciTE Lua
--- extension (currently you need to pick it up from someplace else). I keep hoping.
---
--- With 3.41 the interface changed again so it became time to look into the C++ code
--- and consider compiling and patching myself, something that I like to avoid.
--- Loading is more complicated now as the lexer gets loaded automatically so we have
--- little control over extending the code now. After a few days trying all kind of
--- solutions I decided to follow a different approach: drop in a complete
--- replacement. This of course means that I need to keep track of even more changes
--- (which for sure will happen) but at least I get rid of interferences. Till 3.60
--- the api (lexing and configuration) was simply too unstable across versions which
--- is a pitty because we expect authors to install SciTE without hassle. Maybe in a
--- few years things will have stabelized. Maybe it's also not really expected that
--- one writes lexers at all. A side effect is that I now no longer will use shipped
--- lexers for languages that I made no lexer for, but just the built-in ones in
--- addition to the ConTeXt lpeg lexers. Not that it matters much as the ConTeXt
--- lexers cover what I need (and I can always write more). For editing TeX files one
--- only needs a limited set of lexers (TeX, MetaPost, Lua, BibTeX, C/W, PDF, SQL,
--- etc). I can add more when I want.
---
--- In fact, the transition to 3.41 was triggered by an unfateful update of Ubuntu
--- which left me with an incompatible SciTE and lexer library and updating was not
--- possible due to the lack of 64 bit libraries. We'll see what the future brings.
--- For now I can use SciTE under wine on linux. The fact that scintillua ships
--- independently is a showstopper.
---
--- Promissing is that the library now can use another Lua instance so maybe some day
--- it will get properly in SciTE and we can use more clever scripting.
---
--- In some lexers we use embedded ones even if we could do it directly, The reason
--- is that when the end token is edited (e.g. -->), backtracking to the space before
--- the begin token (e.g. <!--) results in applying the surrounding whitespace which
--- in turn means that when the end token is edited right, backtracking doesn't go
--- back. One solution (in the dll) would be to backtrack several space categories.
--- After all, lexing is quite fast (applying the result is much slower).
---
--- For some reason the first blob of text tends to go wrong (pdf and web). It would
--- be nice to have 'whole doc' initial lexing. Quite fishy as it makes it impossible
--- to lex the first part well (for already opened documents) because only a partial
--- text is passed.
---
--- So, maybe I should just write this from scratch (assuming more generic usage)
--- because after all, the dll expects just tables, based on a string. I can then
--- also do some more aggressive resource sharing (needed when used generic).
---
--- I think that nested lexers are still bugged (esp over longer ranges). It never
--- was robust or maybe it's simply not meant for too complex cases (well, it
--- probably *is* tricky material). The 3.24 version was probably the best so far.
--- The fact that styles bleed between lexers even if their states are isolated is an
--- issue. Another issus is that zero characters in the text passed to the lexer can
--- mess things up (pdf files have them in streams).
---
--- For more complex 'languages', like web or xml, we need to make sure that we use
--- e.g. 'default' for spacing that makes up some construct. Ok, we then still have a
--- backtracking issue but less.
---
--- Good news for some ConTeXt users: there is now a scintillua plugin for notepad++
--- and we ship an ini file for that editor with some installation instructions
--- embedded. Also, TextAdept has a console so that we can run realtime. The spawner
--- is still not perfect (sometimes hangs) but it was enough reason to spend time on
--- making our lexer work with TextAdept and create a setup.
---
--- Some bad news. The interface changed (again) in textadept 10, some for the better
--- (but a bit different from what happens here) and some for the worse, especially
--- moving some code to the init file so we now need some bad hacks. I decided to
--- stay with the old method of defining lexers and because the lexer cannot be run
--- in parallel any more (some change in the binary?) I will probably also cleanup
--- code below as we no longer need to be compatible. Unfortunately textadept is too
--- much a moving target to simply kick in some (tex related) production flow (apart
--- from the fact that it doesn't yet have the scite like realtime console). I'll
--- keep an eye on it. Because we don't need many added features I might as well decide
--- to make a lean and mean instance (after all the license permits forking).
-
--- TRACING
---
--- The advantage is that we now can check more easily with regular Lua(TeX). We can
--- also use wine and print to the console (somehow stdout is intercepted there.) So,
--- I've added a bit of tracing. Interesting is to notice that each document gets its
--- own instance which has advantages but also means that when we are spellchecking
--- we reload the word lists each time. (In the past I assumed a shared instance and
--- took some precautions. But I can fix this.)
---
--- TODO
---
--- It would be nice if we could load some ConTeXt Lua modules (the basic set) and
--- then use resolvers and such. But it might not work well with scite.
---
--- The current lexer basics are still a mix between old and new. Maybe I should redo
--- some more. This is probably easier in TextAdept than in SciTE.
---
--- We have to make sure we don't overload ConTeXt definitions when this code is used
--- in ConTeXt. I still have to add some of the goodies that we have there in lexers
--- into these.
---
--- Maybe I should use a special stripped on the one hand and extended version of the
--- dll (stable api) and at least add a bit more interfacing to scintilla.
---
--- I need to investigate if we can use the already built in Lua instance so that we
--- can combine the power of lexing with extensions.
---
--- I need to play with hotspot and other properties like indicators (whatever they
--- are).
---
--- I want to get rid of these lexers.STYLE_XX and lexers.XX things. This is possible
--- when we give up compatibility. Generalize the helpers that I wrote for SciTE so
--- that they also can be used TextAdept.
---
--- I can make an export to ConTeXt, but first I'll redo the code that makes the
--- grammar, as we only seem to need
---
--- lexer._TOKENSTYLES : table
--- lexer._CHILDREN : flag
--- lexer._EXTRASTYLES : table
--- lexer._GRAMMAR : flag
---
--- lexers.load : function
--- lexers.lex : function
---
--- So, if we drop compatibility with other lex definitions, we can make things
--- simpler. However, in the meantime one can just do this:
---
--- context --extra=listing --scite [--compact --verycompact] somefile.tex
---
--- and get a printable document. So, this todo is a bit obsolete.
---
--- Properties is an ugly mess ... due to chages in the interface we're now left
--- with some hybrid that sort of works ok
-
--- textadept: buffer:colourise(0,-1)
-
-local lpeg = require("lpeg")
-
-local global = _G
-local find, gmatch, match, lower, upper, gsub, sub, format, byte = string.find, string.gmatch, string.match, string.lower, string.upper, string.gsub, string.sub, string.format, string.byte
-local concat, sort = table.concat, table.sort
-local type, next, setmetatable, rawset, tonumber, tostring = type, next, setmetatable, rawset, tonumber, tostring
-local R, P, S, V, C, Cp, Cs, Ct, Cmt, Cc, Cf, Cg, Carg = lpeg.R, lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Cp, lpeg.Cs, lpeg.Ct, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Carg
-local lpegmatch = lpeg.match
-
-local usage = (textadept and "textadept") or (resolvers and "context") or "scite"
-local nesting = 0
-local output = nil
-
------ print = textadept and ui and ui.print or print -- crashes when ui is not yet defined
-
-local function print(...)
- if not output then
- output = io.open("lexer.log","w")
- end
- output:write(...,"\n")
- output:flush()
-end
-
-local function report(fmt,str,...)
- if log then
- if str then
- fmt = format(fmt,str,...)
- end
- print(format("scite lpeg lexer > %s > %s",nesting == 0 and "-" or nesting,fmt))
- end
-end
-
-local function inform(...)
- if log and trace then
- report(...)
- end
-end
-
-inform("loading context lexer module (global table: %s)",tostring(global))
-
-do
-
- local floor = math and math.floor
- local format = format
- local tonumber = tonumber
-
- if not floor then
-
- if tonumber(string.match(_VERSION,"%d%.%d")) < 5.3 then
- floor = function(n)
- return tonumber(format("%d",n))
- end
- else
- -- 5.3 has a mixed number system and format %d doesn't work with
- -- floats any longer ... no fun
- floor = function(n)
- return (n - n % 1)
- end
- end
-
- math = math or { }
-
- math.floor = floor
-
- end
-
-end
-
-local floor = math.floor
-
-if not package.searchpath then
-
- -- Unfortunately the io library is only available when we end up
- -- in this branch of code.
-
- inform("using adapted function 'package.searchpath' (if used at all)")
-
- function package.searchpath(name,path)
- local tried = { }
- for part in gmatch(path,"[^;]+") do
- local filename = gsub(part,"%?",name)
- local f = io.open(filename,"r")
- if f then
- inform("file found on path: %s",filename)
- f:close()
- return filename
- end
- tried[#tried + 1] = format("no file '%s'",filename)
- end
- -- added: local path .. for testing
- local f = io.open(filename,"r")
- if f then
- inform("file found on current path: %s",filename)
- f:close()
- return filename
- end
- --
- tried[#tried + 1] = format("no file '%s'",filename)
- return nil, concat(tried,"\n")
- end
-
-end
-
-local lexers = { }
-local context = { }
-local helpers = { }
-lexers.context = context
-lexers.helpers = helpers
-
-local patterns = { }
-context.patterns = patterns -- todo: lexers.patterns
-
-context.report = report
-context.inform = inform
-
-lexers.LEXERPATH = package.path -- can be multiple paths separated by ;
-
-if resolvers then
- -- todo: set LEXERPATH
- -- todo: set report
-end
-
-local function sortedkeys(hash) -- simple version, good enough for here
- local t, n = { }, 0
- for k, v in next, hash do
- t[#t+1] = k
- local l = #tostring(k)
- if l > n then
- n = l
- end
- end
- sort(t)
- return t, n
-end
-
-helpers.sortedkeys = sortedkeys
-
-local usedlexers = { }
-local parent_lexer = nil
-
--- The problem with styles is that there is some nasty interaction with scintilla
--- and each version of lexer dll/so has a different issue. So, from now on we will
--- just add them here. There is also a limit on some 30 styles. Maybe I should
--- hash them in order to reuse.
-
--- todo: work with proper hashes and analyze what styles are really used by a
--- lexer
-
-local default = {
- "nothing", "whitespace", "comment", "string", "number", "keyword",
- "identifier", "operator", "error", "preprocessor", "constant", "variable",
- "function", "type", "label", "embedded",
- "quote", "special", "extra", "reserved", "okay", "warning",
- "command", "internal", "preamble", "grouping", "primitive", "plain",
- "user",
- -- not used (yet) .. we cross the 32 boundary so had to patch the initializer, see (1)
- "char", "class", "data", "definition", "invisible", "regex",
- "standout", "tag",
- "text",
-}
-
-local predefined = {
- "default", "linenumber", "bracelight", "bracebad", "controlchar",
- "indentguide", "calltip",
- -- seems new
- "folddisplaytext"
-}
-
--- Bah ... ugly ... nicer would be a proper hash .. we now have properties
--- as well as STYLE_* and some connection between them ... why .. ok, we
--- could delay things but who cares. Anyway, at this moment the properties
--- are still unknown.
-
-local function preparestyles(list)
- local reverse = { }
- for i=1,#list do
- local k = list[i]
- local K = upper(k)
- local s = "style." .. k
- lexers[K] = k -- is this used
- lexers["STYLE_"..K] = "$(" .. k .. ")"
- reverse[k] = true
- end
- return reverse
-end
-
-local defaultstyles = preparestyles(default)
-local predefinedstyles = preparestyles(predefined)
-
--- These helpers are set afterwards so we delay their initialization ... there
--- is no need to alias each time again and this way we can more easily adapt
--- to updates.
-
--- These keep changing (values, functions, tables ...) so we nee to check these
--- with each update. Some of them are set in the loader (the require 'lexer' is
--- in fact not a real one as the lexer code is loaded in the dll). It's also not
--- getting more efficient.
-
--- FOLD_BASE = lexers.FOLD_BASE or SC_FOLDLEVELBASE
--- FOLD_HEADER = lexers.FOLD_HEADER or SC_FOLDLEVELHEADERFLAG
--- FOLD_BLANK = lexers.FOLD_BLANK or SC_FOLDLEVELWHITEFLAG
--- get_style_at = lexers.get_style_at or GetStyleAt
--- get_indent_amount = lexers.get_indent_amount or GetIndentAmount
--- get_property = lexers.get_property or GetProperty
--- get_fold_level = lexers.get_fold_level or GetFoldLevel
-
--- It needs checking: do we have access to all properties now? I'll clean
--- this up anyway as I want a simple clean and stable model.
-
--- This is somewhat messy. The lexer dll provides some virtual fields:
---
--- + property
--- + property_int
--- + style_at
--- + fold_level
--- + indent_amount
---
--- but for some reasons not:
---
--- + property_expanded
---
--- As a consequence we need to define it here because otherwise the
--- lexer will crash. The fuzzy thing is that we don't have to define
--- the property and property_int tables but we do have to define the
--- expanded beforehand. The folding properties are no longer interfaced
--- so the interface to scite is now rather weak (only a few hard coded
--- properties).
-
-local FOLD_BASE = 0
-local FOLD_HEADER = 0
-local FOLD_BLANK = 0
-
-local style_at = { }
-local indent_amount = { }
-local fold_level = { }
-
-local function check_main_properties()
- if not lexers.property then
- lexers.property = { }
- end
- if not lexers.property_int then
- lexers.property_int = setmetatable({ }, {
- __index = function(t,k)
- -- why the tostring .. it relies on lua casting to a number when
- -- doing a comparison
- return tonumber(lexers.property[k]) or 0 -- tostring removed
- end,
- -- __newindex = function(t,k,v)
- -- report("properties are read-only, '%s' is not changed",k)
- -- end,
- })
- end
-end
-
-lexers.property_expanded = setmetatable({ }, {
- __index = function(t,k)
- -- better be safe for future changes .. what if at some point this is
- -- made consistent in the dll ... we need to keep an eye on that
- local property = lexers.property
- if not property then
- check_main_properties()
- end
- --
--- return gsub(property[k],"[$%%]%b()", function(k)
--- return t[sub(k,3,-2)]
--- end)
- local v = property[k]
- if v then
- v = gsub(v,"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end
- return v
- end,
- __newindex = function(t,k,v)
- report("properties are read-only, '%s' is not changed",k)
- end,
-})
-
--- A downward compatible feature but obsolete:
-
--- local function get_property(tag,default)
--- return lexers.property_int[tag] or lexers.property[tag] or default
--- end
-
--- We still want our own properties (as it keeps changing so better play
--- safe from now on). At some point I can freeze them.
-
-local function check_properties(lexer)
- if lexer.properties then
- return lexer
- end
- check_main_properties()
- -- we use a proxy
- local mainproperties = lexers.property
- local properties = { }
- local expanded = setmetatable({ }, {
- __index = function(t,k)
- return gsub(properties[k] or mainproperties[k],"[$%%]%b()", function(k)
- return t[sub(k,3,-2)]
- end)
- end,
- })
- lexer.properties = setmetatable(properties, {
- __index = mainproperties,
- __call = function(t,k,default) -- expands
- local v = expanded[k]
- local t = type(default)
- if t == "number" then
- return tonumber(v) or default
- elseif t == "boolean" then
- return v == nil and default or v
- else
- return v or default
- end
- end,
- })
- return lexer
-end
-
--- do
--- lexers.property = { foo = 123, red = "R" }
--- local a = check_properties({}) print("a.foo",a.properties.foo)
--- a.properties.foo = "bar" print("a.foo",a.properties.foo)
--- a.properties.foo = "bar:$(red)" print("a.foo",a.properties.foo) print("a.foo",a.properties("foo"))
--- end
-
-local function set(value,default)
- if value == 0 or value == false or value == "0" then
- return false
- elseif value == 1 or value == true or value == "1" then
- return true
- else
- return default
- end
-end
-
-local function check_context_properties()
- local property = lexers.property -- let's hope that this stays
- log = set(property["lexer.context.log"], log)
- trace = set(property["lexer.context.trace"], trace)
- detail = set(property["lexer.context.detail"], detail)
- show = set(property["lexer.context.show"], show)
- collapse = set(property["lexer.context.collapse"],collapse)
- inspect = set(property["lexer.context.inspect"], inspect)
-end
-
-function context.registerproperties(p) -- global
- check_main_properties()
- local property = lexers.property -- let's hope that this stays
- for k, v in next, p do
- property[k] = v
- end
- check_context_properties()
-end
-
-context.properties = setmetatable({ }, {
- __index = lexers.property,
- __newindex = function(t,k,v)
- check_main_properties()
- lexers.property[k] = v
- check_context_properties()
- end,
-})
-
--- We want locals to we set them delayed. Once.
-
-local function initialize()
- FOLD_BASE = lexers.FOLD_BASE
- FOLD_HEADER = lexers.FOLD_HEADER
- FOLD_BLANK = lexers.FOLD_BLANK
- --
- style_at = lexers.style_at -- table
- indent_amount = lexers.indent_amount -- table
- fold_level = lexers.fold_level -- table
- --
- check_main_properties()
- --
- initialize = nil
-end
-
--- Style handler.
---
--- The property table will be set later (after loading) by the library. The
--- styleset is not needed any more as we predefine all styles as defaults
--- anyway (too bug sensitive otherwise).
-
-local function tocolors(colors)
- local colorset = { }
- local property_int = lexers.property_int or { }
- for k, v in next, colors do
- if type(v) == "table" then
- local r, g, b = v[1], v[2], v[3]
- if r and g and b then
- v = tonumber(format("%02X%02X%02X",b,g,r),16) or 0 -- hm
- elseif r then
- v = tonumber(format("%02X%02X%02X",r,r,r),16) or 0
- else
- v = 0
- end
- end
- colorset[k] = v
- property_int["color."..k] = v
- end
- return colorset
-end
-
-local function toproperty(specification)
- local serialized = { }
- for key, value in next, specification do
- if value == true then
- serialized[#serialized+1] = key
- elseif type(value) == "table" then
- local r, g, b = value[1], value[2], value[3]
- if r and g and b then
- value = format("#%02X%02X%02X",r,g,b) or "#000000"
- elseif r then
- value = format("#%02X%02X%02X",r,r,r) or "#000000"
- else
- value = "#000000"
- end
- serialized[#serialized+1] = key .. ":" .. value
- else
- serialized[#serialized+1] = key .. ":" .. tostring(value)
- end
- end
- return concat(serialized,",")
-end
-
-local function tostyles(styles)
- local styleset = { }
- local property = lexers.property or { }
- for k, v in next, styles do
- v = toproperty(v)
- styleset[k] = v
- property["style."..k] = v
- end
- return styleset
-end
-
-context.toproperty = toproperty
-context.tostyles = tostyles
-context.tocolors = tocolors
-
--- If we had one instance/state of Lua as well as all regular libraries
--- preloaded we could use the context base libraries. So, let's go poor-
--- mans solution now.
-
-function context.registerstyles(styles)
- local styleset = tostyles(styles)
- context.styles = styles
- context.styleset = styleset
- if detail then
- local t, n = sortedkeys(styleset)
- local template = " %-" .. n .. "s : %s"
- report("initializing styleset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,styleset[k])
- end
- elseif trace then
- report("initializing styleset")
- end
-end
-
-function context.registercolors(colors) -- needed for textadept
- local colorset = tocolors(colors)
- context.colors = colors
- context.colorset = colorset
- if detail then
- local t, n = sortedkeys(colorset)
- local template = " %-" .. n .. "s : %i"
- report("initializing colorset:")
- for i=1,#t do
- local k = t[i]
- report(template,k,colorset[k])
- end
- elseif trace then
- report("initializing colorset")
- end
-end
-
--- Some spell checking related stuff. Unfortunately we cannot use a path set
--- by property. This will get a hook for resolvers.
-
-local locations = {
- "context/lexers", -- context lexers
- "context/lexers/data", -- context lexers
- "../lexers", -- original lexers
- "../lexers/data", -- original lexers
- ".", -- whatever
- "./data", -- whatever
-}
-
--- local function collect(name)
--- local root = gsub(lexers.LEXERPATH or ".","/.-lua$","") .. "/" -- this is a horrible hack
--- -- report("module '%s' locating '%s'",tostring(lexers),name)
--- for i=1,#locations do
--- local fullname = root .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
--- if trace then
--- report("attempt to locate '%s'",fullname)
--- end
--- local okay, result = pcall(function () return dofile(fullname) end)
--- if okay then
--- return result, fullname
--- end
--- end
--- end
-
-local collect
-
-if usage == "context" then
-
- collect = function(name)
- return require(name), name
- end
-
-else
-
- collect = function(name)
- local rootlist = lexers.LEXERPATH or "."
- for root in gmatch(rootlist,"[^;]+") do
- local root = gsub(root,"/[^/]-lua$","")
- for i=1,#locations do
- local fullname = root .. "/" .. locations[i] .. "/" .. name .. ".lua" -- so we can also check for .luc
- if trace then
- report("attempt to locate '%s'",fullname)
- end
- local okay, result = pcall(function () return dofile(fullname) end)
- if okay then
- return result, fullname
- end
- end
- end
- -- return require(name), name
- end
-
-end
-
-function context.loadluafile(name)
- local data, fullname = collect(name)
- if data then
- if trace then
- report("lua file '%s' has been loaded",fullname)
- end
- return data, fullname
- end
- if not textadept then
- report("unable to load lua file '%s'",name)
- end
-end
-
--- in fact we could share more as we probably process the data but then we need
--- to have a more advanced helper
-
-local cache = { }
-
-function context.loaddefinitions(name)
- local data = cache[name]
- if data then
- if trace then
- report("reusing definitions '%s'",name)
- end
- return data
- elseif trace and data == false then
- report("definitions '%s' were not found",name)
- end
- local data, fullname = collect(name)
- if not data then
- if not textadept then
- report("unable to load definition file '%s'",name)
- end
- data = false
- elseif trace then
- report("definition file '%s' has been loaded",fullname)
- if detail then
- local t, n = sortedkeys(data)
- local template = " %-" .. n .. "s : %s"
- for i=1,#t do
- local k = t[i]
- local v = data[k]
- if type(v) ~= "table" then
- report(template,k,tostring(v))
- elseif #v > 0 then
- report(template,k,#v)
- else
- -- no need to show hash
- end
- end
- end
- end
- cache[name] = data
- return type(data) == "table" and data
-end
-
--- A bit of regression in textadept > 10 so updated ... done a bit different.
--- We don't use this in the context lexers anyway.
-
-function context.word_match(words,word_chars,case_insensitive)
- -- used to be proper tables ...
- if type(words) == "string" then
- local clean = gsub(words,"%-%-[^\n]+","")
- local split = { }
- for s in gmatch(clean,"%S+") do
- split[#split+1] = s
- end
- words = split
- end
- local list = { }
- for i=1,#words do
- list[words[i]] = true
- end
- if case_insensitive then
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- local chars = S(word_chars or "")
- for i=1,#words do
- chars = chars + S(words[i])
- end
- local match = case_insensitive and
- function(input,index,word)
- -- We can speed mixed case if needed.
- return (list[word] or list[lower(word)]) and index or nil
- end
- or
- function(input,index,word)
- return list[word] and index or nil
- end
- return Cmt(chars^1,match)
-end
-
--- Patterns are grouped in a separate namespace but the regular lexers expect
--- shortcuts to be present in the lexers library. Maybe I'll incorporate some
--- of l-lpeg later.
-
-do
-
- local anything = P(1)
- local idtoken = R("az","AZ","\127\255","__")
- local digit = R("09")
- local sign = S("+-")
- local period = P(".")
- local octdigit = R("07")
- local hexdigit = R("09","AF","af")
- local lower = R("az")
- local upper = R("AZ")
- local alpha = upper + lower
- local space = S(" \n\r\t\f\v")
- local eol = S("\r\n")
- local backslash = P("\\")
- local decimal = digit^1
- local octal = P("0")
- * octdigit^1
- local hexadecimal = P("0") * S("xX")
- * (hexdigit^0 * period * hexdigit^1 + hexdigit^1 * period * hexdigit^0 + hexdigit^1)
- * (S("pP") * sign^-1 * hexdigit^1)^-1 -- *
- local integer = sign^-1
- * (hexadecimal + octal + decimal)
- local float = sign^-1
- * (digit^0 * period * digit^1 + digit^1 * period * digit^0 + digit^1)
- * S("eE") * sign^-1 * digit^1 -- *
-
- patterns.idtoken = idtoken
- patterns.digit = digit
- patterns.sign = sign
- patterns.period = period
- patterns.octdigit = octdigit
- patterns.hexdigit = hexdigit
- patterns.ascii = R("\000\127") -- useless
- patterns.extend = R("\000\255") -- useless
- patterns.control = R("\000\031")
- patterns.lower = lower
- patterns.upper = upper
- patterns.alpha = alpha
- patterns.decimal = decimal
- patterns.octal = octal
- patterns.hexadecimal = hexadecimal
- patterns.float = float
- patterns.cardinal = decimal
-
- patterns.signeddecimal = sign^-1 * decimal
- patterns.signedoctal = sign^-1 * octal
- patterns.signedhexadecimal = sign^-1 * hexadecimal
- patterns.integer = integer
- patterns.real =
- sign^-1 * ( -- at most one
- digit^1 * period * digit^0 -- 10.0 10.
- + digit^0 * period * digit^1 -- 0.10 .10
- + digit^1 -- 10
- )
-
- patterns.anything = anything
- patterns.any = anything
- patterns.restofline = (1-eol)^1
- patterns.space = space
- patterns.spacing = space^1
- patterns.nospacing = (1-space)^1
- patterns.eol = eol
- patterns.newline = P("\r\n") + eol
- patterns.backslash = backslash
-
- local endof = S("\n\r\f")
-
- patterns.startofline = P(function(input,index)
- return (index == 1 or lpegmatch(endof,input,index-1)) and index
- end)
-
- -- These are the expected ones for other lexers. Maybe all in own namespace
- -- and provide compatibility layer. or should I just remove them?
-
- lexers.any = anything
- lexers.ascii = ascii
- lexers.extend = extend
- lexers.alpha = alpha
- lexers.digit = digit
- lexers.alnum = alpha + digit
- lexers.lower = lower
- lexers.upper = upper
- lexers.xdigit = hexdigit
- lexers.cntrl = control
- lexers.graph = R("!~")
- lexers.print = R(" ~")
- lexers.punct = R("!/", ":@", "[\'", "{~")
- lexers.space = space
- lexers.newline = S("\r\n\f")^1
- lexers.nonnewline = 1 - lexers.newline
- lexers.nonnewline_esc = 1 - (lexers.newline + '\\') + backslash * anything
- lexers.dec_num = decimal
- lexers.oct_num = octal
- lexers.hex_num = hexadecimal
- lexers.integer = integer
- lexers.float = float
- lexers.word = (alpha + "_") * (alpha + digit + "_")^0 -- weird, why digits
-
-end
-
--- end of patterns
-
-function context.exact_match(words,word_chars,case_insensitive)
- local characters = concat(words)
- local pattern -- the concat catches _ etc
- if word_chars == true or word_chars == false or word_chars == nil then
- word_chars = ""
- end
- if type(word_chars) == "string" then
- pattern = S(characters) + patterns.idtoken
- if case_insensitive then
- pattern = pattern + S(upper(characters)) + S(lower(characters))
- end
- if word_chars ~= "" then
- pattern = pattern + S(word_chars)
- end
- elseif word_chars then
- pattern = word_chars
- end
- if case_insensitive then
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[lower(k)] = v
- end
- else
- for i=1,#words do
- list[lower(words[i])] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[lower(s)] -- and i or nil
- end)
- else
- local list = { }
- if #words == 0 then
- for k, v in next, words do
- list[k] = v
- end
- else
- for i=1,#words do
- list[words[i]] = true
- end
- end
- return Cmt(pattern^1, function(_,i,s)
- return list[s] -- and i or nil
- end)
- end
-end
-
-function context.just_match(words)
- local p = P(words[1])
- for i=2,#words do
- p = p + P(words[i])
- end
- return p
-end
-
--- spell checking (we can only load lua files)
---
--- return {
--- min = 3,
--- max = 40,
--- n = 12345,
--- words = {
--- ["someword"] = "someword",
--- ["anotherword"] = "Anotherword",
--- },
--- }
-
-local lists = { }
-local disabled = false
-
-function context.disablewordcheck()
- disabled = true
-end
-
-function context.setwordlist(tag,limit) -- returns hash (lowercase keys and original values)
- if not tag or tag == "" then
- return false, 3
- end
- local list = lists[tag]
- if not list then
- list = context.loaddefinitions("spell-" .. tag)
- if not list or type(list) ~= "table" then
- if not textadept then
- report("invalid spell checking list for '%s'",tag)
- end
- list = { words = false, min = 3 }
- else
- list.words = list.words or false
- list.min = list.min or 3
- end
- lists[tag] = list
- end
- if trace then
- report("enabling spell checking for '%s' with minimum '%s'",tag,list.min)
- end
- return list.words, list.min
-end
-
-patterns.wordtoken = R("az","AZ","\127\255")
-patterns.wordpattern = patterns.wordtoken^3 -- todo: if limit and #s < limit then
-
-function context.checkedword(validwords,validminimum,s,i) -- ,limit
- if not validwords then -- or #s < validminimum then
- return true, "text", i -- true, "default", i
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return true, "okay", i -- exact match
- elseif word then
- return true, "warning", i -- case issue
- elseif upper(s) == s then
- return true, "warning", i -- probably a logo or acronym
- else
- return true, "error", i
- end
- end
- end
-end
-
-function context.styleofword(validwords,validminimum,s) -- ,limit
- if not validwords or #s < validminimum then
- return "text"
- else
- -- keys are lower
- local word = validwords[s]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- else
- local word = validwords[lower(s)]
- if word == s then
- return "okay" -- exact match
- elseif word then
- return "warning" -- case issue
- elseif upper(s) == s then
- return "warning" -- probably a logo or acronym
- else
- return "error"
- end
- end
- end
-end
-
--- overloaded functions
-
-local h_table, b_table, n_table = { }, { }, { } -- from the time small tables were used (optimization)
-
-setmetatable(h_table, { __index = function(t,level) local v = { level, FOLD_HEADER } t[level] = v return v end })
-setmetatable(b_table, { __index = function(t,level) local v = { level, FOLD_BLANK } t[level] = v return v end })
-setmetatable(n_table, { __index = function(t,level) local v = { level } t[level] = v return v end })
-
-local newline = patterns.newline
-local p_yes = Cp() * Cs((1-newline)^1) * newline^-1
-local p_nop = newline
-
-local folders = { }
-
--- Snippets from the > 10 code .. but we do things different so ...
-
-local function fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- local folder = folders[lexer]
- if not folder then
- --
- local pattern, folds, text, start_pos, line_num, prev_level, current_level
- --
- local fold_symbols = lexer._foldsymbols
- local fold_pattern = lexer._foldpattern -- use lpeg instead (context extension)
- --
- -- textadept >= 10
- --
- -- local zerosumlines = lexer.property_int["fold.on.zero.sum.lines"] > 0 -- not done
- -- local compact = lexer.property_int['fold.compact'] > 0 -- not done
- -- local lowercase = lexer._CASEINSENSITIVEFOLDPOINTS -- useless (utf will distort)
- --
- if fold_pattern then
- -- if no functions are found then we could have a faster one
- fold_pattern = Cp() * C(fold_pattern) / function(s,match)
- local symbols = fold_symbols[style_at[start_pos + s]]
- if symbols then
- local l = symbols[match]
- if l then
- current_level = current_level + l
- end
- end
- end
- local action_y = function()
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = ((fold_pattern + (1-newline))^1 * newline / action_y + newline/action_n)^0
-
- else
- -- the traditional one but a bit optimized
- local fold_symbols_patterns = fold_symbols._patterns
- local action_y = function(pos,line)
- for j=1, #fold_symbols_patterns do
- for s, match in gmatch(line,fold_symbols_patterns[j]) do -- "()(" .. patterns[i] .. ")"
- local symbols = fold_symbols[style_at[start_pos + pos + s - 1]]
- local l = symbols and symbols[match]
- local t = type(l)
- if t == "number" then
- current_level = current_level + l
- elseif t == "function" then
- current_level = current_level + l(text, pos, line, s, match)
- end
- end
- end
- folds[line_num] = prev_level
- if current_level > prev_level then
- folds[line_num] = prev_level + FOLD_HEADER
- end
- if current_level < FOLD_BASE then
- current_level = FOLD_BASE
- end
- prev_level = current_level
- line_num = line_num + 1
- end
- local action_n = function()
- folds[line_num] = prev_level + FOLD_BLANK
- line_num = line_num + 1
- end
- pattern = (p_yes/action_y + p_nop/action_n)^0
- end
- --
- local reset_parser = lexer._reset_parser
- --
- folder = function(_text_,_start_pos_,_start_line_,_start_level_)
- if reset_parser then
- reset_parser()
- end
- folds = { }
- text = _text_
- start_pos = _start_pos_
- line_num = _start_line_
- prev_level = _start_level_
- current_level = prev_level
- lpegmatch(pattern,text)
- -- make folds collectable
- local t = folds
- folds = nil
- return t
- end
- folders[lexer] = folder
- end
- return folder(text,start_pos,start_line,start_level,lexer)
-end
-
-local folds, current_line, prev_level
-
-local function action_y()
- local current_level = FOLD_BASE + indent_amount[current_line]
- if current_level > prev_level then -- next level
- local i = current_line - 1
- local f
- while true do
- f = folds[i]
- if not f then
- break
- elseif f[2] == FOLD_BLANK then
- i = i - 1
- else
- f[2] = FOLD_HEADER -- low indent
- break
- end
- end
- folds[current_line] = { current_level } -- high indent
- elseif current_level < prev_level then -- prev level
- local f = folds[current_line - 1]
- if f then
- f[1] = prev_level -- high indent
- end
- folds[current_line] = { current_level } -- low indent
- else -- same level
- folds[current_line] = { prev_level }
- end
- prev_level = current_level
- current_line = current_line + 1
-end
-
-local function action_n()
- folds[current_line] = { prev_level, FOLD_BLANK }
- current_line = current_line + 1
-end
-
-local pattern = ( S("\t ")^0 * ( (1-patterns.eol)^1 / action_y + P(true) / action_n) * newline )^0
-
-local function fold_by_indentation(text,start_pos,start_line,start_level)
- -- initialize
- folds = { }
- current_line = start_line
- prev_level = start_level
- -- define
- -- -- not here .. pattern binds and local functions are not frozen
- -- analyze
- lpegmatch(pattern,text)
- -- flatten
- for line, level in next, folds do
- folds[line] = level[1] + (level[2] or 0)
- end
- -- done, make folds collectable
- local t = folds
- folds = nil
- return t
-end
-
-local function fold_by_line(text,start_pos,start_line,start_level)
- local folds = { }
- -- can also be lpeg'd
- for _ in gmatch(text,".-\r?\n") do
- folds[start_line] = n_table[start_level] -- { start_level } -- stile tables ? needs checking
- start_line = start_line + 1
- end
- return folds
-end
-
-local threshold_by_lexer = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_parsing = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_indentation = 512 * 1024 -- we don't know the filesize yet
-local threshold_by_line = 512 * 1024 -- we don't know the filesize yet
-
-function context.fold(lexer,text,start_pos,start_line,start_level) -- hm, we had size thresholds .. where did they go
- if text == "" then
- return { }
- end
- if initialize then
- initialize()
- end
- local fold_by_lexer = lexer._fold
- local fold_by_symbols = lexer._foldsymbols
- local filesize = 0 -- we don't know that
- if fold_by_lexer then
- if filesize <= threshold_by_lexer then
- return fold_by_lexer(text,start_pos,start_line,start_level,lexer)
- end
- elseif fold_by_symbols then -- and lexer.properties("fold.by.parsing",1) > 0 then
- if filesize <= threshold_by_parsing then
- return fold_by_parsing(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYINDENTATION or lexer.properties("fold.by.indentation",1) > 0 then
- if filesize <= threshold_by_indentation then
- return fold_by_indentation(text,start_pos,start_line,start_level,lexer)
- end
- elseif lexer._FOLDBYLINE or lexer.properties("fold.by.line",1) > 0 then
- if filesize <= threshold_by_line then
- return fold_by_line(text,start_pos,start_line,start_level,lexer)
- end
- end
- return { }
-end
-
--- The following code is mostly unchanged:
-
-local function add_rule(lexer,id,rule) -- unchanged
- if not lexer._RULES then
- lexer._RULES = { }
- lexer._RULEORDER = { }
- end
- lexer._RULES[id] = rule
- lexer._RULEORDER[#lexer._RULEORDER + 1] = id
-end
-
-local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- lexer._RULES[id] = rule
-end
-
-local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- return lexer._RULES[id]
-end
-
--- I finally figured out that adding more styles was an issue because of several
--- reasons:
---
--- + in old versions there was a limit in the amount, so we overran the built-in
--- hard coded scintilla range
--- + then, the add_style function didn't check for already known ones, so again
--- we had an overrun (with some magic that could be avoided)
--- + then, when I messed with a new default set I realized that there is no check
--- in initializing _TOKENSTYLES (here the inspect function helps)
--- + of course it was mostly a side effect of passing all the used styles to the
--- _tokenstyles instead of only the not-default ones but such a thing should not
--- matter (read: intercepted)
---
--- This finally removed a head-ache and was revealed by lots of tracing, which I
--- should have built in way earlier.
-
-local function add_style(lexer,token_name,style) -- changed a bit around 3.41
- -- We don't add styles that are already defined as this can overflow the
- -- amount possible (in old versions of scintilla).
- if defaultstyles[token_name] then
- if trace and detail then
- report("default style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- elseif predefinedstyles[token_name] then
- if trace and detail then
- report("predefined style '%s' is ignored as extra style",token_name)
- end
- if textadept then
- -- go on, stored per buffer
- else
- return
- end
- else
- if trace and detail then
- report("adding extra style '%s' as '%s'",token_name,style)
- end
- end
- -- This is unchanged. We skip the dangerous zone.
- local num_styles = lexer._numstyles
- if num_styles == 32 then
- num_styles = num_styles + 8
- end
- if num_styles >= 255 then
- report("there can't be more than %s styles",255)
- end
- lexer._TOKENSTYLES[token_name] = num_styles
- lexer._EXTRASTYLES[token_name] = style
- lexer._numstyles = num_styles + 1
- -- hm, the original (now) also copies to the parent ._lexer
-end
-
-local function check_styles(lexer)
- -- Here we also use a check for the dangerous zone. That way we can have a
- -- larger default set. The original code just assumes that #default is less
- -- than the dangerous zone's start.
- local numstyles = 0
- local tokenstyles = { }
- for i=1, #default do
- if numstyles == 32 then
- numstyles = numstyles + 8
- end
- tokenstyles[default[i]] = numstyles
- numstyles = numstyles + 1
- end
- -- Unchanged.
- for i=1, #predefined do
- tokenstyles[predefined[i]] = i + 31
- end
- lexer._TOKENSTYLES = tokenstyles
- lexer._numstyles = numstyles
- lexer._EXTRASTYLES = { }
- return lexer
-end
-
--- At some point an 'any' append showed up in the original code ...
--- but I see no need to catch that case ... beter fix the specification.
---
--- hm, why are many joined twice
-
-local function join_tokens(lexer) -- slightly different from the original (no 'any' append)
- local patterns = lexer._RULES
- local order = lexer._RULEORDER
- -- report("lexer: %s, tokens: %s",lexer._NAME,table.concat(order," + "))
- if patterns and order then
- local token_rule = patterns[order[1]] -- normally whitespace
- for i=2,#order do
- token_rule = token_rule + patterns[order[i]]
- end
- if lexer._TYPE ~= "context" then
- token_rule = token_rule + lexers.token(lexers.DEFAULT, patterns.any)
- end
- lexer._TOKENRULE = token_rule
- return token_rule
- else
- return P(1)
- end
-end
-
--- hm, maybe instead of a grammer just a flat one
-
-local function add_lexer(grammar, lexer) -- mostly the same as the original
- local token_rule = join_tokens(lexer)
- local lexer_name = lexer._NAME
- local children = lexer._CHILDREN
- for i=1,#children do
- local child = children[i]
- if child._CHILDREN then
- add_lexer(grammar, child)
- end
- local child_name = child._NAME
- local rules = child._EMBEDDEDRULES[lexer_name]
- local rules_token_rule = grammar["__" .. child_name] or rules.token_rule
- local pattern = (-rules.end_rule * rules_token_rule)^0 * rules.end_rule^-1
- grammar[child_name] = pattern * V(lexer_name)
- local embedded_child = "_" .. child_name
- grammar[embedded_child] = rules.start_rule * pattern
- token_rule = V(embedded_child) + token_rule
- end
- if trace then
- report("adding lexer '%s' with %s children",lexer_name,#children)
- end
- grammar["__" .. lexer_name] = token_rule
- grammar[lexer_name] = token_rule^0
-end
-
-local function build_grammar(lexer,initial_rule) -- same as the original
- local children = lexer._CHILDREN
- local lexer_name = lexer._NAME
- local preamble = lexer._preamble
- local grammar = lexer._grammar
- -- if grammar then
- -- -- experiment
- -- elseif children then
- if children then
- if not initial_rule then
- initial_rule = lexer_name
- end
- grammar = { initial_rule }
- add_lexer(grammar, lexer)
- lexer._INITIALRULE = initial_rule
- grammar = Ct(P(grammar))
- if trace then
- report("building grammar for '%s' with whitespace '%s'and %s children",lexer_name,lexer.whitespace or "?",#children)
- end
- else
- grammar = Ct(join_tokens(lexer)^0)
- if trace then
- report("building grammar for '%s' with whitespace '%s'",lexer_name,lexer.whitespace or "?")
- end
- end
- if preamble then
- grammar = preamble^-1 * grammar
- end
- lexer._GRAMMAR = grammar
-end
-
--- So far. We need these local functions in the next one.
-
-local lineparsers = { }
-
-local maxmatched = 100
-
-local function collapsed(t)
- local lasttoken = nil
- local lastindex = nil
- for i=1,#t,2 do
- local token = t[i]
- local position = t[i+1]
- if token == lasttoken then
- t[lastindex] = position
- elseif lastindex then
- lastindex = lastindex + 1
- t[lastindex] = token
- lastindex = lastindex + 1
- t[lastindex] = position
- lasttoken = token
- else
- lastindex = i+1
- lasttoken = token
- end
- end
- for i=#t,lastindex+1,-1 do
- t[i] = nil
- end
- return t
-end
-
-local function matched(lexer,grammar,text)
- -- text = string.gsub(text,"\z","!")
- local t = lpegmatch(grammar,text)
- if trace then
- if show then
- report("output of lexer: %s (max %s entries)",lexer._NAME,maxmatched)
- local s = lexer._TOKENSTYLES
- local p = 1
- for i=1,2*maxmatched,2 do
- local n = i + 1
- local ti = t[i]
- local tn = t[n]
- if ti then
- local txt = sub(text,p,tn-1)
- if txt then
- txt = gsub(txt,"[%s]"," ")
- else
- txt = "!no text!"
- end
- report("%4i : %s > %s (%s) (%s)",floor(n/2),ti,tn,s[ti] or "!unset!",txt)
- p = tn
- else
- break
- end
- end
- end
- report("lexer results: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- if collapse then
- t = collapsed(t)
- report("lexer collapsed: %s, length: %s, ranges: %s",lexer._NAME,#text,floor(#t/2))
- end
- elseif collapse then
- t = collapsed(t)
- end
- return t
-end
-
--- Todo: make nice generic lexer (extra argument with start/stop commands) for
--- context itself.
---
--- In textadept >= 10 grammar building seem to have changed a bit. So, in retrospect
--- I could better have just dropped compatibility and stick to ctx lexers only.
-
-function context.lex(lexer,text,init_style)
- -- local lexer = global._LEXER
- local grammar = lexer._GRAMMAR
- if initialize then
- initialize()
- end
- if not grammar then
- return { }
- elseif lexer._LEXBYLINE then -- we could keep token
- local tokens = { }
- local offset = 0
- local noftokens = 0
- local lineparser = lineparsers[lexer]
- if not lineparser then -- probably a cmt is more efficient
- lineparser = C((1-newline)^0 * newline) / function(line)
- local length = #line
- local line_tokens = length > 0 and lpegmatch(grammar,line)
- if line_tokens then
- for i=1,#line_tokens,2 do
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i]
- noftokens = noftokens + 1
- tokens[noftokens] = line_tokens[i + 1] + offset
- end
- end
- offset = offset + length
- if noftokens > 0 and tokens[noftokens] ~= offset then
- noftokens = noftokens + 1
- tokens[noftokens] = "default"
- noftokens = noftokens + 1
- tokens[noftokens] = offset + 1
- end
- end
- lineparser = lineparser^0
- lineparsers[lexer] = lineparser
- end
- lpegmatch(lineparser,text)
- return tokens
- elseif lexer._CHILDREN then
- local hash = lexer._HASH -- hm, was _hash
- if not hash then
- hash = { }
- lexer._HASH = hash
- end
- grammar = hash[init_style]
- if grammar then
- lexer._GRAMMAR = grammar
- -- lexer._GRAMMAR = lexer._GRAMMAR or grammar
- else
- for style, style_num in next, lexer._TOKENSTYLES do
- if style_num == init_style then
- -- the name of the lexers is filtered from the whitespace
- -- specification .. weird code, should be a reverse hash
- local lexer_name = match(style,"^(.+)_whitespace") or lexer._NAME
- if lexer._INITIALRULE ~= lexer_name then
- grammar = hash[lexer_name]
- if not grammar then
- build_grammar(lexer,lexer_name)
- grammar = lexer._GRAMMAR
- hash[lexer_name] = grammar
- end
- end
- break
- end
- end
- grammar = grammar or lexer._GRAMMAR
- hash[init_style] = grammar
- end
- if trace then
- report("lexing '%s' with initial style '%s' and %s children", lexer._NAME,init_style,#lexer._CHILDREN or 0)
- end
- return matched(lexer,grammar,text)
- else
- if trace then
- report("lexing '%s' with initial style '%s'",lexer._NAME,init_style)
- end
- return matched(lexer,grammar,text)
- end
-end
-
--- hm, changed in 3.24 .. no longer small table but one table (so we could remove our
--- agressive optimization which worked quite well)
-
-function context.token(name, patt)
- return patt * Cc(name) * Cp()
-end
-
--- The next ones were mostly unchanged (till now), we moved it here when 3.41
--- became close to impossible to combine with cq. overload and a merge was
--- the only solution. It makes later updates more painful but the update to
--- 3.41 was already a bit of a nightmare anyway.
-
--- Loading lexers is rather interwoven with what the dll/so sets and
--- it changes over time. So, we need to keep an eye on changes. One
--- problem that we always faced were the limitations in length of
--- lexer names (as they get app/prepended occasionally to strings with
--- a hard coded limit). So, we always used alternative names and now need
--- to make sure this doesn't clash. As I no longer intend to use shipped
--- lexers I could strip away some of the code in the future, but keeping
--- it as reference makes sense.
-
--- I spend quite some time figuring out why 3.41 didn't work or crashed which
--- is hard when no stdout is available and when the io library is absent. In
--- the end of of the problems was in the _NAME setting. We set _NAME
--- to e.g. 'tex' but load from a file with a longer name, which we do
--- as we don't want to clash with existing files, we end up in
--- lexers not being found.
-
-local whitespaces = { }
-
-local function push_whitespace(name)
- table.insert(whitespaces,lexers.WHITESPACE or "whitespace")
- lexers.WHITESPACE = name .. "_whitespace"
-end
-
-local function pop_whitespace()
- lexers.WHITESPACE = table.remove(whitespaces) or "whitespace"
-end
-
-local function check_whitespace(lexer,name)
- if lexer then
- lexer.whitespace = (name or lexer.name or lexer._NAME) .. "_whitespace"
- end
-end
-
-function context.new(name,filename)
- local lexer = {
- _TYPE = "context",
- --
- _NAME = name, -- used for token building
- _FILENAME = filename, -- for diagnostic purposed
- --
- name = name,
- filename = filename,
- }
- if trace then
- report("initializing lexer tagged '%s' from file '%s'",name,filename or name)
- end
- check_whitespace(lexer)
- check_styles(lexer)
- check_properties(lexer)
- lexer._tokenstyles = context.styleset
- return lexer
-end
-
-local function nolexer(name)
- local lexer = {
- _TYPE = "unset",
- _NAME = name,
- -- _rules = { },
- }
- check_styles(lexer)
- check_whitespace(lexer)
- check_properties(lexer)
- return lexer
-end
-
-local function load_lexer(name,namespace)
- if trace then
- report("loading lexer file '%s'",name)
- end
- push_whitespace(namespace or name) -- for traditional lexers .. no alt_name yet
- local lexer, fullname = context.loadluafile(name)
- pop_whitespace()
- if not lexer then
- report("invalid lexer file '%s'",name)
- elseif trace then
- report("lexer file '%s' has been loaded",fullname)
- end
- if type(lexer) ~= "table" then
- if trace then
- report("lexer file '%s' gets a dummy lexer",name)
- end
- return nolexer(name)
- end
- if lexer._TYPE ~= "context" then
- lexer._TYPE = "native"
- check_styles(lexer)
- check_whitespace(lexer,namespace or name)
- check_properties(lexer)
- end
- if not lexer._NAME then
- lexer._NAME = name -- so: filename
- end
- if name ~= namespace then
- lexer._NAME = namespace
- end
- return lexer
-end
-
--- tracing ...
-
-local function inspect_lexer(lexer,level)
- -- If we had the regular libs available I could use the usual
- -- helpers.
- local parent = lexer._lexer
- lexer._lexer = nil -- prevent endless recursion
- local name = lexer._NAME
- local function showstyles_1(tag,styles)
- local numbers = { }
- for k, v in next, styles do
- numbers[v] = k
- end
- -- sort by number and make number hash too
- local keys = sortedkeys(numbers)
- for i=1,#keys do
- local k = keys[i]
- local v = numbers[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local function showstyles_2(tag,styles)
- local keys = sortedkeys(styles)
- for i=1,#keys do
- local k = keys[i]
- local v = styles[k]
- report("[%s %s] %s %s = %s",level,name,tag,k,v)
- end
- end
- local keys = sortedkeys(lexer)
- for i=1,#keys do
- local k = keys[i]
- local v = lexer[k]
- report("[%s %s] root key : %s = %s",level,name,k,tostring(v))
- end
- showstyles_1("token style",lexer._TOKENSTYLES)
- showstyles_2("extra style",lexer._EXTRASTYLES)
- local children = lexer._CHILDREN
- if children then
- for i=1,#children do
- inspect_lexer(children[i],level+1)
- end
- end
- lexer._lexer = parent
-end
-
-function context.inspect(lexer)
- inspect_lexer(lexer,0)
-end
-
--- An optional second argument has been introduced so that one can embed a lexer
--- more than once ... maybe something to look into (as not it's done by remembering
--- the start sequence ... quite okay but maybe suboptimal ... anyway, never change
--- a working solution).
-
--- namespace can be automatic: if parent then use name of parent (chain)
-
--- The original lexer framework had a rather messy user uinterface (e.g. moving
--- stuff from _rules to _RULES at some point but I could live with that. Now it uses
--- add_ helpers. But the subsystem is still not clean and pretty. Now, I can move to
--- the add_ but there is no gain in it so we support a mix which gives somewhat ugly
--- code. In fact, there should be proper subtables for this. I might actually do
--- this because we now always overload the normal lexer (parallel usage seems no
--- longer possible). For SciTE we can actually do a conceptual upgrade (more the
--- context way) because there is no further development there. That way we could
--- make even more advanced lexers.
-
-local savedrequire = require
-
-local escapes = {
- ["%"] = "%%",
- ["."] = "%.",
- ["+"] = "%+", ["-"] = "%-", ["*"] = "%*",
- ["["] = "%[", ["]"] = "%]",
- ["("] = "%(", [")"] = "%)",
- -- ["{"] = "%{", ["}"] = "%}"
- -- ["^"] = "%^", ["$"] = "%$",
-}
-
-function context.loadlexer(filename,namespace)
-
- if textadept then
- require = function(name)
- return savedrequire(name == "lexer" and "scite-context-lexer" or name)
- end
- end
-
- nesting = nesting + 1
- if not namespace then
- namespace = filename
- end
- local lexer = usedlexers[namespace] -- we load by filename but the internal name can be short
- if lexer then
- if trace then
- report("reusing lexer '%s'",namespace)
- end
- nesting = nesting - 1
- return lexer
- elseif trace then
- report("loading lexer '%s'",namespace)
- end
- --
- if initialize then
- initialize()
- end
- --
- parent_lexer = nil
- --
- lexer = load_lexer(filename,namespace) or nolexer(filename,namespace)
- usedlexers[filename] = lexer
- --
- if not lexer._rules and not lexer._lexer and not lexer_grammar then -- hmm should be lexer._grammar
- lexer._lexer = parent_lexer
- end
- --
- if lexer._lexer then
- local _l = lexer._lexer
- local _r = lexer._rules
- local _s = lexer._tokenstyles
- if not _l._tokenstyles then
- _l._tokenstyles = { }
- end
- if _r then
- local rules = _l._rules
- local name = lexer.name
- for i=1,#_r do
- local rule = _r[i]
- rules[#rules + 1] = {
- name .. "_" .. rule[1],
- rule[2],
- }
- end
- end
- if _s then
- local tokenstyles = _l._tokenstyles
- for token, style in next, _s do
- tokenstyles[token] = style
- end
- end
- lexer = _l
- end
- --
- local _r = lexer._rules
- local _g = lexer._grammar
- -- if _r or _g then
- if _r then
- local _s = lexer._tokenstyles
- if _s then
- for token, style in next, _s do
- add_style(lexer, token, style)
- end
- end
- if _r then
- for i=1,#_r do
- local rule = _r[i]
- add_rule(lexer, rule[1], rule[2])
- end
- end
- build_grammar(lexer)
- else
- -- other lexers
- build_grammar(lexer)
- end
- --
- add_style(lexer, lexer.whitespace, lexers.STYLE_WHITESPACE)
- --
- local foldsymbols = lexer._foldsymbols
- if foldsymbols then
- local patterns = foldsymbols._patterns
- if patterns then
- for i = 1, #patterns do
- patterns[i] = "()(" .. gsub(patterns[i],".",escapes) .. ")"
- end
- end
- end
- --
- lexer.lex = lexers.lex
- lexer.fold = lexers.fold
- --
- nesting = nesting - 1
- --
- if inspect then
- context.inspect(lexer)
- end
- --
- if textadept then
- require = savedrequire
- end
- --
- return lexer
-end
-
--- I probably need to check this occasionally with the original as I've messed around a bit
--- in the past to get nesting working well as one can hit the max number of styles, get
--- clashes due to fuzzy inheritance etc. so there is some interplay with the other patched
--- code.
-
-function context.embed_lexer(parent, child, start_rule, end_rule) -- mostly the same as the original
- local embeddedrules = child._EMBEDDEDRULES
- if not embeddedrules then
- embeddedrules = { }
- child._EMBEDDEDRULES = embeddedrules
- end
- if not child._RULES then
- local rules = child._rules
- if not rules then
- report("child lexer '%s' has no rules",child._NAME or "unknown")
- rules = { }
- child._rules = rules
- end
- for i=1,#rules do
- local rule = rules[i]
- add_rule(child, rule[1], rule[2])
- end
- end
- embeddedrules[parent._NAME] = {
- ["start_rule"] = start_rule,
- ["token_rule"] = join_tokens(child),
- ["end_rule"] = end_rule
- }
- local children = parent._CHILDREN
- if not children then
- children = { }
- parent._CHILDREN = children
- end
- children[#children + 1] = child
- local tokenstyles = parent._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- parent._tokenstyles = tokenstyles
- end
- local childname = child._NAME
- local whitespace = childname .. "_whitespace"
- tokenstyles[whitespace] = lexers.STYLE_WHITESPACE -- all these STYLE_THINGS will go .. just a proper hash
- if trace then
- report("using whitespace '%s' as trigger for '%s' with property '%s'",whitespace,childname,lexers.STYLE_WHITESPACE)
- end
- local childstyles = child._tokenstyles
- if childstyles then
- for token, style in next, childstyles do
- tokenstyles[token] = style
- end
- end
- -- new, a bit redone, untested, no clue yet what it is for
- local parentsymbols = parent._foldsymbols
- local childsymbols = child ._foldsymbols
- if not parentsymbols then
- parentsymbols = { }
- parent._foldsymbols = parentsymbols
- end
- if childsymbols then
- for token, symbols in next, childsymbols do
- local tokensymbols = parentsymbols[token]
- if not tokensymbols then
- tokensymbols = { }
- parentsymbols[token] = tokensymbols
- end
- for k, v in next, symbols do
- if type(k) == 'number' then
- tokensymbols[#tokensymbols + 1] = v
- elseif not tokensymbols[k] then
- tokensymbols[k] = v
- end
- end
- end
- end
- --
- child._lexer = parent
- parent_lexer = parent
-end
-
--- we now move the adapted code to the lexers namespace
-
-lexers.new = context.new
-lexers.load = context.loadlexer
-------.loadlexer = context.loadlexer
-lexers.loadluafile = context.loadluafile
-lexers.embed_lexer = context.embed_lexer
-lexers.fold = context.fold
-lexers.lex = context.lex
-lexers.token = context.token
-lexers.word_match = context.word_match
-lexers.exact_match = context.exact_match
-lexers.just_match = context.just_match
-lexers.inspect = context.inspect
-lexers.report = context.report
-lexers.inform = context.inform
-
--- helper .. alas ... in scite the lexer's lua instance is rather crippled .. not
--- even math is part of it
-
-do
-
- local floor = math and math.floor
- local char = string.char
- local format = format
- local tonumber = tonumber
-
- local function utfchar(n)
- if n < 0x80 then
- return char(n)
- elseif n < 0x800 then
- return char(
- 0xC0 + floor(n/0x40),
- 0x80 + (n % 0x40)
- )
- elseif n < 0x10000 then
- return char(
- 0xE0 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
- )
- elseif n < 0x40000 then
- return char(
- 0xF0 + floor(n/0x40000),
- 0x80 + floor(n/0x1000),
- 0x80 + (floor(n/0x40) % 0x40),
- 0x80 + (n % 0x40)
- )
- else
- -- return char(
- -- 0xF1 + floor(n/0x1000000),
- -- 0x80 + floor(n/0x40000),
- -- 0x80 + floor(n/0x1000),
- -- 0x80 + (floor(n/0x40) % 0x40),
- -- 0x80 + (n % 0x40)
- -- )
- return "?"
- end
- end
-
- context.utfchar = utfchar
-
- -- -- the next one is good enough for use here but not perfect (see context for a
- -- -- better one)
- --
- -- local function make(t)
- -- local p
- -- for k, v in next, t do
- -- if not p then
- -- if next(v) then
- -- p = P(k) * make(v)
- -- else
- -- p = P(k)
- -- end
- -- else
- -- if next(v) then
- -- p = p + P(k) * make(v)
- -- else
- -- p = p + P(k)
- -- end
- -- end
- -- end
- -- return p
- -- end
- --
- -- function lpeg.utfchartabletopattern(list)
- -- local tree = { }
- -- for i=1,#list do
- -- local t = tree
- -- for c in gmatch(list[i],".") do
- -- if not t[c] then
- -- t[c] = { }
- -- end
- -- t = t[c]
- -- end
- -- end
- -- return make(tree)
- -- end
-
- local utf8next = R("\128\191")
- local utf8one = R("\000\127")
- local utf8two = R("\194\223") * utf8next
- local utf8three = R("\224\239") * utf8next * utf8next
- local utf8four = R("\240\244") * utf8next * utf8next * utf8next
-
- local utfidentifier = utf8two + utf8three + utf8four
- helpers.utfidentifier = (R("AZ","az","__") + utfidentifier)
- * (R("AZ","az","__","09") + utfidentifier)^0
-
- helpers.utfcharpattern = P(1) * utf8next^0 -- unchecked but fast
- helpers.utfbytepattern = utf8one / byte
- + utf8two / function(s) local c1, c2 = byte(s,1,2) return c1 * 64 + c2 - 12416 end
- + utf8three / function(s) local c1, c2, c3 = byte(s,1,3) return (c1 * 64 + c2) * 64 + c3 - 925824 end
- + utf8four / function(s) local c1, c2, c3, c4 = byte(s,1,4) return ((c1 * 64 + c2) * 64 + c3) * 64 + c4 - 63447168 end
-
- local p_false = P(false)
- local p_true = P(true)
-
- local function make(t)
- local function making(t)
- local p = p_false
- local keys = sortedkeys(t)
- for i=1,#keys do
- local k = keys[i]
- if k ~= "" then
- local v = t[k]
- if v == true then
- p = p + P(k) * p_true
- elseif v == false then
- -- can't happen
- else
- p = p + P(k) * making(v)
- end
- end
- end
- if t[""] then
- p = p + p_true
- end
- return p
- end
- local p = p_false
- local keys = sortedkeys(t)
- for i=1,#keys do
- local k = keys[i]
- if k ~= "" then
- local v = t[k]
- if v == true then
- p = p + P(k) * p_true
- elseif v == false then
- -- can't happen
- else
- p = p + P(k) * making(v)
- end
- end
- end
- return p
- end
-
- local function collapse(t,x)
- if type(t) ~= "table" then
- return t, x
- else
- local n = next(t)
- if n == nil then
- return t, x
- elseif next(t,n) == nil then
- -- one entry
- local k = n
- local v = t[k]
- if type(v) == "table" then
- return collapse(v,x..k)
- else
- return v, x .. k
- end
- else
- local tt = { }
- for k, v in next, t do
- local vv, kk = collapse(v,k)
- tt[kk] = vv
- end
- return tt, x
- end
- end
- end
-
- function helpers.utfchartabletopattern(list)
- local tree = { }
- local n = #list
- if n == 0 then
- for s in next, list do
- local t = tree
- local p, pk
- for c in gmatch(s,".") do
- if t == true then
- t = { [c] = true, [""] = true }
- p[pk] = t
- p = t
- t = false
- elseif t == false then
- t = { [c] = false }
- p[pk] = t
- p = t
- t = false
- else
- local tc = t[c]
- if not tc then
- tc = false
- t[c] = false
- end
- p = t
- t = tc
- end
- pk = c
- end
- if t == false then
- p[pk] = true
- elseif t == true then
- -- okay
- else
- t[""] = true
- end
- end
- else
- for i=1,n do
- local s = list[i]
- local t = tree
- local p, pk
- for c in gmatch(s,".") do
- if t == true then
- t = { [c] = true, [""] = true }
- p[pk] = t
- p = t
- t = false
- elseif t == false then
- t = { [c] = false }
- p[pk] = t
- p = t
- t = false
- else
- local tc = t[c]
- if not tc then
- tc = false
- t[c] = false
- end
- p = t
- t = tc
- end
- pk = c
- end
- if t == false then
- p[pk] = true
- elseif t == true then
- -- okay
- else
- t[""] = true
- end
- end
- end
- collapse(tree,"")
- -- inspect(tree)
- return make(tree)
- end
-
- patterns.invisibles = helpers.utfchartabletopattern {
- utfchar(0x00A0), -- nbsp
- utfchar(0x2000), -- enquad
- utfchar(0x2001), -- emquad
- utfchar(0x2002), -- enspace
- utfchar(0x2003), -- emspace
- utfchar(0x2004), -- threeperemspace
- utfchar(0x2005), -- fourperemspace
- utfchar(0x2006), -- sixperemspace
- utfchar(0x2007), -- figurespace
- utfchar(0x2008), -- punctuationspace
- utfchar(0x2009), -- breakablethinspace
- utfchar(0x200A), -- hairspace
- utfchar(0x200B), -- zerowidthspace
- utfchar(0x202F), -- narrownobreakspace
- utfchar(0x205F), -- math thinspace
- }
-
- -- now we can make:
-
- patterns.iwordtoken = patterns.wordtoken - patterns.invisibles
- patterns.iwordpattern = patterns.iwordtoken^3
-
-end
-
--- The following helpers are not used, partially replaced by other mechanisms and
--- when needed I'll first optimize them. I only made them somewhat more readable.
-
-function lexers.delimited_range(chars, single_line, no_escape, balanced) -- unchanged
- local s = sub(chars,1,1)
- local e = #chars == 2 and sub(chars,2,2) or s
- local range
- local b = balanced and s or ""
- local n = single_line and "\n" or ""
- if no_escape then
- local invalid = S(e .. n .. b)
- range = patterns.any - invalid
- else
- local invalid = S(e .. n .. b) + patterns.backslash
- range = patterns.any - invalid + patterns.backslash * patterns.any
- end
- if balanced and s ~= e then
- return P {
- s * (range + V(1))^0 * e
- }
- else
- return s * range^0 * P(e)^-1
- end
-end
-
-function lexers.starts_line(patt) -- unchanged
- return P ( function(input, index)
- if index == 1 then
- return index
- end
- local char = sub(input,index - 1,index - 1)
- if char == "\n" or char == "\r" or char == "\f" then
- return index
- end
- end ) * patt
-end
-
-function lexers.last_char_includes(s) -- unchanged
- s = "[" .. gsub(s,"[-%%%[]", "%%%1") .. "]"
- return P ( function(input, index)
- if index == 1 then
- return index
- end
- local i = index
- while match(sub(input,i - 1,i - 1),"[ \t\r\n\f]") do
- i = i - 1
- end
- if match(sub(input,i - 1,i - 1),s) then
- return index
- end
- end)
-end
-
-function lexers.nested_pair(start_chars, end_chars) -- unchanged
- local s = start_chars
- local e = P(end_chars)^-1
- return P {
- s * (patterns.any - s - end_chars + V(1))^0 * e
- }
-end
-
-local function prev_line_is_comment(prefix, text, pos, line, s) -- unchanged
- local start = find(line,"%S")
- if start < s and not find(line,prefix,start,true) then
- return false
- end
- local p = pos - 1
- if sub(text,p,p) == "\n" then
- p = p - 1
- if sub(text,p,p) == "\r" then
- p = p - 1
- end
- if sub(text,p,p) ~= "\n" then
- while p > 1 and sub(text,p - 1,p - 1) ~= "\n"
- do p = p - 1
- end
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
- end
- return sub(text,p,p + #prefix - 1) == prefix
- end
- end
- return false
-end
-
-local function next_line_is_comment(prefix, text, pos, line, s)
- local p = find(text,"\n",pos + s)
- if p then
- p = p + 1
- while find(sub(text,p,p),"^[\t ]$") do
- p = p + 1
- end
- return sub(text,p,p + #prefix - 1) == prefix
- end
- return false
-end
-
-function lexers.fold_line_comments(prefix)
- local property_int = lexers.property_int
- return function(text, pos, line, s)
- if property_int["fold.line.comments"] == 0 then
- return 0
- end
- if s > 1 and match(line,"^%s*()") < s then
- return 0
- end
- local prev_line_comment = prev_line_is_comment(prefix, text, pos, line, s)
- local next_line_comment = next_line_is_comment(prefix, text, pos, line, s)
- if not prev_line_comment and next_line_comment then
- return 1
- end
- if prev_line_comment and not next_line_comment then
- return -1
- end
- return 0
- end
-end
-
--- There are some fundamental changes in textadept version 10 and I don't want to
--- adapt again so we go the reverse route: map new to old. This is needed because
--- we need to load other lexers which is teh result of not being able to load the
--- lexer framework in parallel. Something happened in 10 that makes the main lexer
--- always enforced so now we need to really replace that one (and even then it loads
--- twice (i can probably sort that out). Maybe there's now some hard coded magic
--- in the binary.
-
-if textadept then
-
- -- Folds are still somewhat weak because of the end condition not being
- -- bound to a start .. probably to complex and it seems to work anyhow. As
- -- we have extended thinsg we just remap.
-
- local function add_fold_point(lexer,token_name,start_symbol,end_symbol)
- if type(start_symbol) == "string" then
- local foldsymbols = lexer._foldsymbols
- if not foldsymbols then
- foldsymbols = { }
- lexer._foldsymbols = foldsymbols
- end
- local patterns = foldsymbols._patterns
- if not patterns then
- patterns = { }
- usedpatt = { } -- > 10 uses a mixed index/hash (we don't use patterns)
- foldsymbols._patterns = patterns
- foldsymbols._usedpatt = usedpatt
- end
- local foldsymbol = foldsymbols[token_name]
- if not foldsymbol then
- foldsymbol = { }
- foldsymbols[token_name] = foldsymbol
- end
- if not usedpatt[start_symbol] then
- patterns[#patterns+1] = start_symbol
- usedpatt[start_symbol] = true
- end
- if type(end_symbol) == "string" then
- foldsymbol[start_symbol] = 1
- foldsymbol[end_symbol] = -1
- if not usedpatt[end_symbol] then
- patterns[#patterns+1] = end_symbol
- usedpatt[end_symbol] = true
- end
- else
- foldsymbol[start_symbol] = end_symbol
- end
- end
- end
-
- local function add_style(lexer,name,style)
- local tokenstyles = lexer._tokenstyles
- if not tokenstyles then
- tokenstyles = { }
- lexer._tokenstyles = tokenstyles
- end
- tokenstyles[name] = style
- end
-
- local function add_rule(lexer,id,rule)
- local rules = lexer._rules
- if not rules then
- rules = { }
- lexer._rules = rules
- end
- rules[#rules+1] = { id, rule }
- end
-
- local function modify_rule(lexer,id,rule) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- local RULES = lexer._RULES
- if RULES then
- RULES[id] = rule
- end
- end
-
- local function get_rule(lexer,id) -- needed for textadept > 10
- if lexer._lexer then
- lexer = lexer._lexer
- end
- local RULES = lexer._RULES
- if RULES then
- return RULES[id]
- end
- end
-
- local new = context.new
- local lmt = {
- __index = {
-
- add_rule = add_rule,
- modify_rule = modify_rule,
- get_rule = get_rule,
- add_style = add_style,
- add_fold_point = add_fold_point,
-
- join_tokens = join_tokens,
- build_grammar = build_grammar,
-
- embed = lexers.embed,
- lex = lexers.lex,
- fold = lexers.fold
-
- }
- }
-
- function lexers.new(name,options)
- local lexer = new(name)
- if options then
- lexer._LEXBYLINE = options['lex_by_line']
- lexer._FOLDBYINDENTATION = options['fold_by_indentation']
- lexer._CASEINSENSITIVEFOLDPOINTS = options['case_insensitive_fold_points']
- lexer._lexer = options['inherit']
- end
- setmetatable(lexer,lmt)
- return lexer
- end
-
-end
-
--- done
-
-return lexers
diff --git a/context/data/textadept/context/lexers/text.lua b/context/data/textadept/context/lexers/text.lua
deleted file mode 100644
index 5d3096b7d..000000000
--- a/context/data/textadept/context/lexers/text.lua
+++ /dev/null
@@ -1,35 +0,0 @@
-local info = {
- version = 1.002,
- comment = "scintilla lpeg lexer that triggers whitespace backtracking",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- the lexer dll doesn't backtrack when there is no embedded lexer so
--- we need to trigger that, for instance in the bibtex lexer, but still
--- we get failed lexing
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
-
-local token = lexer.token
-
-local dummylexer = lexer.new("dummy","scite-context-lexer-dummy")
-local whitespace = dummylexer.whitespace
-
-local space = patterns.space
-local nospace = (1-space)
-
-local t_spacing = token(whitespace, space ^1)
-local t_rest = token("default", nospace^1)
-
-dummylexer._rules = {
- { "whitespace", t_spacing },
- { "rest", t_rest },
-}
-
-dummylexer._tokenstyles = context.styleset
-
-return dummylexer
diff --git a/context/data/textadept/context/modules/textadept-context-files.lua b/context/data/textadept/context/modules/textadept-context-files.lua
deleted file mode 100644
index ef016372e..000000000
--- a/context/data/textadept/context/modules/textadept-context-files.lua
+++ /dev/null
@@ -1,826 +0,0 @@
-local info = {
- version = 1.002,
- comment = "file handler for textadept for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-
-local char, format, gsub = string.char, string.format, string.gsub
-
--- What is _CHARSET doing ... I don't want any messing with conversion at all. Scite is
--- more clever with e.g. pdf. How can I show non ascii as escapes.
-
--- I'll add a few more keybindings. I mostly made this file for my own use and as a
--- fallback for SciTE as it runs on all os's. It might evolve ... who knows.
-
-io.encodings = {
- "UTF-8",
- "ASCII",
- "UTF-16",
-}
-
--- We need this for for instance pdf files (faster too):
-
-local sevenbitascii = { }
-for i=127,255 do
- sevenbitascii[char(i)] = format("0x%02X",i)
-end
-
-local function setsevenbitascii(buffer)
- -- we cannot directly assign sevenbitascii to buffer
- local representation = buffer.representation
- for k, v in next, sevenbitascii do
- representation[k] = v
- end
-end
-
--- Here we rebind keys. For this we need to load the alternative runner framework. I will
--- probably change the menu.
-
-local oldrunner = textadept.run
-local runner = require("textadept-context-runner")
-
--- local function userunner(runner)
--- --
--- keys [OSX and 'mr' or 'cr' ] = runner.process or runner.run
--- keys [OSX and 'mR' or (GUI and 'cR' or 'cmr')] = runner.check or runner.compile
--- keys [OSX and 'mB' or (GUI and 'cB' or 'cmb')] = runner.preview or runner.build
--- keys [OSX and 'mX' or (GUI and 'cX' or 'cmx')] = runner.quit or runner.stop
--- --
--- textadept.menu.menubar [_L['_Tools']] [_L['_Run']] [2] = runner.process or runner.run
--- textadept.menu.menubar [_L['_Tools']] [_L['_Compile']] [2] = runner.check or runner.compile
--- textadept.menu.menubar [_L['_Tools']] [_L['Buil_d']] [2] = runner.preview or runner.build
--- textadept.menu.menubar [_L['_Tools']] [_L['S_top']] [2] = runner.quit or runner.stop
--- --
--- end
-
--- I played a while with supporting both systems alongsize but getting the menus
--- synchronized is a real pain and semi-random. So, I decided to just drop the
--- old. And I don't want to implement a full variant now. Anyway, after that
--- conclusion I decided to replace not only the tools menu.
-
-local SEPARATOR = { "" }
-local newmenu = { }
-local newkeys = { }
-
-do
-
- newmenu.file = {
-
- title = "_File",
-
- { "_New", buffer.new },
- { "_Open", io.open_file },
- { "Open _Recent", io.open_recent_file },
- { "Re_load", io.reload_file },
- { "_Save", io.save_file },
- { "Save _As", io.save_file_as },
- { "Save All", io.save_all_files },
-
- SEPARATOR,
-
- { "_Close", io.close_buffer },
- { "Close All", io.close_all_buffers },
-
- -- SEPARATOR,
-
- -- { "Loa_d Session", textadept.session.load },
- -- { "Sav_e Session", textadept.session.save },
-
- SEPARATOR,
-
- { _L["_Quit"], quit },
-
- }
-
- -- maybe just the same keys on all ... or duplicate on osx
-
- newkeys[OSX and "mn" or "cn"] = buffer.new
- newkeys[OSX and "mo" or "co"] = io.open_file
- newkeys[OSX and "cmo" or "cao"] = io.open_recent_file
- newkeys[OSX and "ms" or "cs"] = io.save_file
- newkeys[OSX and "mS" or "cS"] = io.save_file_as
- newkeys[OSX and "mw" or "cw"] = io.close_buffer
- newkeys[OSX and "mW" or "cW"] = io.close_all_buffers
-
-end
-
-do
-
- local function complete_symbol()
- textadept.editing.autocomplete(buffer:get_lexer(true))
- end
-
- newmenu.edit = {
-
- title = "_Edit",
-
- SEPARATOR,
-
- { "_Undo", buffer.undo },
- { "_Redo", buffer.redo },
-
- SEPARATOR,
-
- { "Cu_t", buffer.cut },
- { "_Copy", buffer.copy },
- { "_Paste", buffer.paste },
- { "_Delete", buffer.clear },
- { "Select _All", buffer.select_all },
-
- SEPARATOR,
-
- { "Duplicate _Line", buffer.line_duplicate },
-
- SEPARATOR,
-
- { "Toggle _Block Comment", runner.blockcomment },
- { "_Upper Case Selection", buffer.upper_case },
- { "_Lower Case Selection", buffer.lower_case },
-
- }
-
- newkeys[OSX and "mz" or "cz"] = buffer.undo
- newkeys[OSX and "my" or "cy"] = buffer.redo
- newkeys[OSX and "mx" or "cx"] = buffer.cut
- newkeys[OSX and "mc" or "cc"] = buffer.copy
- newkeys[OSX and "mv" or "cv"] = buffer.paste
- newkeys[OSX and "ma" or "ca"] = buffer.select_all
-
- newkeys[OSX and "mD" or "cD"] = textadept.editing.select_word
- newkeys[OSX and "mN" or "cN"] = textadept.editing.select_line
- newkeys[OSX and "mP" or "cP"] = textadept.editing.select_paragraph
-
- newkeys["del"] = buffer.clear
- newkeys["cy"] = buffer.redo
-
- newkeys[OSX and "md" or "cd"] = buffer.line_duplicate
- newkeys[OSX and "cu" or "cau"] = buffer.upper_case
- newkeys[OSX and "cU" or "caU"] = buffer.lower_case
-
- newkeys[OSX and "mq" or "cq"] = runner.blockcomment
-
- newkeys[OSX and "ml" or "cl"] = buffer.line_delete
-
- -- Do I ever use these?
-
- -- newkeys["cf"] = buffer.char_right
- -- newkeys["cF"] = buffer.char_right_extend
- -- newkeys["cmf"] = buffer.word_right
- -- newkeys["cmF"] = buffer.word_right_extend
- -- newkeys["cb"] = buffer.char_left
- -- newkeys["cB"] = buffer.char_left_extend
- -- newkeys["cmb"] = buffer.word_left
- -- newkeys["cmB"] = buffer.word_left_extend
- -- newkeys["cn"] = buffer.line_down
- -- newkeys["cN"] = buffer.line_down_extend
- -- newkeys["cp"] = buffer.line_up
- -- newkeys["cP"] = buffer.line_up_extend
- -- newkeys["ca"] = buffer.vc_home
- -- newkeys["cA"] = buffer.vc_home_extend
- -- newkeys["ce"] = buffer.line_end
- -- newkeys["cE"] = buffer.line_end_extend
- -- newkeys["aright"] = buffer.word_right
- -- newkeys["aleft"] = buffer.word_left
- -- newkeys["cdv"] = buffer.clear
- -- newkeys["ck"] = function() buffer:line_end_extend() buffer:cut() end
- -- newkeys["cl"] = buffer.vertical_centre_caret
-
- newkeys.fn = OSX and function() return true end or nil
-
- newkeys[OSX and "c@" or "c "] = complete_symbol
-
-end
-
-do
-
- local function find_in_file()
- ui.find.in_files = false
- ui.find.focus()
- end
-
- local function find_in_files()
- ui.find.in_files = true
- ui.find.focus()
- end
-
- local function find_next_in_files()
- ui.find.goto_file_found(false,true)
- end
-
- local function find_previous_in_files()
- ui.find.goto_file_found(false,false)
- end
-
- newmenu.search = {
-
- title = "_Search",
-
- SEPARATOR,
-
- { "_Find", find_in_file },
- { "Find _Next", ui.find.find_next },
- { "Find _Previous", ui.find.find_prev },
- { "_Replace", ui.find.replace },
- { "Replace _All", ui.find.replace_all },
- { "Find _Incremental", ui.find.find_incremental },
-
- SEPARATOR,
-
- { "Find in Fi_les", find_in_files },
- { "Goto Nex_t File Found", find_next_in_files },
- { "Goto Previou_s File Found", find_previous_in_files },
-
- SEPARATOR,
-
- { "_Jump to", textadept.editing.goto_line }
-
- }
-
- -- The few times I use osx I want the same keys ... better explicitly handle
- -- "not GUI" but I have to test the curses version first anyway.
-
- newkeys[OSX and "mf" or "cf"] = find_in_file
- newkeys[OSX and "mg" or "cg"] = ui.find.find_next
- newkeys[OSX and "mG" or "cG"] = ui.find.find_prev
- newkeys[OSX and "mg" or "cg"] = textadept.editing.goto_line
-
- newkeys["f3"] = not OSX and ui.find.find_next or nil
- newkeys["sf3"] = not OSX and ui.find.find_prev or nil
-
- newkeys[OSX and "cr" or "car"] = ui.find.replace
- newkeys[OSX and "cR" or "caR"] = ui.find.replace_all
- newkeys[OSX and "cmf" or "caf"] = ui.find.find_incremental
-
- newkeys[OSX and "mF" or "cF"] = find_in_files
- newkeys[OSX and "cmg" or "cag"] = find_next_in_files
- newkeys[OSX and "cmG" or "caG"] = find_previous_in_files
-
-end
-
-do
-
- io.quick_open_max = 5000
-
- local function isdir(path)
- return path and path ~= "" and lfs.attributes(path,"mode") == "directory"
- end
-
- local function resolveroot(path)
- local path = runner.resultof("mtxrun --resolve-path TEXMFCONTEXT")
- if path then
- return string.match(path,"(.-)%s$")
- end
- end
-
- local function opencurrentdirectory()
- local path = buffer.filename
- if path and path ~= "" then
- path = string.match(path,"^(.+)[/\\]")
- if isdir(path) then
- io.quick_open(path)
- end
- end
- end
-
- local function openuserdirectory()
- local path = resolveroot("TEXMFPROJECT")
- if isdir(path) then
- io.quick_open(path .. "/tex/context/user")
- end
- end
-
- local function openbasedirectory()
- local path = resolveroot("TEXMFCONTEXT")
- if isdir(path) then
- io.quick_open(path .. "/tex/context/base/mkiv")
- end
- end
-
- local started = false
-
- local function startservice()
- if WIN32 then
- os.execute([[cmd /c start /min "Context Documentation" mtxrun --script server --auto]])
- else
- os.execute([[mtxrun --script server --start > ~/context-wwwserver.log &]])
- end
- started = true
- end
-
- local function showcommand()
- -- if not started then
- -- startservice()
- -- end
- local start = buffer.selection_n_start[0]
- local stop = buffer.selection_n_end[0]
- if start == stop then
- buffer:set_target_range(buffer:word_start_position(start,true),buffer:word_end_position(stop,true))
- else
- buffer:set_target_range(start,stop)
- end
- local word = buffer.target_text
- os.execute(format([[mtxrun --gethelp --url="http://localhost:8088/mtx-server-ctx-help.lua?command=%s"]],word or ""))
- end
-
- newmenu.tools = {
-
- title = "_Tools",
-
- SEPARATOR,
-
- { "Check Source", runner.check },
- { "Process Source", runner.process },
- { "Preview Result", runner.preview },
- { "Show Log File", runner.install("logfile") },
- { "Quit", runner.quit },
-
- SEPARATOR,
-
- { "Open Current Directory", opencurrentdirectory },
- { "Open User Directory", openuserdirectory },
- { "Open Base Directory", openbasedirectory },
-
- SEPARATOR,
-
- { "Purge Files", runner.install("purge") },
- { "Clear Cache", runner.install("clear") },
- { "Generate File Database", runner.install("generate") },
- { "Generate Font Database", runner.install("fonts") },
-
- SEPARATOR,
-
- { "Typeset Listing", runner.install("listing") },
- { "Process and Arrange", runner.install("arrange") },
-
- SEPARATOR,
-
- { "Start Document Service", startservice },
- { "Goto Document Service", showcommand },
-
- SEPARATOR,
-
- { "Show Unicodes", runner.unicodes },
-
- -- We need this bogus entry because otherwise we get a message due to macros.lua. I
- -- might need to come up with some proper placeholder. Well, let's for now just
- -- live with the crash.
-
- -- SEPARATOR,
- --
- -- { "Select Co_mmand", textadept.editing.goto_line },
-
-}
-
- -- newkeys[OSX and "mc" or "cc"] = runner.check
- newkeys[OSX and "mr" or "cr"] = runner.process
- newkeys[OSX and "mp" or "cp"] = runner.preview
- -- newkeys[OSX and "mx" or "cx"] = runner.quit -- makes no sense
-
- newkeys["f7"] = runner.process
- newkeys["f12"] = runner.process
-
- newkeys["f2"] = runner.unicodes
-
-end
-
-do
-
- local function use_tabs()
- buffer.use_tabs = not buffer.use_tabs
- events.emit(events.UPDATE_UI) -- for updating statusbar
- end
-
- local function set_eol_mode_crlf()
- set_eol_mode(buffer.EOL_CRLF)
- end
-
- local function set_eol_mode_lf()
- set_eol_mode(buffer.EOL_LF)
- end
-
- local function show_eol()
- buffer.view_eol = not buffer.view_eol
- end
-
- local function wrap_mode()
- buffer.wrap_mode = buffer.wrap_mode == 0 and buffer.WRAP_WHITESPACE or 0
- end
-
- function show_white_space()
- buffer.view_ws = buffer.view_ws == 0 and buffer.WS_VISIBLEALWAYS or 0
- end
-
- local function update_lexing()
- buffer:colourise(0,-1)
- end
-
- function set_endoding_utf8()
- set_encoding("UTF-8")
- end
-
- function set_encoding_ascii()
- set_encoding("ASCII")
- end
-
- function set_endoding_utf16le()
- set_encoding("UTF-16LE")
- end
-
- function set_endoding_utf16Be()
- set_encoding("UTF-16BE")
- end
-
- function goto_prev_buffer()
- view:goto_buffer(-1)
- end
-
- function goto_next_buffer()
- view:goto_buffer(1)
- end
-
- newmenu.buffer = {
-
- title = "_Buffer",
-
- SEPARATOR,
-
- { "_Previous Buffer", goto_prev_buffer },
- { "_Next Buffer", goto_next_buffer },
- { "_Switch to Buffer", ui.switch_buffer },
-
- SEPARATOR,
-
- { "_Toggle Use Tabs", use_tabs },
- {
- title = "EOL Mode",
-
- { "_CRLF", set_eol_mode_crlf },
- { "_LF", set_eol_mode_lf },
- },
- {
- title = "Encoding",
-
- { "_ASCII", set_encoding_ascii },
- { "_UTF-8", set_encoding_utf8 },
- { "UTF-16-_BE", set_encoding_utf16le },
- { "UTF-16-_LE", set_encoding_utf16be },
- },
-
- SEPARATOR,
-
- { "Toggle View _EOL", show_eol },
- { "Toggle _Wrap Mode", wrap_mode },
- { "Toggle View _Spacing", show_whitespace },
-
- SEPARATOR,
-
- { "Select _Lexer", textadept.file_types.select_lexer },
- { "Refresh _Syntax Highlighting", update_lexing }
-
- }
-
- newkeys["f5"] = update_lexing
-
- newkeys[OSX and "mp" or "cs\t"] = goto_prev_buffer
- newkeys[OSX and "mn" or "c\t"] = goto_next_buffer
- newkeys[OSX and "mb" or "cb"] = ui.switch_buffer
-
-end
-
-do
-
- local function toggle_current_fold()
- buffer:toggle_fold(buffer:line_from_position(buffer.current_pos))
- end
-
- local function toggle_show_guides()
- local off = buffer.indentation_guides == 0
- buffer.indentation_guides = off and buffer.IV_LOOKBOTH or 0
- end
-
- local function toggle_virtual_space()
- local off = buffer.virtual_space_options == 0
- buffer.virtual_space_options = off and buffer.VS_USERACCESSIBLE or 0
- end
-
- local function reset_zoom()
- buffer.zoom = 0
- end
-
- newmenu.view = {
-
- title = "_View",
-
- SEPARATOR,
-
- { "Toggle Current _Fold" , toggle_current_fold },
-
- SEPARATOR,
-
- { "Toggle Show In_dent Guides", toggle_show_guides },
- { "Toggle _Virtual Space", toggle_virtual_space },
-
- SEPARATOR,
-
- { "Zoom _In", buffer.zoom_in },
- { "Zoom _Out", buffer.zoom_out },
- { "_Reset Zoom", reset_zoom },
-
- }
-
- newkeys[OSX and "m=" or "c="] = buffer.zoom_in
- newkeys[OSX and "m-" or "c-"] = buffer.zoom_out
- newkeys[OSX and "m0" or "c0"] = reset_zoom
-
-end
-
-do
-
- -- It"s a pitt y that we can"t have a proper monospaced font here so we try to make the best of it:
-
- local template = "\n\trelease info: %s\t\n\n\tcopyright: %s\t\n\n\tvariant: ConTeXt related editing\t\n\n\tadapted by: Hans Hagen\t"
-
- function show_about()
- ui.dialogs.msgbox {
- title = "about",
- informative_text = format(template,(gsub(_RELEASE,"%s+"," ")),(gsub(_COPYRIGHT,"%s+"," ")))
- }
- end
-
- local function open_url(url) -- adapted from non public open_page
- local cmd = (WIN32 and 'start ""') or (OSX and "open") or "xdg-open"
- os.spawn(format('%s "%s"', cmd, url))
- end
-
-
- newmenu.help = {
-
- title = "_Help",
-
- SEPARATOR,
-
- { "ConTeXt garden wiki", function() open_url("http://www.contextgarden.net") end },
-
- -- SEPARATOR,
-
- { "_About", show_about }
-
- }
-
-end
-
-do
-
- -- from shift F11 and startup script
-
- table.insert(textadept.menu.context_menu, SEPARATOR)
-
- table.insert(textadept.menu.context_menu, { "wrap", runner.wrap })
- table.insert(textadept.menu.context_menu, { "unwrap", runner.unwrap })
- table.insert(textadept.menu.context_menu, { "sort", runner.sort })
- -- table.insert(textadept.menu.context_menu, { "document", function() end })
- -- table.insert(textadept.menu.context_menu, { "quote", function() end })
- -- table.insert(textadept.menu.context_menu, { "compound", function() end })
- -- table.insert(textadept.menu.context_menu, { "add", function() end })
- -- table.insert(textadept.menu.context_menu, { "bidi", function() end })
- -- table.insert(textadept.menu.context_menu, { "strip", function() end })
-
-
- -- cM wrap
- -- cR reset spelling
- -- cI insert template
- -- cE show log
- -- c+ toggle strip
-
- newkeys[OSX and "mm" or "cm"] = runner.wrap
-
-end
-
-do
-
- local function replace(oldmenu,newmenu)
- local n = #newmenu
- local o = #oldmenu
- for i=1,n do
- oldmenu[i] = newmenu[i]
- end
- for i=o,n+1,-1 do
- oldmenu[i] = nil
- end
- end
-
- replace(textadept.menu.menubar [_L["_File"]], newmenu.file)
- replace(textadept.menu.menubar [_L["_Edit"]], newmenu.edit)
- replace(textadept.menu.menubar [_L["_Search"]], newmenu.search)
- replace(textadept.menu.menubar [_L["_Tools"]], newmenu.tools)
- replace(textadept.menu.menubar [_L["_Buffer"]], newmenu.buffer)
- replace(textadept.menu.menubar [_L["_View"]], newmenu.view)
- replace(textadept.menu.menubar [_L["_Help"]], newmenu.help)
-
- local char = string.char
-
- local combi = {
- "c", "m", "a",
- "cm", "ca", "ma",
- }
-
- local pad = {
- "esc", "del", "bs",
- "up", "down", "left", "right",
- "end", "home",
- "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12",
- }
-
- local s = "s"
-
- for i=1,#combi do
- local c = combi[i]
- for i=0x20,0x40 do
- local ci = char(i)
- keys[ c..ci] = nil
- keys[s..c..ci] = nil
- end
- for i=0x41,0x5A do -- A .. Z
- local ci = char(i)
- keys[ c..ci] = nil
- end
- for i=0x5B,0x60 do
- local ci = char(i)
- keys[ c..ci] = nil
- keys[s..c..ci] = nil
- end
- for i=0x61,0x7A do -- a .. z
- local ci = char(i)
- keys[ c..ci] = nil
- end
- for i=0x7B,0x7F do
- local ci = char(i)
- keys[ c..ci] = nil
- keys[s..c..ci] = nil
- end
- for i=1,#pad do
- local pi = pad[i]
- keys[ c..pi] = nil
- keys[s..c..pi] = nil
- end
- end
-
- for k, v in next, newkeys do
- keys[k] = v
- end
-
- -- add helper to textadept-context-runner.lua instead
-
- events.connect(events.INITIALIZED, function()
- for i=1,#_BUFFERS do
- local buffer = _BUFFERS[i]
- if buffer._type == OUTPUT_BUFFER then
- view:goto_buffer(i)
- io.close_buffer()
- return
- end
- end
- end)
-
-end
-
--- We have a different way to set up files and runners. Less distributed and morein the way we
--- do things in context.
-
-local dummyrunner = function() end
-local extensions = textadept.file_types.extensions
-local specifications = runner.specifications
-local setters = { }
-local defaults = {
- check = dummyrunner,
- process = dummyrunner,
- preview = dummyrunner,
-}
-
-setmetatable(specifications, { __index = defaults })
-
-function context.install(specification)
- local suffixes = specification.suffixes
- if suffixes then
- local lexer = specification.lexer
- local setter = specification.setter
- local encoding = specification.encoding
- for i=1,#suffixes do
- local suffix = suffixes[i]
- if lexer and extensions then
- extensions[suffix] = lexer
- end
- specifications[suffix] = specification
- if lexer then
- setters[lexer] = function()
- if encoding == "7-BIT-ASCII" then
- setsevenbitascii(buffer)
- end
- if setter then
- setter(lexer)
- end
- end
- end
- end
- end
-end
-
--- Too much interference so I might drop all the old stuff eventually.
-
-local function synchronize(lexer)
- if lexer then
- local setter = lexer and setters[lexer]
- if setter then
- local action = context.synchronize
- if action then
- action()
- end
- -- userunner()
- setter(lexer)
- else
- -- useoldrunner()
- end
- end
-end
-
-events.connect(events.FILE_OPENED,function(filename)
- synchronize(buffer:get_lexer())
-end)
-
-events.connect(events.LEXER_LOADED,function(lexer)
- synchronize(lexer)
-end)
-
--- obsolete
-
--- events.connect(events.BUFFER_AFTER_SWITCH,function()
--- synchronize(buffer:get_lexer())
--- end)
-
--- events.connect(events.VIEW_AFTER_SWITCH,function()
--- synchronize(buffer:get_lexer())
--- end)
-
--- events.connect(events.BUFFER_NEW,function()
--- synchronize(buffer:get_lexer())
--- end)
-
--- events.connect(events.VIEW_NEW,function()
--- synchronize(buffer:get_lexer())
--- end)
-
--- events.connect(events.RESET_AFTER,function()
--- synchronize(buffer:get_lexer())
--- end)
-
--- local oldtools = { }
--- local usingold = false
--- local toolsmenu = textadept.menu.menubar [_L['_Tools']]
---
--- for i=1,#toolsmenu do
--- oldtools[i] = toolsmenu[i]
--- end
---
--- local function replace(tools)
--- local n = #toolsmenu
--- local m = #tools
--- for i=1,m do
--- toolsmenu[i] = tools[i]
--- end
--- for i=n,m+1,-1 do
--- toolsmenu[i] = nil
--- end
--- end
---
--- local function useoldrunner()
--- if not usingold then
--- keys [OSX and 'mr' or 'cr' ] = oldrunner.run
--- keys [OSX and 'mR' or (GUI and 'cR' or 'cmr')] = oldrunner.compile
--- keys [OSX and 'mB' or (GUI and 'cB' or 'cmb')] = oldrunner.build
--- keys [OSX and 'mX' or (GUI and 'cX' or 'cmx')] = oldrunner.stop
--- --
--- replace(oldtools)
--- --
--- usingold = true
--- end
--- end
---
--- local function userunner()
--- if usingold then
--- keys [OSX and 'mr' or 'cr' ] = runner.process
--- keys [OSX and 'mR' or (GUI and 'cR' or 'cmr')] = runner.check
--- keys [OSX and 'mB' or (GUI and 'cB' or 'cmb')] = runner.preview
--- keys [OSX and 'mX' or (GUI and 'cX' or 'cmx')] = runner.quit
--- --
--- replace(newtools)
--- --
--- usingold = false
--- end
--- end
---
--- userunner()
diff --git a/context/data/textadept/context/modules/textadept-context-runner.lua b/context/data/textadept/context/modules/textadept-context-runner.lua
deleted file mode 100644
index 1181b13a3..000000000
--- a/context/data/textadept/context/modules/textadept-context-runner.lua
+++ /dev/null
@@ -1,1100 +0,0 @@
-local info = {
- version = 1.002,
- comment = "prototype textadept runner for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- This is an adapted version of the run code by mitchell.att.foicica.corunner. The main
--- reason I started patching is that long lines got broken in the middle so we needed
--- to have a more clever line splitter that saves half of a line for later. Then I
--- decided to come up with a few more variants so in the end ... it's just too tempting
--- make something that exactly suits out needs. In fact, maybe I'll do that some day:
--- take core textadept and make a dedicated variant for the kind of processing that we
--- do and make it suitable for document authors (the manual says that is doable). In that
--- case I can also use a lot of already written helpers.
---
--- The error scanner is not needed. If I need one, it will be using a lexers applied
--- afterwards because working on half lines is not going to work out well anyway.
---
--- Here I removed iconv calls as in context we use utf (less hassle with fonts too). One
--- can always use the original approach.
---
--- The events seems to have hard coded names, Also, the name of the message buffer cannot
--- be changes because otherwise we get a message when the session is restored. I don't
--- care about locales.
---
--- Somehow the process hangs when I refresh the pdf viewer, this doesn't happen in scite so
--- the underlying code is for the moment less reliant.
-
-local match, gsub, find, format, gmatch, rep = string.match, string.gsub, string.find, string.format, string.gmatch, string.rep
-local char, lower, upper, sub = string.char, string.lower, string.upper, string.sub
-local concat, sort = table.concat, table.sort
-local assert, type = assert, type
-
-local original = textadept.run
-local runner = { }
-
-runner.MARK_WARNING = original.MARK_WARNING
-runner.MARK_ERROR = original.MARK_ERROR
-
-local specifications = { }
-runner.specifications = specifications
-
------ RUNNER_EVENT = "[Context Runner]"
-local OUTPUT_BUFFER = '[Message Buffer]' -- CONSOLE
-
------ events.RUNNER_EVENT = RUNNER_EVENT
-
-local currentprocess = nil
-local xbuffer = nil
-
-local function find_buffer(buffer_type)
- for i=1,#_BUFFERS do
- local buffer = _BUFFERS[i]
- if buffer._type == buffer_type then
- return buffer
- end
- end
-end
-
-local function print_output(str)
- local print_buffer = find_buffer(OUTPUT_BUFFER)
- -- some simplified magic copied from the adeptext runner
- if not print_buffer then
- if not ui.tabs then
- view:split()
- end
- print_buffer = buffer.new()
- print_buffer._type = OUTPUT_BUFFER
- events.emit(events.FILE_OPENED)
- else
- for i=1,#_VIEWS do
- local view = _VIEWS[i]
- if view.buffer._type == OUTPUT_BUFFER then
- ui.goto_view(view)
- break
- end
- end
- if view.buffer._type ~= OUTPUT_BUFFER then
- view:goto_buffer(print_buffer)
- end
- end
- print_buffer:append_text(str)
- print_buffer:goto_pos(buffer.length)
- print_buffer:set_save_point()
- return true -- quits
-end
-
-local function trace_output(str)
- xbuffer = buffer
- print_output(str)
- if xbuffer then
- view:goto_buffer(xbuffer)
- end
-end
-
-local function clear_output()
- xbuffer = buffer
- local print_buffer = find_buffer(OUTPUT_BUFFER)
- if print_buffer then
- print_buffer:clear_all()
- end
-end
-
-local function is_output(buffer)
- return buffer._type == OUTPUT_BUFFER
-end
-
--- Instead of events we will have out own interceptors so that we don't have
--- interference. The main problem is that we don't have much control over the
--- order. If we have much actions I can always come up with something.
-
--- The textadept console seems a bit slower than the one in scite (which does some
--- output pane parsing so it could be even faster). Maybe it relates to the way
--- the program is run. Scite provides some more control over this. It might have
--- to do with the way tex pipes to the console, because from a simple lua run it's
--- quite fast. Maybe calling cmd is not optimal. Anyhow, it means that for now I
--- should not use textadept when running performance test that need to compare with
--- the past.
-
-local function process(buffer,filename,action)
- if not filename then
- filename = buffer.filename
- end
- if not filename then
- return
- end
- if filename == buffer.filename then
- buffer:annotation_clear_all() -- needed ?
- io.save_file()
- end
- if filename == "" then
- return
- end
- local suffix = match(filename,'[^/\\.]+$')
- local specification = specifications[suffix]
- if not specification then
- return
- end
- local action = specification[action]
- local quitter = nil
- if type(action) == "table" then
- action = action.command
- quitter = action.quitter
- end
- if type(action) ~= "string" then
- return
- end
- clear_output()
- local pathpart = ''
- local basename = filename
- if find(filename,'[/\\]') then
- pathpart, basename = match(filename,'^(.+[/\\])([^/\\]+)$')
- end
- -- beter strip one from the end
- local nameonly = match(basename,'^(.+)%.')
- -- more in sync which what we normally do (i'd rather use the ctx template mechanism)
- local command = gsub(action,'%%(.-)%%', {
- filename = filename,
- pathname = dirname,
- dirname = dirname,
- pathpart = dirname,
- basename = basename,
- nameonly = nameonly,
- suffix = suffix,
- selection = function() return match(buffer.get_sel_text(),"%s*([A-Za-z]+)") end,
- })
- -- for fun i'll add a ansi escape sequence lexer some day
- local function emit_output(output)
- print_output(output) -- events.emit(RUNNER_EVENT,...)
- -- afaik there is no way to check if we're waiting for input (no input callback)
- if quitter then
- local quit, message = quitter(interceptor)
- if quit then
- if message then
- print_output(format("\n\n> quit: %s\n",message))
- end
- runner.quit()
- end
- end
- end
- local function exit_output(status)
- print_output(format("\n\n> exit: %s, press esc to return to source\n",status)) -- events.emit(RUNNER_EVENT,...)
- end
- print_output(format("> command: %s\n",command)) -- events.emit(RUNNER_EVENT,...)
- currentprocess = assert(os.spawn(command, pathpart, emit_output, emit_output, exit_output))
-end
-
-function runner.install(name)
- return function(filename)
- process(buffer,filename,name)
- end
-end
-
-runner.check = runner.install("check")
-runner.process = runner.install("process")
-runner.preview = runner.install("preview")
-
-function runner.resultof(command) -- from l-os.lua
- local handle = io.popen(command,"r")
- if handle then
- local result = handle:read("*all") or ""
- handle:close()
- return result
- else
- return ""
- end
-end
-
-function runner.quit()
- if currentprocess then
- assert(currentprocess:kill())
- end
-end
-
-local function char_added(code)
- if code == 10 and currentprocess and currentprocess:status() == 'running' and buffer._type == OUTPUT_BUFFER then
- local line_num = buffer:line_from_position(buffer.current_pos) - 1
- currentprocess:write((buffer:get_line(line_num)))
- end
- return true -- quits
-end
-
-function runner.goto_error(line, next)
- -- see original code for how to do it
-end
-
-local function key_press(code)
- if xbuffer and keys.KEYSYMS[code] == 'esc' then
- view:goto_buffer(xbuffer)
- return true
- end
-end
-
-local function double_click()
- if xbuffer and is_output(buffer) then
- view:goto_buffer(xbuffer)
- return true
- end
-end
-
---
-
-local l2 = char(0xC0)
-local l3 = char(0xE0)
-local l4 = char(0xF0)
-
-local function utflen(str)
- local n = 0
- local l = 0
- for s in gmatch(str,".") do
- if l > 0 then
- l = l - 1
- else
- n = n + 1
- if s >= l4 then
- l = 3
- elseif s >= l3 then
- l = 2
- elseif s >= l2 then
- l = 1
- end
- end
- end
- return n
-end
-
-local function prepare()
- local startposition = buffer.selection_start
- local endposition = buffer.selection_end
-
- if startposition == endposition then return end
-
- buffer.current_pos = startposition
- buffer:home()
-
- buffer.current_pos = endposition
- buffer:line_end_extend()
-
- local firstposition = buffer.selection_start
- local lastposition = buffer.selection_end
-
- local firstline = buffer:line_from_position(startposition)
- local lastline = buffer:line_from_position(endposition)
-
- local startcolumn = startposition - firstposition
- local endcolumn = lastposition - endposition + 1
- local selection = buffer:get_sel_text()
-
- -- trace_output(firstposition .. " " .. startposition .. "\n")
- -- trace_output(endposition .. " " .. lastposition .. "\n")
-
- return startposition, endposition, firstposition, lastposition, startcolumn, endcolumn, firstline, lastline, selection
-end
-
-local function replace(startposition,lastposition,replacement)
- if type(replacement) == "table" then
- replacement = concat(replacement,"\n")
- end
- -- trace_output(replacement .. "\n")
-
- buffer.current_pos = startposition
-
- buffer:begin_undo_action()
- buffer:set_target_range(startposition,lastposition)
- buffer:replace_target(replacement)
- buffer:end_undo_action()
-
- buffer.selection_start = startposition
- buffer.selection_end = startposition
-end
-
--- This is old code, from my early lua days, so not that nice and optimal, but
--- no one sees it and performance is irrelevant here.
-
-local magicstring = rep("<ctx-crlf/>", 2)
-
-function runner.wrap()
-
- local startposition, endposition, firstposition, lastposition, startcolumn, endcolumn, firstline, lastline, selection = prepare()
-
- if not startposition then
- return
- end
-
- local wraplength = buffer.wrap_length
- local length = tonumber(wraplength) or 80
- local replacement = { }
- local templine = ""
- local tempsize = 0
- local indentation = rep(' ',startcolumn)
-
- selection = gsub(selection,"[\n\r][\n\r]","\n")
- selection = gsub(selection,"\n\n+"," " .. magicstring .. " ")
- selection = gsub(selection,"^%s",'')
-
- for snippet in gmatch(selection,"%S+") do
- if snippet == magicstring then
- replacement[#replacement+1] = templine
- replacement[#replacement+1] = ""
- templine = ""
- tempsize = 0
- else
- local snipsize = utflen(snippet)
- if tempsize + snipsize > length then
- replacement[#replacement+1] = templine
- templine = indentation .. snippet
- tempsize = startcolumn + snipsize
- elseif tempsize == 0 then
- templine = indentation .. snippet
- tempsize = tempsize + startcolumn + snipsize
- else
- templine = templine .. " " .. snippet
- tempsize = tempsize + 1 + snipsize
- end
- end
- end
-
- replacement[#replacement+1] = templine
- replacement[1] = gsub(replacement[1],"^%s+","")
-
- if endcolumn == 0 then
- replacement[#replacement+1] = ""
- end
-
- replace(startposition,lastposition,replacement)
-
-end
-
-local magicstring = rep("<multiplelines/>", 2)
-
-function runner.unwrap()
-
- local startposition, endposition, firstposition, lastposition, startcolumn, endcolumn, selection, firstline, lastline = prepare()
-
- if not startposition then
- return
- end
-
- startposition = firstposition
- endposition = lastposition
-
- local selection = gsub(selection,"[\n\r][\n\r]+", " " .. magicstring .. " ")
- local replacement = { }
-
- for snippet in gmatch(selection,"%S+") do
- replacement[#replacement+1] = snippet == magicstring and "" or snippet
- end
-
- if endcolumn == 0 then
- replacement[#replacement+1] = ""
- end
-
- replace(startposition,lastposition,replacement)
-
-end
-
--- This is real old crappy code which doesn't really pass my current qa standards but
--- it does the job so ... (hashing the blobs would work ok).
-
-local function grab(str,delimiter)
- local list = { }
- for snippet in gmatch(str,delimiter) do
- list[#list+1] = snippet
- end
- return list
-end
-
-local function alphacmp_yes(a,b)
- return lower(gsub(sub(a,i),"0"," ")) < lower(gsub(sub(b,i),"0"," "))
-end
-
-local function alphacmp_nop(a,b)
- return lower(a) < lower(b)
-end
-
-local function alphasort(list,i)
- sort(list,i and i > 0 and alphacmp_yes or alphacmp_nop)
-end
-
-function runner.sort()
-
- local startposition, endposition, firstposition, lastposition, startcolumn, endcolumn, firstline, lastline, selection = prepare()
-
- if not startposition then
- return
- end
-
- startposition = firstposition
- endposition = lastposition
-
- local list = grab(selection,"[^\n\r]+")
-
- alphasort(list,startcolumn)
-
- if endcolumn == 0 then
- list[#list+1] = ""
- end
-
- replace(startposition,lastposition,list)
-
-end
-
--- Tricky: we can't reset an event (because we need to know the function which is
--- local. So, a first solution injected a false into the table which will trigger
--- a break and then I found out that returning true has the same effect. Then I
--- found out that we can have our own events and next decided not to use them at
--- all.
-
--- events.connect(events.RUNNER_EVENT, print_output, 1)
-
-events.connect(events.CHAR_ADDED, char_added, 1)
-events.connect(events.KEYPRESS, key_press, 1)
-events.connect(events.DOUBLE_CLICK, double_click, 1)
-
--- We need to get rid of the crash due to macros.lua event crash in
---
--- -- textadept.menu.menubar[_L['_Tools']][_L['Select Co_mmand']][2],
-
--- for i=1,#_VIEWS do
--- if _VIEWS[i].buffer._type == "[Message Buffer]" then
--- ui.goto_view(_VIEWS[i])
--- buffer.current_pos = buffer.current_pos
--- io.close_buffer()
--- break
--- end
--- end
--- for i = 1, #_BUFFERS do
--- if _BUFFERS[i]._type == "[Message Buffer]" then
--- view:goto_buffer(_BUFFERS[i])
--- buffer.current_pos = buffer.current_pos
--- io.close_buffer()
--- break
--- end
--- end
-
--- I don't want the indentation. I also want an extra space which in turn means
--- a more extensive test. I also don't care about a suffix. Adapted a bit to
--- match the code above.
-
-function runner.blockcomment()
- local buffer = buffer
- local comment = textadept.editing.comment_string[buffer:get_lexer(true)]
-
- if not comment or comment == "" then
- return
- end
-
- local prefix = comment:match('^([^|]+)|?([^|]*)$')
- local usedprefix = prefix
-
- if not prefix then
- return
- end
-
- if not find(prefix,"%s$") then
- usedprefix = prefix .. " "
- end
-
- local n_prefix = #prefix
- local n_usedprefix = #usedprefix
-
- local startposition = buffer.selection_start
- local endposition = buffer.selection_end
- local firstline = buffer:line_from_position(startposition)
- local lastline = buffer:line_from_position(endposition)
-
- if firstline ~= lastline and endposition == buffer:position_from_line(lastline) then
- lastline = lastline - 1
- end
-
- startposition = buffer.line_end_position[startposition] - startposition
- endposition = buffer.length - endposition
-
- buffer:begin_undo_action()
-
- for line=firstline,lastline do
- local p = buffer:position_from_line(line)
- if buffer:text_range(p, p + n_usedprefix) == usedprefix then
- buffer:delete_range(p, n_usedprefix)
- elseif buffer:text_range(p, p + n_prefix) == prefix then
- buffer:delete_range(p, n_prefix)
- else
- buffer:insert_text(p, usedprefix)
- end
- end
-
- buffer:end_undo_action()
-
- startposition = buffer.line_end_position[firstline] - startposition
- endposition = buffer.length - endposition
-
- -- whatever ...
-
- local start_pos = buffer:position_from_line(firstline)
-
- if start_pos > startposition then
- startposition = start_pos
- end
- if start_pos > endposition then
- endposition = start_pos
- end
-
- if firstline ~= lastline then
- buffer:set_sel(startposition, endposition)
- else
- buffer:goto_pos(endposition)
- end
-end
-
--- This only works partially as for some reason scite shows proper math symbols while
--- here we don't see them. I need to look into that.
-
-local textlists = { -- taken from sort-lan.lua
- en = {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z",
- },
- nl = {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z",
- },
- fr = {
- "a", "æ", "b", "c", "ç", "d", "e", "è", "é", "ê",
- "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
- "p", "q", "r", "s", "t", "u", "v", "w", "x", "y",
- "z",
-
- "A", "Æ", "B", "C", "Ç", "D", "E", "È", "É", "Ê",
- "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
- "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y",
- "Z",
-
- },
- de = {
- "a", "ä", "b", "c", "d", "e", "f", "g", "h", "i",
- "j", "k", "l", "m", "n", "o", "ö", "p", "q", "r",
- "s", "ß", "t", "u", "ü", "v", "w", "x", "y", "z",
-
- "A", "Ä", "B", "C", "D", "E", "F", "G", "H", "I",
- "J", "K", "L", "M", "N", "O", "Ö", "P", "Q", "R",
- "S", "SS", "T", "U", "Ü", "V", "W", "X", "Y", "Z",
- },
- fi = { -- finish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
- },
- sl = { -- slovenian
- "a", "b", "c", "č", "ć", "d", "đ", "e", "f", "g", "h", "i",
- "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "š", "t",
- "u", "v", "w", "x", "y", "z", "ž",
-
- "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F", "G", "H", "I",
- "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "Š", "T",
- "U", "V", "W", "X", "Y", "Z", "Ž",
- },
- ru = { -- rusian
- "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и",
- "і", "й", "к", "л", "м", "н", "о", "п", "р", "с",
- "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
- "ь", "ѣ", "э", "ю", "я", "ѳ", "ѵ",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И",
- "І", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С",
- "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы",
- "Ь", "Ѣ", "Э", "Ю", "Я", "Ѳ", "Ѵ",
- },
- uk = { -- ukraninuan
- "а", "б", "в", "г", "ґ", "д", "е", "є", "ж", "з", "и", "і",
- "ї", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у",
- "ф", "х", "ц", "ч", "ш", "щ", "ь", "ю", "я",
-
- "А", "Б", "В", "Г", "Ґ", "Д", "Е", "Є", "Ж", "З", "И", "І",
- "Ї", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У",
- "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ю", "Я",
- },
- be = { -- belarusia
- "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "і",
- "й", "к", "л", "м", "н", "о", "п", "р", "с", "т",
- "у", "ў", "ф", "х", "ц", "ч", "ш", "ы", "ь", "э",
- "ю", "я",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "І",
- "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т",
- "У", "Ў", "Ф", "Х", "Ц", "Ч", "Ш", "Ы", "Ь", "Э",
- "Ю", "Я",
- },
- bg = { -- bulgarian
- "а", "б", "в", "г", "д", "е", "ж", "з","и", "й",
- "к", "a", "л", "a", "м", "н", "о", "п", "р", "с",
- "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ь",
- "ю", "я",
-
- "А", "Б", "В", "Г", "Д", "Е", "Ж", "З","И", "Й",
- "К", "A", "Л", "A", "М", "Н", "О", "П", "Р", "С",
- "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ь",
- "Ю", "Я",
- },
- pl = { -- polish
- "a", "ą", "b", "c", "ć", "d", "e", "ę", "f", "g",
- "h", "i", "j", "k", "l", "ł", "m", "n", "ń", "o",
- "ó", "p", "q", "r", "s", "ś", "t", "u", "v", "w",
- "x", "y", "z", "ź", "ż",
-
- "A", "Ą", "B", "C", "Ć", "D", "E", "Ę", "F", "G",
- "H", "I", "J", "K", "L", "Ł", "M", "N", "Ń", "O",
- "Ó", "P", "Q", "R", "S", "Ś", "T", "U", "V", "W",
- "X", "Y", "Z", "Ź", "Ż",
- },
- cz = { -- czech
- "a", "á", "b", "c", "č", "d", "ď", "e", "é", "ě",
- "f", "g", "h", "i", "í", "j", "k", "l", "m",
- "n", "ň", "o", "ó", "p", "q", "r", "ř", "s", "š",
- "t", "ť", "u", "ú", "ů", "v", "w", "x", "y", "ý",
- "z", "ž",
-
- "A", "Á", "B", "C", "Č", "D", "Ď", "E", "É", "Ě",
- "F", "G", "H", "I", "Í", "J", "K", "L", "M",
- "N", "Ň", "O", "Ó", "P", "Q", "R", "Ř", "S", "Š",
- "T", "Ť", "U", "Ú", "Ů", "V", "W", "X", "Y", "Ý",
- "Z", "Ž",
- },
- sk = { -- slovak
- "a", "á", "ä", "b", "c", "č", "d", "ď",
- "e", "é", "f", "g", "h", ch, "i", "í", "j", "k",
- "l", "ĺ", "ľ", "m", "n", "ň", "o", "ó", "ô", "p",
- "q", "r", "ŕ", "s", "š", "t", "ť", "u", "ú", "v",
- "w", "x", "y", "ý", "z", "ž",
-
- "A", "Á", "Ä", "B", "C", "Č", "D", "Ď",
- "E", "É", "F", "G", "H", "I", "Í", "J", "K",
- "L", "Ĺ", "Ľ", "M", "N", "Ň", "O", "Ó", "Ô", "P",
- "Q", "R", "Ŕ", "S", "Š", "T", "Ť", "U", "Ú", "V",
- "W", "X", "Y", "Ý", "Z", "Ž",
- },
- hr = { -- croatian
- "a", "b", "c", "č", "ć", "d", "đ", "e", "f",
- "g", "h", "i", "j", "k", "l", "m", "n",
- "o", "p", "r", "s", "š", "t", "u", "v", "z", "ž",
-
- "A", "B", "C", "Č", "Ć", "D", "Đ", "E", "F",
- "G", "H", "I", "J", "K", "L", "M", "N",
- "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž",
- },
- sr = { -- serbian
- "а", "б", "в", "г", "д", "ђ", "е", "ж", "з", "и",
- "ј", "к", "л", "љ", "м", "н", "њ", "о", "п", "р",
- "с", "т", "ћ", "у", "ф", "х", "ц", "ч", "џ", "ш",
-
- "А", "Б", "В", "Г", "Д", "Ђ", "Е", "Ж", "З", "И",
- "Ј", "К", "Л", "Љ", "М", "Н", "Њ", "О", "П", "Р",
- "С", "Т", "Ћ", "У", "Ф", "Х", "Ц", "Ч", "Џ", "Ш",
- },
- no = { -- norwegian
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
- },
- da = { --danish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Æ", "Ø", "Å",
- },
- sv = { -- swedish
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
- "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
- "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
-
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
- "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
- "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö",
- },
- is = { -- islandic
- "a", "á", "b", "d", "ð", "e", "é", "f", "g", "h",
- "i", "í", "j", "k", "l", "m", "n", "o", "ó", "p",
- "r", "s", "t", "u", "ú", "v", "x", "y", "ý", "þ",
- "æ", "ö",
-
- "A", "Á", "B", "D", "Ð", "E", "É", "F", "G", "H",
- "I", "Í", "J", "K", "L", "M", "N", "O", "Ó", "P",
- "R", "S", "T", "U", "Ú", "V", "X", "Y", "Ý", "Þ",
- "Æ", "Ö",
- },
- -- gr = { -- greek
- -- "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
- -- "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
- -- "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
- -- "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
- -- "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
- -- "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
- -- "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
- -- "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
- -- "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
- -- "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
- -- "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
- -- "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
- -- "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
- -- "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
- -- "ᾣ", "ᾦ", "ᾧ",
- --
- -- "Α", "Ά", "Ὰ", "Α͂", "Ἀ", "Ἁ", "Ἄ", "Ἂ", "Ἆ",
- -- "Ἁ", "Ἅ", "Ἃ", "Ἇ",
- -- "Β", "Γ", "Δ", "Ε", "Έ", "Ὲ",
- -- "Ἐ", "Ἔ", "Ἒ", "Ἑ", "Ἕ", "Ἓ", "Ζ", "Η", "Η", "Ή",
- -- "Ὴ", "Η͂", "Ἠ", "Ἤ", "Ἢ", "Ἦ", "Ἡ", "Ἥ",
- -- "Ἣ", "Ἧ",
- -- "Θ", "Ι", "Ί", "Ὶ", "Ι͂", "Ἰ", "Ἴ", "Ἲ",
- -- "Ἶ", "Ἱ", "Ἵ", "Ἳ", "Ἷ", "Ϊ", "Ϊ́", "Ϊ̀", "Ϊ͂", "Κ",
- -- "Λ", "Μ", "Ν", "Ξ", "Ο", "Ό", "Ὸ", "Ὀ", "Ὄ", "Ὂ",
- -- "Ὁ", "Ὅ", "Ὃ", "Π", "Ρ", "Ρ̓", "Ῥ", "Σ", "Σ", "Τ",
- -- "Υ", "Ύ", "Ὺ", "Υ͂", "Υ̓", "Υ̓́", "Υ̓̀", "Υ̓͂", "Ὑ", "Ὕ",
- -- "Ὓ", "Ὗ", "Ϋ", "Ϋ́", "Ϋ̀", "Ϋ͂", "Φ", "Χ", "Ψ", "Ω",
- -- "Ώ", "Ὼ", "Ω͂", "Ὠ", "Ὤ", "Ὢ", "Ὦ", "Ὡ",
- -- "Ὥ", "Ὣ", "Ὧ",
- -- },
- gr = { -- greek
- "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",
- "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "τ", "υ",
- "φ", "χ", "ψ", "ω",
-
- "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ",
- "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ",
- "Χ", "Ψ", "Ω",
- },
- la = { -- latin
- "a", "ā", "ă", "b", "c", "d", "e", "ē", "ĕ", "f",
- "g", "h", "i", "ī", "ĭ", "j", "k", "l", "m", "n",
- "o", "ō", "ŏ", "p", "q", "r", "s", "t", "u", "ū",
- "ŭ", "v", "w", "x", "y", "ȳ", "y̆", "z", "æ",
-
- "A", "Ā", "Ă", "B", "C", "D", "E", "Ē", "Ĕ", "F",
- "G", "H", "I", "Ī", "Ĭ", "J", "K", "L", "M", "N",
- "O", "Ō", "Ŏ", "P", "Q", "R", "S", "T", "U", "Ū",
- "Ŭ", "V", "W", "X", "Y", "Ȳ", "Y̆", "Z", "Æ",
- },
- it = { -- italian
- "a", "á", "b", "c", "d", "e", "é", "è", "f", "g",
- "h", "i", "í", "ì", "j", "k", "l", "m", "n", "o",
- "ó", "ò", "p", "q", "r", "s", "t", "u", "ú", "ù",
- "v", "w", "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É", "È", "F", "G",
- "H", "I", "Í", "Ì", "J", "K", "L", "M", "N", "O",
- "Ó", "Ò", "P", "Q", "R", "S", "T", "U", "Ú", "Ù",
- "V", "W", "X", "Y", "Z",
- },
- ro = { -- romanian
- "a", "ă", "â", "b", "c", "d", "e", "f", "g", "h",
- "i", "î", "j", "k", "l", "m", "n", "o", "p", "q",
- "r", "s", "ș", "t", "ț", "u", "v", "w", "x", "y",
- "z",
-
- "A", "Ă", "Â", "B", "C", "D", "E", "F", "G", "H",
- "I", "Î", "J", "K", "L", "M", "N", "O", "P", "Q",
- "R", "S", "Ș", "T", "Ț", "U", "V", "W", "X", "Y",
- "Z",
- },
- es = { -- spanish
- "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
- "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
- "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
- "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É", "F", "G", "H",
- "I", "Í", "J", "K", "L", "M", "N", "Ñ", "O", "Ó",
- "P", "Q", "R", "S", "T", "U", "Ú", "Ü", "V", "W",
- "X", "Y", "Z",
- },
- pt = { -- portuguese
- "a", "á", "â", "ã", "à", "b", "c", "ç", "d", "e",
- "é", "ê", "f", "g", "h", "i", "í", "j", "k", "l",
- "m", "n", "o", "ó", "ô", "õ", "p", "q", "r", "s",
- "t", "u", "ú", "ü", "v", "w", "x", "y", "z",
-
- "A", "Á", "Â", "Ã", "À", "B", "C", "Ç", "D", "E",
- "É", "Ê", "F", "G", "H", "I", "Í", "J", "K", "L",
- "M", "N", "O", "Ó", "Ô", "Õ", "P", "Q", "R", "S",
- "T", "U", "Ú", "Ü", "V", "W", "X", "Y", "Z",
- },
- lt = { -- lithuanian
- "a", "ą", "b", "c", "ch", "č", "d", "e", "ę", "ė",
- "f", "g", "h", "i", "į", "y", "j", "k", "l", "m",
- "n", "o", "p", "r", "s", "š", "t", "u", "ų", "ū",
- "v", "z", "ž",
-
- "A", "Ą", "B", "C", "CH", "Č", "D", "E", "Ę", "Ė",
- "F", "G", "H", "I", "Į", "Y", "J", "K", "L", "M",
- "N", "O", "P", "R", "S", "Š", "T", "U", "Ų", "Ū",
- "V", "Z", "Ž",
- },
- lv = { -- latvian
- "a", "ā", "b", "c", "č", "d", "e", "ē", "f", "g",
- "ģ", "h", "i", "ī", "j", "k", "ķ", "l", "ļ", "m",
- "n", "ņ", "o", "ō", "p", "r", "ŗ", "s", "š", "t",
- "u", "ū", "v", "z", "ž",
-
- "A", "Ā", "B", "C", "Č", "D", "E", "Ē", "F", "G",
- "Ģ", "H", "I", "Ī", "J", "K", "Ķ", "L", "Ļ", "M",
- "N", "Ņ", "O", "Ō", "P", "R", "Ŗ", "S", "Š", "T",
- "U", "Ū", "V", "Z", "Ž",
- },
- hu = { -- hungarian
- "a", "á", "b", "c", "d", "e", "é",
- "f", "g", "h", "i", "í", "j", "k", "l",
- "m", "n", "o", "ó", "ö", "ő", "p", "q", "r",
- "s", "t", "u", "ú", "ü", "ű", "v", "w",
- "x", "y", "z",
-
- "A", "Á", "B", "C", "D", "E", "É",
- "F", "G", "H", "I", "Í", "J", "K", "L",
- "M", "N", "O", "Ó", "Ö", "Ő", "P", "Q", "R",
- "S", "T", "U", "Ú", "Ü", "Ű", "V", "W",
- "X", "Y", "Z",
- },
- et = { -- estonian
- "a", "b", "d", "e", "f", "g", "h", "i", "j", "k",
- "l", "m", "n", "o", "p", "r", "s", "š", "z", "ž",
- "t", "u", "v", "w", "õ", "ä", "ö", "ü", "x", "y",
-
- "A", "B", "D", "E", "F", "G", "H", "I", "J", "K",
- "L", "M", "N", "O", "P", "R", "S", "Š", "Z", "Ž",
- "T", "U", "V", "W", "Õ", "Ä", "Ö", "Ü", "X", "Y",
- },
- -- jp = { -- japanese
- -- "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ",
- -- "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と",
- -- "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ",
- -- "ま", "み", "む", "め", "も", "や", "ゆ", "よ",
- -- "ら", "り", "る", "れ", "ろ", "わ", "ゐ", "ゑ", "を", "ん",
- -- },
-}
-
-local textselector = { }
-for k, v in next, textlists do
- textselector[#textselector+1] = k
-end
-sort(textselector)
-
-local mathsets = {
- { "tf", {
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
- "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
- }, },
- { "bf", {
- "𝐛", "𝐜", "𝐝", "𝐞", "𝐟", "𝐠", "𝐡", "𝐢", "𝐣", "𝐤", "𝐥", "𝐦", "𝐧", "𝐨", "𝐩", "𝐪", "𝐫", "𝐬", "𝐭", "𝐮", "𝐯", "𝐰", "𝐱", "𝐲", "𝐳",
- "𝐀", "𝐁", "𝐂", "𝐃", "𝐄", "𝐅", "𝐆", "𝐇", "𝐈", "𝐉", "𝐊", "𝐋", "𝐌", "𝐍", "𝐎", "𝐏", "𝐐", "𝐑", "𝐒", "𝐓", "𝐔", "𝐕", "𝐖", "𝐗", "𝐘", "𝐙", "𝐚",
- "𝟎", "𝟏", "𝟐", "𝟑", "𝟒", "𝟓", "𝟔", "𝟕", "𝟖", "𝟗"
- }, },
- { "it", {
- "𝑎", "𝑏", "𝑐", "𝑑", "𝑒", "𝑓", "𝑔", "ℎ", "𝑖", "𝑗", "𝑘", "𝑙", "𝑚", "𝑛", "𝑜", "𝑝", "𝑞", "𝑟", "𝑠", "𝑡", "𝑢", "𝑣", "𝑤", "𝑥", "𝑦", "𝑧",
- "𝐴", "𝐵", "𝐶", "𝐷", "𝐸", "𝐹", "𝐺", "𝐻", "𝐼", "𝐽", "𝐾", "𝐿", "𝑀", "𝑁", "𝑂", "𝑃", "𝑄", "𝑅", "𝑆", "𝑇", "𝑈", "𝑉", "𝑊", "𝑋", "𝑌", "𝑍",
- }, },
- { "bi", {
- "𝒂", "𝒃", "𝒄", "𝒅", "𝒆", "𝒇", "𝒈", "𝒉", "𝒊", "𝒋", "𝒌", "𝒍", "𝒎", "𝒏", "𝒐", "𝒑", "𝒒", "𝒓", "𝒔", "𝒕", "𝒖", "𝒗", "𝒘", "𝒙", "𝒚", "𝒛",
- "𝑨", "𝑩", "𝑪", "𝑫", "𝑬", "𝑭", "𝑮", "𝑯", "𝑰", "𝑱", "𝑲", "𝑳", "𝑴", "𝑵", "𝑶", "𝑷", "𝑸", "𝑹", "𝑺", "𝑻", "𝑼", "𝑽", "𝑾", "𝑿", "𝒀", "𝒁",
- }, },
- { "sc", {
- "𝒵", "𝒶", "𝒷", "𝒸", "𝒹", "ℯ", "𝒻", "ℊ", "𝒽", "𝒾", "𝒿", "𝓀", "𝓁", "𝓂", "𝓃", "ℴ", "𝓅", "𝓆", "𝓇", "𝓈", "𝓉", "𝓊", "𝓋", "𝓌", "𝓍", "𝓎", "𝓏",
- "𝒜", "ℬ", "𝒞", "𝒟", "ℰ", "ℱ", "𝒢", "ℋ", "ℐ", "𝒥", "𝒦", "ℒ", "ℳ", "𝒩", "𝒪", "𝒫", "𝒬", "ℛ", "𝒮", "𝒯", "𝒰", "𝒱", "𝒲", "𝒳", "𝒴",
- }, },
- { "sc bf", {
- "𝓪", "𝓫", "𝓬", "𝓭", "𝓮", "𝓯", "𝓰", "𝓱", "𝓲", "𝓳", "𝓴", "𝓵", "𝓶", "𝓷", "𝓸", "𝓹", "𝓺", "𝓻", "𝓼", "𝓽", "𝓾", "𝓿", "𝔀", "𝔁", "𝔂", "𝔃",
- "𝓐", "𝓑", "𝓒", "𝓓", "𝓔", "𝓕", "𝓖", "𝓗", "𝓘", "𝓙", "𝓚", "𝓛", "𝓜", "𝓝", "𝓞", "𝓟", "𝓠", "𝓡", "𝓢", "𝓣", "𝓤", "𝓥", "𝓦", "𝓧", "𝓨", "𝓩",
- }, },
- { "fr", {
- "𝔞", "𝔟", "𝔠", "𝔡", "𝔢", "𝔣", "𝔤", "𝔥", "𝔦", "𝔧", "𝔨", "𝔩", "𝔪", "𝔫", "𝔬", "𝔭", "𝔮", "𝔯", "𝔰", "𝔱", "𝔲", "𝔳", "𝔴", "𝔵", "𝔶", "𝔷",
- "𝔄", "𝔅", "ℭ", "𝔇", "𝔈", "𝔉", "𝔊", "ℌ", "ℑ", "𝔍", "𝔎", "𝔏", "𝔐", "𝔑", "𝔒", "𝔓", "𝔔", "ℜ", "𝔖", "𝔗", "𝔘", "𝔙", "𝔚", "𝔛", "𝔜", "ℨ",
- }, },
- { "ds", {
- "𝕓", "𝕔", "𝕕", "𝕖", "𝕗", "𝕘", "𝕙", "𝕚", "𝕛", "𝕜", "𝕝", "𝕞", "𝕟", "𝕠", "𝕡", "𝕢", "𝕣", "𝕤", "𝕥", "𝕦", "𝕧", "𝕨", "𝕩", "𝕪", "𝕫",
- "𝔸", "𝔹", "ℂ", "𝔻", "𝔼", "𝔽", "𝔾", "ℍ", "𝕀", "𝕁", "𝕂", "𝕃", "𝕄", "ℕ", "𝕆", "ℙ", "ℚ", "ℝ", "𝕊", "𝕋", "𝕌", "𝕍", "𝕎", "𝕏", "𝕐", "ℤ", "𝕒",
- "𝟘", "𝟙", "𝟚", "𝟛", "𝟜", "𝟝", "𝟞", "𝟟", "𝟠", "𝟡"
- }, },
- { "fr bf", {
- "𝕬", "𝕭", "𝕮", "𝕯", "𝕰", "𝕱", "𝕲", "𝕳", "𝕴", "𝕵", "𝕶", "𝕷", "𝕸", "𝕹", "𝕺", "𝕻", "𝕼", "𝕽", "𝕾", "𝕿", "𝖀", "𝖁", "𝖂", "𝖃",
- "𝖄", "𝖅", "𝖆", "𝖇", "𝖈", "𝖉", "𝖊", "𝖋", "𝖌", "𝖍", "𝖎", "𝖏", "𝖐", "𝖑", "𝖒", "𝖓", "𝖔", "𝖕", "𝖖", "𝖗", "𝖘", "𝖙", "𝖚", "𝖛", "𝖜", "𝖝", "𝖞", "𝖟"
- }, },
- { "ss tf", {
- "𝖺", "𝖻", "𝖼", "𝖽", "𝖾", "𝖿", "𝗀", "𝗁", "𝗂", "𝗃", "𝗄", "𝗅", "𝗆", "𝗇", "𝗈", "𝗉", "𝗊", "𝗋", "𝗌", "𝗍", "𝗎", "𝗏", "𝗐", "𝗑", "𝗒", "𝗓",
- "𝖠", "𝖡", "𝖢", "𝖣", "𝖤", "𝖥", "𝖦", "𝖧", "𝖨", "𝖩", "𝖪", "𝖫", "𝖬", "𝖭", "𝖮", "𝖯", "𝖰", "𝖱", "𝖲", "𝖳", "𝖴", "𝖵", "𝖶", "𝖷", "𝖸", "𝖹",
- "𝟢", "𝟣", "𝟤", "𝟥", "𝟦", "𝟧", "𝟨", "𝟩", "𝟪", "𝟫"
- }, },
- { "ss bf", {
- "𝗮", "𝗯", "𝗰", "𝗱", "𝗲", "𝗳", "𝗴", "𝗵", "𝗶", "𝗷", "𝗸", "𝗹", "𝗺", "𝗻", "𝗼", "𝗽", "𝗾", "𝗿", "𝘀", "𝘁", "𝘂", "𝘃", "𝘄", "𝘅", "𝘆", "𝘇",
- "𝗔", "𝗕", "𝗖", "𝗗", "𝗘", "𝗙", "𝗚", "𝗛", "𝗜", "𝗝", "𝗞", "𝗟", "𝗠", "𝗡", "𝗢", "𝗣", "𝗤", "𝗥", "𝗦", "𝗧", "𝗨", "𝗩", "𝗪", "𝗫", "𝗬", "𝗭",
- "𝟬", "𝟭", "𝟮", "𝟯", "𝟰", "𝟱", "𝟲", "𝟳", "𝟴", "𝟵",
- }, },
- { "ss it", {
- "𝘢", "𝘣", "𝘤", "𝘥", "𝘦", "𝘧", "𝘨", "𝘩", "𝘪", "𝘫", "𝘬", "𝘭", "𝘮", "𝘯", "𝘰", "𝘱", "𝘲", "𝘳", "𝘴", "𝘵", "𝘶", "𝘷", "𝘸", "𝘹", "𝘺", "𝘻",
- "𝘈", "𝘉", "𝘊", "𝘋", "𝘌", "𝘍", "𝘎", "𝘏", "𝘐", "𝘑", "𝘒", "𝘓", "𝘔", "𝘕", "𝘖", "𝘗", "𝘘", "𝘙", "𝘚", "𝘛", "𝘜", "𝘝", "𝘞", "𝘟", "𝘠", "𝘡",
- }, },
- { "ss bi", {
- "𝙖", "𝙗", "𝙘", "𝙙", "𝙚", "𝙛", "𝙜", "𝙝", "𝙞", "𝙟", "𝙠", "𝙡", "𝙢", "𝙣", "𝙤", "𝙥", "𝙦", "𝙧", "𝙨", "𝙩", "𝙪", "𝙫", "𝙬", "𝙭", "𝙮", "𝙯",
- "𝘼", "𝘽", "𝘾", "𝘿", "𝙀", "𝙁", "𝙂", "𝙃", "𝙄", "𝙅", "𝙆", "𝙇", "𝙈", "𝙉", "𝙊", "𝙋", "𝙌", "𝙍", "𝙎", "𝙏", "𝙐", "𝙑", "𝙒", "𝙓", "𝙔", "𝙕",
- }, },
- { "tt", {
- "𝚊", "𝚋", "𝚌", "𝚍", "𝚎", "𝚏", "𝚐", "𝚑", "𝚒", "𝚓", "𝚔", "𝚕", "𝚖", "𝚗", "𝚘", "𝚙", "𝚚", "𝚛", "𝚜", "𝚝", "𝚞", "𝚟", "𝚠", "𝚡", "𝚢", "𝚣",
- "𝙰", "𝙱", "𝙲", "𝙳", "𝙴", "𝙵", "𝙶", "𝙷", "𝙸", "𝙹", "𝙺", "𝙻", "𝙼", "𝙽", "𝙾", "𝙿", "𝚀", "𝚁", "𝚂", "𝚃", "𝚄", "𝚅", "𝚆", "𝚇", "𝚈", "𝚉",
- "𝟶", "𝟷", "𝟸", "𝟹", "𝟺", "𝟻", "𝟼", "𝟽", "𝟾", "𝟿"
- }, },
- { "gr tf", {
- "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω",
- "Α", "Β", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "΢", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω",
- }, },
- { "gr bf", {
- "𝛂", "𝛃", "𝛄", "𝛅", "𝛆", "𝛇", "𝛈", "𝛉", "𝛊", "𝛋", "𝛌", "𝛍", "𝛎", "𝛏", "𝛐", "𝛑", "𝛒", "𝛓", "𝛔", "𝛕", "𝛖", "𝛗", "𝛘", "𝛙", "𝛚",
- "𝚨", "𝚩", "𝚪", "𝚫", "𝚬", "𝚭", "𝚮", "𝚯", "𝚰", "𝚱", "𝚲", "𝚳", "𝚴", "𝚵", "𝚶", "𝚷", "𝚸", "𝚹", "𝚺", "𝚻", "𝚼", "𝚽", "𝚾", "𝚿", "𝛀",
- }, },
- { "gr it", {
- "𝛼", "𝛽", "𝛾", "𝛿", "𝜀", "𝜁", "𝜂", "𝜃", "𝜄", "𝜅", "𝜆", "𝜇", "𝜈", "𝜉", "𝜊", "𝜋", "𝜌", "𝜍", "𝜎", "𝜏", "𝜐", "𝜑", "𝜒", "𝜓", "𝜔",
- "𝛢", "𝛣", "𝛤", "𝛥", "𝛦", "𝛧", "𝛨", "𝛩", "𝛪", "𝛫", "𝛬", "𝛭", "𝛮", "𝛯", "𝛰", "𝛱", "𝛲", "𝛳", "𝛴", "𝛵", "𝛶", "𝛷", "𝛸", "𝛹", "𝛺",
- }, },
- { "gr bi", {
- "𝜶", "𝜷", "𝜸", "𝜹", "𝜺", "𝜻", "𝜼", "𝜽", "𝜾", "𝜿", "𝝀", "𝝁", "𝝂", "𝝃", "𝝄", "𝝅", "𝝆", "𝝇", "𝝈", "𝝉", "𝝊", "𝝋", "𝝌", "𝝍", "𝝎",
- "𝜜", "𝜝", "𝜞", "𝜟", "𝜠", "𝜡", "𝜢", "𝜣", "𝜤", "𝜥", "𝜦", "𝜧", "𝜨", "𝜩", "𝜪", "𝜫", "𝜬", "𝜭", "𝜮", "𝜯", "𝜰", "𝜱", "𝜲", "𝜳", "𝜴",
- }, },
- { "gr ss bf", {
- "𝝰", "𝝱", "𝝲", "𝝳", "𝝴", "𝝵", "𝝶", "𝝷", "𝝸", "𝝹", "𝝺", "𝝻", "𝝼", "𝝽", "𝝾", "𝝿", "𝞀", "𝞁", "𝞂", "𝞃", "𝞄", "𝞅", "𝞆", "𝞇", "𝞈",
- "𝝖", "𝝗", "𝝘", "𝝙", "𝝚", "𝝛", "𝝜", "𝝝", "𝝞", "𝝟", "𝝠", "𝝡", "𝝢", "𝝣", "𝝤", "𝝥", "𝝦", "𝝧", "𝝨", "𝝩", "𝝪", "𝝫", "𝝬", "𝝭", "𝝮",
- }, },
- { "gr ss bi", {
- "𝞪", "𝞫", "𝞬", "𝞭", "𝞮", "𝞯", "𝞰", "𝞱", "𝞲", "𝞳", "𝞴", "𝞵", "𝞶", "𝞷", "𝞸", "𝞹", "𝞺", "𝞻", "𝞼", "𝞽", "𝞾", "𝞿", "𝟀", "𝟁", "𝟂",
- "𝞐", "𝞑", "𝞒", "𝞓", "𝞔", "𝞕", "𝞖", "𝞗", "𝞘", "𝞙", "𝞚", "𝞛", "𝞜", "𝞝", "𝞞", "𝞟", "𝞠", "𝞡", "𝞢", "𝞣", "𝞤", "𝞥", "𝞦", "𝞧", "𝞨",
- }, },
- { "op", {
- }, },
- { "sy a", {
- }, },
- { "sy b", {
- }, },
- { "sy c", {
- }, },
-}
-
-local mathlists = { }
-local mathselector = { }
-
-for i=1,#mathsets do
- local mathset = mathsets[i]
- mathselector[#mathselector+1] = mathset[1]
- mathlists[mathset[1]] = mathset[2]
-end
-
-local enabled = 0
-local usedlists = {
- { name = "text", current = "en", lists = textlists, selector = textselector },
- { name = "math", current = "tf", lists = mathlists, selector = mathselector },
-}
-
--- I haven't found out yet how to create a strip as in scite.
-
--- local function make_strip()
--- local used = usedlists[enabled]
--- local lists = used.lists
--- local alphabet = lists[used.current]
--- local selector = "(hide)(" .. concat(used.selector,")(") .. ")"
--- local alphabet = "(" .. used.current .. ":)(" .. concat(alphabet,")(") .. ")"
--- -- scite.StripShow(selector .. "\n" .. alphabet)
--- end
---
--- local function hide_strip()
--- -- scite.StripShow("")
--- end
---
--- local function process_strip(control)
--- -- local value = scite.StripValue(control)
--- -- if value == "hide" then
--- -- hide_strip()
--- -- return
--- -- elseif find(value,".+:") then
--- -- return
--- -- end
--- -- local used = usedlists[enabled]
--- -- if used.lists[value] then
--- -- used.current = value
--- -- make_strip()
--- -- else
--- -- editor:insert(editor.CurrentPos,value)
--- -- end
--- end
---
--- local function ignore_strip()
--- end
-
-function runner.unicodes(name)
--- enabled = enabled + 1
--- if usedlists[enabled] then
--- make_strip()
--- else
--- enabled = 0
--- hide_strip()
--- end
-end
-
-return runner
-
--- The ui.print function is a bit heavy as each flush will parse the whole list of buffers.
--- Also it does some tab magic that we don't need or want. There is the original ui.print for
--- that. FWIW, speed is not an issue. Some optimizations:
-
--- function _print(buffer_type,one,two,...)
--- ...
--- print_buffer:append_text(one)
--- if two then
--- print_buffer:append_text(two)
--- for i=1, select('#', ...) do
--- print_buffer:append_text((select(i,...)))
--- end
--- end
--- print_buffer:append_text('\n')
--- ...
--- end
---
--- And a better splitter:
--- ...
--- local rest
--- local function emit_output(output)
--- for line, lineend in output:gmatch('([^\r\n]+)([\r\n]?)') do
--- if rest then
--- line = rest .. line
--- rest = nil
--- end
--- if lineend and lineend ~= "" then
--- events.emit(event, line, ext_or_lexer)
--- else
--- rest = line
--- end
--- end
--- end
--- ...
--- if rest then
--- events.emit(event,rest,ext_or_lexer)
--- end
--- events.emit(event, '> exit status: '..status)
--- ...
diff --git a/context/data/textadept/context/modules/textadept-context-settings.lua b/context/data/textadept/context/modules/textadept-context-settings.lua
deleted file mode 100644
index 6a9f49d51..000000000
--- a/context/data/textadept/context/modules/textadept-context-settings.lua
+++ /dev/null
@@ -1,152 +0,0 @@
-local info = {
- version = 1.002,
- comment = "presets for textadept for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-
-if context then
-
- function context.synchronize()
- local buffer = buffer
- local property = lexer.property
- local property_int = lexer.property_int
-
- buffer:set_fold_margin_colour (true, property_int["color.light"])
- buffer:set_fold_margin_hi_colour (true, property_int["color.white"])
- buffer:set_sel_fore (false, property_int["color.dark"])
- buffer:set_sel_back (true, property_int["color.selection"])
-
- local MARK_BOOKMARK = textadept.bookmarks.MARK_BOOKMARK
- local MARK_WARNING = textadept.run.MARK_WARNING
- local MARK_ERROR = textadept.run.MARK_ERROR
-
- -- buffer.marker_fore[MARK_BOOKMARK] = property_int["color.white"]
- buffer.marker_back[MARK_BOOKMARK] = property_int["color.blue"]
- -- buffer.marker_fore[MARK_WARNING] = property_int["color.white"]
- buffer.marker_back[MARK_WARNING] = property_int["color.orange"]
- -- buffer.marker_fore[MARK_ERROR] = property_int["color.white"]
- buffer.marker_back[MARK_ERROR] = property_int["color.red"]
- for i = 25, 31 do
- buffer.marker_fore[i] = property_int["color.white"]
- buffer.marker_back[i] = property_int["color.grey"]
- buffer.marker_back_selected[i] = property_int["color.dark"]
- end
-
- local INDIC_BRACEMATCH = textadept.editing .INDIC_BRACEMATCH
- local INDIC_HIGHLIGHT = textadept.editing .INDIC_HIGHLIGHT
- local INDIC_PLACEHOLDER = textadept.snippets.INDIC_PLACEHOLDER
- local INDIC_FIND = ui.find.INDIC_FIND
-
- buffer.indic_fore [INDIC_FIND] = property_int["color.gray"]
- buffer.indic_alpha[INDIC_FIND] = 255
- buffer.indic_fore [INDIC_BRACEMATCH] = property_int["color.orange"]
- buffer.indic_style[INDIC_BRACEMATCH] = buffer.INDIC_BOX -- hard to see (I need to check scite)
- buffer.indic_fore [INDIC_HIGHLIGHT] = property_int["color.gray"]
- buffer.indic_alpha[INDIC_HIGHLIGHT] = 255
- buffer.indic_fore [INDIC_PLACEHOLDER] = property_int["color.gray"]
-
- -- buffer:brace_highlight_indicator(false, INDIC_BRACEMATCH)
-
- -- buffer.call_tip_fore_hlt = property_int["color.blue"]
- buffer.edge_colour = property_int["color.grey"]
-
- buffer.tab_width = 4
- buffer.use_tabs = false
- buffer.indent = 4
- buffer.tab_indents = true
- buffer.back_space_un_indents = true
- buffer.indentation_guides = not CURSES and buffer.IV_LOOKBOTH or buffer.IV_NONE
- buffer.wrap_length = 80
-
- buffer.sel_eol_filled = true
- -- buffer.sel_alpha =
- buffer.multiple_selection = true
- buffer.additional_selection_typing = true
- -- buffer.multi_paste = buffer.MULTIPASTE_EACH
- -- buffer.virtual_space_options = buffer.VS_RECTANGULARSELECTION + buffer.VS_USERACCESSIBLE
- buffer.rectangular_selection_modifier = buffer.MOD_ALT
- buffer.mouse_selection_rectangular_switch = true
-
- -- buffer.additional_sel_alpha =
- -- buffer.additional_sel_fore =
- -- buffer.additional_sel_back =
-
- -- how to turn of the annoying background behind the current line ...
-
- -- buffer.additional_caret_fore =
- -- buffer.additional_carets_blink = false
- -- buffer.additional_carets_visible = false
- buffer.caret_line_visible = false -- not CURSES and buffer ~= ui.command_entry
- buffer.caret_line_visible_always = false
- -- buffer.caret_period = 0
- -- buffer.caret_style = buffer.CARETSTYLE_BLOCK
- buffer.caret_width = 10
- buffer.caret_sticky = buffer.CARETSTICKY_ON
- buffer.caret_fore = property_int["color.black"]
- buffer.caret_line_back = property_int["color.light"]
- -- buffer.caret_line_back_alpha =
-
- buffer.view_ws = buffer.WS_INVISIBLE
- buffer.view_eol = false
-
- buffer.annotation_visible = buffer.ANNOTATION_BOXED
-
- local NUMBER_MARGIN = 0
- local MARKER_MARGIN = 1
- local FOLD_MARGIN = 2 -- there are more
-
- buffer.margin_type_n [NUMBER_MARGIN] = buffer.MARGIN_NUMBER
- buffer.margin_width_n[NUMBER_MARGIN] = (CURSES and 0 or 6) + 4 * buffer:text_width(buffer.STYLE_LINENUMBER,'9') -- magic
- buffer.margin_width_n[MARKER_MARGIN] = CURSES and 1 or 18
- buffer.margin_width_n[FOLD_MARGIN] = CURSES and 1 or 18
-
- buffer.margin_mask_n[FOLD_MARGIN] = buffer.MASK_FOLDERS -- does something weird: bullets
-
- buffer:marker_define(buffer.MARKNUM_FOLDEROPEN, buffer.MARK_BOXMINUS)
- buffer:marker_define(buffer.MARKNUM_FOLDER, buffer.MARK_BOXPLUS)
- buffer:marker_define(buffer.MARKNUM_FOLDERSUB, buffer.MARK_VLINE)
- buffer:marker_define(buffer.MARKNUM_FOLDERTAIL, buffer.MARK_LCORNER)
- buffer:marker_define(buffer.MARKNUM_FOLDEREND, buffer.MARK_BOXPLUSCONNECTED)
- buffer:marker_define(buffer.MARKNUM_FOLDEROPENMID, buffer.MARK_BOXMINUSCONNECTED)
- buffer:marker_define(buffer.MARKNUM_FOLDERMIDTAIL, buffer.MARK_TCORNER)
-
- -- buffer.fold_all = buffer.FOLDACTION_CONTRACT + buffer.FOLDACTION_EXPAND + buffer.FOLDACTION_TOGGLE
-
- -- somehow the foldeing sumbol sin th emargin cannot be clicked on ... there seems to be some
- -- interface .. if this needs to be implemented via events i'll then probably make a copy and
- -- start doing all
-
- -- buffer.margin_sensitive_n[2] = true
-
- -- buffer.property['fold'] = "1"
- -- buffer.automatic_fold = buffer.AUTOMATICFOLD_SHOW + buffer.AUTOMATICFOLD_CLICK + buffer.AUTOMATICFOLD_CHANGE
- -- buffer.fold_flags = not CURSES and buffer.FOLDFLAG_LINEAFTER_CONTRACTED or 0
- -- buffer.fold_display_text_style = buffer.FOLDDISPLAYTEXT_BOXED
-
- buffer.wrap_mode = buffer.WRAP_NONE
-
- buffer.margin_back_n[NUMBER_MARGIN] = property_int["color.linenumber"] -- doesn't work
-
- buffer.property = {
- -- ["style.linenumber"] = property["style.linenumber"], -- somehow it fails
- }
-
- buffer.property_int = {
- -- nothing
- }
-
- -- keys [OSX and 'mr' or 'cr' ] = textadept.run.run
- -- keys [OSX and 'mR' or (GUI and 'cR' or 'cmr')] = textadept.run.compile
- -- keys [OSX and 'mB' or (GUI and 'cB' or 'cmb')] = textadept.run.build
- -- keys [OSX and 'mX' or (GUI and 'cX' or 'cmx')] = textadept.run.stop
-
- end
-
- context.synchronize()
-
-end
diff --git a/context/data/textadept/context/modules/textadept-context-types.lua b/context/data/textadept/context/modules/textadept-context-types.lua
deleted file mode 100644
index 97fb2e17c..000000000
--- a/context/data/textadept/context/modules/textadept-context-types.lua
+++ /dev/null
@@ -1,175 +0,0 @@
-local info = {
- version = 1.002,
- comment = "filetypes for textadept for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- todo: add the same ones as we have in scite
-
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local install = context.install
-
--- autopdf takes long to stop (weird, not in scite)
-
--- WIN32 and 'start "" "%e.pdf"' or OSX and 'open "%e.pdf"' or 'xdg-open "%e.pdf"',
-
-local quitter = function(output)
- return find(output,"%? +$") and true or false, "see message above"
-end
-
-local listing = {
- command = [[mtxrun --autogenerate --script context --autopdf --extra=listing --scite --compact "%basename%"]],
- quitter = quitter,
-}
-
-install {
- lexer = "scite-context-lexer-tex",
- suffixes = {
- "tex",
- "mkii",
- "mkiv", "mkvi", "mkix", "mkxi",
- "mkic", "mkci",
-
- },
- check = {
- command = [[mtxrun --autogenerate --script check "%basename%"]],
- quitter = quitter,
- },
- process = {
- command = [[mtxrun --autogenerate --script context --autopdf "%basename%"]],
- quitter = quitter,
- },
- listing = listing,
- generate = [[mtxrun --generate]],
- fonts = [[mtxrun --script fonts --reload --force]],
- clear = [[mtxrun --script cache --erase]],
- purge = [[mtxrun --script context --purgeall]],
- preview = [[]],
- logfile = [[]],
- arrange = [[]],
- unicodes = [[]],
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-xml",
- suffixes = {
- "xml", "xsl", "xsd", "fo", "dtd", "xslt",
- "lmx", "exa", "ctx", "export",
- "rlb", "rlg", "rlv", "rng",
- "xfdf",
- "htm", "html", "xhtml",
- "svg",
- "xul"
- },
- check = [[tidy -quiet -utf8 -xml -errors "%basename%"]],
- process = {
- command = [[mtxrun --autogenerate --script context --autopdf "%basename%"]], -- --autopdf]],
- quitter = quitter,
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-mps",
- suffixes = {
- "mp", "mpx"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-lua",
- suffixes = {
- "lua", "luc",
- "cld", "tuc", "luj", "lum", "tma", "lfg", "luv", "lui"
- },
- check = [[mtxrun --autogenerate --script "%basename%"]],
- process = [[mtxrun --autogenerate --script "%basename%"]],
- preview = [[mtxrun --autogenerate --script "%basename%"]],
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-txt",
- suffixes = {
- "txt"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-pdf",
- suffixes = {
- "pdf"
- },
- encoding = "7-BIT-ASCII",
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-web",
- suffixes = {
- "w",
- "ww"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- lexer = "scite-context-lexer-cpp",
- suffixes = {
- "h", "c",
- "hh", "cc",
- "hpp", "cpp",
- "hxx", "cxx"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- "scite-context-lexer-bibtex",
- suffixes = {
- "bib"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
-
-install {
- "scite-context-lexer-sql",
- suffixes = {
- "sql"
- },
- listing = listing,
- setter = function(lexer)
- -- whatever
- end,
-}
diff --git a/context/data/textadept/context/textadept-context.cmd b/context/data/textadept/context/textadept-context.cmd
deleted file mode 100644
index cd20e8d3d..000000000
--- a/context/data/textadept/context/textadept-context.cmd
+++ /dev/null
@@ -1,56 +0,0 @@
-@echo off
-
-rem This script starts textadept in an adapted mode, stripped from all the stuff we don't need,
-rem geared at the file formats that context deals with. The reason for this is that first of
-rem all we come from scite, but also because the average user doesn't need that much and can
-rem get confused by all kind of options that are irrelevant for editing text files.
-
-rem This startup script assumes that the files can be found relative to this script. It's kind
-rem of tricky because textadept, while being quite configurable, is not really made for such a
-rem real bare startup situation but after some trial and error, so far it works out ok. There
-rem are still some issues due to assumptions in the original code. In the meantime processing
-rem a file from within the editing sessions works ok which is a huge improvement over earlier
-rem versions of textadept (it was actually a show stopper) so now textadept can be used as a
-rem drop in for scite. We're getting there!
-
-rem Although I like the idea of textadept, it is no longer a simple Lua binding to scintilla
-rem and the claim that it is small is no longer true. The number of Lua lines doesn't really
-rem say much if there are many third party dll dependencies (at least I see many files in the
-rem zip and most of them probably relate to parts of the graphical interface and therefore most
-rem is probably not used at all. The more dependencies there are, the less interesting it is to
-rem officially support it as one of the reference editors for context, given that tex and friends
-rem aim at long term stability. It's huge and unless I'm mistaken there is no minimal lightweight
-rem variant for building a stripped down variant (in editing with mono spaced fonts we don't need
-rem all that stuff). A small static stripped binary would be really nice to have (and I'd
-rem probably default to using textadept then). I might at some point decide to strip more and just
-rem provide what we only need (which is less than is there now). We'll see how it evolves.
-
-rem In the meantime support for scintillua has been dropped which makes scite vulnerable as there
-rem is no default scite (yet) with lpeg built in. Anyway, it means that we will not provide an
-rem installer for scite or textadept which does the reference highlighting we've been using for
-rem decades. It is up to the user: use lightweight scite or a more dependent but also more
-rem configurable texadept. It would be really nice to have multiple options for editing (read: if
-rem scite would have scintillua on board.) The same is true for notepad++. Each of them has its
-rem advantage (and each is used by context users).
-
-rem Unless the textadept api changes fundamentally (as happened a couple of times before) this
-rem should work:
-
-start textadept -u %~dp0 %*
-
-rem I still need to port some of the extra functionality that we have in scite to textadept, which
-rem will happen in due time. We use our own lexers because they are more efficient and have some
-rem extra options (they were also much faster at that time and could handle very large files; they
-rem also build on already existing code in context verbatim mode). By the way, editing char-def.lua
-rem in textadept is actually now faster than in scite (using the same lpeg lexers), which is nice.
-rem There is no language strip functionality yet as there is no strip (bottom area) as in scite.
-
-rem The macros.lua file has some hard coded assumptions wrt menu items and the event crashes with a
-rem error message that we can't get rid of. I need to figure out a way to close that buffer but
-rem somehow the first buffer is closed anyway which is kind of weird. One way out is to just
-rem comment:
-rem
-rem -- textadept.menu.menubar[_L['_Tools']][_L['Select Co_mmand']][2],
-rem
-rem Maybe I should just copy all the files and remove code we don't need but ... let's delay that
-rem as it might get fixed. I'm in no hurry. \ No newline at end of file
diff --git a/context/data/textadept/context/textadept-context.sh b/context/data/textadept/context/textadept-context.sh
deleted file mode 100644
index 5f613ccf8..000000000
--- a/context/data/textadept/context/textadept-context.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# copied from setuptex
-
-if [ z"$BASH_SOURCE" != z ]; then
- textadept -u $(cd -P -- "$(dirname -- "$BASH_SOURCE")" && pwd -P) "$@" &
-elif [ z"$KSH_VERSION" != z ]; then
- textadept -u $(cd -P -- "$(dirname -- "${.sh.file}")" && pwd -P) "$@" &
-else
- textadept -u $(cd -P -- "$(dirname -- "$0")" && pwd -P) "$@" &
-fi
-
diff --git a/context/data/textadept/context/themes/scite-context-theme.lua b/context/data/textadept/context/themes/scite-context-theme.lua
deleted file mode 100644
index f746c3d09..000000000
--- a/context/data/textadept/context/themes/scite-context-theme.lua
+++ /dev/null
@@ -1,159 +0,0 @@
-local info = {
- version = 1.002,
- comment = "theme for scintilla lpeg lexer for context/metafun",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
--- context_path = string.split(os.resultof("mtxrun --find-file context.mkiv"))[1] or ""
-
--- What used to be proper Lua definitions are in 3.42 SciTE properties although
--- integration is still somewhat half. Also, the indexed style specification is
--- now a hash (which indeed makes more sense). However, the question is: am I
--- going to rewrite the style bit? It anyway makes more sense to keep this file
--- somewhat neutral as we no longer need to be compatible. However, we cannot be
--- sure of helpers being present yet when this file is loaded, so we are somewhat
--- crippled. On the other hand, I don't see other schemes being used with the
--- context lexers.
-
--- The next kludge is no longer needed which is good!
---
--- if GTK then -- WIN32 GTK OSX CURSES
--- font_name = '!' .. font_name
--- end
-
--- I need to play with these, some work ok:
---
--- eolfilled noteolfilled
--- characterset:u|l
--- visible notvisible
--- changeable notchangeable (this way we can protect styles, e.g. preamble?)
--- hotspot nothotspot
-
-if not lexers or not lexers.initialized then
-
- local font_name = 'Dejavu Sans Mono'
- local font_size = '14'
-
- local colors = {
- red = { 0x7F, 0x00, 0x00 },
- green = { 0x00, 0x7F, 0x00 },
- blue = { 0x00, 0x00, 0x7F },
- cyan = { 0x00, 0x7F, 0x7F },
- magenta = { 0x7F, 0x00, 0x7F },
- yellow = { 0x7F, 0x7F, 0x00 },
- orange = { 0xB0, 0x7F, 0x00 },
- --
- white = { 0xFF },
- light = { 0xCF },
- grey = { 0x80 },
- dark = { 0x4F },
- black = { 0x00 },
- --
- selection = { 0xF7 },
- logpanel = { 0xE7 },
- textpanel = { 0xCF },
- linepanel = { 0xA7 },
- tippanel = { 0x44 },
- --
- right = { 0x00, 0x00, 0xFF },
- wrong = { 0xFF, 0x00, 0x00 },
- }
-
- local styles = {
-
- ["whitespace"] = { },
- -- ["default"] = { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel },
- -- ["default"] = { font = font_name, size = font_size, fore = colors.black },
- ["default"] = { font = font_name, size = font_size, fore = colors.black,
- back = textadept and colors.textpanel or nil },
- ["number"] = { fore = colors.cyan },
- ["comment"] = { fore = colors.yellow },
- ["keyword"] = { fore = colors.blue, bold = true },
- ["string"] = { fore = colors.magenta },
- -- ["preproc"] = { fore = colors.yellow, bold = true },
- ["error"] = { fore = colors.red },
- ["label"] = { fore = colors.red, bold = true },
-
- ["nothing"] = { },
- ["class"] = { fore = colors.black, bold = true },
- ["function"] = { fore = colors.black, bold = true },
- ["constant"] = { fore = colors.cyan, bold = true },
- ["operator"] = { fore = colors.blue },
- ["regex"] = { fore = colors.magenta },
- ["preprocessor"] = { fore = colors.yellow, bold = true },
- ["tag"] = { fore = colors.cyan },
- ["type"] = { fore = colors.blue },
- ["variable"] = { fore = colors.black },
- ["identifier"] = { },
-
- ["linenumber"] = { back = colors.linepanel },
- ["bracelight"] = { fore = colors.orange, bold = true },
- ["bracebad"] = { fore = colors.orange, bold = true },
- ["controlchar"] = { },
- ["indentguide"] = { fore = colors.linepanel, back = colors.white },
- ["calltip"] = { fore = colors.white, back = colors.tippanel },
-
- ["invisible"] = { back = colors.orange },
- ["quote"] = { fore = colors.blue, bold = true },
- ["special"] = { fore = colors.blue },
- ["extra"] = { fore = colors.yellow },
- ["embedded"] = { fore = colors.black, bold = true },
- ["char"] = { fore = colors.magenta },
- ["reserved"] = { fore = colors.magenta, bold = true },
- ["definition"] = { fore = colors.black, bold = true },
- ["okay"] = { fore = colors.dark },
- ["warning"] = { fore = colors.orange },
- ["standout"] = { fore = colors.orange, bold = true },
- ["command"] = { fore = colors.green, bold = true },
- ["internal"] = { fore = colors.orange, bold = true },
- ["preamble"] = { fore = colors.yellow },
- ["grouping"] = { fore = colors.red },
- ["primitive"] = { fore = colors.blue, bold = true },
- ["plain"] = { fore = colors.dark, bold = true },
- ["user"] = { fore = colors.green },
- ["data"] = { fore = colors.cyan, bold = true },
-
- -- equal to default:
-
- ["text"] = { font = font_name, size = font_size, fore = colors.black, back = colors.textpanel },
- ["text"] = { font = font_name, size = font_size, fore = colors.black },
-
- }
-
- local properties = {
- ["fold.by.parsing"] = 1,
- ["fold.by.indentation"] = 0,
- ["fold.by.line"] = 0,
- ["fold.line.comments"] = 0,
- --
- ["lexer.context.log"] = 1, -- log errors and warnings
- ["lexer.context.trace"] = 0, -- show loading, initializations etc
- ["lexer.context.detail"] = 0, -- show more detail when tracing
- ["lexer.context.show"] = 0, -- show result of lexing
- ["lexer.context.collapse"] = 0, -- make lexing results somewhat more efficient
- ["lexer.context.inspect"] = 0, -- show some info about lexer (styles and so)
- --
- -- ["lexer.context.log"] = 1, -- log errors and warnings
- -- ["lexer.context.trace"] = 1, -- show loading, initializations etc
- }
-
- ----- lexers = require("lexer")
- local lexer = require("scite-context-lexer")
- local context = lexer.context
-
- if context then
- context.inform("loading context (style) properties")
- if context.registerstyles then
- context.registerstyles(styles)
- end
- if context.registercolors then
- context.registercolors(colors)
- end
- if context.registerproperties then
- context.registerproperties(properties)
- end
- end
-
-end
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
index 670f46858..27fc46ad2 100644
--- a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
@@ -69,7 +69,7 @@
"name" : "context.comment.comment.tex"
},
"constant" : {
- "match" : "\u005C\u005C(zwnj|zwj|zerowidthspace|zerowidthnonjoiner|zerowidthnobreakspace|zerowidthjoiner|zeroskip|zeropoint|zeromuskip|zerocount|xmlcatcodes|xifcode|xetexengine|wildcardsymbol|widowpenaltyfrozenparcode|whatsitnodecode|vtopparcontextcode|vtopgroupcode|vrbcatcodes|voidifcode|voidbox|vmodeparcontextcode|vmodeifcode|vlistnodecode|vcenterparcontextcode|vcentergroupcode|vboxparcontextcode|vboxifcode|vboxgroupcode|valueflagcode|vadjustparcontextcode|vadjustgroupcode|usetexmodule|usemodule|useluamodule|uprotationangle|uppercasehyphenationcode|unsetnodecode|unknownengine|unexpandeddocumentvariable|underscoreasciicode|underrulemathcontrolcode|undefined|typescripttwo|typescriptthree|typescriptone|txtcatcodes|twoperemspace|trueifcode|tpbcatcodes|tpacatcodes|tolerantflagcode|tolerancefrozenparcode|tildeasciicode|threeperemspace|thousandpoint|textitalickernmathcontrolcode|texengineversion|texenginename|texenginefunctionality|texengine|texcatcodes|tabasciicode|syllablehyphenationcode|swapparsshapenormalizecode|swaphangindentnormalizecode|superscriptcatcode|subscriptcatcode|strictstarthyphenationcode|strictendhyphenationcode|stretchfrozenparcode|stoptext|stopproject|stopproduct|stopnotmode|stopnotext|stopnotallmodes|stopmodule|stopmodeset|stopmodeset|stopmode|stopmkivmode|stoplmtxmode|stopenvironment|stopdocument|stopcomponent|stopallmodes|stopTEXpage|statuswrite|starttext|startproject|startproduct|startnotmode|startnotext|startnotallmodes|startmodule|startmodeset|startmodeset|startmode|startmkivmode|startlmtxmode|startenvironment|startdocument|startcomponent|startallmodes|startTEXpage|splitoffgroupcode|splitkeepgroupcode|spanparcontextcode|spacecatcode|spaceasciicode|softhyphen|smallskipamount|slantperpoint|skipfrozenparcode|sixperemspace|singlequoteasciicode|simplegroupcode|shapefrozenparcode|setupmodule|setupdocument|semisimplegroupcode|scrollmodecode|scaledpoint|rulenodecode|rlncatcodes|rlm|righttoleftmark|rightrotationangle|rightparentasciicode|rightbracketasciicode|rightbraceasciicode|resetparcontextcode|removemarginkernsnormalizecode|relmathflattencode|radicalrulemathcontrolcode|questionmarkasciicode|pushmode|punctuationspace|punctmathflattencode|prtcatcodes|protrudefrozenparcode|protectedflagcode|project|product|primitiveflagcode|primeasciicode|preworddiscoptioncode|preventmode|presetdocument|prerollrun|preamblegroupcode|postworddiscoptioncode|popmode|points|plustwohundred|plustwo|plustwentythousand|plustwelve|plusthree|plusthousand|plustenthousand|plusten|plussixteen|plussix|plusseven|plusonehundred|plusone|plusnine|plushundred|plusfour|plusfivehundred|plusfive|plusfifty|pluseleven|pluseight|pluscxxviii|pluscxxvii|pluscclvi|pluscclv|permitmathreplacehyphenationcode|permitgluehyphenationcode|permitallhyphenationcode|permanentflagcode|periodasciicode|percentasciicode|penaltynodecode|pdftexengine|partialhyphenationcode|parindentskipnormalizecode|parfillrightskip|parfillleftskip|parfillfrozenparcode|parametercatcode|overrulemathcontrolcode|overloadedflagcode|outputparcontextcode|outputnewlinechar|outputgroupcode|othercatcode|ordmathflattencode|orditalickernmathcontrolcode|optionalspace|onepoint|onemuskip|onebasepoint|oddifcode|numifcode|notcatcodes|nostaircasekernmathcontrolcode|normalworddiscoptioncode|normalparcontextcode|normalpagebox|normalizelinenormalizecode|normalhyphenationcode|norightligaturingglyphoptioncode|norightligatureglyphoptioncode|norightkerningglyphoptioncode|norightkernglyphoptioncode|noprotrusionglyphoptioncode|noprotrusionglyphoptioncode|nonstopmodecode|nonbreakablespace|noligaturingglyphoptioncode|noligaturingglyphoptioncode|noligaturingcode|noleftligaturingglyphoptioncode|noleftligatureglyphoptioncode|noleftkerningglyphoptioncode|noleftkernglyphoptioncode|nokerningglyphoptioncode|nokerningglyphoptioncode|nokerningcode|noitaliccorrectionglyphoptioncode|noitaliccorrectionglyphoptioncode|noexpansionglyphoptioncode|noexpansionglyphoptioncode|nobreakspace|noalignparcontextcode|noaligngroupcode|noalignedflagcode|nilcatcodes|newlineasciicode|narrownobreakspace|mutableflagcode|muquad|morethanasciicode|moduleparameter|mmodeifcode|mksuffix|minustwo|minusone|medskipamount|medcard|maxdimen|maxcount|maxcardminusone|maxcard|mathsnodecode|mathsizesuffix|mathshiftgroupcode|mathshiftcatcode|mathrelcode|mathradicalcode|mathpunctcode|mathordcode|mathopencode|mathopcode|mathnothingcode|mathnolopcode|mathnodecode|mathlimopcode|mathleftgroupcode|mathinnercode|mathgroupcode|mathexheight|mathemwidth|mathclosecode|mathchoicegroupcode|mathchoicecode|mathboxcode|mathbincode|mathaxisheight|mathalphacode|mathaccentcode|mathabovegroupcode|marknodecode|luatexengine|luastringsep|luacatcodes|lrm|loosenessfrozenparcode|localboxgroupcode|linepenaltyfrozenparcode|linefrozenparcode|ligaturenodecode|lettercatcode|lessthanasciicode|lefttorightmark|leftrotationangle|leftparentasciicode|leftbracketasciicode|leftbraceasciicode|lazyligatureshyphenationcode|lastlinefrozenparcode|kernnodecode|invalidcatcode|interwordstretch|interwordspace|interwordshrink|instanceflagcode|insertparcontextcode|insertnodecode|insertgroupcode|innermathflattencode|innerifcode|inicatcodes|indentfrozenparcode|immutableflagcode|immediateflagcode|ignorecatcode|ignoreboundshyphenationcode|ideographicspace|ideographichalffillspace|hyphenationfrozenparcode|hyphenasciicode|hsizefrozenparcode|hmodeifcode|hlistnodecode|hboxifcode|hboxgroupcode|hashasciicode|hangfrozenparcode|halfpoint|halfapoint|hairspace|gluenodecode|globalpreventmode|globalflagcode|globalenablemode|globaldisablemode|frozenflagcode|fractionrulemathcontrolcode|fourperemspace|forwardslashasciicode|formfeedasciicode|forcehandlerhyphenationcode|forcecheckhyphenationcode|fontslantperpoint|fontinterwordstretch|fontinterwordspace|fontinterwordshrink|fontextraspace|fontexheight|fontemwidth|fontcharifcode|fmtversion|fmtname|flattendiscretionariesnormalizecode|fiveperemspace|finrowgroupcode|figurespace|feedbackcompoundhyphenationcode|falseifcode|extraspace|explicitpenaltyhyphenationcode|explicithyphenationcode|exheight|exclamationmarkasciicode|everystoptext|everystarttext|escapecatcode|errorstopmodecode|eofifcode|environment|enquad|endoflinetoken|endoflinecatcode|endoflineasciicode|endoffileasciicode|endline|endgroupcatcode|enablemode|emwidth|emquad|emptyvbox|emptytoks|emptyhbox|emptybox|empty|egroup|eUx|downrotationangle|doublequoteasciicode|doublecommentsignal|dollarasciicode|doifnotmode|doifnotdocumentvariable|doifnotallmodes|doifmodeelse|doifmode|doifelsemode|doifelsedocumentvariable|doifelseallmodes|doifdocumentvariableelse|doifdocumentvariable|doifallmodeselse|doifallmodes|documentvariable|displaypenaltyfrozenparcode|discretionarynodecode|discretionarygroupcode|discretionarygroupcode|discardzerotabskipsnormalizecode|disablemode|directionrighttoleft|directionlefttoright|dimifcode|demeritsfrozenparcode|delimiteritalickernmathcontrolcode|delasciicode|definemode|definedifcode|currentmoduleparameter|ctxcatcodes|ctdcatcodes|csnameifcode|continuewhenlmtxmode|continueifinputfile|contextversion|contextmark|contextlmtxmode|contextformat|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|conditionaltrue|conditionalflagcode|conditionalfalse|compoundhyphenationcode|component|completehyphenationcode|commentcatcode|commentasciicode|commaasciicode|colonasciicode|collapsehyphenationmcode|clubpenaltyfrozenparcode|clipwidthnormalizecode|circumflexasciicode|charnodecode|charitalicwidthmathcontrolcode|charitalicnoreboxmathcontrolcode|charifcode|catifcode|caseifcode|brokenpenaltyfrozenparcode|breakafterdirnormalizecode|breakablethinspace|boxednoitalickernmathcontrolcode|bottomlevelgroupcode|binmathflattencode|bigskipamount|bidirlo|bidirle|bidipop|bidilro|bidilre|bgroup|begingroupcatcode|batchmodecode|barasciicode|backslashasciicode|automaticpenaltyhyphenationcode|automatichyphenationcode|attributeunsetvalue|atsignasciicode|asciispacechar|ampersandasciicode|alsosimplegroupcode|allfrozenparcode|alignsetgroupcode|alignparcontextcode|alignmentcatcode|aligngroupcode|adjustnodecode|adjustfrozenparcode|adjustedhboxgroupcode|activetabtoken|activemathcharcode|activeformfeedtoken|activeendoflinetoken|activecatcode|activecatcode|accentskewhalfmathcontrolcode|accentskewapplymathcontrolcode|accentitalickernmathcontrolcode|Ux|Umathaccents|!!es|!!bs)(?=[^a-zA-Z])",
+ "match" : "\u005C\u005C(zwnj|zwj|zerowidthspace|zerowidthnonjoiner|zerowidthnobreakspace|zerowidthjoiner|zeroskip|zeropoint|zeromuskip|zerocount|xmlcatcodes|xifcode|xetexengine|wildcardsymbol|widowpenaltyfrozenparcode|whatsitnodecode|vtopparcontextcode|vtopgroupcode|vrbcatcodes|voidifcode|voidbox|vmodeparcontextcode|vmodeifcode|vlistnodecode|vcenterparcontextcode|vcentergroupcode|vboxparcontextcode|vboxifcode|vboxgroupcode|valueflagcode|vadjustparcontextcode|vadjustgroupcode|usetexmodule|usemodule|useluamodule|uprotationangle|uppercasehyphenationcode|unsetnodecode|unknownengine|unexpandeddocumentvariable|underscoreasciicode|underrulemathcontrolcode|undefined|typescripttwo|typescriptthree|typescriptone|txtcatcodes|twoperemspace|trueifcode|tpbcatcodes|tpacatcodes|tolerantflagcode|tolerancefrozenparcode|tildeasciicode|threeperemspace|thousandpoint|textitalickernmathcontrolcode|texengineversion|texenginename|texenginefunctionality|texengine|texcatcodes|tabasciicode|syllablehyphenationcode|swapparsshapenormalizecode|swaphangindentnormalizecode|superscriptcatcode|subscriptcatcode|strictstarthyphenationcode|strictendhyphenationcode|stretchfrozenparcode|stoptext|stopproject|stopproduct|stopnotmode|stopnotext|stopnotallmodes|stopmodule|stopmodeset|stopmodeset|stopmode|stopmkivmode|stoplmtxmode|stopenvironment|stopdocument|stopcomponent|stopallmodes|stopTEXpage|statuswrite|starttext|startproject|startproduct|startnotmode|startnotext|startnotallmodes|startmodule|startmodeset|startmodeset|startmode|startmkivmode|startlmtxmode|startenvironment|startdocument|startcomponent|startallmodes|startTEXpage|splitoffgroupcode|splitkeepgroupcode|spanparcontextcode|spacecatcode|spaceasciicode|softhyphen|smallskipamount|slantperpoint|skipfrozenparcode|sixperemspace|singlequoteasciicode|simplegroupcode|shapefrozenparcode|setupmodule|setupdocument|semisimplegroupcode|scrollmodecode|scaledpoint|rulenodecode|rlncatcodes|rlm|righttoleftmark|rightrotationangle|rightparentasciicode|rightbracketasciicode|rightbraceasciicode|resetparcontextcode|removemarginkernsnormalizecode|relmathflattencode|radicalrulemathcontrolcode|questionmarkasciicode|pushmode|punctuationspace|punctmathflattencode|prtcatcodes|protrudefrozenparcode|protectedflagcode|project|product|primitiveflagcode|primeasciicode|preworddiscoptioncode|preventmode|presetdocument|prerollrun|preamblegroupcode|postworddiscoptioncode|popmode|points|plustwohundred|plustwo|plustwentythousand|plustwelve|plusthree|plusthousand|plustenthousand|plusten|plussixteen|plussix|plusseven|plusonehundred|plusone|plusnine|plushundred|plusfour|plusfivehundred|plusfive|plusfifty|pluseleven|pluseight|pluscxxviii|pluscxxvii|pluscclvi|pluscclv|permitmathreplacehyphenationcode|permitgluehyphenationcode|permitallhyphenationcode|permanentflagcode|periodasciicode|percentasciicode|penaltynodecode|pdftexengine|partialhyphenationcode|parindentskipnormalizecode|parfillrightskip|parfillleftskip|parfillfrozenparcode|parametercatcode|overrulemathcontrolcode|overloadedflagcode|outputparcontextcode|outputnewlinechar|outputgroupcode|othercatcode|ordmathflattencode|orditalickernmathcontrolcode|optionalspace|onepoint|onemuskip|onebasepoint|oddifcode|numifcode|notcatcodes|nostaircasekernmathcontrolcode|normalworddiscoptioncode|normalparcontextcode|normalpagebox|normalizelinenormalizecode|normalhyphenationcode|norightligaturingglyphoptioncode|norightligatureglyphoptioncode|norightkerningglyphoptioncode|norightkernglyphoptioncode|noprotrusionglyphoptioncode|noprotrusionglyphoptioncode|nonstopmodecode|nonbreakablespace|noligaturingglyphoptioncode|noligaturingglyphoptioncode|noligaturingcode|noleftligaturingglyphoptioncode|noleftligatureglyphoptioncode|noleftkerningglyphoptioncode|noleftkernglyphoptioncode|nokerningglyphoptioncode|nokerningglyphoptioncode|nokerningcode|noitaliccorrectionglyphoptioncode|noitaliccorrectionglyphoptioncode|noexpansionglyphoptioncode|noexpansionglyphoptioncode|nobreakspace|noalignparcontextcode|noaligngroupcode|noalignedflagcode|nilcatcodes|newlineasciicode|narrownobreakspace|mutableflagcode|muquad|morethanasciicode|moduleparameter|mmodeifcode|mksuffix|minustwo|minusone|medskipamount|medcard|maxdimen|maxcount|maxcardminusone|maxcard|mathsnodecode|mathsizesuffix|mathshiftgroupcode|mathshiftcatcode|mathrelcode|mathradicalcode|mathpunctcode|mathordcode|mathopencode|mathopcode|mathnothingcode|mathnolopcode|mathnodecode|mathlimopcode|mathleftgroupcode|mathinnercode|mathgroupcode|mathexheight|mathemwidth|mathclosecode|mathchoicegroupcode|mathchoicecode|mathboxcode|mathbincode|mathaxisheight|mathalphacode|mathaccentcode|mathabovegroupcode|marknodecode|luatexengine|luastringsep|luacatcodes|lrm|loosenessfrozenparcode|localboxgroupcode|linepenaltyfrozenparcode|linefrozenparcode|ligaturenodecode|lettercatcode|lessthanasciicode|lefttorightmark|leftrotationangle|leftparentasciicode|leftbracketasciicode|leftbraceasciicode|lazyligatureshyphenationcode|lastlinefrozenparcode|kernnodecode|invalidcatcode|interwordstretch|interwordspace|interwordshrink|instanceflagcode|insertparcontextcode|insertnodecode|insertgroupcode|innermathflattencode|innerifcode|inicatcodes|indentfrozenparcode|immutableflagcode|immediateflagcode|ignorecatcode|ignoreboundshyphenationcode|ideographicspace|ideographichalffillspace|hyphenationfrozenparcode|hyphenasciicode|hsizefrozenparcode|hmodeifcode|hlistnodecode|hboxifcode|hboxgroupcode|hashasciicode|hangfrozenparcode|halfpoint|halfapoint|hairspace|gluenodecode|globalpreventmode|globalflagcode|globalenablemode|globaldisablemode|frozenflagcode|fractionrulemathcontrolcode|fourperemspace|forwardslashasciicode|formfeedasciicode|forcehandlerhyphenationcode|forcecheckhyphenationcode|fontslantperpoint|fontinterwordstretch|fontinterwordspace|fontinterwordshrink|fontextraspace|fontexheight|fontemwidth|fontcharifcode|fmtversion|fmtname|flattendiscretionariesnormalizecode|fiveperemspace|finrowgroupcode|figurespace|feedbackcompoundhyphenationcode|falseifcode|extraspace|explicitpenaltyhyphenationcode|explicithyphenationcode|exheight|exclamationmarkasciicode|everystoptext|everystarttext|escapecatcode|errorstopmodecode|eofifcode|environment|enquad|endoflinetoken|endoflinecatcode|endoflineasciicode|endoffileasciicode|endline|endgroupcatcode|enablemode|emwidth|emquad|emptyvbox|emptytoks|emptyhbox|emptybox|empty|egroup|eUx|downrotationangle|doublequoteasciicode|doublecommentsignal|dollarasciicode|doifnotmode|doifnotdocumentvariable|doifnotallmodes|doifmodeelse|doifmode|doifelsemode|doifelsedocumentvariable|doifelseallmodes|doifdocumentvariableelse|doifdocumentvariable|doifallmodeselse|doifallmodes|documentvariable|displaypenaltyfrozenparcode|discretionarynodecode|discretionarygroupcode|discretionarygroupcode|discardzerotabskipsnormalizecode|disablemode|directionrighttoleft|directionlefttoright|dimifcode|demeritsfrozenparcode|delimiteritalickernmathcontrolcode|delasciicode|definemode|definedifcode|currentmoduleparameter|ctxcatcodes|ctdcatcodes|csnameifcode|continuewhenlmtxmode|continueifinputfile|contextversion|contextmark|contextlmtxmode|contextformat|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|conditionaltrue|conditionalflagcode|conditionalfalse|compoundhyphenationcode|component|completehyphenationcode|commentcatcode|commentasciicode|commaasciicode|colonasciicode|collapsehyphenationcode|clubpenaltyfrozenparcode|clipwidthnormalizecode|circumflexasciicode|charnodecode|charitalicwidthmathcontrolcode|charitalicnoreboxmathcontrolcode|charifcode|catifcode|caseifcode|brokenpenaltyfrozenparcode|breakafterdirnormalizecode|breakablethinspace|boxednoitalickernmathcontrolcode|bottomlevelgroupcode|binmathflattencode|bigskipamount|bidirlo|bidirle|bidipop|bidilro|bidilre|bgroup|begingroupcatcode|batchmodecode|barasciicode|backslashasciicode|automaticpenaltyhyphenationcode|automatichyphenationcode|attributeunsetvalue|atsignasciicode|asciispacechar|ampersandasciicode|alsosimplegroupcode|allfrozenparcode|alignsetgroupcode|alignparcontextcode|alignmentcatcode|aligngroupcode|adjustnodecode|adjustfrozenparcode|adjustedhboxgroupcode|activetabtoken|activemathcharcode|activeformfeedtoken|activeendoflinetoken|activecatcode|activecatcode|accentskewhalfmathcontrolcode|accentskewapplymathcontrolcode|accentitalickernmathcontrolcode|Ux|Umathaccents|!!es|!!bs)(?=[^a-zA-Z])",
"name" : "context.constant.commands.constant.tex"
},
"csname" : {
diff --git a/doc/context/documents/general/manuals/lowlevel-alignments.pdf b/doc/context/documents/general/manuals/lowlevel-alignments.pdf
index abeebfee9..86b9a60b1 100644
--- a/doc/context/documents/general/manuals/lowlevel-alignments.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-alignments.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-compactfonts.pdf b/doc/context/presentations/context/2021/context-2021-compactfonts.pdf
new file mode 100644
index 000000000..fb3f448ba
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-compactfonts.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-compactfonts.tex b/doc/context/presentations/context/2021/context-2021-compactfonts.tex
new file mode 100644
index 000000000..7d2d3e482
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-compactfonts.tex
@@ -0,0 +1,609 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+
+\definehighlight[nb][style=bold,color=middlegray,define=no]
+
+\definecolor[maincolor][g=.3]
+
+\startdocument
+ [title={COMPACT FONTS},
+ banner={a different approach to scaling},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=How \TEX\ uses fonts]
+
+\startitemize
+ \startitem
+ In a \TEX\ engine there is a 1-to-1 mapping from characters in the input
+ to a slot in a font.
+ \stopitem
+ \startitem
+ Combinations of characters can be mapped onto one shape: ligatures.
+ \stopitem
+ \startitem
+ Hyphenation is (also) controlled by the input encoding of a font which
+ imposes some limitations.
+ \stopitem
+ \startitem
+ In the typeset result characters (glyphs) can be (re)positioned relatively: kerns.
+ \stopitem
+ \startitem
+ This all happens in a very interwoven way (e.g. inside the par builder).
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=How traditional \TEX\ sees fonts]
+
+\startitemize
+ \startitem
+ A font is just a (binary) blob of data with information where characters
+ have a width, height, depth and italic correction.
+ \stopitem
+ \startitem
+ The engine only needs the dimensions and when the same font is used with a
+ different scale a copy with scaled dimensions is used.
+ \stopitem
+ \startitem
+ There can be recipes for ligatures and (more complex) so called math extensible
+ shapes (like arrows, wide accents, fences and radicals)
+ \stopitem
+ \startitem
+ There are pairwise specification for kerning.
+ \stopitem
+ \startitem
+ A handful of font parameters is provided in order to control for instance spacing.
+ \stopitem
+ \startitem
+ Virtual fonts are just normal fonts but they have recipes for the backend to
+ construct shapes: \TEX\ uses the normal metric file, the backend also the virtual
+ specification file.
+ \stopitem
+\stopitemize
+
+\blank[2*big]
+
+An example of a definition and usage:
+
+\starttyping
+\font\cs somename [somescale] test {\cs test} test
+\stoptyping
+
+\stoptitle
+
+\starttitle[title=\UNICODE\ engines]
+
+\startitemize
+ \startitem
+ There are no fundamental differences between a traditional engine and an
+ \UNICODE\ aware one with respect to what \TEX\ needs from fonts:
+ dimensions.
+ \stopitem
+ \startitem
+ There can be more than 256 characters in a font.
+ \stopitem
+ \startitem
+ Some mechanisms have to be present for applying font features (like ligaturing and
+ kerning).
+ \stopitem
+ \startitem
+ In \LUATEX\ hyphenation, ligaturing and kerning are clearly separate steps.
+ \stopitem
+ \startitem
+ In \LUATEX\ callbacks can do lots of things with fonts and characters.
+ \stopitem
+ \startitem
+ Math fonts are handled differently and there is more info that comes from the font.
+ \stopitem
+ \startitem
+ In \LUATEX\ features like expansion are implemented differently, i.e.\ no
+ copies of fonts are made and applied expansion travels with the glyphs.
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Overhead]
+
+\startitemize
+ \startitem
+ In all engines scales copies are used. For traditional \TEX\ a copy is cheap, but a
+ font that supports more of \UNICODE\ cna be quite large.
+ \stopitem
+ \startitem
+ Different feature sets in principle make for a different font (this can be different
+ per macro package).
+ \stopitem
+ \startitem
+ Every math scale needs three font instances: text, script and scriptscript.
+ \stopitem
+ \startitem
+ In \CONTEXT\ lots of sharing takes place and a lot of low level
+ optimizations happens (memory, performance). We always made sure (already
+ in \MKII) that the font system was not the bottleneck.
+ \stopitem
+ \startitem
+ In most cases font definitions are dynamic, and we delay initialization
+ as much as possible.
+ \stopitem
+ \startitem
+ In \MKIV\ font features can be dynamic which saves a lot of memory at the
+ cost of some extra processing overhead.
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Design sizes]
+
+\startitemize
+ \startitem
+ A macro package's font handling is complicated by design sizes. The low level
+ code can look complex too.
+ \stopitem
+ \startitem
+ There are hardly any fonts that come in design sizes (basically only Computer
+ Modern) so we need to support that.
+ \stopitem
+ \startitem
+ Design sizes make sense for math fonts where very small characters and
+ symbols are used in scripts.
+ \stopitem
+ \startitem
+ In \OPENTYPE\ fonts smaller math design sizes are part of the font (that
+ then gets loaded three times with different \type {ssty} settings).
+ \stopitem
+\stopitemize
+
+\startlinecorrection
+\dontleavehmode\scale[frame=on,height=5ex]{$\textstyle 2$}\quad
+\dontleavehmode\scale[frame=on,height=5ex]{$\scriptstyle 2$}\quad
+\dontleavehmode\scale[frame=on,height=5ex]{$\scriptscriptstyle 2$}\quad\quad
+\dontleavehmode\scale[frame=on,height=2ex]{$\textstyle 2$}\quad
+\dontleavehmode\scale[frame=on,height=2ex]{$\scriptstyle 2$}\quad
+\dontleavehmode\scale[frame=on,height=2ex]{$\scriptscriptstyle 2$}\quad\quad
+\dontleavehmode\scale[frame=on,width=4em]{\colored[r=.6,a=1,t=.5]{$\textstyle 2$}}\hskip-4em
+\dontleavehmode\scale[frame=on,width=4em]{\colored[g=.6,a=1,t=.5]{$\scriptstyle 2$}}\hskip-4em
+\dontleavehmode\scale[frame=on,width=4em]{\colored[b=.6,a=1,t=.5]{$\scriptscriptstyle 2$}}\quad\quad
+\dontleavehmode{$\textstyle 2$}\quad
+\dontleavehmode{$\scriptstyle 2$}\quad
+\dontleavehmode{$\scriptscriptstyle 2$}\quad
+\stoplinecorrection
+
+\stoptitle
+
+\starttitle[title=The system]
+
+\startitemize
+ \startitem
+ Each bodyfont size (often a few are defined) has regular, bold, italic,
+ bold italic, slanted, bold slanted, etc. There can be unscaled instances
+ (design size) or scaled ones.
+ \stopitem
+ \startitem
+ Within a bodyfont size we have size variants: smaller {\tx x} and {\tx xx},
+ larger {\tfa a}, {\tfb b}, {\tfc c} and {\tfd d}.
+ \stopitem
+ \startitem
+ In \MKII\ we inherit smallcap and oldstyle setups but in \MKIV\ one can either
+ do that dynamic or define an additional bodyfont instance.
+ \stopitem
+ \startitem
+ A document can use a mix of fonts mixed setup, so there is a namespace
+ used per family.
+ \stopitem
+ \startitem
+ In \OPENTYPE\ symbols are more naturally part of a font, as are emoji and
+ colored shapes.
+ \stopitem
+ \startitem
+ Lack of variants can result in artificially slanted of boldened fonts (more
+ advanced in \MKIV). Variable fonts are not special, but demand some work
+ when loading and embedding.
+ \stopitem
+ \startitem
+ Runtime virtual fonts are part of \MKIV\ as are fallback shapes.
+ \stopitem
+ \startitem
+ Languages and scripts can introduce an extra dimension to operate on.
+ \stopitem
+ \startitem
+ Math is greatly simplified by the fact that families are part of a font.
+ \stopitem
+ \startitem
+ Bold math fonts are provided by the boldening feature.
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title={Practice}]
+
+\startitemize
+ \startitem
+ Due to optimizations the actual number of loaded instances is normally
+ small but there are exceptions.
+ \stopitem
+ \startitem
+ The \LUAMETATEX\ manual has 158 instances most of which are math (six per
+ used bodyfont for math plus a regular: Lucida, Pagella, Latin Modern,
+ Dejavu, Cambria).
+ \stopitem
+ \startitem
+ The final \PDF\ file has 21 embedded fonts (subsets).
+ \stopitem
+ \startitem
+ The fact that different sizes each have an instance and that for math
+ we need three per size plus one for r2l, while the only difference
+ is scale, makes one think of other solutions.
+ \stopitem
+ \startitem
+ Using duplicates of huge \CJK\ fonts makes it even more noticeable.
+ \stopitem
+\stopitemize
+
+But there is a way out!
+
+\stoptitle
+
+\starttitle[title=Glyph scaling]
+
+We can scale glyphs in three ways:
+
+\startbuffer
+\definedfont[lmroman10-regular*default]%
+test {\glyphxscale 2500 test} test
+test {\glyphyscale 2500 test} test
+test {\glyphscale 2500 test} test
+\stopbuffer
+
+\typebuffer {\getbuffer}
+
+We do need to honor grouping:
+
+\startbuffer
+\definedfont[lmroman10-regular*default]%
+e{\glyphxscale 2500 ff}icient
+ef{\glyphxscale 2500 f}icient
+ef{\glyphxscale 2500 fi}cient
+e{\glyphxscale 2500 ffi}cient
+\stopbuffer
+
+\typebuffer {\getbuffer}
+
+These scales can also be part of a font definition so we can do with less
+instances.
+
+\stoptitle
+
+\starttitle[title=Implications]
+
+\startitemize
+ \startitem
+ The text processing part of the engine has to scale on the fly (e.g.\
+ when dimensions are needed in paragraph building and (box) packing.
+ \stopitem
+ \startitem
+ Font processing (features) already distinguishes per instance but now also
+ has to differentiate by (upto three) scales (we use the same font id
+ for scaled instances).
+ \stopitem
+ \startitem
+ The math machinery has to check for smaller sizes and also scale
+ dimensions on the fly.
+ \stopitem
+ \startitem
+ For math that means two times scaling: the main scale (like glyph scale) plus
+ the relative scaling of script and scriptscript.
+ \stopitem
+ \startitem
+ When they are used font dimensions and math parameters are to be scaled as are
+ rules in some math extensibles.
+ \stopitem
+ \startitem
+ This all has to be done efficiently so that there is no significant drop in
+ performance.
+ \stopitem
+ \startitem
+ But quite a bit less memory is used and loading time has become less too.
+ \stopitem
+\stopitemize
+
+Some day this will become default (which means a sentimental process of dropping
+ancient code):
+
+\starttyping
+\enableexperiments[fonts.compact]
+\stoptyping
+
+\stoptitle
+
+\starttitle[title=Details]
+
+The tricks shown on this page and following pages have been in place and tested
+for a while now. Because \TEX\ uses integers a scale value of 1000 means 1.000,
+as in other mechanisms:
+
+\startbuffer
+\definedfont[lmroman10-regular*default]%
+test {\glyphscale 2500 test} test
+\stopbuffer
+
+\typebuffer {\getbuffer}
+
+% \glyphtextscale
+% \glyphscriptscale
+% \glyphscriptscriptscale
+
+\page
+
+The font definition mechanism supports horizontal and vertical scaling:
+
+\startbuffer
+\definefont[FooA][Serif*default @ 12pt 1800 500]
+\definefont[FooB][Serif*default @ 12pt 0.85 0.4]
+\definefont[FooC][Serif*default @ 12pt]
+
+There is also a new command:
+
+\definetweakedfont[runwider] [xscale=1.5]
+\definetweakedfont[runtaller][yscale=2.5,xscale=.8,yoffset=-.2ex]
+
+{\FooA test test \runwider test test \runtaller test test}\par
+{\FooB test test \runwider test test \runtaller test test}\par
+{\FooC test test \runwider test test \runtaller test test}\par
+\stopbuffer
+
+\typebuffer
+
+\getbuffer
+
+\page
+
+Tweaking also works in math:
+
+\startbuffer
+\definetweakedfont[squeezed][xscale=0.9]
+\definetweakedfont[squoozed][xscale=0.7]
+
+\startlines
+$a = b^2 + \sqrt{c}$
+{\squeezed $a = b^2 + \sqrt{c}$}
+{\squoozed $a = b^2 + \sqrt{c}$}
+{$\squoozed a = b^2 + \sqrt{c}$}
+{$\scriptstyle a = b^2 + \sqrt{c}$}
+\stoplines
+\stopbuffer
+
+\typebuffer
+
+\getbuffer
+
+\page
+
+\startbuffer
+\startcombination[3*1]
+ {\bTABLE
+ \bTR \bTD foo \eTD \bTD[style=\squeezed] $x = 1$ \eTD \eTR
+ \bTR \bTD oof \eTD \bTD[style=\squeezed] $x = 2$ \eTD \eTR
+ \eTABLE} {local}
+ {\bTABLE[style=\squeezed]
+ \bTR \bTD $x = 1$ \eTD \bTD $x = 3$ \eTD \eTR
+ \bTR \bTD $x = 2$ \eTD \bTD $x = 4$ \eTD \eTR
+ \eTABLE} {global}
+ {\bTABLE[style=\squeezed\squeezed\squeezed\squeezed]
+ \bTR \bTD $x = 1$ \eTD \bTD $x = 3$ \eTD \eTR
+ \bTR \bTD $x = 2$ \eTD \bTD $x = 4$ \eTD \eTR
+ \eTABLE} {multiple}
+\stopcombination
+\stopbuffer
+
+\typebuffer
+
+\startlinecorrection
+\getbuffer
+\stoplinecorrection
+
+\page
+
+Tweaking can be combined with styles:
+
+\startbuffer
+\definetweakedfont[MyLargerFontA][scale=2000,style=bold]
+test {\MyLargerFontA test} test
+\stopbuffer
+
+\typebuffer
+
+\getbuffer
+
+\page
+
+We can use negative scale values:
+
+\startbuffer
+\bTABLE[align=middle]
+ \bTR
+ \bTD a{\glyphxscale 1000 \glyphyscale 1000 bc}d \eTD
+ \bTD a{\glyphxscale 1000 \glyphyscale -1000 bc}d \eTD
+ \bTD a{\glyphxscale -1000 \glyphyscale -1000 bc}d \eTD
+ \bTD a{\glyphxscale -1000 \glyphyscale 1000 bc}d \eTD
+ \eTR
+ \bTR
+ \bTD \tttf +1000 +1000 \eTD
+ \bTD \tttf +1000 -1000 \eTD
+ \bTD \tttf -1000 -1000 \eTD
+ \bTD \tttf -1000 +1000 \eTD
+ \eTR
+\eTABLE
+\stopbuffer
+
+\typebuffer
+
+\startlinecorrection
+\getbuffer
+\stoplinecorrection
+
+\page
+
+There are more glyph properties:
+
+\startbuffer
+\ruledhbox{
+ \ruledhbox{\glyph yoffset 1ex options 0 123} % left curly brace
+ \ruledhbox{\glyph xoffset .5em yoffset 1ex options "C0 123}
+ \ruledhbox{oeps{\glyphyoffset 1ex \glyphxscale 800
+ \glyphyscale\glyphxscale oeps}oeps}
+}
+\stopbuffer
+
+\typebuffer \scale[width=\textwidth]{\getbuffer}
+
+\page
+
+Glyph scales are internal counter values, like any other:
+
+\startbuffer
+\samplefile{jojomayer}
+{\glyphyoffset .8ex
+ \glyphxscale 700 \glyphyscale\glyphxscale
+ \samplefile{jojomayer}}
+{\glyphyscale\numexpr3*\glyphxscale/2\relax
+ \samplefile{jojomayer}}
+{\glyphyoffset -.2ex
+ \glyphxscale 500 \glyphyscale\glyphxscale
+ \samplefile{jojomayer}}
+\samplefile{jojomayer}
+\stopbuffer
+
+\typebuffer
+
+\getbuffer
+
+\page
+
+There is a helper for real (float) scales:
+
+\startbuffer
+1200 : \the\numericscale1200
+1.20 : \the\numericscale1.200
+\stopbuffer
+
+\typebuffer
+
+These lines produce the same integer:
+
+\startlines\tttf
+\getbuffer
+\stoplines
+
+\page
+
+You can do this but it's not always predictable (depends on outer scales too):
+
+\startbuffer[definition]
+\def\UnKernedTeX
+ {T%
+ {\glyph xoffset -.2ex yoffset -.4ex `E}%
+ {\glyph xoffset -.4ex options "60 `X}}
+\stopbuffer
+
+\startbuffer[example]
+We use \UnKernedTeX\ and {\bf \UnKernedTeX} and {\bs \UnKernedTeX}:
+the slanted version could use some more left shifting of the E.
+\stopbuffer
+
+\typebuffer[definition,example]
+
+\startnarrower
+ \getbuffer[definition,example]
+\stopnarrower
+
+Marks and cursive features can interfere, so this is an alternative:
+
+\startbuffer[definition]
+\def\UnKernedTeX
+ {T\glyph left .2ex raise -.4ex `E\glyph left .2ex `X\relax}
+\stopbuffer
+
+\typebuffer[definition]
+
+\startnarrower
+ \getbuffer[definition,example]
+\stopnarrower
+
+\page
+
+Yet another glyph option:
+
+\starttyping
+\multiply\glyphscale by 2 <{\darkgray \glyph `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph raise 3pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph raise -3pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph left 3pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph right 2pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph left 3pt right 2pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph left -3pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph right -2pt `M}>
+\multiply\glyphscale by 2 <{\darkgray \glyph left -3pt right -2pt `M}>
+\stoptyping
+
+\startlinecorrection
+\bTABLE[align=middle,width=.33\textwidth]
+ \bTR
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph raise 3pt `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph raise -3pt `M}>\eTD
+ \eTR
+ \bTR[frame=off]
+ \bTD \tttf \eTD
+ \bTD \tttf raise 3pt \eTD
+ \bTD \tttf raise -3pt \eTD
+ \eTR
+ \bTR
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph left 3pt `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph right 2pt `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph left 3pt right 2pt `M}>\eTD
+ \eTR
+ \bTR[frame=off]
+ \bTD \tttf left 3pt \eTD
+ \bTD \tttf right 2pt\eTD
+ \bTD \tttf left 3pt right 2pt\eTD
+ \eTR
+ \bTR
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph left -3pt `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph right -2pt `M}>\eTD
+ \bTD \showglyphs \multiply\glyphscale by 2 <{\darkgray \glyph left -3pt right -2pt `M}>\eTD
+ \eTR
+ \bTR[frame=off]
+ \bTD \tttf left -3pt \eTD
+ \bTD \tttf right -2pt \eTD
+ \bTD \tttf left -3pt right -2pt \eTD
+ \eTR
+\eTABLE
+\stoplinecorrection
+
+\page
+
+A larger example:
+
+\startbuffer
+\glyphscale 4000
+\vl\glyph `M\vl\quad
+\vl\glyph raise .2em `M\vl\quad
+\vl\glyph left .3em `M\vl\quad
+\vl\glyph right .2em`M\vl\quad
+\vl\glyph left -.2em right -.2em`M\vl\quad
+\vl\glyph raise -.2em right .4em`M\vl
+\stopbuffer
+
+\typebuffer
+
+{\getbuffer}
+
+\stoptitle
+
+\stopdocument
diff --git a/doc/context/presentations/context/2021/context-2021-localcontrol.pdf b/doc/context/presentations/context/2021/context-2021-localcontrol.pdf
new file mode 100644
index 000000000..f9f96aa41
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-localcontrol.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-localcontrol.tex b/doc/context/presentations/context/2021/context-2021-localcontrol.tex
new file mode 100644
index 000000000..72c1114be
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-localcontrol.tex
@@ -0,0 +1,369 @@
+% language=us
+
+% TAKE FROM LOWLEVEL-EXPANSION.TEX
+
+\usemodule[system-tokens]
+
+\usemodule[present-boring,abbreviations-logos]
+
+\definehighlight[nb][style=bold,color=middlegray,define=no]
+
+\startdocument
+ [title={PROGRAMMING},
+ banner={local control},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=Expansion]
+
+\TEX\ can be in several so called input reading modes:
+
+Users mostly see it reading from the source file(s). Characters are picked up and
+interpreted. Depending on what token it becomes some action takes place.
+
+\starttyping
+1 \setbox0\hbox to 10pt{2} \count0=3 \the\count0 \multiply\count0 by 4
+\stoptyping
+
+\startitemize
+
+\startitem
+ The \type {1} gets typeset because characters like that are seen as text.
+\stopitem
+
+\startitem
+ The \type {\setbox} primitive triggers picking up a register number, then
+ goes on scanning for a box specification and that itself will typeset a
+ sequence of whatever until the group ends.
+\stopitem
+
+\startitem
+ The \type {count} primitive triggers scanning for a register number (or
+ reference) and then scans for a number; the equal sign is optional.
+\stopitem
+
+\startitem
+ The \type {the} primitive injects some value into the current input stream
+ (it does so by entering a new input level).
+\stopitem
+
+\startitem
+ The \type {multiply} primitive picks up a register specification and
+ multiplies that by the next scanned number. The \type {by} is optional.
+\stopitem
+
+\startitem
+ Printing from \LUA\ and scanning tokens with e.g.\ \type {\scantokens} is like
+ reading (pseudo) files.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Expansion]
+
+\startbuffer[def]
+\def\TestA {1 \setbox0\hbox{2} \count0=3 \the\count0}
+\stopbuffer
+
+\startbuffer[edef]
+\edef\TestB{1 \setbox0\hbox{2} \count0=3 \the\count0}
+\stopbuffer
+
+\typebuffer[def]
+\typebuffer[edef]
+
+\getbuffer[def]
+\getbuffer[edef]
+
+\blank[2*big]
+
+\startcolumns[n=2] \switchtobodyfont[8pt]
+\luatokentable\TestA
+\column
+\luatokentable\TestB
+\stopcolumns
+
+\stoptitle
+
+\starttitle[title=Local control]
+
+\startbuffer[edef]
+\edef\TestB{1 \setbox0\hbox{2} \count0=3 \the\count0}
+\stopbuffer
+
+\startbuffer[ldef]
+\edef\TestC{1 \setbox0\hbox{2} \localcontrolled{\count0=3} \the\count0}
+\stopbuffer
+
+\typebuffer[edef]
+\typebuffer[ldef]
+
+\getbuffer[edef]
+\getbuffer[ldef]
+
+\blank[2*big]
+
+\startcolumns[n=2] \switchtobodyfont[8pt]
+\luatokentable\TestB
+\column
+\luatokentable\TestC
+\stopcolumns
+
+\stoptitle
+
+\starttitle[title=Side effects]
+
+\startbuffer[edef]
+\edef\TestB{1 \setbox0\hbox{2} \count0=3 \the\count0}
+\stopbuffer
+
+\startbuffer[ldef]
+\edef\TestD{\localcontrolled{1 \setbox0\hbox{2} \count0=3 \the\count0}}
+\stopbuffer
+
+\typebuffer[edef]
+\typebuffer[ldef]
+
+\getbuffer[edef]\getbuffer[ldef]\quad{\darkgray\leftarrow\space Watch how the results end up here!}
+
+\blank[2*big]
+
+\startcolumns[n=2] \switchtobodyfont[8pt]
+\luatokentable\TestB
+\column
+\luatokentable\TestD
+\stopcolumns
+
+\stoptitle
+
+\starttitle[title=Usage]
+
+\startbuffer[def]
+\def\WidthOf#1%
+ {\beginlocalcontrol
+ \setbox0\hbox{#1}%
+ \endlocalcontrol
+ \wd0 }
+\stopbuffer
+
+\startbuffer[use]
+\scratchdimen\WidthOf{The Rite Of Spring}
+
+\the\scratchdimen
+\stopbuffer
+
+\typebuffer[def]
+\typebuffer[use]
+
+\getbuffer[def]\getbuffer[use]
+
+\stoptitle
+
+\starttitle[title=Not always pretty]
+
+\startbuffer[def]
+\def\WidthOf#1%
+ {\dimexpr
+ \beginlocalcontrol
+ \begingroup
+ \setbox0\hbox{#1}%
+ \expandafter
+ \endgroup
+ \expandafter
+ \endlocalcontrol
+ \the\wd0
+ \relax}
+\stopbuffer
+
+\startbuffer[use]
+\scratchdimen\WidthOf{The Rite Of Spring}
+
+\the\scratchdimen
+\stopbuffer
+
+\typebuffer[def]
+\typebuffer[use]
+
+\getbuffer[def]\getbuffer[use]
+
+\stoptitle
+
+\starttitle[title=The \LUA\ end]
+
+Right from the start the way to get something into \TEX\ from \LUA\ has been the
+print functions. But we can also go local (immediate). There are several methods:
+
+\startitemize
+\startitem via a set token register \stopitem
+\startitem via a defined macro \stopitem
+\startitem via a string \stopitem
+\stopitemize
+
+Among the things to keep in mind are catcodes, scope and expansion (especially in
+when the result itself ends up in macros).
+
+\stoptitle
+
+\starttitle[title=Via a token register]
+
+% runlocal : macro|toks expand group
+
+\startbuffer[set]
+\toks0={\setbox0\hbox{The Rite Of Spring (Igor Stravinsky)}}
+\toks2={\setbox0\hbox{The Rite Of Spring (Joe Parrish)}}
+\stopbuffer
+
+\typebuffer[set]
+
+\startbuffer[run]
+\startluacode
+tex.runlocal(0) context("[1: %p]",tex.box[0].width)
+tex.runlocal(2) context("[2: %p]",tex.box[0].width)
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[set,run] \stop
+
+\stoptitle
+
+\starttitle[title=Via a token macro]
+
+\startbuffer[set]
+\def\TestA{\setbox0\hbox{The Rite Of Spring (Igor Stravinsky)}}
+\def\TestB{\setbox0\hbox{The Rite Of Spring (Joe Parrish)}}
+\stopbuffer
+
+\typebuffer[set]
+
+\startbuffer[run]
+\startluacode
+tex.runlocal("TestA") context("[3: %p]",tex.box[0].width)
+tex.runlocal("TestB") context("[4: %p]",tex.box[0].width)
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[set,run] \stop
+
+\stoptitle
+
+\starttitle[title=Via a string]
+
+\startbuffer[run]
+\startluacode
+tex.runstring([[\setbox0\hbox{The Rite Of Spring (Igor Stravinsky)}]])
+
+context("[5: %p]",tex.box[0].width)
+
+tex.runstring([[\setbox0\hbox{The Rite Of Spring (Joe Parrish)}]])
+
+context("[6: %p]",tex.box[0].width)
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[run] \stop
+
+\blank[2*big]
+
+A bit more high level:
+
+\starttyping
+context.runstring([[\setbox0\hbox{(Here \bf 1.2345)}]])
+context.runstring([[\setbox0\hbox{(Here \bf %.3f)}]],1.2345)
+\stoptyping
+
+\stoptitle
+
+\starttitle[title=Locked in \LUA]
+
+\startbuffer[run]
+\startluacode
+token.setmacro("TestX",[[\setbox0\hbox{The Rite Of Spring (Igor)}]])
+tex.runlocal("TestX")
+context("[7: %p]",tex.box[0].width)
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[run] \stop
+
+\startbuffer[run]
+\startluacode
+tex.scantoks(0,tex.ctxcatcodes,[[\setbox0\hbox{The Rite Of Spring (Joe)}]])
+tex.runlocal(0)
+context("[8: %p]",tex.box[0].width)
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[run] \stop
+
+\stoptitle
+
+\starttitle[title=Order matters]
+
+A lot this relates to pushing stuff into the input which is stacked. Compare:
+
+\startbuffer[run]
+\startluacode
+context("[HERE 1]")
+context("[HERE 2]")
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[run] \stop
+
+with this:
+
+\startbuffer[run]
+\startluacode
+tex.pushlocal() context("[HERE 1]") tex.poplocal()
+tex.pushlocal() context("[HERE 2]") tex.poplocal()
+\stopluacode
+\stopbuffer
+
+\typebuffer[run]
+
+\start \getbuffer[run] \stop
+
+% \startluacode
+% tex.runlocal(function() context("[Here 1]") end)
+% context("[Here 12]")
+% tex.runlocal(function() context("[Here 2]") end)
+% \stopluacode
+
+% tex.pushlocal % swaps order
+% tex.poplocal
+% tex.quitlocal
+
+% token.expandmacro
+
+% str : serialized
+% true : wrap next {}
+% table : {serialzed} {serialzed} {serialzed}
+% token : inject
+% number: catcode table
+
+% tex.expandasvalue:
+% (kind, like expand_macro)
+
+% tex.runstring:
+% [catcode] string expand grouped
+
+% tex.runlocal
+% function|number(register)|string(macro)|userdata(token) / expand / grouped
+
+% mplib.expandtex
+% mpx, kind, macro, arguments
+
+\stopdocument
diff --git a/doc/context/presentations/context/2021/context-2021-luametafun.pdf b/doc/context/presentations/context/2021/context-2021-luametafun.pdf
new file mode 100644
index 000000000..25c7b95a4
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-luametafun.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-luametafun.tex b/doc/context/presentations/context/2021/context-2021-luametafun.tex
new file mode 100644
index 000000000..333c68682
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-luametafun.tex
@@ -0,0 +1,362 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+\setuptolerance[verytolerant,stretch]
+
+\startdocument
+ [title={LUAMETAFUN},
+ banner={the new interfaces},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=Three subsystems]
+
+\startitemize
+
+\startitem
+ The core of the engine in still \TEX. It all starts there.
+\stopitem
+
+\startitem
+ The \TEX\ internals are opened up via \LUA. We can call out to \LUA\ from
+ \TEX\ and to some extend from \LUA\ to \TEX. Quite often we push back
+ something via the input channels.
+\stopitem
+
+\startitem
+ The \METAPOST\ library is accessed from \LUA. So from within \TEX\ there is
+ always \LUA\ in between. Results go back via \LUA. The library can also call
+ out to \LUA\ and from there to \TEX.
+\stopitem
+
+\startitem
+ This means that all three major components of \LUAMETATEX\ can talk to each
+ other and use each others capabilities.
+\stopitem
+
+\startitem
+ With \LUA\ in the center, we also have access to other mechanism, for instance
+ fonts, graphics and libraries.
+\stopitem
+
+\startitem
+ In \CONTEXT\ the \LUA\ language also permits using \XML, \JSON, \CSV, \SQL\
+ databases and other input that can be dealt with programmatically.
+\stopitem
+
+\startitem
+ All has been reasonably optimized for efficiency and performance.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=The (\LUATEX) library]
+
+\startitemize
+
+\startitem
+ Turning \METAPOST\ into a library has been a subproject of the \LUATEX\ project. The
+ semi|-|official team (Taco, Jacko, Hans, Luigi) got John Hobbies blessing.
+\stopitem
+
+\startitem
+ This was a rather massive (and impressive) operation by Taco because multiple
+ number models were to be supported and the internals had to be made such that
+ different backends were possible. All with remaining perfect (DEK) compatibility.
+\stopitem
+
+\startitem
+ The \METAPOST\ library serves both the stand alone program and \LUATEX.
+\stopitem
+
+\startitem
+ That means the \POSTSCRIPT\ backend is built in plus some basic (\TYPEONE)
+ font handling. We support \PDF\ output via the \METAPOST\ \LUA\ backend (in
+ \MKII\ that is done by parsing the \POSTSCRIPT\ and specials).
+\stopitem
+
+\startitem
+ In addition there is \PNG\ and \SVG\ output. It helps that \METAPOST\ output is
+ rather simple.
+\stopitem
+
+\startitem
+ The \LUATEX\ engine uses the \LUA\ backend which represents the result in \LUA\ tables
+ resembling the \METAPOST\ internal representation.
+\stopitem
+
+\startitem
+ The library supports scaled and double (internal) but also binary and decimal
+ number models that use (linked in) libraries.
+\stopitem
+
+% this would force a page
+%
+% \startitem
+% The library is quite stable and Taco transferred maintenance to Luigi.
+% \stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=The (\LUAMETATEX) library]
+
+\startitemize
+
+\startitem
+ We don't need the \POSTSCRIPT\ backend (which only does \TYPEONE\ anyway).
+\stopitem
+
+\startitem
+ We also have no use for \SVG\ and \PNG\ output.
+\stopitem
+
+\startitem
+ The binary number model has no advantages over the decimal one but brings
+ quite some dependency with it (library code).
+\stopitem
+
+\startitem
+ The \TYPEONE\ font support is not used in \CONTEXT\ because we handle text
+ differently.
+\stopitem
+
+\startitem
+ All this means that we can do with a smaller (simplified) \METAPOST\ library.
+\stopitem
+
+\startitem
+ The codebase has been overhauled. We still have \type {.w} files (\CWEB) but
+ use a \LUA\ script to convert that to \CCODE\ which means that we have better
+ control over how it comes out.
+\stopitem
+
+\startitem
+ As with \LUATEX\ the file \IO, message handling etc.\ now largely goes via \LUA;
+ it is more integrated.
+\stopitem
+
+\startitem
+ The same is true for scanning interfaces and return values (injectors). That also
+ made for more symbolic coding.
+\stopitem
+
+\startitem
+ Memory management (allocation) is under engine control (as with \TEX\ and \LUA);
+ we use a common high performance allocator library.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=The (\LUAMETATEX) library]
+
+\startitemize
+
+\startitem
+ Some already present mechanism have been extended, for instance clips have
+ pre- and postscripts.
+\stopitem
+
+\startitem
+ A grouping wrapper has been added (handy for some graphic trickery supported in the
+ backend.)
+\stopitem
+
+\startitem
+ The \type {runscript} primitive supports symbolic references to functions (of course to
+ be provided at the \LUA\ end).
+\stopitem
+
+\startitem
+ The \type {runscript} return values can be more native, in addition to the already
+ present (default) \type {scantokens} support.
+\stopitem
+
+\startitem
+ Internals are extended with booleans and strings.
+\stopitem
+
+\startitem
+ Output (paths, clips etc) can be stacked in a different order.
+\stopitem
+
+\startitem
+ There are additional statistics available.
+\stopitem
+
+\startitem
+ In some places performance could be improved.
+\stopitem
+
+\startitem
+ In the meantime it can be considered a major upgrade and (for various
+ reasons) backporting to \LUATEX\ makes no sense. And yes, all errors are
+ mine.
+\stopitem
+
+\stopitemize
+
+\starttitle[title=The \LUA fication]
+
+ {\em See Taco's presentation where he gives some examples.}
+
+\stoptitle
+
+\starttitle[title=Callbacks]
+
+We need to hook in some functions: \blank[2*big]
+
+\starttabulate[|T|T|T|p|]
+ \HL
+ \NC \NC find_file \NC (name,mode,kind) \NC locate a file (usually within the \TDS\ setup) \NC \NR
+ \NC f \NC open_file \NC (name,mode,kind) \NC open given file \NC \NR
+ \NC \NC close_file \NC (handle) \NC close opened file \NC \NR
+ \NC s \NC read_file \NC (handle,size) \NC read from file \NC \NR
+ \NC \NC write_file \NC (handle,str) \NC write to file \NC \NR
+ \HL
+ \NC s \NC run_script \NC (code,size,index) \NC run the given string as \LUA\ script \NC \NR
+ \NC s \NC make_text \NC (str,size,mode) \NC process btex/etex \NC \NR
+ \HL
+ \NC \NC run_internal \NC (action,index,kind,name) \NC act on internal definition \NC \NR
+ \HL
+ \NC n \NC run_overload \NC (property,name,mode) \NC process overload check \NC \NR
+ \HL
+ \NC \NC run_logger \NC (target,str,size) \NC process log message \NC \NR
+ \NC \NC run_error \NC (message,help,interaction) \NC handle error (message) \NC \NR
+ \NC \NC run_warning \NC (message) \NC handle warning \NC \NR
+ \HL
+\stoptabulate
+
+% check_overload shipout_backend
+
+\stoptitle
+
+\starttitle[title=Two calling methods]
+
+The runner can be called as:
+
+\starttyping
+runscript("mp.MyFunction()")
+\stoptyping
+
+which implies at the \LUA\ end:
+
+\starttyping
+function mp.MyFunction()
+ ...
+end
+\stoptyping
+
+Here the callback function is responsible for loading the string and executing it.
+
+Alternatively one can say:
+
+\starttyping
+runscript <number>
+\stoptyping
+
+The number can be intercepted at the \LUA\ end to do some associated action.
+
+\stoptitle
+
+\starttitle[title=Variables]
+
+We can do:
+
+\starttyping
+lua.mp.MyFunction("foo",123,true)
+\stoptyping
+
+which in the end is equivalent to:
+
+\starttyping
+runscript("mp.MyFunction('foo',123,true)")
+\stoptyping
+
+Alternatively one can pick up values by scanning: like \type {scannext}, \type
+{scanexpression}, \type {scantoken}, \type {scansymbol}, \type {scannumeric},
+\type {scaninteger}, \type {scanboolean}, \type {scanstring}, \type {scanpair},
+\type {scancolor}, \type {scancmykcolor}, \type {scantransform}, \type
+{scanpath}, \type {scanpen}, etc.
+
+\stoptitle
+
+\starttitle[title=Return values]
+
+The runner can return:
+
+\startitemize
+
+\startitem
+ a string that gets fed into the \type {scantokens} primitive
+\stopitem
+
+\startitem
+ a numeric or boolean that gets injected as native \METAPOST\ object
+\stopitem
+
+\startitem
+ a table that gets concatenated and fed into the \type {scantokens} primitive
+\stopitem
+
+\startitem
+ \type {true} and a second argument that gets converted into a native \METAPOST\ object
+\stopitem
+
+\startitem
+ in the last case the number of table elements determines the object
+\stopitem
+
+\stopitemize
+
+Instead of returning a value one can inject: \type {injectnumeric}, \type
+{injectinteger}, \type {injectboolean}, \type {injectstring}, \type {injectpair},
+\type {injectcolor}, \type {injectcmykcolor}, \type {injecttransform}, \type
+{injectpath}, \type {injectwhatever}, etc.\ and these accept one or more values
+and|/|or tables.
+
+These mechanisms might evolve a bit over time. Lots of examples can be found in
+the \type {mlib-*.lmt} files.
+
+\stoptitle
+
+\starttitle[title=Parameters]
+
+\startitemize
+ \startitem
+ The new interfaces permit us to program quite robust parameter driven
+ interfaces that (sort of) match the way we do things at the \TEX\ end.
+ \stopitem
+ \startitem
+ The distribution has several examples of usage and more will be added.
+ \stopitem
+ \startitem
+ Macros that use the new mechanisms can be recognized by the \type {lmt_}
+ prefix.
+ \stopitem
+\stopitemize
+
+\starttyping
+lmt_mytrick [
+ somestring = "test",
+ somenumeric = 123,
+ someboolean = true,
+ somecolor = (1, 0, 1),
+ somepath = fullsquare scaled 10cm,
+ somelist = { (0, 0), (1, 3), (8, 9) },
+ sometable = [
+ somenumeric = 321,
+ ],
+] ;
+\stoptyping
+
+{\em Show the pattern of defining these at the \LUA\ end and in \METAPOST\ files.}
+
+\stoptitle
+
+\stopdocument
diff --git a/doc/context/presentations/context/2021/context-2021-math.pdf b/doc/context/presentations/context/2021/context-2021-math.pdf
new file mode 100644
index 000000000..dd343899b
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-math.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-math.tex b/doc/context/presentations/context/2021/context-2021-math.tex
new file mode 100644
index 000000000..fce4ca4d5
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-math.tex
@@ -0,0 +1,236 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+\definecolor[maincolor] [r=.4]
+\definecolor[extracolor][s=.1]
+
+\startdocument
+ [title={MATH},
+ banner={complete control},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=The benchmark]
+
+\startitemize
+
+\startitem
+ Traditional \TEX\ has set the benchmark for typesetting math.
+\stopitem
+
+\startitem
+ It uses three categories of fonts: alphabet, symbol, extensible.
+\stopitem
+
+\startitem
+ Limitations in fonts have lead to some curious handling of dimensions.
+\stopitem
+
+\startitem
+ The fact that there is \type {\over} makes for multipass scanning and
+ processing.
+\stopitem
+
+\startitem
+ The last family counts (when entering the second pass) so one has to use very
+ controlled font switching.
+\stopitem
+
+\startitem
+ Some features (limits, integrals, primes) rely on special macros and parsing.
+\stopitem
+
+\startitem
+ One can end up in tricky font switching. Also, quite some fonts are loaded in
+ order to set up the machinery.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Todays reality]
+
+\startitemize
+
+\startitem
+ We now use \OPENTYPE\ math fonts. In fact, in \MKIV\ we always used only one
+ font instance (unless we mix font families).
+\stopitem
+
+\startitem
+ We operate in the \UNICODE\ domain, so in the end there was no need to bump the
+ number of families in \LUATEX.
+\stopitem
+
+\startitem
+ In \CONTEXT\ we use only a few font families: regular, regular r2l, bold, bold r2l.
+\stopitem
+
+\startitem
+ All the tricky stuff is done with the help of \LUA. This already started very
+ early in the \LUATEX\ project and has not changed.
+\stopitem
+
+\startitem
+ But we still run into issues because the available fonts are inconsistent,
+ incompatible, have issues and that is unlikely to change.
+\stopitem
+
+\startitem
+ We have a virtual font system in place that was used during the transition (when no
+ fonts were available).
+\stopitem
+
+\startitem
+ In \CONTEXT\ there are various ways to deal with shortcomings in or extensions to fonts.
+\stopitem
+
+\startitem
+ At some point we need to make up our minds, accept the issues with fonts, and
+ just fix things runtime.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=The engine]
+
+\startitemize
+
+\startitem
+ In \LUATEX\ we started with a hybrid approach but eventually ended up with
+ more split code paths.
+\stopitem
+
+\startitem
+ In \LUAMETATEX\ nearly all aspects of the engine had made configurable and are under
+ user control.
+\stopitem
+
+\startitem
+ This permits experiments where we can apply old methods onto new fonts.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=The tricky things]
+
+\startitemize
+
+\startitem
+ Spacing in traditional math is a combination of widths and italic correction:
+ we need to add them and sometimes afterwards subtract the italic correction.
+ In \OPENTYPE\ math we don't lie about dimensions and apply italic correction
+ selectively (as we have staircase kerns).
+\stopitem
+
+\startitem
+ Special symbols like primes are quite inconsistent wrt dimensions and positioning
+ and we need to catch that. We also need robust ways to collapse them to the proper
+ \UNICODE\ symbol.
+\stopitem
+
+\startitem
+ Larger variants (these \type {\bigg} things) needs some attention too.
+\stopitem
+
+\startitem
+ We need to map characters onto the right shaped (alphabets) because hardly
+ anyone will enter the \UNICODE\ math characters directly.
+\stopitem
+
+\startitem
+ We might want to fix scripts, italics, kern pairs etc.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Implementation]
+
+Among the new features (introduced over a period of time) are:
+
+\startitemize
+
+\startitem
+ All kind of inter|-|class spacing parameters (in addition to what \LUATEX\
+ already provides).
+\stopitem
+
+\startitem
+ Dozens of \OPENTYPE\ font related spacing parameters (more that traditional
+ \TEX).
+\stopitem
+
+\startitem
+ Opened up additional font (and taste) related parameters (hard coded in
+ traditional \TEX).
+\stopitem
+
+\startitem
+ Opened up style related parameters (hard coded in traditional \TEX).
+\stopitem
+
+\startitem
+ Control codes that make the engine follow a different (the traditional) code
+ path (which can come in handy when testing or writing manuals).
+\stopitem
+
+\startitem
+ The ability to simplify the result a bit wrt characters (the engine loves to
+ box a lot).
+\stopitem
+
+\startitem
+ Efficient font, style and parameter scaling by reusing fonts and thereby
+ limiting the number of instances.
+\stopitem
+
+\startitem
+ More options to special (constructed) symbols.
+\stopitem
+
+\startitem
+ Let math related nodes carry around more control properties and states.
+\stopitem
+
+\startitem
+ Support of local changes to math parameters.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+\stopdocument
+
+% mml
+% vf chars for extensibles
+
+% noads.handlers.showtree
+% noads.handlers.unscript
+% noads.handlers.unstack
+% noads.handlers.variants
+% noads.handlers.relocate
+% noads.handlers.families
+% noads.handlers.render
+% noads.handlers.collapse
+% noads.handlers.fixscripts
+% noads.handlers.domains
+% noads.handlers.autofences
+% noads.handlers.resize
+% noads.handlers.respace
+% noads.handlers.alternates
+% noads.handlers.tags
+% noads.handlers.italics
+% noads.handlers.kernpairs
+% noads.handlers.classes
+
+% builders.kernel.mlisttohlist
+% noads.handlers.makeup
+% noads.handlers.align
diff --git a/doc/context/presentations/context/2021/context-2021-overloadprotection.pdf b/doc/context/presentations/context/2021/context-2021-overloadprotection.pdf
new file mode 100644
index 000000000..c6335f32d
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-overloadprotection.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-overloadprotection.tex b/doc/context/presentations/context/2021/context-2021-overloadprotection.tex
new file mode 100644
index 000000000..5143e855a
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-overloadprotection.tex
@@ -0,0 +1,298 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+
+\definehighlight[nb][style=bold,color=middlegray,define=no]
+
+\setuptolerance[verytolerant,stretch]
+
+\definecolor[maincolor][r=.3,b=.3]
+
+\startdocument
+ [title={OVERLOAD PROTECTION},
+ banner={the downside of macros},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+% TEX MP
+
+\starttitle[title=Primitives]
+
+A \TEX\ engine comes with a whole set of primitive operations for:
+
+\startitemize[packed]
+ \startitem
+ accessing internal variables
+ \stopitem
+ \startitem
+ defining macros
+ \stopitem
+ \startitem
+ controlling expansion
+ \stopitem
+ \startitem
+ constructing boxes
+ \stopitem
+ \startitem
+ finalizing pages
+ \stopitem
+ \startitem
+ defining characters (text and math)
+ \stopitem
+ \startitem
+ inserting kerns, glue and penalties
+ \stopitem
+ \startitem
+ defining fonts
+ \stopitem
+ \startitem
+ dealing with languages (hyphenation)
+ \stopitem
+ \startitem
+ testing properties
+ \stopitem
+ \startitem
+ manipulating tokens
+ \stopitem
+ \startitem
+ managing inserts
+ \stopitem
+ \startitem
+ handling marks
+ \stopitem
+ \startitem
+ grouping
+ \stopitem
+ \startitem
+ mathematics
+ \stopitem
+ \startitem
+ tracing
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Macros]
+
+\startitemize
+ \startitem
+ Macros are commands defined by the user and/or a macro package.
+ \stopitem
+ \startitem
+ They can overload a primitive which then can confuse the whole machinery.
+ \stopitem
+ \startitem
+ A macro package can alias primitives for instance \type {\relax} can be
+ replaced by \type {\foo_relax} after \typ {\let \foo_relax \relax}.
+ \stopitem
+ \startitem
+ That only when (at definition time) the \type {_} is a letter. By using such
+ a character some protection against overload is provided.
+ \stopitem
+ \startitem
+ In \CONTEXT\ we often use(d) aliases like \type {\normalrelax} but of course
+ these can also be overloaded.
+ \stopitem
+ \startitem
+ We only overload a very few primitives, for instance \type {\language}.
+ \stopitem
+ \startitem
+ Users who overload primitives are \quote {on their own} and \quote {without
+ support}.
+ \stopitem
+ \startitem
+ An easy way to protect yourself is using \type {\CamelCase} names.
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Overload protection]
+
+\startitemize
+ \startitem
+ The \LUAMETATEX\ engine has overload protection built in for the \TEX\ engine
+ as well as provides means to do that for \METAPOST.
+ \stopitem
+ \startitem
+ In \LMTX\ all commands have been tagged accordingly (which was quite some work).
+ \stopitem
+ \startitem
+ Processing \type {s-system-macros.mkxl} gives an overview.
+ \stopitem
+ \startitem
+ Overload protection is off by default but can be turned on:
+
+\starttyping
+\enabledirectives[overloadmode=warning]
+\enabledirectives[overloadmode=error]
+\stoptyping
+
+ \stopitem
+ \startitem
+ I myself always run with the error variant and make sure that the manuals obey
+ the rules.
+ \stopitem
+ \startitem
+ Modules and/or styles (and in a few cases the core code) can cheat and use:
+
+\starttyping
+\pushoverloadmode
+ ........................
+ ........................
+\popoverloadmode
+\stoptyping
+
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Details]
+
+\startitemize
+ \startitem
+ Traditional \TEX\ has a few so called prefixes: \type {\global}, \type {\outer},
+ \type {\long}, and type \type {\immediate}.
+ \stopitem
+ \startitem
+ The \ETEX\ engine adds \type {\protected} (because we already had that in
+ \CONTEXT\ we use what we (also already) had: \type {\unexpanded}).
+ \stopitem
+ \startitem
+ In \LUATEX\ we can force macros to be always long, something that we do
+ in \MKIV\ (as in \MKII).
+ \stopitem
+ \startitem
+ In \LUAMETATEX\ the \type {\outer} and \type {\long} prefixes have been
+ dropped (they are ignored).
+ \stopitem
+ \startitem
+ In \LUAMETATEX\ the \type {\protected} prefix acts like in other engines
+ but protection is implemented more naturally.
+ \stopitem
+ \startitem
+ In addition \LUAMETATEX\ has new prefixes: \type {\frozen}, \type
+ {\permanent}, \type {\immutable}, \type {\mutable}, \type {\noaligned},
+ \type {\instance}, \type {\untraced}, \type {\tolerant}, \type
+ {\overloaded}, \type {\aliased}, \type {\immediate} and an experimental
+ \type {\semiprotected},
+ \stopitem
+ \startitem
+ Some prefixes end up as properties of macros, some influence scanning (for instance
+ in alignments and when calling \LUA\ functions). There is no noticeable runtime
+ overhead.
+ \stopitem
+ \startitem
+ The \type {\meaningfull} primitive is like \type {\meaning} but also reports
+ properties set by prefixes; there is also \type {\meaningless}.
+ \stopitem
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Prefixes]
+
+Regular definitions:
+
+\startitemize
+ \startitem
+ \type {\global}: defines a macro or sets a register value out of scope.
+ \stopitem
+ \startitem
+ \type {\outer}: is used to issue a warning when a macro defined as such was
+ used nested (just ignored in \LUAMETATEX).
+ \stopitem
+ \startitem
+ \type {\long}: triggers a warning when an argument of a macro contains a
+ \type {\par} equivalent (just ignored in \LUAMETATEX).
+ \stopitem
+ \startitem
+ \type {\protected}: makes a macro unexpandable (being itself) in an \type
+ {\edef} equivalent situation (where it can get out of hands).
+ \stopitem
+ \startitem
+ \type {\semiprotected}: is like \type {\protected} but the property is
+ ignored when \type {\semiexpanded} is applied.
+ \stopitem
+\stopitemize
+
+Special case:
+
+\startitemize
+ \startitem
+ \type {\immediate}: tells a backend primitive to come into action
+ immediately instead of creating a delayed action (via a whatsit node). In
+ \LUAMETATEX\ we have no built|-|in backend so there is signals a \LUA\
+ interface function this property.
+ \stopitem
+\stopitemize
+
+\page
+
+Scanning related:
+
+\startitemize
+ \startitem
+ \type {\noaligned}: tags a macro as valid peek ahead macro when scanning
+ alignments; normally that only makes sense for \type {\protected} macros.
+ This permits cleaner macros in for instance table mechanisms (no
+ unexpected expansion side effects).
+ \stopitem
+ \startitem
+ \type {\untraced}: this flag makes a macro report itself as primitive in
+ traces which is sometimes nicer that presenting a user with some
+ confusing meaning.
+ \stopitem
+ \startitem
+ \type {\tolerant}: a prefix that makes the macro argument parser accept
+ all kind of new argument parsing options and continue when delimited
+ arguments fail. This makes macros with optional arguments produce less
+ noise when they are traced but more important, it makes for cleaner low
+ level interfaces.
+ \stopitem
+\stopitemize
+
+
+\page
+
+Overload protection (primitives are protected against overloads by default):
+
+\startitemize
+ \startitem
+ \type {\aliased}: create a reference (using \type {\let}) that also inherits the
+ properties.
+ \stopitem
+ \startitem
+ \type {\permanent}: sets a flag that makes a macro (or definition) immune for
+ redefinition.
+ \stopitem
+ \startitem
+ \type {\frozen}: prevents overloading but one can bypass that with some
+ more effort.
+ \stopitem
+ \startitem
+ \type {\immutable}: makes a (normally variable definition) fixed, for instance
+ constants.
+ \stopitem
+ \startitem
+ \type {\mutable}: a flag showing that this macro or definition can be used for
+ anything (so the macro package also has to assume that).
+ \stopitem
+ \startitem
+ \type {\instance}: just a flag that can be used to signal that a macro (or definition)
+ is an instance of a more general concept.
+ \stopitem
+ \startitem
+ \type {\overloaded}: bypass a frozen flag (property).
+ \stopitem
+\stopitemize
+
+\blank[2*big]
+
+{\em Show some examples in the source code and editor.}
+
+\stoptitle
+
+\stopdocument
diff --git a/doc/context/presentations/context/2021/context-2021-paragraphs.pdf b/doc/context/presentations/context/2021/context-2021-paragraphs.pdf
new file mode 100644
index 000000000..9b32a6576
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-paragraphs.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-paragraphs.tex b/doc/context/presentations/context/2021/context-2021-paragraphs.tex
new file mode 100644
index 000000000..7a4e566d8
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-paragraphs.tex
@@ -0,0 +1,162 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+\definecolor[maincolor] [r=.4,g=.4]
+\definecolor[extracolor][s=.1]
+
+\startdocument
+ [title={PARAGRAPHS},
+ banner={a bit of an upgrade},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=Note]
+
+\startitemize
+
+\startitem
+ Some of the following already is present for a while and has been discussed
+ at previous meetings.
+\stopitem
+
+\startitem
+ But \unknown\ occasionally some minor tweak gets added so consider this to be
+ an update.
+\stopitem
+
+\stopitemize
+
+\starttitle[title=Spacing]
+
+\startitemize
+
+\startitem
+ Spaces in \TEX\ become glue nodes (with optional stretch and shrink).
+\stopitem
+
+\startitem
+ In traditional \TEX\ these glue nodes are ref counted copies of the current
+ spacing related variables.
+\stopitem
+
+\startitem
+ In \LUATEX\ we make real copies so that when we mess with the node list
+ changes to glue don't affect other instances.
+\stopitem
+
+\stopitemize
+
+\starttitle[title=Parameters]
+
+\startitemize
+
+\startitem
+ In traditional \TEX\ the paragraphs bound properties that are in effect
+ when \type {\par} happens are used when breaking into lines.
+\stopitem
+
+\startitem
+ In \LUAMETATEX\ the paragraphs bound properties are stored with the
+ paragraph and can be frozen when they are set.
+\stopitem
+
+\startitem
+ This gives a more predictable (and robust) way of manipulating a
+ paragraph.
+\stopitem
+
+\startitem
+ We can for instance get rid of grouping side effects that interfere with
+ \type {\everypar}.
+\stopitem
+
+\startitem
+ Currently three dozen parameters are tracked but they are grouped in
+ categories.
+\stopitem
+
+\blank[2*big] {\em (show code and examples)}
+
+\stopitemize
+
+\stoptitle
+
+\starttitle[title=Wrapping]
+
+\startitemize
+
+\startitem
+ Doing something in front of a paragraph is taken care of by good old
+ \type {\everypar}.
+\stopitem
+
+\startitem
+ In \LUAMETATEX\ we also have \type {\everybeforepar} but so far in \CONTEXT\
+ we haven't used that.
+\stopitem
+
+\startitem
+ Adding something to the end of a paragraph can be tricky so we have
+ a wrapper mechanism: \type {\wrapuppar}.
+\stopitem
+
+\startitem
+ The \type {\wrapuppar} primitive is similar to \type {\atendofgroup} in the
+ sense that it accumulates tokens (so no \type {\endofpar}).
+\stopitem
+
+\startitem
+ Normally these primitives are not used directly but managed by a more general
+ system of handling paragraphs.
+\stopitem
+
+\stopitemize
+
+\blank[2*big] {\em (show code and examples)}
+
+\stoptitle
+
+\starttitle[title=Normalizing]
+
+\startitemize
+
+\startitem
+ In order to see consistent paragraphs at the \LUA\ end in \LUAMETATEX\
+ we can normalize the lines that come from the paragraph builder.
+\stopitem
+
+\startitem
+ Normalization results in:
+
+ \startitemize
+ \startitem
+ the first line having: indent skip
+ \stopitem
+ \startitem
+ each line having: left hang, left skip, right skip, right hang
+ \stopitem
+ \startitem
+ the last line having: left parfill skip, right parfill skip
+ \stopitem
+ \stopitemize
+\stopitem
+
+\startitem
+ It is controlled by \type {\normalizelinemode} which has additional flags for
+ swapping hanging indentation and par shapes, breaking after dir nodes,
+ removing margin kerns and clipping the line width.
+\stopitem
+
+\startitem
+ The clipping options avoids the side effects of \TEX\ using shifts which has
+ the side effect of unreal dimensions. This is one of the tricks|/|properties
+ of the traditional engine that is perfectly fine until we open up things.
+\stopitem
+
+\stopitemize
+
+\blank[2*big] {\em (show code and examples)}
+
+\stoptitle
+
+\stopdocument
diff --git a/doc/context/presentations/context/2021/context-2021-programming.pdf b/doc/context/presentations/context/2021/context-2021-programming.pdf
new file mode 100644
index 000000000..86f61bed9
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-programming.pdf
Binary files differ
diff --git a/doc/context/presentations/context/2021/context-2021-programming.tex b/doc/context/presentations/context/2021/context-2021-programming.tex
new file mode 100644
index 000000000..907a9ebfa
--- /dev/null
+++ b/doc/context/presentations/context/2021/context-2021-programming.tex
@@ -0,0 +1,325 @@
+% language=us
+
+\usemodule[present-boring,abbreviations-logos]
+
+\definehighlight[nb][style=bold,color=middlegray,define=no]
+
+\startdocument
+ [title={PROGRAMMING},
+ banner={the way \CONTEXT\ is set up},
+ location={context\enspace {\bf 2021}\enspace meeting}]
+
+\starttitle[title=Levels]
+
+When you look at \CONTEXT\ bottom|--|up (engine|--|interface) you will notice: \blank[2*big]
+
+\startnarrower
+
+\startitemize[n]
+
+\startitem
+ \highlight[nb]{primitives:} this is what the engine comes with
+\stopitem
+\startitem
+ \highlight[nb]{infrastructure:} basic management of data structures
+\stopitem
+\startitem
+ \highlight[nb]{helpers:} macros that hide complexity
+\stopitem
+\startitem
+ \highlight[nb]{subsystems:} collections of macros that implement functionality
+\stopitem
+\startitem
+ \highlight[nb]{mechanisms:} these combine various subsystems
+\stopitem
+\startitem
+ \highlight[nb]{modules:} extra functionality (uses 1--5)
+\stopitem
+\startitem
+ \highlight[nb]{styles:} handling sources and layout (uses 4--6)
+\stopitem
+
+\stopitemize
+
+\stopnarrower
+
+\blank[2*big] Users normally see \CONTEXT\ top|--|down (usage|--|hacking).
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Styles]
+
+\startitemize
+
+\startitem
+ These are prebuilt solutions for common as well as rare situations.
+\stopitem
+
+\startitem
+ The system comes with some styles: the \type {s-*} files.
+\stopitem
+
+\startitem
+ Right from the start the idea was that you get some reasonable default.
+\stopitem
+
+\startitem
+ And if you want more you stepwise define your style as you go.
+\stopitem
+
+\startitem
+ It really is part of the game: exploration.
+\stopitem
+
+\startitem
+ Solving your problem is a nice challenge.
+\stopitem
+
+\startitem
+ If you want a completely predefined setup, shop somewhere else.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Modules]
+
+\startitemize
+
+\startitem
+ A lot of functionality is built in.
+\stopitem
+
+\startitem
+ This helps to keep the system consistent.
+\stopitem
+
+\startitem
+ We could cheat and ship thousands of few|--|liner styles but don't do that.
+\stopitem
+
+\startitem
+ There are a few mechanisms that don't really fit into the core, so these are
+ implemented as modules that do fit into the interface: the \type {m-*} and
+ \type {x-*} files.
+\stopitem
+
+\startitem
+ Users can build and share their solutions which has resulted in some
+ third party modules: the \type {t-*} files.
+\stopitem
+
+\startitem
+ For (a few, often old) private files I use \type {p-*} name scheme.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Mechanisms]
+
+\startitemize
+
+\startitem
+ These are combinations of subsystems but often they cannot really be distinguished.
+\stopitem
+
+\startitem
+ Examples are notes, that combine notations, lists, references, descriptions etc.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Subsystems]
+
+\startitemize
+
+\startitem
+ This is what users see and can configure
+\stopitem
+
+\startitem
+ Most are (conceptually) rather old but evolved over time. There are no
+ fundamental differences between \MKIV\ and \LMTX, but the later is hopefully
+ a bit cleaner.
+\stopitem
+
+\startitem
+ Examples are fonts, languages, color, structure (sectioning, lists,
+ constructions, itemgroups, references), spacing, graphics, bibliographies,
+ positioning, numbering and layout.
+\stopitem
+
+\startitem
+ More hidden are the backend, export and \XML\ interfaces.
+\stopitem
+
+\startitem
+ Some have subsystems themselves, like widgets that relate to a specific
+ backend.
+\stopitem
+
+\startitem
+ There are often dependencies between subsystems which makes that it's not really a
+ hierarchy. A more strict separation would demand much more overhead.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Helpers]
+
+\startitemize
+
+\startitem
+ These provide basic programming help.
+\stopitem
+
+\startitem
+ Examples are macros for comparing things, loops, list processing,
+ argument handling.
+\stopitem
+
+\startitem
+ But more abstract box manipulations also fits in here.
+\stopitem
+
+\startitem
+ Some subsystems, like \XML\ and bibliographies provide more specific low
+ level helpers.
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Infrastructure]
+
+\startitemize
+
+\startitem
+ The engine provides counters, dimension and other registers that need
+ to be managed in order to avoid clashes in usage.
+\stopitem
+
+\startitem
+ Many of the helpers, subsystems and mechanisms fall back on common rather
+ low level functions (\LUA) and macros (using primitives).
+\stopitem
+
+\stopitemize
+
+\stoptitle
+
+% % %
+
+\starttitle[title=Primitives]
+
+\startitemize
+
+\startitem
+ This is what the engine provides: the built|-|in commands and features.
+\stopitem
+
+\startitem
+ In addition to the visible primitives there are \LUA\ interfaces and these
+ permit adding extra primitives.
+\stopitem
+
+\startitem
+ In \LUAMETATEX\ we have the core \TEX\ set but a few were dropped because we
+ don't have a backend and a different \IO\ subsystem (so they have to be
+ emulated).
+\stopitem
+
+\startitem
+ We also have some of the \ETEX\ primitives and very few of the \PDFTEX\ ones
+ but I now consider for instance expansion and protrusion extensions to be
+ kind of \ETEX.
+\stopitem
+
+\startitem
+ There are additional \LUATEX\ primitives but some were dropped, again because
+ of the backend, so we emulate some, and also because some were experimental.
+\stopitem
+
+\startitem
+ There are quite some new primitives and existing mechanisms have been extended,
+ cleaned up and (hopefully) improved.
+\stopitem
+
+\stopitemize
+
+% % %
+
+\starttitle[title=The shift]
+
+\startitemize
+
+\startitem
+ There have always been complaints about \TEX\ as a language (what makes me
+ wonder why those who complain use it.)
+\stopitem
+
+\startitem
+ Although there are some extensions to the language in \ETEX, follow|-|ups have
+ not really succeeded in this area.
+\stopitem
+
+\startitem
+ At some point I decided that code in the categories 1|--|4 cold benefit from
+ extensions.
+\stopitem
+
+\startitem
+ That also meant that we use less of the low helpers. It makes the code look a
+ bit more \TEX.
+\stopitem
+
+\startitem
+ It also means less clutter, in code as well in tracing. Often the code
+ becomes simpler too.
+\stopitem
+
+\startitem
+ The idea is that \TEX\ becomes a bit more a programming language.
+\stopitem
+
+\startitem
+ Of course it takes away the \quotation {Watch me, I can do real dirty \TEX\
+ hacking!} brawling.
+\stopitem
+
+\startitem
+ It also can take away some of the complaints.
+\stopitem
+
+\startitem
+ And it definitely adds some fun.
+\stopitem
+
+\stopitemize
+
+{\em During the week we show some of the implementation (in Visual Studio) and
+examples of applications. We also write a small extension (the {\tttf dk} unit)}
+
+\stoptitle
+
+\stopdocument
diff --git a/doc/context/scripts/mkiv/mtx-pdf.html b/doc/context/scripts/mkiv/mtx-pdf.html
index e724148ca..2932b942c 100644
--- a/doc/context/scripts/mkiv/mtx-pdf.html
+++ b/doc/context/scripts/mkiv/mtx-pdf.html
@@ -43,6 +43,7 @@
<tr><th>--metadata</th><td></td><td>show metadata xml blob</td></tr>
<tr><th>--pretty</th><td></td><td>replace newlines in metadata</td></tr>
<tr><th>--fonts</th><td></td><td>show used fonts (--detail)</td></tr>
+ <tr><th>--object</th><td></td><td>show object"/></td></tr>
<tr><th/><td/><td/></tr>
</table>
<br/>
diff --git a/doc/context/scripts/mkiv/mtx-pdf.man b/doc/context/scripts/mkiv/mtx-pdf.man
index 1535c8af8..ea74f2aa1 100644
--- a/doc/context/scripts/mkiv/mtx-pdf.man
+++ b/doc/context/scripts/mkiv/mtx-pdf.man
@@ -22,6 +22,9 @@ replace newlines in metadata
.TP
.B --fonts
show used fonts (--detail)
+.TP
+.B --object
+show object"/>
.SH AUTHOR
More information about ConTeXt and the tools that come with it can be found at:
diff --git a/doc/context/scripts/mkiv/mtx-pdf.xml b/doc/context/scripts/mkiv/mtx-pdf.xml
index 9b3d8f8fe..08b04d85e 100644
--- a/doc/context/scripts/mkiv/mtx-pdf.xml
+++ b/doc/context/scripts/mkiv/mtx-pdf.xml
@@ -12,11 +12,13 @@
<flag name="metadata"><short>show metadata xml blob</short></flag>
<flag name="pretty"><short>replace newlines in metadata</short></flag>
<flag name="fonts"><short>show used fonts (<ref name="detail)"/></short></flag>
+ <flag name="object"><short>show object"/></short></flag>
</subcategory>
<subcategory>
<example><command>mtxrun --script pdf --info foo.pdf</command></example>
<example><command>mtxrun --script pdf --metadata foo.pdf</command></example>
<example><command>mtxrun --script pdf --metadata --pretty foo.pdf</command></example>
+ <example><command>mtxrun --script pdf --stream=4 foo.pdf</command></example>
</subcategory>
</category>
</flags>
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
index 79fc86aae..1b8bc6552 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
@@ -205,7 +205,8 @@ So let's summarize what happens:
pending cell spans
\stopitem
\startitem
- flush the result to the current list
+ flush the result to the current list, unless packages in a box a \type
+ {\halign} is seen as paragraph and rows as lines (such a table can split)
\stopitem
\stopitemize
@@ -214,28 +215,31 @@ look ahead for a \type {\noalign}, \type {\cr}, \type {\omit} or \type {\span}
and when doing that it has to expand what comes. This can give side effects and
often results in obscure error messages. When for instance an \type {\if} is seen
and expanded, the wrong branch can be entered. And when you use protected macros
-embedded alignment commands are not seen at all. Also, nesting \type {\noalign}
-is not permitted.
+embedded alignment commands are not seen at all; of course they still need to
+produce valid operations in the current context.
All these side effects are to be handled in a macro package when it wraps
alignments in a high level interface and \CONTEXT\ does that for you. But because
the code doesn't always look pretty then, in \LUAMETATEX\ the alignment mechanism
has been extended a bit over time.
-The first extension was to permit nested usage of \type {\noalign}. This has
-resulted of a little reorganization of the code. A next extension showed up when
-overload protection was introduced and extra prefixes were added. We can signal
-the scanner that a macro is actually a \type {\noalign} variant: \footnote {A
-better prefix would have been \type {\peekaligned} because in the meantime other
-alignment primitives also can use this property.}
+Nesting \type {\noalign} is normally not permitted (but one can redefine this
+primitive such that a macro package nevertheless handles it). The first extension
+permits nested usage of \type {\noalign}. This has resulted of a little
+reorganization of the code. A next extension showed up when overload protection
+was introduced and extra prefixes were added. We can signal the scanner that a
+macro is actually a \type {\noalign} variant: \footnote {One can argue for using
+the name \type {\peekaligned} because in the meantime other alignment primitives
+also can use this property.}
\starttyping[option=TEX]
\noaligned\protected\def\InBetween{\noalign{...}}
\stoptyping
-This extension resulted in a second bit of reorganization (think of internal
-command codes and such) but still the original processing of alignments was
-there.
+Here the \type {\InBetween} macro will get the same treatment as \type {\noalign}
+and it will not trigger an error. This extension resulted in a second bit of
+reorganization (think of internal command codes and such) but still the original
+processing of alignments was there.
A third overhaul of the code actually did lead to some adaptations in the way
alignments are constructed so let's move on to that.
@@ -307,10 +311,13 @@ a test document where you want to show font properties in a table and that font
supports a script with some ten thousand glyphs, you can imagine that it
accumulates and in \LUATEX\ (and \LUAMETATEX) nodes are larger so it is one of
these cases where in \CONTEXT\ we get messages on the console that node memory is
-bumped.
+bumped. \footnote {I suppose it was a coincidence that a few weeks after these
+features came available a user consulted the mailing list about a few thousand
+page table that made the engine run out of memory, something that could be cured
+by enabling these new features.}
After playing a bit with stripping zero tab skips I found that the code would not
-really benefit from such a feature: lots of extra tests made if quite ugly. As a
+really benefit from such a feature: lots of extra tests made it quite ugly. As a
result a first alternative was to just strip zero skips before an alignment got
flushed. At least we're then a bit leaner in the processes that come after it.
This feature is now available as one of the normalizer bits.
@@ -403,7 +410,7 @@ which renders as:
A reason to have boxes here is that it enforces a cell width but that is done at
the cost of an extra wrapper. In \LUAMETATEX\ the \type {hlist} nodes are rather
large because we have more options than in original \TEX, for instance offsets
-and orientation. So, in a table with 10K rows of 4 cells yet get 40K extra \type
+and orientation. In a table with 10K rows of 4 cells yet get 40K extra \type
{hlist} nodes allocated. Now, one can argue that we have plenty of memory but
being lazy is not really a sign of proper programming.
@@ -501,7 +508,8 @@ In this example we specify the characters in the cells. We still need to add a
specifier in the preamble definition because that will trigger the plugin.
\startbuffer
-\starttabulate[|lG{}|lG{}|]
+\starttabulate[|lG{}|rG{}|]
+\NC left \NC right \NC\NR
\NC \showglyphs \setalignmentcharacter{.}1.1 \NC \setalignmentcharacter{.}1.1 \NC\NR
\NC \showglyphs \setalignmentcharacter{,}11,11 \NC \setalignmentcharacter{,}11,11 \NC\NR
\NC \showglyphs \setalignmentcharacter{=}111=111 \NC \setalignmentcharacter{=}111=111 \NC\NR
@@ -513,7 +521,8 @@ specifier in the preamble definition because that will trigger the plugin.
You can mix these approaches:
\startbuffer
-\starttabulate[|lG{.}|lG{}|]
+\starttabulate[|lG{.}|rG{}|]
+\NC left \NC right \NC\NR
\NC 1.1 \NC \setalignmentcharacter{.}1.1 \NC\NR
\NC 11.11 \NC \setalignmentcharacter{.}11.11 \NC\NR
\NC 111.111 \NC \setalignmentcharacter{.}111.111 \NC\NR
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex
index caf3198b9..541249066 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex
@@ -99,8 +99,8 @@ At the \TEX\ the builder is triggered automatically in the mentioned cases but a
the \LUA\ end you can use \type {tex.triggerbuildpage()} to flush the pending
contributions.
-The properties that relate to the page look like counter and dimension registers ut
-they are not. These variables are global and managed differently.
+The properties that relate to the page look like counter and dimension registers
+but they are not. These variables are global and managed differently.
\starttabulate
\NC \type {\pagegoal} \NC the available space \NC \NR
@@ -201,6 +201,12 @@ behind. (This is experimental.)
\stopsectionlevel
+\startsectionlevel[title=Migration]
+
+{\em Todo, nothing new there, so no hurry.}
+
+\stopsectionlevel
+
\startsectionlevel[title=Callbacks]
{\em Todo, nothing new there, so no hurry.}
diff --git a/doc/context/sources/general/manuals/metafun/metafun-examples.tex b/doc/context/sources/general/manuals/metafun/metafun-examples.tex
index 3c16f96dd..d9da5fea4 100644
--- a/doc/context/sources/general/manuals/metafun/metafun-examples.tex
+++ b/doc/context/sources/general/manuals/metafun/metafun-examples.tex
@@ -3431,7 +3431,7 @@ We demonstrate the differences with an example. The result can be seen in
\startbuffer
\startcombination
{\startMPcode
- picture first, second ;
+ picture first, second ;
first := outlinetext.p("N") ; first := first scaled 10 ;
second := outlinetext.p("T") ; second := second scaled 10 ;
second := second rotatedaround(center second, 5) shifted (1,-1) ;
diff --git a/metapost/context/base/mpxl/mp-luas.mpxl b/metapost/context/base/mpxl/mp-luas.mpxl
index 24a2fc8fe..18b4391f2 100644
--- a/metapost/context/base/mpxl/mp-luas.mpxl
+++ b/metapost/context/base/mpxl/mp-luas.mpxl
@@ -266,8 +266,8 @@ newscriptindex mfid_utfsub ; mfid_utfsub := scriptindex "utfsub" ;
% def utflen = runscript mfid_utflen enddef ;
% def utfsub = runscript mfid_utfsub enddef ;
-vardef utfnum expr s = runscript mfid_utfnum s enddef ; % str
-vardef utflen expr s = runscript mfid_utflen s enddef ; % str
+vardef utfnum(expr s) = runscript mfid_utfnum s enddef ; % str
+vardef utflen(expr s) = runscript mfid_utflen s enddef ; % str
vardef utfsub(text t) = runscript mfid_utfsub t enddef ; % str, first, (optional) last
permanent utfnum, utflen, utfsub ;
diff --git a/metapost/context/base/mpxl/mp-tool.mpxl b/metapost/context/base/mpxl/mp-tool.mpxl
index a318c39ca..31be9707a 100644
--- a/metapost/context/base/mpxl/mp-tool.mpxl
+++ b/metapost/context/base/mpxl/mp-tool.mpxl
@@ -545,21 +545,30 @@ def mfun_tool_striped_number_action text extra =
enddef ;
def mfun_tool_striped_set_options(expr option) =
- save isinner, swapped ;
- boolean isinner, swapped ;
- if option = 1 :
+ save isinner, swapped, isdrawn ;
+ boolean isinner, swapped, isdrawn ;
+ if option = 0 :
+ isdrawn := true;
+ isinner := true ;
+ swapped := false ;
+ elseif option = 1 :
+ isdrawn := false ;
isinner := false ;
swapped := false ;
elseif option = 2 :
+ isdrawn := false ;
isinner := true ;
swapped := false ;
elseif option = 3 :
+ isdrawn := false ;
isinner := false ;
swapped := true ;
elseif option = 4 :
+ isdrawn := false ;
isinner := true ;
swapped := true ;
else :
+ isdrawn := false ;
isinner := false ;
swapped := false ;
fi ;
@@ -595,7 +604,9 @@ vardef mfun_tool_striped_number(expr option, p, asked_n, asked_slot) text extra
endfor ;
fi ;
) ;
- if swapped :
+ if isdrawn :
+ addto currentpicture also pattern ;
+ elseif swapped :
addto currentpicture also shape ;
addto currentpicture also pattern ;
else :
@@ -606,10 +617,18 @@ vardef mfun_tool_striped_number(expr option, p, asked_n, asked_slot) text extra
)
enddef ;
+% def mfun_tool_striped_angle_action text extra =
+% for i = minimum -.5used_gap step used_gap until maximum :
+% draw (minimum,i) -- (maximum,i) extra ;
+% endfor ;
+% currentpicture := currentpicture rotated used_angle ;
+% enddef ;
+
def mfun_tool_striped_angle_action text extra =
for i = minimum -.5used_gap step used_gap until maximum :
- draw (minimum,i) -- (maximum,i) extra ;
+ nodraw (minimum,i) -- (maximum,i) extra ;
endfor ;
+ dodraw origin ;
currentpicture := currentpicture rotated used_angle ;
enddef ;
@@ -622,7 +641,8 @@ vardef mfun_tool_striped_angle(expr option, p, asked_angle, asked_gap) text extr
used_angle := if asked_angle = 0 : stripe_angle else : asked_angle fi ;
used_gap := if asked_gap = 0 : stripe_gap else : asked_gap fi ;
shape := image(draw p) ;
- centrum := center shape ;
+ % centrum := center shape ;
+ centrum := llcorner shape ;
shape := shape shifted - centrum ;
mask := shape rotated used_angle ;
maximum := max (xpart llcorner mask, xpart urcorner mask, ypart llcorner mask, ypart urcorner mask) ;
@@ -646,7 +666,9 @@ vardef mfun_tool_striped_angle(expr option, p, asked_angle, asked_gap) text extr
endfor ;
fi ;
) ;
- if swapped :
+ if isdrawn :
+ addto currentpicture also pattern ;
+ elseif swapped :
addto currentpicture also shape ;
addto currentpicture also pattern ;
else :
diff --git a/scripts/context/lua/mtx-context.lua b/scripts/context/lua/mtx-context.lua
index d2e63640a..5a67f4f2a 100644
--- a/scripts/context/lua/mtx-context.lua
+++ b/scripts/context/lua/mtx-context.lua
@@ -111,8 +111,10 @@ local engine_new = filenameonly(getargument("engine") or directives.value("syste
local engine_old = filenameonly(environment.ownmain) or filenameonly(environment.ownbin)
local function restart(engine_old,engine_new)
- local ownname = filejoinname(filepathpart(environment.ownname),"mtxrun.lua")
- local command = format("%s --luaonly %q %s --redirected",engine_new,ownname,environment.reconstructcommandline())
+ local generate = environment.arguments.generate and (engine_new == "luatex" or engine_new == "luajittex")
+ local arguments = generate and "--generate" or environment.reconstructcommandline()
+ local ownname = filejoinname(filepathpart(environment.ownname),"mtxrun.lua")
+ local command = format("%s --luaonly %q %s --redirected",engine_new,ownname,arguments)
report(format("redirect %s -> %s: %s",engine_old,engine_new,command))
local result = os.execute(command)
os.exit(result == 0 and 0 or 1)
@@ -1720,6 +1722,12 @@ end
-- getting it done
+if getargument("pdftex") then
+ setargument("engine","pdftex")
+elseif getargument("xetex") then
+ setargument("engine","xetex")
+end
+
if getargument("timedlog") then
logs.settimedlog()
end
diff --git a/scripts/context/lua/mtx-fonts.lua b/scripts/context/lua/mtx-fonts.lua
index feefdeada..bf37b069a 100644
--- a/scripts/context/lua/mtx-fonts.lua
+++ b/scripts/context/lua/mtx-fonts.lua
@@ -295,7 +295,7 @@ local function showfeatures(tag,specification)
else
done = true
end
- report(" % -8s % -8s % -8s",f,s,concat(table.sortedkeys(ss), " ")) -- todo: padd 4
+ report(" %-8s %-8s %-8s",f,s,concat(table.sortedkeys(ss), " ")) -- todo: padd 4
end
end
end
@@ -317,7 +317,7 @@ local function showfeatures(tag,specification)
report(" method feature formats")
report()
for k, v in table.sortedhash(methods) do
- report(" % -8s % -14s %s",k,v.feature,v.format)
+ report(" %-8s %-14s %s",k,v.feature,v.format)
end
end
end
diff --git a/scripts/context/lua/mtx-pdf.lua b/scripts/context/lua/mtx-pdf.lua
index fbb1a3995..201d73623 100644
--- a/scripts/context/lua/mtx-pdf.lua
+++ b/scripts/context/lua/mtx-pdf.lua
@@ -7,7 +7,7 @@ if not modules then modules = { } end modules ['mtx-pdf'] = {
}
local tonumber = tonumber
-local format, gmatch, gsub = string.format, string.gmatch, string.gsub
+local format, gmatch, gsub, match, find = string.format, string.gmatch, string.gsub, string.match, string.find
local utfchar = utf.char
local concat = table.concat
local setmetatableindex, sortedhash, sortedkeys = table.setmetatableindex, table.sortedhash, table.sortedkeys
@@ -27,11 +27,13 @@ local helpinfo = [[
<flag name="metadata"><short>show metadata xml blob</short></flag>
<flag name="pretty"><short>replace newlines in metadata</short></flag>
<flag name="fonts"><short>show used fonts (<ref name="detail)"/></short></flag>
+ <flag name="object"><short>show object"/></short></flag>
</subcategory>
<subcategory>
<example><command>mtxrun --script pdf --info foo.pdf</command></example>
<example><command>mtxrun --script pdf --metadata foo.pdf</command></example>
<example><command>mtxrun --script pdf --metadata --pretty foo.pdf</command></example>
+ <example><command>mtxrun --script pdf --stream=4 foo.pdf</command></example>
</subcategory>
</category>
</flags>
@@ -46,10 +48,14 @@ local application = logs.application {
local report = application.report
-if pdfe then
- dofile(resolvers.findfile("lpdf-pde.lua","tex"))
-else
+if not pdfe then
dofile(resolvers.findfile("lpdf-epd.lua","tex"))
+elseif CONTEXTLMTXMODE then
+ dofile(resolvers.findfile("util-dim.lua","tex"))
+ dofile(resolvers.findfile("lpdf-ini.lmt","tex"))
+ dofile(resolvers.findfile("lpdf-pde.lmt","tex"))
+else
+ dofile(resolvers.findfile("lpdf-pde.lua","tex"))
end
scripts = scripts or { }
@@ -349,6 +355,15 @@ function scripts.pdf.fonts(filename)
end
end
+function scripts.pdf.object(filename,n)
+ if n then
+ local pdffile = loadpdffile(filename)
+ if pdffile then
+ print(lpdf.epdf.verboseobject(pdffile,n) or "no object with number " .. n)
+ end
+ end
+end
+
-- scripts.pdf.info("e:/tmp/oeps.pdf")
-- scripts.pdf.metadata("e:/tmp/oeps.pdf")
-- scripts.pdf.fonts("e:/tmp/oeps.pdf")
@@ -364,6 +379,8 @@ elseif environment.argument("metadata") then
scripts.pdf.metadata(filename,environment.argument("pretty"))
elseif environment.argument("fonts") then
scripts.pdf.fonts(filename)
+elseif environment.argument("object") then
+ scripts.pdf.object(filename,tonumber(environment.argument("object")))
elseif environment.argument("exporthelp") then
application.export(environment.argument("exporthelp"),filename)
else
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 15f593712..d43e2ccf1 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2021.09.26 16:48}
+\newcontextversion{2021.10.08 20:05}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 4015da53a..3c7645d53 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.09.26 16:48}
+\edef\contextversion{2021.10.08 20:05}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-cs.mkii b/tex/context/base/mkii/mult-cs.mkii
index aa936d180..2c7f8e197 100644
--- a/tex/context/base/mkii/mult-cs.mkii
+++ b/tex/context/base/mkii/mult-cs.mkii
@@ -188,6 +188,7 @@
\setinterfacevariable{enumeration}{vycet}
\setinterfacevariable{environment}{prostredi}
\setinterfacevariable{even}{sude}
+\setinterfacevariable{explicit}{explicit}
\setinterfacevariable{export}{export}
\setinterfacevariable{external}{externi}
\setinterfacevariable{extremestretch}{extremestretch}
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index aabcb0615..c8dac09c5 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -271537,4 +271537,4 @@ characters.data={
synonyms={ "vs17" },
unicodeslot=0xE0100,
},
-} \ No newline at end of file
+}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index d7c2469e8..c8893eb1e 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.09.26 16:48}
+\newcontextversion{2021.10.08 20:05}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index 1a32832af..89e04f878 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.09.26 16:48}
+\edef\contextversion{2021.10.08 20:05}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-otr.lua b/tex/context/base/mkiv/font-otr.lua
index 3b5edebc4..286367ed9 100644
--- a/tex/context/base/mkiv/font-otr.lua
+++ b/tex/context/base/mkiv/font-otr.lua
@@ -1962,9 +1962,10 @@ local function getinfo(maindata,sub,platformnames,rawfamilynames,metricstoo,inst
weight = weight and lower(weight),
width = width and lower(width),
pfmweight = metrics.weightclass or 400, -- will become weightclass
- pfmwidth = metrics.widthclass or 5, -- will become widthclass
+ pfmwidth = metrics.widthclass or 5, -- will become widthclass
panosewidth = metrics.panosewidth,
panoseweight = metrics.panoseweight,
+ fstype = metrics.fstype or 0, -- embedding, subsetting and editing
italicangle = postscript.italicangle or 0,
units = fontheader.units or 0,
designsize = fontdata.designsize,
diff --git a/tex/context/base/mkiv/math-fbk.lua b/tex/context/base/mkiv/math-fbk.lua
index f1efadc45..aecffb466 100644
--- a/tex/context/base/mkiv/math-fbk.lua
+++ b/tex/context/base/mkiv/math-fbk.lua
@@ -32,6 +32,7 @@ local popcommand = helpers.commands.pop
local pushcommand = helpers.commands.push
local virtualcharacters = { }
+local virtualforced = { }
local hashes = fonts.hashes
local identifiers = hashes.identifiers
@@ -136,7 +137,7 @@ function fallbacks.apply(target,original)
local fullname = trace_fallbacks and target.properties.fullname
--
for k, v in sortedhash(virtualcharacters) do
- if not characters[k] then
+ if not characters[k] or virtualforced[k] then
local tv = type(v)
local cd = nil
if tv == "table" then
@@ -698,3 +699,30 @@ virtualcharacters[0x305] = function(data)
}
end
+local function threedots(data,shift)
+ local characters = data.target.characters
+ local parameters = data.target.parameters
+ local periodchar = characters[0x002E]
+ local pluschar = characters[0x002B]
+ local period = charcommand[0x002E]
+ local periodwd = periodchar.width or 0
+ local periodht = periodchar.height or 0
+ local perioddp = periodchar.depth or 0
+ local offset = 0
+ if shift then
+ local plusht = pluschar.height or 0
+ local plusdp = pluschar.depth or 0
+ local axis = (plusdp + plusht)//2 - plusdp
+ offset = axis - periodht//2
+ periodht = axis + periodht//2
+ end
+ return {
+ width = 3*periodwd,
+ height = periodht,
+ depth = 0,
+ commands = { upcommand[offset], period, period, period }
+ }
+end
+
+virtualcharacters[0x2026] = function(data) return threedots(data,false) end virtualforced[0x2026] = true
+virtualcharacters[0x22EF] = function(data) return threedots(data, true) end virtualforced[0x22EF] = true
diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua
index a06deffe5..bb3f458bf 100644
--- a/tex/context/base/mkiv/mult-def.lua
+++ b/tex/context/base/mkiv/mult-def.lua
@@ -17327,6 +17327,9 @@ return {
["pe"]="بدون‌آویزان‌کردن",
["ro"]="nothanging",
},
+ ["explicit"]={
+ ["en"]="explicit",
+ },
["notcollapsed"]={
["en"]="notcollapsed",
},
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index 4842a3571..30e1eac10 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -175,7 +175,7 @@ return {
"wildcardsymbol",
--
"normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode",
- "collapsehyphenationmcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode",
+ "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode",
"automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode",
"permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode",
"feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode",
diff --git a/tex/context/base/mkiv/publ-aut.lua b/tex/context/base/mkiv/publ-aut.lua
index 02f4798c5..64fecb3d5 100644
--- a/tex/context/base/mkiv/publ-aut.lua
+++ b/tex/context/base/mkiv/publ-aut.lua
@@ -998,6 +998,22 @@ publications.sortmethods.authoryear = {
},
}
+publications.sortmethods.authortitle = {
+ sequence = {
+ { field = "author", default = "", unknown = "" },
+ { field = "title", default = "", unknown = "" },
+ { field = "booktitle", default = "", unknown = "" }, -- if this is an untitled section (e.g., introduction, foreword, preface) of a book or a review of a book
+ { field = "maintitle", default = "", unknown = "" }, -- if this is an untitled section or volume in a multivolume collection
+ { field = "volume", default = "", unknown = "" },
+ { field = "part", default = "", unknown = "" },
+ { field = "date", default = "9998-13-32", unknown = "9999-14-33" }, -- some specifications allow date instead of year, month, day
+ { field = "year", default = "9998", unknown = "9999" },
+ { field = "month", default = "13", unknown = "14" },
+ { field = "day", default = "32", unknown = "33" },
+ { field = "index", default = "", unknown = "" },
+ },
+}
+
implement {
name = "btxremapauthor",
arguments = "2 strings",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 0eca85be1..c251ad6c1 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 2fe879833..50cc0ad29 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/typo-drp.lua b/tex/context/base/mkiv/typo-drp.lua
index d56ba3da7..79cda3ab9 100644
--- a/tex/context/base/mkiv/typo-drp.lua
+++ b/tex/context/base/mkiv/typo-drp.lua
@@ -73,6 +73,7 @@ local v_default = variables.default
local v_margin = variables.margin
local v_auto = variables.auto
local v_first = variables.first
+local v_keep = variables.keep
local v_last = variables.last
local texget = tex.get
@@ -133,6 +134,7 @@ interfaces.implement {
-- a page so this has a low priority
actions[v_default] = function(head,setting)
+ local skip = false
-- begin of par
local first = getnext(head)
local indent = false
@@ -196,6 +198,9 @@ actions[v_default] = function(head,setting)
else
-- keep quote etc with initial
local next = getnext(first)
+ if next and method[v_keep] then
+ skip = first
+ end
if not next then
-- don't start with a quote or so
return head
@@ -245,7 +250,7 @@ actions[v_default] = function(head,setting)
local id = getid(current)
if id == kern_code then
setkern(current,0)
- elseif id == glyph_code then
+ elseif id == glyph_code and skip ~= current then
local next = getnext(current)
if font then
setfont(current,font)
@@ -301,7 +306,11 @@ actions[v_default] = function(head,setting)
--
local hoffset = width + hoffset + distance + (indent and parindent or 0)
for current in nextglyph, first do
- setoffsets(current,-hoffset,-voffset) -- no longer - height here
+ if skip == current then
+ setoffsets(current,-hoffset,0)
+ else
+ setoffsets(current,-hoffset,-voffset) -- no longer - height here
+ end
if current == last then
break
end
diff --git a/tex/context/base/mkiv/util-sci.lua b/tex/context/base/mkiv/util-sci.lua
index 778991ea6..67528c74e 100644
--- a/tex/context/base/mkiv/util-sci.lua
+++ b/tex/context/base/mkiv/util-sci.lua
@@ -23,6 +23,7 @@ do
lexerroot = file.dirname(resolvers.findfile("scite-context-lexer.lua"))
-- end
if lfs.isdir(lexerroot) then
+ -- pushluapath
package.extraluapath(lexerroot)
package.extraluapath(lexerroot.."/themes")
package.extraluapath(lexerroot.."/data")
@@ -58,14 +59,14 @@ local knownlexers = {
-- todo: pat/hyp ori
}
-lexer = nil -- main lexer, global (for the moment needed for themes)
+lexers = nil -- main lexer, global (for the moment needed for themes)
local function loadscitelexer()
- if not lexer then
- lexer = require("scite-context-lexer")
- require("scite-context-theme") -- uses lexer
- if lexer then
- lexer.context.disablewordcheck()
+ if not lexers then
+ lexers = require("scite-context-lexer")
+ lexers.styles = require("scite-context-theme") -- uses lexer
+ if lexers then
+ (lexers.disablewordcheck or lexers.context.disablewordcheck)()
end
end
return lexer
@@ -74,7 +75,7 @@ end
local loadedlexers = setmetatableindex(function(t,k)
local l = knownlexers[k] or k
loadscitelexer()
- local v = lexer.load(formatters["scite-context-lexer-%s"](l))
+ local v = lexers.load(formatters["scite-context-lexer-%s"](l))
t[l] = v
t[k] = v
return v
@@ -124,7 +125,7 @@ local function exportcsslexing()
return (#f == 0 and f[1] == 0) or ((f[1] == f[2]) and (f[2] == f[3]) and (f[3] == 0))
end
local result, r = { }, 0
- for k, v in table.sortedhash(lexer.context.styles) do
+ for k, v in table.sortedhash(lexers.context.styles) do
local bold = v.bold
local fore = v.fore
r = r + 1
@@ -149,7 +150,7 @@ local function exportwhites()
end
local function exportstyled(lexer,text,numbered)
- local result = lexer.lex(lexer,text,0)
+ local result = lexers.lex(lexer,text,0)
local start = 1
local whites = exportwhites()
local buffer = { }
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 5306b33b4..e81d6cc7b 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.09.26 16:48}
+\newcontextversion{2021.10.08 20:05}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index c2b8528c1..a5b9cc7f1 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2021.09.26 16:48}
+\immutable\edef\contextversion{2021.10.08 20:05}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/lang-ini.mkxl b/tex/context/base/mkxl/lang-ini.mkxl
index 336dd5d69..2b7f34ef3 100644
--- a/tex/context/base/mkxl/lang-ini.mkxl
+++ b/tex/context/base/mkxl/lang-ini.mkxl
@@ -481,6 +481,9 @@
\permanent\protected\def\dohyphencollapsing{\hyphenationmode\bitwiseflip\hyphenationmode \collapsehyphenationcode}
\permanent\protected\def\nohyphencollapsing{\hyphenationmode\bitwiseflip\hyphenationmode-\collapsehyphenationcode}
+\permanent\protected\def\doexplicithyphens{\hyphenationmode\bitwiseflip\hyphenationmode \explicithyphenationcode}
+\permanent\protected\def\noexplicithyphens{\hyphenationmode\bitwiseflip\hyphenationmode-\explicithyphenationcode}
+
\permanent\protected\def\usehyphensparameter#1%
{\edef\p_hyphens{#1\c!hyphens}%
\ifx\p_hyphens\v!no
diff --git a/tex/context/base/mkxl/lpdf-ini.lmt b/tex/context/base/mkxl/lpdf-ini.lmt
index ce679c08e..1ce7c5adc 100644
--- a/tex/context/base/mkxl/lpdf-ini.lmt
+++ b/tex/context/base/mkxl/lpdf-ini.lmt
@@ -69,7 +69,7 @@ local report_objects = logs.reporter("backend","objects")
local report_finalizing = logs.reporter("backend","finalizing")
local report_blocked = logs.reporter("backend","blocked")
-local implement = interfaces.implement
+local implement = interfaces and interfaces.implement
local context = context
@@ -83,7 +83,7 @@ local factor = number.dimenfactors.bp
local codeinjections = { }
local nodeinjections = { }
-local backends = backends
+local backends = backends or { }
local pdfbackend = {
comment = "backend for directly generating pdf output",
@@ -241,8 +241,8 @@ do
end
end
- local toregime = regimes.toregime
- local fromregime = regimes.fromregime
+ local toregime = regimes and regimes.toregime
+ local fromregime = regimes and regimes.fromregime
local escaped = Cs(Cc("(") * (S("\\()\n\r\t\b\f")/"\\%0" + P(1))^0 * Cc(")"))
topdfdoc = function(str,default)
@@ -746,6 +746,8 @@ lpdf.reference = pdfreference
lpdf.verbose = pdfverbose
lpdf.literal = pdfliteral
+if not callbacks then return lpdf end
+
-- three priority levels, default=2
local pagefinalizers = { { }, { }, { } }
diff --git a/tex/context/base/mkxl/lpdf-pde.lmt b/tex/context/base/mkxl/lpdf-pde.lmt
index 58f5723a3..4483510d0 100644
--- a/tex/context/base/mkxl/lpdf-pde.lmt
+++ b/tex/context/base/mkxl/lpdf-pde.lmt
@@ -85,6 +85,7 @@ local arraytotable = pdfe.arraytotable
local pagestotable = pdfe.pagestotable
local readwholestream = pdfe.readwholestream
local getfromreference = pdfe.getfromreference
+local getfromobject = pdfe.getfromobject
local report_epdf = logs.reporter("epdf")
@@ -119,6 +120,8 @@ encryptioncodes = allocate(swapped(encryptioncodes,encryptioncodes)
pdfe.objectcodes = objectcodes
pdfe.encryptioncodes = encryptioncodes
+-- lpdf_epdf.objectcodes = objectcodes
+
local null_object_code = objectcodes.null
local reference_object_code = objectcodes.reference
@@ -134,47 +137,6 @@ local dictionary_object_code = objectcodes.dictionary
local stream_object_code = objectcodes.stream
local reference_object_code = objectcodes.reference
-local checked_access
-local get_flagged -- from pdfe -> lpdf
-
-if lpdf.dictionary then
-
- -- we're in context
-
- local pdfdictionary = lpdf.dictionary
- local pdfarray = lpdf.array
- local pdfconstant = lpdf.constant
- local pdfstring = lpdf.string
- local pdfunicode = lpdf.unicode
-
- get_flagged = function(t,f,k)
- local tk = t[k] -- triggers resolve
- local fk = f[k]
- if not fk then
- return tk
- elseif fk == "name" then
- return pdfconstant(tk)
- elseif fk == "array" then
- return pdfarray(tk)
- elseif fk == "dictionary" then
- return pdfarray(tk)
- elseif fk == "rawtext" then
- return pdfstring(tk)
- elseif fk == "unicode" then
- return pdfunicode(tk)
- else
- return tk
- end
- end
-
-else
-
- get_flagged = function(t,f,k)
- return t[k]
- end
-
-end
-
-- We need to convert the string from utf16 although there is no way to
-- check if we have a regular string starting with a bom. So, we have
-- na dilemma here: a pdf doc encoded string can be invalid utf.
@@ -196,6 +158,13 @@ local some_reference
local some_string = lpdf.frombytes
+function lpdf_epdf.objecttype(object)
+ if type(object) == "table" then
+ local kind = object.__type__
+ return kind and objectcodes[kind]
+ end
+end
+
local function get_value(document,t,key)
if not key then
return
@@ -218,22 +187,131 @@ local function get_value(document,t,key)
elseif kind == dictionary_object_code then
return some_dictionary(value[2],document)
elseif kind == stream_object_code then
- return some_stream(value,document)
+ return some_stream(value,value[2],document) -- needs checking
elseif kind == reference_object_code then
return some_reference(value,document)
end
return value
end
+local checked_access
+local get_flagged -- from pdfe -> lpdf
+
+if lpdf.dictionary then
+
+ -- these are used in mtx-pdf.lua
+
+ local pdfdictionary = lpdf.dictionary
+ local pdfarray = lpdf.array
+ local pdfconstant = lpdf.constant
+ local pdfreference = lpdf.reference
+ local pdfliteral = lpdf.literal
+
+ local copy_array, copy_dictionary
+
+ local function copyobject(object,key,value)
+ if not value then
+ value = object.__raw__[key]
+ end
+ local t = type(value)
+ if t == "string" then
+ return pdfconstant(value)
+ elseif t ~= "table" then
+ return value
+ end
+ local kind = value[1]
+ if kind == name_object_code then
+ return pdfconstant(value[2])
+ elseif kind == string_object_code then
+ return pdfliteral(value[2],value[3])
+ elseif kind == array_object_code then
+ return copyarray(object[key])
+ elseif kind == dictionary_object_code then
+ return copydictionary(object[key])
+ elseif kind == null_object_code then
+ return pdfnull()
+ elseif kind == reference_object_code then
+ return pdfreference(value[3])
+ else
+ -- report("weird: %s", objecttypes[kind] or "?")
+ end
+ end
+
+ copyarray = function(object)
+ local target = pdfarray()
+ local source = object.__raw__
+ for i=1,#source do
+ target[i] = copyobject(object,i,source[i])
+ end
+ return target
+ end
+
+ copydictionary = function(object)
+ local target = pdfdictionary()
+ local source = object.__raw__
+ for key, value in sortedhash(source) do
+ target[key] = copyobject(object,key,value)
+ end
+ return target
+ end
+
+ get_flagged = function(t,f)
+ local kind = t.__type__
+ if kind == name_object_code then
+ return pdfconstant(f)
+ elseif kind == array_object_code then
+ return copyarray(t)
+ elseif kind == dictionary_object_code then
+ return copydictionary(t)
+ elseif kind == stream_object_code then
+ return copydictionary(t)
+ elseif kind == string_object_code then
+ return pdfunicode(f)
+ elseif kind == null_object_code then
+ return pdfnull()
+ elseif kind == reference_object_code then
+ return pdfreference(t[3])
+ else
+ return f
+ end
+ end
+
+ function lpdf_epdf.verboseobject(document,n)
+ if document and n then
+ local object = document.objects[n]
+ if object then
+ local t = { n .. " 0 obj" }
+ if lpdf.epdf.objecttype(object) == "stream" then
+ t[#t+1] = object("dictionary")()
+ t[#t+1] = "stream"
+ t[#t+1] = tostring(object(true))
+ t[#t+1] = "endstream"
+ else
+ t[#t+1] = tostring(object())
+ end
+ t[#t+1] = "endobj"
+ return concat(t,"\n")
+ end
+ end
+ end
+
+else
+
+ get_flagged = function(t,f)
+ return t[k] -- hm
+ end
+
+end
+
some_dictionary = function (d,document)
local f = dictionarytotable(d,true)
local t = setmetatable({ __raw__ = f, __type__ = dictionary_object_code }, {
- __index = function(t,k)
- return get_value(document,f,k)
- end,
- __call = function(t,k)
- return get_flagged(t,f,k)
- end,
+ __index = function(t,k)
+ return get_value(document,f,k)
+ end,
+ __call = function(t)
+ return get_flagged(t,f)
+ end,
} )
return t, "dictionary"
end
@@ -245,8 +323,8 @@ some_array = function (a,document)
__index = function(t,k)
return get_value(document,f,k)
end,
- __call = function(t,k)
- return get_flagged(t,f,k)
+ __call = function(t)
+ return get_flagged(t,f)
end,
__len = function(t,k)
return n
@@ -261,8 +339,10 @@ some_stream = function(s,d,document)
__index = function(t,k)
return get_value(document,f,k)
end,
- __call = function(t,raw)
- if raw == false then
+ __call = function(t,how)
+ if how == "dictionary" then
+ return get_flagged(t,f)
+ elseif how == false then
return readwholestream(s,false) -- original
else
return readwholestream(s,true) -- uncompressed
@@ -293,6 +373,20 @@ some_reference = function(r,document)
return cached
end
+local function some_object(document,n)
+ local kind, object, b, c = getfromobject(document.__data__,n)
+ if kind == dictionary_object_code then
+ return some_dictionary(object,document)
+ elseif kind == array_object_code then
+ return some_array(object,document)
+ elseif kind == stream_object_code then
+ return some_stream(object,b,document)
+ else
+ -- really cache this?
+ return { kind, object, b, c }
+ end
+end
+
local resolvers = { }
lpdf_epdf.resolvers = resolvers
@@ -460,12 +554,14 @@ function lpdf_epdf.load(filename,userpassword,ownerpassword,fromstring)
__data__ = false
end
if __data__ then
+ local __cache__ = { }
+ local __xrefs__ = { }
document = {
filename = filename,
nofcopied = 0,
copied = { },
- __cache__ = { },
- __xrefs__ = { },
+ __cache__ = __cache__,
+ __xrefs__ = __xrefs__,
__fonts__ = { },
__copied__ = { },
__data__ = __data__,
@@ -479,6 +575,17 @@ function lpdf_epdf.load(filename,userpassword,ownerpassword,fromstring)
document.majorversion, document.minorversion = getversion(__data__)
--
document.nofpages = getnofpages(__data__)
+ -- we could also use cached but this proxy hides it
+ -- setmetatableindex(__cache__,function(t,objnum)
+ document.objects = setmetatableindex(function(t,objnum)
+ local cached = __cache__[objnum]
+ if not cached then
+ cached = some_object(document,objnum)
+ __cache__[objnum] = cached
+ __xrefs__[cached] = objnum
+ end
+ return cached
+ end)
else
document = false
end
@@ -1173,11 +1280,11 @@ if images then do
end
lpdf_epdf.image = {
- open = openpdf,
- close = closepdf,
- new = newpdf,
- query = querypdf,
- copy = copypage,
+ open = openpdf,
+ close = closepdf,
+ new = newpdf,
+ query = querypdf,
+ copy = copypage,
}
-- lpdf.injectors.pdf = function(specification)
diff --git a/tex/context/base/mkxl/mlib-lmp.lmt b/tex/context/base/mkxl/mlib-lmp.lmt
index 5608488a3..01c72e4ba 100644
--- a/tex/context/base/mkxl/mlib-lmp.lmt
+++ b/tex/context/base/mkxl/mlib-lmp.lmt
@@ -403,6 +403,21 @@ do
registerdirect("mode", function() injectboolean(modes [scanstring()] and true or false) end)
registerdirect("systemmode", function() injectboolean(systemmodes[scanstring()] and true or false) end)
+ -- for compatibility reasons we keep this (metafun manual):
+
+ local modes = tex.modes
+ local systemmodes = tex.systemmodes
+
+ function mp.mode(s)
+ injectboolean(modes[s] and true or false)
+ end
+
+ function mp.systemmode(s)
+ injectboolean(systemmodes[s] and true or false)
+ end
+
+ mp.processingmode = mp.mode
+
end
-- for alan's nodes:
diff --git a/tex/context/base/mkxl/mlib-pdf.lmt b/tex/context/base/mkxl/mlib-pdf.lmt
index ec13ef289..f537743aa 100644
--- a/tex/context/base/mkxl/mlib-pdf.lmt
+++ b/tex/context/base/mkxl/mlib-pdf.lmt
@@ -457,6 +457,7 @@ function metapost.flush(specification,result)
local object = objects[o]
if stack == object.stacking then
local objecttype = object.type
+ -- print(i,o,stack,objecttype)
if objecttype == "fill" or objecttype == "outline" then
-- we use an indirect table as we want to overload
-- entries but this is not possible in userdata
diff --git a/tex/context/base/mkxl/page-mix.mkxl b/tex/context/base/mkxl/page-mix.mkxl
index 446185e43..32af22114 100644
--- a/tex/context/base/mkxl/page-mix.mkxl
+++ b/tex/context/base/mkxl/page-mix.mkxl
@@ -580,6 +580,7 @@
\d_page_mix_max_width\dimexpr\d_page_mix_max_width-\leftskip-\rightskip\relax
\d_page_mix_leftskip \leftskip
\d_page_mix_rightskip\rightskip
+ % \frozen ?
\leftskip \zeropoint
\rightskip\zeropoint
%
diff --git a/tex/context/base/mkxl/spac-ali.mkxl b/tex/context/base/mkxl/spac-ali.mkxl
index 3ad3dcb91..d6043b4da 100644
--- a/tex/context/base/mkxl/spac-ali.mkxl
+++ b/tex/context/base/mkxl/spac-ali.mkxl
@@ -718,6 +718,7 @@
\defcsname\??aligncommand\v!nothyphenated \endcsname{\toksapp\t_spac_align_collected{\nohyphens}}
\defcsname\??aligncommand\v!collapsed \endcsname{\toksapp\t_spac_align_collected{\dohyphencollapsing}}
\defcsname\??aligncommand\v!notcollapsed \endcsname{\toksapp\t_spac_align_collected{\nohyphencollapsing}}
+\defcsname\??aligncommand\v!explicit \endcsname{\toksapp\t_spac_align_collected{\nohyphens\doexplicithyphens}}
\defcsname\??aligncommand\v!tolerant \endcsname{\toksapp\t_spac_align_collected{\spac_align_set_tolerant}}
\defcsname\??aligncommand\v!verytolerant \endcsname{\toksapp\t_spac_align_collected{\spac_align_set_very_tolerant}}
@@ -872,7 +873,7 @@
\defcsname\??alignhorizontal\v!flushright\endcsname{\enforced\let\raggedbox\spac_align_horizontal_flushright}
\defcsname\??alignhorizontal\v!center \endcsname{\enforced\let\raggedbox\spac_align_horizontal_center}
-% The next one can be in use so we keep it around but oen should
+% The next one can be in use so we keep it around but one should
% be aware of possible interference.
\permanent\protected\def\setraggedskips#1#2#3#4#5#6#7% never change this name (todo: inline this one .. less tracingall)
diff --git a/tex/context/base/mkxl/strc-itm.mklx b/tex/context/base/mkxl/strc-itm.mklx
index efead3d83..65df80f32 100644
--- a/tex/context/base/mkxl/strc-itm.mklx
+++ b/tex/context/base/mkxl/strc-itm.mklx
@@ -966,12 +966,12 @@
\let\startcollectitems\relax
\let\stopcollectitems \relax
-\letvalue{\??itemgroupalign\v!flushleft }\relax
-\letvalue{\??itemgroupalign\v!right }\relax
-\letvalue{\??itemgroupalign\v!flushright}\hfill
-\letvalue{\??itemgroupalign\v!left }\hfill
-\letvalue{\??itemgroupalign\v!middle }\hfil
-\letvalue{\??itemgroupalign\v!center }\hfil
+\letcsname\??itemgroupalign\v!flushleft \endcsname\relax
+\letcsname\??itemgroupalign\v!right \endcsname\relax
+\letcsname\??itemgroupalign\v!flushright\endcsname\hfill
+\letcsname\??itemgroupalign\v!left \endcsname\hfill
+\letcsname\??itemgroupalign\v!middle \endcsname\hfil
+\letcsname\??itemgroupalign\v!center \endcsname\hfil
\def\strc_itemgroups_left_sym_filler
{\csname\??itemgroupalign\itemgroupparameter\c!symalign\endcsname}
@@ -979,10 +979,10 @@
% symbols + states
\def\strc_itemgroups_store_global_symbol#symbol%
- {\letgvalue{\??itemgroupglobal\currentitemgroup:\currentitemlevel}#symbol}
+ {\gletcsname\??itemgroupglobal\currentitemgroup:\currentitemlevel\endcsname#symbol}
\def\strc_itemgroups_store_local_symbol#symbol%
- {\letgvalue{\??itemgrouplocal\currentitemgroup:\currentitemlevel}#symbol}
+ {\gletcsname\??itemgrouplocal\currentitemgroup:\currentitemlevel\endcsname#symbol}
\def\strc_itemgroups_fetch_global_symbol
{\csname\??itemgroupglobal\currentitemgroup:\currentitemlevel\endcsname}
@@ -1336,13 +1336,13 @@
\protected\permanent\def\stopspecialitemgroupitem % todo: frozen
{\stopitemgroupitem}
-\letvalue{\??itemgroupstart\v!item}\strc_itemgroups_start_do_item
-\letvalue{\??itemgroupstart\v!sub }\strc_itemgroups_start_subitem
-\letvalue{\??itemgroupstart\v!sym }\strc_itemgroups_start_symbol
-\letvalue{\??itemgroupstart\v!ran }\strc_itemgroups_start_edge
-\letvalue{\??itemgroupstart\v!its }\strc_itemgroups_start_items
-\letvalue{\??itemgroupstart\v!mar }\strc_itemgroups_start_margin
-\letvalue{\??itemgroupstart\v!txt }\strc_itemgroups_start_text
+\letcsname\??itemgroupstart\v!item\endcsname\strc_itemgroups_start_do_item
+\letcsname\??itemgroupstart\v!sub \endcsname\strc_itemgroups_start_subitem
+\letcsname\??itemgroupstart\v!sym \endcsname\strc_itemgroups_start_symbol
+\letcsname\??itemgroupstart\v!ran \endcsname\strc_itemgroups_start_edge
+\letcsname\??itemgroupstart\v!its \endcsname\strc_itemgroups_start_items
+\letcsname\??itemgroupstart\v!mar \endcsname\strc_itemgroups_start_margin
+\letcsname\??itemgroupstart\v!txt \endcsname\strc_itemgroups_start_text
\def\strc_itemgroups_optimize_breaks
{\ifcase\c_strc_itemgroups_column_depth
diff --git a/tex/context/base/mkxl/strc-mar.mkxl b/tex/context/base/mkxl/strc-mar.mkxl
index 9067b4924..fcce83173 100644
--- a/tex/context/base/mkxl/strc-mar.mkxl
+++ b/tex/context/base/mkxl/strc-mar.mkxl
@@ -93,14 +93,20 @@
{}
\tolerant\def\strc_markings_get_yes[#1]#*[#2]#*[#3]%
- {\ifcstok{\namedmarkingparameter{#1}\c!state}\v!start
+ {\ifarguments\orelse\ifcstok{\namedmarkingparameter{#1}\c!state}\v!start
\begingroup
\setsystemmode\v!marking
\the\everymarking
\ifparameter#3\or
- \clf_getmarking{#1}{#2}{#3}%
+ \ifcstok{#2}\v!page
+ \markingcommand{#1}{\csname\??markingfilter#3\endcsname{#1}}%
+ \else
+ \markingcommand{#1}{\clf_getsynchronizedmarking\begincsname\??markingclass#1\endcsname{#2}{#3}}%
+ \fi
+ \orelse\ifparameter#2\or
+ \markingcommand{#1}{\csname\??markingfilter#2\endcsname{#1}}%
\else
- \clf_getmarking{#1}{\v!page}{#2}%
+ \markingcommand{#1}{\csname\??markingfilter\v!default\endcsname{#1}}%
\fi
\endgroup
\fi}
diff --git a/tex/context/base/mkxl/strc-not.lmt b/tex/context/base/mkxl/strc-not.lmt
index df3b00d78..e05228b2b 100644
--- a/tex/context/base/mkxl/strc-not.lmt
+++ b/tex/context/base/mkxl/strc-not.lmt
@@ -509,9 +509,9 @@ local function check_spacing(index,slot)
local pt = pn + pi
local mt = mn + mi
if trace_insert then
- report_insert("%s %i: %p plus %p minus %p","always ",n,gn,pn,mn)
- report_insert("%s %i: %p plus %p minus %p",i > 1 and "inbetween" or "before ",n,gi,pi,mi)
- report_insert("%s %i: %p plus %p minus %p","effective",n,gt,pt,mt)
+ report_insert("%s %i: %p plus %p minus %p","always ",index,gn,pn,mn)
+ report_insert("%s %i: %p plus %p minus %p",slot > 1 and "inbetween" or "before ",index,gi,pi,mi)
+ report_insert("%s %i: %p plus %p minus %p","effective",index,gt,pt,mt)
end
return gt, pt, mt
end
diff --git a/tex/context/base/mkxl/typo-drp.lmt b/tex/context/base/mkxl/typo-drp.lmt
index de65dd55d..c62b5e718 100644
--- a/tex/context/base/mkxl/typo-drp.lmt
+++ b/tex/context/base/mkxl/typo-drp.lmt
@@ -73,6 +73,7 @@ local v_default = variables.default
local v_margin = variables.margin
local v_auto = variables.auto
local v_first = variables.first
+local v_keep = variables.keep
local v_last = variables.last
local texget = tex.get
@@ -130,6 +131,7 @@ interfaces.implement {
-- a page so this has a low priority
actions[v_default] = function(head,setting)
+ local skip = false
-- begin of par
local first = getnext(head)
local indent = false
@@ -193,6 +195,9 @@ actions[v_default] = function(head,setting)
else
-- keep quote etc with initial
local next = getnext(first)
+ if next and method[v_keep] then
+ skip = first
+ end
if not next then
-- don't start with a quote or so
return head
@@ -242,7 +247,7 @@ actions[v_default] = function(head,setting)
local id = getid(current)
if id == kern_code then
setkern(current,0)
- elseif id == glyph_code then
+ elseif id == glyph_code and skip ~= current then
local next = getnext(current)
if font then
setfont(current,font)
@@ -289,7 +294,11 @@ actions[v_default] = function(head,setting)
--
local hoffset = width + hoffset + distance + (indent and parindent or 0)
for current in nextglyph, first do
- setoffsets(current,-hoffset,-voffset) -- no longer - height here
+ if skip == current then
+ setoffsets(current,-hoffset,0)
+ else
+ setoffsets(current,-hoffset,-voffset) -- no longer - height here
+ end
if current == last then
break
end
diff --git a/tex/context/interface/mkii/cont-cs.xml b/tex/context/interface/mkii/cont-cs.xml
index 8da159659..fc5e5aa0d 100644
--- a/tex/context/interface/mkii/cont-cs.xml
+++ b/tex/context/interface/mkii/cont-cs.xml
@@ -1,10396 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+</interface>
-<!-- versions:
+<cd:interface>
- comment : user interface definitions of ConTeXt
- authors : Hans Hagen, Taco Hoekwater, Patrick Gundlach, Wolfgang Schuster, and others
-
- versions : 2004.11.17 : initial version
- 2006.08.02 : define + resolve
-
--->
-
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context test" language="en" version="2006.08.02">
-
- <!-- there are some more -->
-
- <cd:define name="align">
- <cd:constant type="uvnitr"/>
- <cd:constant type="vnejsi"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="flushleft"/>
- <cd:constant type="flushright"/>
- <cd:constant type="nastred"/>
- <cd:constant type="center"/>
- <cd:constant type="normalni"/>
- <cd:constant type="ne"/>
- <cd:constant type="ano"/>
- <cd:constant type="siroky"/>
- <cd:constant type="posledni"/>
- <cd:constant type="r2l"/>
- <cd:constant type="l2r"/>
- </cd:define>
-
- <cd:define name="symalign">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="flushleft"/>
- <cd:constant type="flushright"/>
- <cd:constant type="nastred"/>
- <cd:constant type="center"/>
- </cd:define>
-
- <cd:define name="indenting">
- <cd:constant type="nikdy"/>
- <cd:constant type="zadny"/>
- <cd:constant type="ne"/>
- <cd:constant type="ne"/>
- <cd:constant type="ano"/>
- <cd:constant type="vzdy"/>
- <cd:constant type="prvni"/>
- <cd:constant type="dalsi"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="normalni"/>
- <cd:constant type="liche"/>
- <cd:constant type="sude"/>
- <cd:constant type="cd:dimension"/>
- </cd:define>
-
- <cd:define name="indentnext">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:define>
-
- <cd:define name="style">
- <cd:constant type="normalni"/>
- <cd:constant type="tucne"/>
- <cd:constant type="sklonene"/>
- <cd:constant type="tucnesklonene"/>
- <cd:constant type="opis"/>
- <cd:constant type="kap"/>
- <cd:constant type="small..."/>
- <cd:constant type="cd:command"/>
- </cd:define>
-
- <cd:define name="language">
- <cd:constant type="nl"/>
- <cd:constant type="fr"/>
- <cd:constant type="en"/>
- <cd:constant type="uk"/>
- <cd:constant type="de"/>
- <cd:constant type="es"/>
- <cd:constant type="cz"/>
- <cd:constant type=".."/>
- </cd:define>
-
- <cd:define name="texts">
- <cd:constant type="cd:text"/>
- <cd:constant type="cd:section"/>
- <cd:constant type="datum"/>
- <cd:constant type="cd:mark"/>
- <cd:constant type="cislostranky"/>
- </cd:define>
-
- <cd:define name="layout-h">
- <cd:constant type="text" default="yes"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="hrana"/>
- </cd:define>
-
- <cd:define name="layout-v">
- <cd:constant type="vrsek"/>
- <cd:constant type="zahlavi"/>
- <cd:constant type="text" default="yes"/>
- <cd:constant type="upati"/>
- <cd:constant type="spodek"/>
- </cd:define>
-
- <cd:define name="bodyfont">
- <cd:constant type="5pt"/>
- <cd:constant type="..."/>
- <cd:constant type="12pt"/>
- <cd:constant type="male"/>
- <cd:constant type="velke"/>
- </cd:define>
-
- <cd:command name="installlanguage" file="lang-ini.tex" category="language">
- <cd:sequence>
- <cd:string value="instalacejazyka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="mezerovani">
- <cd:constant type="zhustene" default="yes"/>
- <cd:constant type="siroky"/>
- </cd:parameter>
- <cd:parameter name="lefthyphenmin">
- <cd:constant type="cd:number" default="2"/>
- </cd:parameter>
- <cd:parameter name="righthyphenmin">
- <cd:constant type="cd:number" default="2"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="vetavlevo">
- <cd:constant type="cd:command" default="---"/>
- </cd:parameter>
- <cd:parameter name="vetavpravo">
- <cd:constant type="cd:command" default="---"/>
- </cd:parameter>
- <cd:parameter name="podvetavlevo">
- <cd:constant type="cd:command" default="---"/>
- </cd:parameter>
- <cd:parameter name="podvetavpravo">
- <cd:constant type="cd:command" default="---"/>
- </cd:parameter>
- <cd:parameter name="citovatvlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="citovatvpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="citacevlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="citacevpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="leftspeech">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="middlespeech">
- <cd:constant type="cd:command" default=""/>
- </cd:parameter>
- <cd:parameter name="rightspeech">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="limittext">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="datum">
- <cd:constant type="cd:text"/> <!-- TODO -->
- </cd:parameter>
- <cd:parameter name="compoundhyphen">
- <cd:constant type="cd:command" default="\compoundhyphen"/>
- </cd:parameter>
- <cd:parameter name="leftcompoundhyphen">
- <cd:constant type="cd:command" default="\compoundhyphen"/>
- </cd:parameter>
- <cd:parameter name="rightcompoundhyphen">
- <cd:constant type="cd:command" default=""/>
- </cd:parameter>
- <cd:parameter name="implicitni">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplanguage" file="lang-ini.tex" category="language">
- <cd:sequence>
- <cd:string value="nastavjazyk"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:resolve name="language"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="instalacejazyka" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="language" file="lang-ini.tex" category="language">
- <cd:sequence>
- <cd:string value="jazyk"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:resolve name="language"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="mainlanguage" file="lang-ini.tex" category="language">
- <cd:sequence>
- <cd:string value="hlavnijazyk"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:resolve name="language"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="translate" file="lang-lab.tex" category="language">
- <cd:sequence>
- <cd:string value="prelozit"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="cd:name">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useencoding" file="enco-ini.tex" category="encoding" obsolete="yes"> <!-- engine="pdftex" -->
- <cd:sequence>
- <cd:string value="uzijkodovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usespecials" file="spec-ini.tex">
- <cd:sequence>
- <cd:string value="uzijspeciality"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="reset"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineoutput" file="spec-ini.tex">
- <cd:sequence>
- <cd:string value="definujvystup"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupoutput" file="spec-ini.tex">
- <cd:sequence>
- <cd:string value="nastavvystup"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definebodyfontenvironment" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definujprostredizakladnihofontu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes"> <!-- it's possible to use 1+2+3, 2+3, what about 1+2? -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="no"> <!-- have to force no, otherwise \showsetup is wrong ! -->
- <cd:constant type="5pt"/> <!-- TODO: maybe <cd:resolve name="bodyfont"/> -->
- <cd:constant type="..."/>
- <cd:constant type="12pt"/>
- <cd:constant type="implicitni"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:parameter name="text">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="script">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="scriptscript">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="x">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="xx">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="a">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="b">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="c">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="d">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="male">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="velky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="meziradkovamezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="em">
- <cd:resolve name="style"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbodyfontenvironment" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="nastavprostredizakladnihofontu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes"> <!-- same as definebodyfontenvironment; you can define the whole commant to inherit, not only parameters-->
- <cd:inherit name="definujprostredizakladnihofontu" n="1"/>
- </cd:keywords>
- <cd:keywords n="2" optional="no">
- <cd:inherit name="definujprostredizakladnihofontu" n="2" optional="no"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="definujprostredizakladnihofontu" n="3"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showbodyfontenvironment" file="font-run.tex" category="fonts"> <!-- and debug -->
- <cd:sequence>
- <cd:string value="ukazpostredizakladnihofontu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:inherit name="nastavzakladnifont" n="1"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definebodyfont" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definujzakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes"> <!-- <cd:constant type="implicitni"/> -->
- <cd:resolve name="bodyfont"/> <!-- TODO: check this -->
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="rm" default="yes"/>
- <cd:constant type="ss"/>
- <cd:constant type="tt"/>
- <cd:constant type="hw"/>
- <cd:constant type="cg"/>
- <cd:constant type="mm"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="tf">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="bf">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="sl">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="it">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="bs">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="bi">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="sc">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="mr">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="ex">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="mi">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="sy">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="ma">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="mb">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="mc">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="md">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definebodyfontDEF" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definujzakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:inherit name="nastavzakladnifont" n="2"/>
- </cd:keywords>
- <cd:keywords n="1">
- <cd:inherit name="nastavzakladnifont" n="3"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definebodyfontREF" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definujzakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:inherit name="nastavzakladnifont" n="1"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:inherit name="nastavzakladnifont" n="2"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showbodyfont" file="font-run.tex" category="fonts"> <!-- visual debugging -->
- <cd:sequence>
- <cd:string value="ukazzakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:inherit name="nastavzakladnifont" n="1"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbodyfont" file="font-run.tex" category="fonts">
- <cd:sequence>
- <cd:string value="nastavzakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes"> <!-- TODO: many missing, maybe also <cd:resolve name="bodyfont"/> -->
- <cd:constant type="cd:name"/>
- <cd:constant type="serif"/>
- <cd:constant type="pravidelne"/>
- <cd:constant type="antikva"/>
- <cd:constant type="sans"/>
- <cd:constant type="podpora"/>
- <cd:constant type="bezserifu"/>
- <cd:constant type="mono"/>
- <cd:constant type="opis"/>
- <cd:constant type="strojopis"/>
- <cd:constant type="rukopisne"/>
- <cd:constant type="kaligraficke"/>
- <cd:constant type="5pt"/>
- <cd:constant type="..."/>
- <cd:constant type="12pt"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="switchtobodyfont" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="prepninazakladnifont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- <cd:constant type="serif"/>
- <cd:constant type="pravidelne"/>
- <cd:constant type="antikva"/>
- <cd:constant type="sans"/>
- <cd:constant type="podpora"/>
- <cd:constant type="bezserifu"/>
- <cd:constant type="mono"/>
- <cd:constant type="opis"/>
- <cd:constant type="strojopis"/>
- <cd:constant type="rukopisne"/>
- <cd:constant type="kaligraficke"/>
- <cd:constant type="5pt"/>
- <cd:constant type="..."/>
- <cd:constant type="12pt"/>
- <cd:constant type="male"/>
- <cd:constant type="velke"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefont" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definujfont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcolor" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="nastavbarvu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcolors" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="nastavbarvy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="globalne"/>
- <cd:constant type="lokalne"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="vzdy"/>
- <cd:constant type="nikdy"/>
- </cd:parameter>
- <cd:parameter name="redukce">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="rgb">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="cmyk">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="mpcmyk">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="mpspot">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="barvatextu">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="split">
- <cd:constant type="c"/>
- <cd:constant type="m"/>
- <cd:constant type="y"/>
- <cd:constant type="k"/>
- <cd:constant type="p"/>
- <cd:constant type="s"/>
- <cd:constant type="ne"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="vse"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="intent">
- <cd:constant type="zadny"/>
- <cd:constant type="overprint"/>
- <cd:constant type="knockout"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definecolor" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="definujbarvu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="r">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="g">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="b">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="c">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="m">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="y">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="k">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="s">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="h">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="t">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="a">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="p">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="e">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="color" type="environment" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="barva"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="color" file="colo-ini.tex">
- <cd:sequence>
- <cd:string value="barva"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="graycolor" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="sedabarva"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showcolor" file="colo-run.tex" category="colors"> <!-- and debug -->
- <cd:sequence>
- <cd:string value="ukazbarvu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definepalet" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="definujpaletu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="cd:name">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppalet" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="nastavpaletu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definecolorgroup" file="colo-ini.tex" category="colors">
- <cd:sequence>
- <cd:string value="definujskupinubarev"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="rgb" default="yes"/>
- <cd:constant type="cmyk"/>
- <cd:constant type="seda"/>
- <cd:constant type="s"/>
- </cd:keywords>
- <cd:triplet n="3" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showpalet" file="colo-run.tex" category="colors"> <!-- and debug -->
- <cd:sequence>
- <cd:string value="ukazpaletu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="horizontalne"/>
- <cd:constant type="vertikalne"/>
- <cd:constant type="jmeno"/>
- <cd:constant type="hodnota"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showcolorgroup" file="colo-run.tex" category="colors"> <!-- and debug-->
- <cd:sequence>
- <cd:string value="ukazskupinubarev"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="horizontalne"/>
- <cd:constant type="vertikalne"/>
- <cd:constant type="jmeno"/>
- <cd:constant type="hodnota"/>
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="comparepalet" file="colo-run.tex" category="colors"> <!-- and debug? -->
- <cd:sequence>
- <cd:string value="porovnejpaletu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="comparecolorgroup" file="colo-run.tex" category="colors">
- <cd:sequence>
- <cd:string value="porovnejskupinubarev"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showmakeup" file="supp-vis.tex" category="debug">
- <cd:sequence>
- <cd:string value="ukazupravu"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="definetype" file="core-ver.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="definetype"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavtype" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptype" file="core-ver.tex" category="verbatim"> <!-- TODO -->
- <cd:sequence>
- <cd:string value="nastavtype"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="mezera">
- <cd:constant type="zap"/>
- <cd:constant type="vyp" default="yes"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="sklonene"/>
- <cd:constant type="normalni"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="type" file="verb-ini.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="opis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="typ" file="core-ver.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="pis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="tex" file="core-ver.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="tex"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <!-- cd:command name="arg" file="core-ver.tex"> command broken
- <cd:sequence>
- <cd:string value="arg"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content/>
- </cd:arguments>
-</cd:command -->
-
- <cd:command name="definetyping" file="core-ver.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="definujopis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:inherit name="nastavopis" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavopis" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptyping" file="core-ver.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="nastavopis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="soubor"/>
- <cd:constant type="typing"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="volba">
- <cd:constant type="sklonene"/>
- <cd:constant type="normalni"/>
- <cd:constant type="prikazy" version="mkiv"/>
- <cd:constant type="barevne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="iprikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vprikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="cprikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command" default="\blank"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command" default="\blank"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="standardni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="sudamarginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="lichyokraj">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="prazdny">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="standardni"/>
- <cd:constant type="pulradku"/>
- <cd:constant type="radek"/>
- </cd:parameter>
- <cd:parameter name="escape">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="mezera">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="tab">
- <cd:constant type="cd:number"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="paleta">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="range">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="radky">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="hyphenated"/>
- </cd:parameter>
- <cd:parameter name="prazdne">
- <cd:constant type="ano"/>
- <cd:constant type="vse"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="cislovani">
- <cd:constant type="radek"/>
- <cd:constant type="soubor"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="strip">
- <cd:constant type="ne"/>
- <cd:constant type="auto"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="typing" type="environment" generated="yes" file="verb-ini.tex"
- category="verbatim">
- <cd:sequence>
- <cd:variable value="typing"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="typefile" file="verb-ini.tex" category="verbatim">
- <cd:sequence>
- <cd:string value="opissoubor"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfootnotes" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="nastavpoznamkypodcarou"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- </cd:parameter>
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="stranka"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="sloupce"/>
- <cd:constant type="firstcolumn"/>
- <cd:constant type="lastcolumn"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="linka">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostsloupcu">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostokraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ciselnyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="textovyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="split">
- <cd:constant type="tolerantni"/>
- <cd:constant type="striktni"/>
- <cd:constant type="velmistriktni"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="styltextu">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barvatextu">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="odstavec">
- <cd:constant type="ano"/>
- <cd:constant type="ne" default="yes"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfootnotedefinition" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="nastavdefinicipoznamekpodcarou"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:inherit name="nastavpopisy" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="footnote" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="poznamkapodcarou"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="footnotetext" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="footnotetext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="note" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="poznamka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" interactive="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="localfootnotes" type="environment" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="localfootnotes"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="placelocalfootnotes" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="umistilokalnipoznamkypodcarou"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavpoznamkypodcarou" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placefootnotes" file="core-not.tex" category="footnotes">
- <cd:sequence>
- <cd:string value="umistipoznamkypodcarou"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavpoznamkypodcarou" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupunderbar" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="nastavpodtrzeni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetspodku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetvrsku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barvalinky">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="underbar" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="underbar"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="underbars" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="underbars"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overbar" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="overbar"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overbars" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="overbars"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overstrike" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="overstrike"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overstrikes" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="overstrikes"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="romannumerals" file="core-con.tex">
- <cd:sequence>
- <cd:string value="rimskecislice"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Romannumerals" file="core-con.tex">
- <cd:sequence>
- <cd:string value="Rimskecislice"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="numbers" file="core-con.tex">
- <cd:sequence>
- <cd:string value="cisla"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="character" file="core-con.tex">
- <cd:sequence>
- <cd:string value="znak"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Character" file="core-con.tex">
- <cd:sequence>
- <cd:string value="Znak"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="characters" file="core-con.tex">
- <cd:sequence>
- <cd:string value="znaky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Characters" file="core-con.tex">
- <cd:sequence>
- <cd:string value="Znaky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="mediaeval" file="core-con.tex">
- <cd:sequence>
- <cd:string value="mediaeval"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="month" file="core-con.tex">
- <cd:sequence>
- <cd:string value="mesic"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="MONTH" file="core-con.tex">
- <cd:sequence>
- <cd:string value="MESIC"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="weekday" file="core-con.tex">
- <cd:sequence>
- <cd:string value="vsedniden"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="WEEKDAY" file="core-con.tex">
- <cd:sequence>
- <cd:string value="VSEDNIDEN"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcapitals" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="nastavkapitalky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="titul">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="sc">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="cap" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="cap"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nocap" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="nocap"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="CAP" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="CAP"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Cap" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="Cap"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Caps" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="Caps"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="WORD" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="SLOVO"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="WORDS" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="SLOVA"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Word" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="Slovo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="Words" file="core-fnt.tex" category="Fonts">
- <cd:sequence>
- <cd:string value="Slova"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="stretched" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="roztazene"/>
- </cd:sequence>
- <cd:arguments>
- <cd:word n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definesymbol" file="symb-ini.tex">
- <cd:sequence>
- <cd:string value="definujsymbol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefiguresymbol" file="symb-ini.tex">
- <cd:sequence>
- <cd:string value="definujobrazeksymbol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavexterniobrazy" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="symbol" file="symb-ini.tex">
- <cd:sequence>
- <cd:string value="symbol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="symbolset" type="environment" file="symb-ini.tex" category="symbols">
- <cd:sequence>
- <cd:string value="symbolset"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsymbolset" file="symb-ini.tex" category="symbols">
- <cd:sequence>
- <cd:string value="nastavsadusymbolu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usesymbols" file="symb-ini.tex" category="symbols">
- <cd:sequence>
- <cd:string value="uzijsymbol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showsymbolset" file="symb-run.tex" category="symbols"> <!-- and symbols -->
- <cd:sequence>
- <cd:string value="ukazsadusymbolu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineconversion" file="core-con.tex">
- <cd:sequence>
- <cd:string value="definujkonverzi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:command"/>
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="convertnumber" file="core-con.tex">
- <cd:sequence>
- <cd:string value="konvertujcislo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupheadtext" file="lang-lab.tex">
- <cd:sequence>
- <cd:string value="nastavtexthlavicky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="language"/>
- </cd:keywords>
- <cd:assignments n="2">
- <cd:parameter name="cd:name">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplabeltext" file="lang-lab.tex">
- <cd:sequence>
- <cd:string value="nastavtextpopisku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="language"/>
- </cd:keywords>
- <cd:assignments n="2">
- <cd:parameter name="cd:name">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="headtext" file="lang-lab.tex">
- <cd:sequence>
- <cd:string value="texthlavicky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="labeltext" file="lang-lab.tex">
- <cd:sequence>
- <cd:string value="textpopisku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupmarginrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavmarginalnilinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1">
- <cd:parameter name="uroven">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="marginrule" type="environment" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="marginalnilinka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="marginrule" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="marginalnilinka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplinewidth" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavsirkucary"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupframed" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavoramovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/> <!-- defines a command with that name -->
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="vyska">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="fixne"/>
- <cd:constant type="lokalne"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="autosirka">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="sila"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="zadny"/>
- <cd:constant type="prekryv"/>
- <cd:constant type="implicitni"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="podlehloubky"/>
- <cd:constant type="visici"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="nivy"/>
- <cd:constant type="nizko"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="nastred"/>
- <cd:constant type="spodek"/>
- <cd:constant type="drzet"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="zadny"/>
- <cd:constant type="prazdne"/>
- </cd:parameter>
- <cd:parameter name="strut">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="globalne"/>
- <cd:constant type="lokalne"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="spodek">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vrsek">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="ramecek">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- <cd:constant type="zadny"/>
- <cd:constant type="prekryv"/>
- </cd:parameter>
- <cd:parameter name="rameceknahore">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="ramecekdole">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="ramecekvlevo">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="ramecekvpravo">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="offsetramecku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="hloubkaramecku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rohramecku">
- <cd:constant type="zaobleny"/>
- <cd:constant type="pravouhly"/>
- </cd:parameter>
- <cd:parameter name="polomerramecku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barvaramecku">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="pozadi">
- <cd:constant type="rastr"/>
- <cd:constant type="barevne"/>
- <cd:constant type="zadny"/>
- <cd:constant type="popredi"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="rastrpozadi">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="barvapozadi">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="offsetpozadi">
- <cd:constant type="ramecek"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="hloubkapozadi">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rohpozadi">
- <cd:constant type="zaobleny"/>
- <cd:constant type="pravouhly"/>
- </cd:parameter>
- <cd:parameter name="polomerpozadi">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="roh">
- <cd:constant type="zaobleny"/>
- <cd:constant type="pravouhly"/>
- </cd:parameter>
- <cd:parameter name="polomer">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="prazdne">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="foregroundcolor">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="foregroundstyle">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="framed" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="oramovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inframed" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="zaramovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="thinrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="tenkelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes">
- <cd:inherit name="nastavtenkelinky" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupthinrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavtenkelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1">
- <cd:parameter name="meziradkovamezera">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="barvapozadi">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- <cd:constant type="d"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="pozadi">
- <cd:constant type="barevne"/>
- </cd:parameter>
- <cd:parameter name="barvapozadi">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="hairline" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="vlasovalinka"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="thinrule" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="tenkalinka"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="defineframedtext" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="definujoramovanytext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavoramovanetexty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineframed" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="definujoramovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavoramovanetexty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupframedtexts" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavoramovanetexty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vnitrni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="korekceradku">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="korekcehloubky">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="standardni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="odsazovani">
- <cd:resolve name="indenting"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="framedtext" type="environment" generated="yes" file="core-rul.tex">
- <cd:sequence>
- <cd:variable value="oramovanytext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="zadny"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavoramovanetexty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="framedtext" generated="yes" file="core-rul.tex">
- <cd:sequence>
- <cd:variable value="oramovanytext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavoramovanetexty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="background" type="environment" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="pozadi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="background" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="pozadi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbackground" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavpozadi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="levyoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravyoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetvrsku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetspodku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fillinrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="vyplnovelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavvyplnovelinky" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- <cd:content n="3" optional="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fillintext" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="vyplnenytext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavvyplnovelinky" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- <cd:content n="3" optional="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfillinrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavvyplnovelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="meziradkovamezera">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fillinline" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="vyplnovyradek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavvyplnoveradky" n="1"/>
- </cd:assignments>
- <cd:nothing n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfillinlines" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavvyplnoveradky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptextrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavtextovelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="naokraji"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barvalinky">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="textrule" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="textovalinka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- </cd:keywords>
- <cd:content n="2" optional="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="textrule" type="environment" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="textovalinka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- </cd:keywords>
- <cd:content n="2" optional="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="blackrule" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="cernalinka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavcernelinky" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="blackrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="cernelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:inherit name="nastavcernelinky" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupblackrules" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavcernelinky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension" default="1em"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension" default="1ex"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="a" default="yes"/>
- <cd:constant type="b"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension" default=".25ex"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number" default="3"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineoverlay" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="definujprekryv"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:command"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usemodule" file="core-fil.tex"> <!-- TODO -->
- <cd:sequence>
- <cd:string value="uzijmodul"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="reset" file="core-num.tex">
- <cd:sequence>
- <cd:string value="reset"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <!-- <cd:command name="donttest">
- <cd:sequence>
- <cd:string value="zadnytest"/>
- </cd:sequence>
-</cd:command> -->
-
- <cd:command name="localenvironment" type="environment" file="core-job.tex">
- <cd:sequence>
- <cd:string value="localenvironment"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupsystem" file="core-sys.tex">
- <cd:sequence>
- <cd:string value="nastavsystem"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="rozliseni">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="soubor">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="adresar">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="nahodne">
- <cd:constant type="normalni"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usedirectory" file="core-job.mkii"> <!-- usepath, todo: more than one file -->
- <cd:sequence>
- <cd:string value="usedirectory"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- <cd:constant type="reset"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="low" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="nizky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="high" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="vysoky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="lohi" file="core-fnt.tex">
- <cd:sequence>
- <cd:string value="nivy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showframe" file="page-run.tex">
- <cd:sequence>
- <cd:string value="ukazramecek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="hrana"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="leftaligned" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zarovnanovlevo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="rightaligned" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zarovnanovpravo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="midaligned" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zarovnanonastred"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="wordright" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="slovovpravo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inmargin" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="naokraj"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inothermargin" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="nadruhyokraj"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inleft" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="vlevo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inright" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="vpravo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="ininner" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="ininner"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inouter" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="inouter"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="column" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="sloupec"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="showstruts" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="ukazpodpery"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="showsetups" file="page-run.tex">
- <cd:sequence>
- <cd:string value="ukaznastaveni"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="showlayout" file="page-run.tex">
- <cd:sequence>
- <cd:string value="ukazvzhled"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="margintext" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="marginalnitext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="nizko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupmarginblocks" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="nastavmarginalniblok"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="naokraji"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="vrsek">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="spodek">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="marginblock" type="environment" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="marginblock"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="part" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="part"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="title" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="title"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="chapter" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="chapter"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="section" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="section"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="subsection" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="subsection"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="subsubsection" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="subsubsection"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="subject" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="subject"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="subsubject" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="subsubject"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="subsubsubject" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="subsubsubject"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="appendix" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="appendix"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="in" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="tref"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="yes"/>
- <cd:content n="2" interactive="yes"/>
- <cd:reference n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="at" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="pref"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="yes"/>
- <cd:content n="2" interactive="yes"/>
- <cd:reference n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="about" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="oref"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="yes"/>
- <cd:reference n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="somewhere" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="nekde"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- <cd:reference n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="atpage" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="nastrane"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="ref" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="ref"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="t"/>
- <cd:constant type="p"/>
- <cd:constant type="r"/>
- <cd:constant type="s"/>
- <cd:constant type="e"/>
- </cd:keywords>
- <cd:reference n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="textreference" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="odkaznatext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="pagereference" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="odkaznastranu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="reference" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="odkaz"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usereferences" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="uzijodkazy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definereference" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="definujodkaz"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:reference n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definereferenceformat" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="definujformatodkazu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="vlevo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="popisek">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="hl" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="hl"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="vl" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="vl"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="godown" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="jdidolu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="whitespace" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="bilemisto"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="nowhitespace" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zadnebilemisto"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="crlf" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="crlf"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="space" file="syst-pln.tex">
- <cd:sequence>
- <cd:string value="mezera"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="fixedspaces" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="tvrdemezery"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="emptylines" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="emptylines"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nospace" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zadnamezera"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="packed" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zhustene"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupdescriptions" file="core-des.tex">
- <cd:sequence>
- <cd:string value="nastavpopisy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/> <!-- TODO: style=normal -->
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="cd:dimension" default="8em"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="vzor">
- <cd:constant type="cd:text" default=""/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="closecommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="closesymbol">
- <cd:constant type="cd:text" default=""/>
- </cd:parameter>
- <cd:parameter name="titleleft">
- <cd:constant type="cd:text" default="("/>
- </cd:parameter>
- <cd:parameter name="titleright">
- <cd:constant type="cd:text" default=")"/>
- </cd:parameter>
- <cd:parameter name="vzdalenosttitulek">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="styltitulek">
- <cd:resolve name="style"/> <!-- TODO: default=bold -->
- </cd:parameter>
- <cd:parameter name="barvatitulek">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="standardni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne" default="yes"/> <!-- TODO: this is default; conflicting syntax? -->
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo" default="yes"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="semknuto"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="ivlevo"/>
- <cd:constant type="ivpravo"/>
- <cd:constant type="visici"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/> <!-- TODO: default=bold -->
- </cd:parameter>
- <cd:parameter name="barvahlavicky">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- <cd:parameter name="headcommand">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="zaveseni">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command" default="\blank"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command" default="\blank"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command" default="\blank"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/> <!-- default=yes -->
- </cd:parameter>
- <cd:parameter name="odsazovani">
- <cd:resolve name="indenting"/> <!-- default=never -->
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="obrazovka">
- <cd:constant type="ano" default="yes"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupenumerations" file="core-des.tex">
- <cd:sequence>
- <cd:string value="nastavvycty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavpopisy" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineenumeration" file="core-des.tex">
- <cd:sequence>
- <cd:string value="definujvycet"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavvycty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="enumeration" generated="yes" file="core-des.tex">
- <cd:sequence>
- <cd:variable value="vycet"/>
- </cd:sequence>
- <cd:arguments>
- <cd:nothing n="1" interactive="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="enumeration" type="environment" generated="yes" file="core-des.tex">
- <cd:sequence>
- <cd:variable value="vycet"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="definedescription" file="core-des.tex">
- <cd:sequence>
- <cd:string value="definujpopis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavpopisy" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="description" generated="yes" file="core-des.tex">
- <cd:sequence>
- <cd:variable value="popis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:nothing n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="description" type="environment" generated="yes" file="core-des.tex">
- <cd:sequence>
- <cd:variable value="popis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupindentedtext" file="strc-des.tex">
- <cd:sequence>
- <cd:string value="setupindentedtext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vzor">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineindentedtext" file="strc-des.tex">
- <cd:sequence>
- <cd:string value="defineindentedtext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="setupindentedtext" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="indentation" generated="yes" file="core-spa.tex">
- <cd:sequence>
- <cd:variable value="indentation"/>
- </cd:sequence>
- <cd:arguments>
- <cd:nothing n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definelabel" file="core-des.tex">
- <cd:sequence>
- <cd:string value="definujpopisek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="text">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="naokraji"/>
- <cd:constant type="dotextu"/>
- </cd:parameter>
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="dobloku">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barvahlavicky">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="labeling" generated="yes" file="core-des.tex">
- <cd:sequence>
- <cd:variable value="labeling"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcolumns" file="page-mul.tex">
- <cd:sequence>
- <cd:string value="nastavsloupce"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes"> <!-- no idea why it is optional -->
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="nvrsek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="linka">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/> <!-- default and unknown missing -->
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="tolerance">
- <cd:constant type="velmistriktni"/>
- <cd:constant type="striktni"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- <cd:constant type="natahnout"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rovnovaha">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:constant type="text"/>
- <!-- cd:constant type="yes"/ -->
- <!-- cd:constant type="no"/ -->
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="prazdny">
- <cd:constant type="fixne"/>
- <cd:constant type="pulradku"/>
- <cd:constant type="radek"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="velke"/>
- <cd:constant type="stredni"/>
- <cd:constant type="male"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="pozadi"/>
- </cd:parameter>
- <cd:parameter name="smer">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="columns" type="environment" file="page-mul.tex">
- <cd:sequence>
- <cd:string value="columns"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavsloupce" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definetext" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="definujtext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="zahlavi"/>
- <cd:constant type="upati"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="4" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="5" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupheader" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavzahlavi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text" default="yes"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="hrana"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="status">
- <cd:constant type="normalni"/>
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="zadny"/>
- <cd:constant type="zadneznaceni"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="strut">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylvlevo">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylvpravo">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="sirkavlevo">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirkavpravo">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfooter" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavupati"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:inherit name="nastavzahlavi" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavzahlavi" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptext" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavtext"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:inherit name="nastavzahlavi" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavzahlavi" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptop" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavhorejsek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:inherit name="nastavzahlavi" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavzahlavi" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbottom" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavspodek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:inherit name="nastavzahlavi" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavzahlavi" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="noheaderandfooterlines" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="zadnezahlaviaupati"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="notopandbottomlines" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="zadnehorniadolniradky"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupheadertexts" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavtextyzahlavi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfootertexts" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavtextyupati"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptexttexts" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavtexttexty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptoptexts" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavhornitexty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbottomtexts" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="nastavdolnitexty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="settextcontent" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="settextcontent"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:resolve name="layout-v"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="4" optional="yes">
- <cd:resolve name="texts"/>
- </cd:keywords>
- <cd:keywords n="5" optional="yes">
- <cd:resolve name="texts"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="resettextcontent" file="page-txt.tex">
- <cd:sequence>
- <cd:string value="resettextcontent"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:resolve name="layout-v"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:resolve name="layout-h"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:constant type="lefttext"/>
- <cd:constant type="middletext"/>
- <cd:constant type="righttext"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definemarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="definujznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="couplemarking" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="propojeneznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="decouplemarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="rozpojeneznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="resetmarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="resetznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupmarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="nastavznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="marking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="znaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="getmarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="ziskejznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="prvni"/>
- <cd:constant type="posledni"/>
- <cd:constant type="predchozi"/>
- <cd:constant type="obe"/>
- <cd:constant type="vse"/>
- <cd:constant type="aktualni"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nomarking" file="core-mar.tex">
- <cd:sequence>
- <cd:string value="zadneznaceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplayout" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="nastavvzhled"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="nastred"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="nastred"/>
- </cd:parameter>
- <cd:parameter name="zpetnamezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="svrchnimezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="levyokraj">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravyokraj">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zahlavi">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="upati">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vrsek">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="spodek">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="levahrana">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravahrana">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostzahlavi">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostupati">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostvrsku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostspodku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostlevehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostpravehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostlevehrany">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostpravehrany">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="horoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsethlavicky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="znaceni">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- <cd:constant type="barevne"/>
- <cd:constant type="rastr"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="stranka"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="spodek"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="jednostranne"/>
- <cd:constant type="dvoustranny"/>
- </cd:parameter>
- <cd:parameter name="meritko">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="nx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ny">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="dx">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="dy">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="radky">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sloupce">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostsloupcu">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="mrizka">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="bottomspace">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="cutspace">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="textdistance">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirkatextu">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="textmargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="clipoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="papir">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="adaptlayout" file="page-lay.tex">
- <cd:sequence>
- <cd:string value="prizpusobvzhled"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="radky">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showgrid" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="ukazmrizku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="reset"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="zadny"/>
- <cd:constant type="vse"/>
- <cd:constant type="radky"/>
- <cd:constant type="ramecek"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vnejsi"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placeongrid" file="core-grd.tex">
- <cd:sequence>
- <cd:string value="umistinamrizku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:inherit name="premistinamrizku" n="1"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="moveongrid" file="core-grd.tex">
- <cd:sequence>
- <cd:string value="premistinamrizku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="standardni" default="yes"/> <!-- also 'normal', 'yes' and 'force' -->
- <cd:constant type="vrsek"/>
- <cd:constant type="obe"/>
- <cd:constant type="spodek"/>
- <cd:constant type="-top"/>
- <cd:constant type="-both"/>
- <cd:constant type="-bottom"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="nastred"/>
- <cd:constant type="nizko"/>
- <cd:constant type="stranka"/>
- <cd:constant type="siroky"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="podlehloubky"/>
- <cd:constant type="radek"/>
- <cd:constant type="reset"/>
- <cd:constant type="zadny"/>
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="project" type="environment" file="core-job.tex">
- <cd:sequence>
- <cd:string value="projekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:file n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="environment" type="environment" file="core-job.tex">
- <cd:sequence>
- <cd:string value="prostredi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:file n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="product" type="environment" file="core-job.tex">
- <cd:sequence>
- <cd:string value="produkt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:file n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="component" type="environment" file="core-job.tex">
- <cd:sequence>
- <cd:string value="komponenta"/>
- </cd:sequence>
- <cd:arguments>
- <cd:file n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nomorefiles" file="core-job.tex">
- <cd:sequence>
- <cd:string value="zadnedalsisoubory"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupinterlinespace" variant="1" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="nastavmeziradkovoumezeru"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="reset"/>
- <cd:constant type="male" default="yes"/>
- <cd:constant type="stredni"/>
- <cd:constant type="auto"/>
- <cd:constant type="velke"/>
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinterlinespace2" variant="2" file="core-spa.tex">
- <!-- attached a 2 to make this definition usable with \showsetup -->
- <cd:sequence>
- <cd:string value="nastavmeziradkovoumezeru"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="vyska">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="radek">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vrsek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="spodek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppagenumbering" file="page-num.tex">
- <cd:sequence>
- <cd:string value="nastavcislovanistran"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="jednostranne"/>
- <cd:constant type="dvoustranny"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="zahlavi"/>
- <cd:constant type="upati"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="textovahrana"/>
- <cd:constant type="ivlevo"/>
- <cd:constant type="ivpravo"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="oddelovaccisla">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="oddelovactextu">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="cd:sectionnumber">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="strut">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="posledni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupnarrower" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="nastavzuzeni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="vlevo">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stredni">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="define" file="syst-ext.tex">
- <cd:sequence>
- <cd:string value="definuj"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- <cd:csname n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usecommands" file="core-sys.tex">
- <cd:sequence>
- <cd:string value="uzijprikazy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definestartstop" file="core-sys.tex">
- <cd:sequence>
- <cd:string value="definujstartstop"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="prikazy">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupheads" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="nastavnadpisy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="cislooddilu">
- <cd:constant type="ano"/>
- <cd:constant type="cd:number"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="normalni"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="nastred"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="odstavec"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="predel">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="zarovnejtitul">
- <cd:constant type="ano"/>
- <cd:constant type="plvouciobjekt"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="tolerance">
- <cd:constant type="velmistriktni"/>
- <cd:constant type="striktni"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- <cd:constant type="natahnout"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:twoarguments"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcaptions" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="nastavpopisky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="zadny"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="nizko"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="lefthanging"/>
- <cd:constant type="righthanging"/>
- <cd:constant type="levyokraj"/>
- <cd:constant type="pravyokraj"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="max"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="minsirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="cislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- </cd:parameter>
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="predel">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcaption" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="nastavpopisek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavpopisky" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfloats" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="nastavplvouciobjekty"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="mezerapred">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="mezeraza">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="bocnimezerapred">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="bocnimezeraza">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/>
- </cd:parameter>
- <cd:parameter name="nvrsek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="nspodek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="nradky">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="implicitni">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="tolerance">
- <cd:constant type="0"/>
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostlevehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostpravehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sidealign">
- <cd:constant type="normalni"/>
- <cd:constant type="radek"/>
- </cd:parameter>
- <cd:parameter name="cislovani">
- <cd:constant type="ano"/>
- <cd:constant type="nocheck"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfloatsplitting" file="core-tsp.tex">
- <cd:sequence>
- <cd:string value="nastavdeleniplvoucichobjektu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- </cd:parameter>
- <cd:parameter name="radky">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="splitfloat" file="core-tsp.tex">
- <cd:sequence>
- <cd:string value="rozdelplvouciobjekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavdeleniplvoucichobjektu" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupoppositeplacing" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="nastavumisteniprotejsku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="opposite" type="environment" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="opposite"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setuphyphenmark" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavdelitko"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1">
- <cd:parameter name="znak">
- <cd:constant type="--"/>
- <cd:constant type="---"/>
- <cd:constant type="-"/>
- <cd:constant type="~"/>
- <cd:constant type="("/>
- <cd:constant type=")"/>
- <cd:constant type="="/>
- <cd:constant type="/"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppositioning" file="page-lyr.tex">
- <cd:sequence>
- <cd:string value="nastavumistovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="prekryv"/>
- </cd:parameter>
- <cd:parameter name="jednotka">
- <cd:constant type="cm"/>
- <cd:constant type="pt"/>
- <cd:constant type="em"/>
- <cd:constant type="mm"/>
- <cd:constant type="ex"/>
- <cd:constant type="es"/>
- <cd:constant type="in"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="meritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="xkrok">
- <cd:constant type="absolutni"/>
- <cd:constant type="relativni"/>
- </cd:parameter>
- <cd:parameter name="ykrok">
- <cd:constant type="absolutni"/>
- <cd:constant type="relativni"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="positioning" type="environment" file="page-lyr.tex">
- <cd:sequence>
- <cd:string value="positioning"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="grid" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="mrizka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="x">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="y">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="nx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ny">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="dx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="dy">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="xkrok">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ykrok">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="meritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="jednotka">
- <cd:constant type="cm"/>
- <cd:constant type="pt"/>
- <cd:constant type="em"/>
- <cd:constant type="mm"/>
- <cd:constant type="ex"/>
- <cd:constant type="es"/>
- <cd:constant type="in"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="page" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="strana"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="ano" default="yes"/>
- <cd:constant type="zlom"/>
- <cd:constant type="ne"/>
- <cd:constant type="nastaveni"/>
- <cd:constant type="vysokapriorita"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="zablokovat"/>
- <cd:constant type="posledni"/>
- <cd:constant type="ctyrnasobny"/>
- <cd:constant type="sude"/>
- <cd:constant type="liche"/>
- <cd:constant type="prazdny"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="reset"/>
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupreferencing" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="nastavodkazovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="cd:sectionnumber">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="popisek"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="vse"/>
- <cd:constant type="symbol"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="konverzesouboru">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="male"/>
- <cd:constant type="velke"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="autofile">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="stranka"/>
- </cd:parameter>
- <cd:parameter name="globalne">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="export">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupurl" file="core-ref.tex" category="references">
- <cd:sequence>
- <cd:string value="nastavurl"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="urlalternativa">
- <cd:constant type="zadny"/>
- <cd:constant type="obe"/>
- <cd:constant type="pred"/>
- <cd:constant type="po"/>
- </cd:parameter>
- <cd:parameter name="prostorurl">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="writetoreferencelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="zapisdoseznamuodkazu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placereferencelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="placereferencelist"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definereferencelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="definujseznamodkazu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavseznamodkazu" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupreferencelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="nastavseznamodkazu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="cd:section"/>
- <cd:constant type="lokalne"/>
- <cd:constant type="predchozi"/>
- <cd:constant type="vse"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="writetolist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="zapisdoseznamu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:section"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="zde"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- </cd:assignments>
- <cd:content n="3"/>
- <cd:content n="4"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="writebetweenlist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="zapismeziseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:section"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="zde"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- </cd:assignments>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nolist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="zadnyseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="listsymbol" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="listsymbol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="umistiseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="determinelistcharacteristics" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="stanovcharakteristickuseznamu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placecombinedlist" variant="1" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="umistikombinovanyseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavkombinovanyseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definelist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="definujseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes"> <!-- inherits from -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="nastavseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- <cd:constant type="..."/>
- <cd:constant type="zadny"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- <cd:parameter name="propojeni">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="cd:section"/>
- <cd:constant type="lokalne"/>
- <cd:constant type="predchozi"/>
- <cd:constant type="aktualni"/>
- <cd:constant type="zde"/>
- <cd:constant type="uvod"/>
- <cd:constant type="vse"/>
- </cd:parameter>
- <cd:parameter name="extras">
- <cd:constant type="cd:list"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylcisla">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="styltextu">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylstranky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:threearguments"/>
- </cd:parameter>
- <cd:parameter name="ciselnyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="textovyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="strankovyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="cislooddilu"/>
- <cd:constant type="text"/>
- <cd:constant type="cislostranky"/>
- <cd:constant type="vse"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="popisek">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="cislostranky">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="cislonadpisu">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="cd:sectionnumber">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zarovnejtitul">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="predel">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="zadny"/>
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- <cd:constant type="3"/>
- <cd:constant type="..."/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- <cd:parameter name="maxsirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="order">
- <cd:constant type="prikaz"/>
- <cd:constant type="vse"/>
- <cd:constant type="normalni"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplistalternative" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="setuplistalternative"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="no">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- <!-- cd:constant type="cd:name"/ -->
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="natahnout">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definecombinedlist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="definujkombinovanyseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:list"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavkombinovanyseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcombinedlist" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="nastavkombinovanyseznam"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="uroven">
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- <cd:constant type="3"/>
- <cd:constant type="4"/>
- <cd:constant type="cd:section"/>
- <cd:constant type="aktualni"/>
- </cd:parameter>
- <cd:inherit name="nastavseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placecombinedlist" variant="2" generated="yes" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="umisti"/>
- <cd:variable value="combinedlist"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavkombinovanyseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="completecombinedlist" generated="yes" file="core-lst.tex">
- <cd:sequence>
- <cd:string value="uplny"/>
- <cd:variable value="combinedlist"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavkombinovanyseznam" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupnumbering" file="core-num.tex">
- <cd:sequence>
- <cd:string value="nastavcislovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupformulas" file="core-mat.tex">
- <cd:sequence>
- <cd:string value="nastavrovnice"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="nastred"/>
- </cd:parameter>
- <cd:parameter name="strut">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="standardni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:constant type="flushleft"/>
- <cd:constant type="flushright"/>
- <cd:constant type="nastred"/>
- <cd:constant type="center"/>
- </cd:parameter>
- <cd:parameter name="levyokraj">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravyokraj">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="mezerapred">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="publication" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="publikace"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppublications" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavpublikace"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="apa"/>
- <cd:constant type="normalni"/>
- </cd:parameter>
- <cd:inherit name="nastavvycty" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplines" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="nastavradky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="odsazovani">
- <cd:resolve name="indenting"/>
- </cd:parameter>
- <cd:parameter name="mezera">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="zhustene"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="lines" type="environment">
- <cd:sequence>
- <cd:string value="lines"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupparagraphnumbering" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="nastavcislovaniodstavcu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="reset"/>
- <cd:constant type="radek"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplinenumbering" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="nastavcislovaniradku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="start">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="krok">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="nastred"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="ivlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="ivpravo"/>
- <cd:constant type="uvnitr"/>
- <cd:constant type="vnejsi"/>
- <cd:constant type="text"/>
- <cd:constant type="begin"/>
- <cd:constant type="end"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="odkazujici">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="linenumbering" type="environment" file="page-lin.tex"> <!-- mkii/mkiv -->
- <cd:sequence>
- <cd:string value="linenumbering"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="pokracovat"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="line" type="environment">
- <cd:sequence>
- <cd:string value="line"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="someline" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="nejakyradek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="inline" file="page-lin.tex">
- <cd:sequence>
- <cd:string value="vradku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinmargin" file="page-mar.tex">
- <cd:sequence>
- <cd:string value="nastavmarginalie"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="cd:number"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="obe"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="radek">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="oddelovac">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stack">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppagenumber" file="page-num.tex">
- <cd:sequence>
- <cd:string value="nastavcislostrany"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="cislo">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="drzet"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsubpagenumber" file="page-num.tex">
- <cd:sequence>
- <cd:string value="nastavpodcislostrany"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="zpusob">
- <cd:constant type="bytext"/>
- <cd:constant type="bycd:section"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupblank" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="nastavpreskok"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="normalni" default="yes"/>
- <cd:constant type="implicitni"/>
- <cd:constant type="standardni"/>
- <cd:constant type="radek"/>
- <cd:constant type="pulradku"/>
- <cd:constant type="cd:dimension"/>
- <cd:constant type="velke"/>
- <cd:constant type="stredni"/>
- <cd:constant type="male"/>
- <cd:constant type="fixne"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="globalne"/>
- <cd:constant type="neznamy"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineblank" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="definujpreskok"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:inherit name="nastavpreskok" n="1"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definepapersize" file="page-lay.tex">
- <cd:sequence>
- <cd:string value="definujvelikostpapiru"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="meritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppaper" file="page-lay.tex">
- <cd:sequence>
- <cd:string value="setuppaper"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="papir">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="nx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ny">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="svrchnimezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zpetnamezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="max"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="metoda">
- <cd:constant type="normalni"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuppapersize" file="page-lay.tex">
- <cd:sequence>
- <cd:string value="nastavvelikostpapiru"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="A3"/>
- <cd:constant type="A4" default="yes"/>
- <cd:constant type="A5"/>
- <cd:constant type="A6"/>
- <cd:constant type="letter"/>
- <cd:constant type="..."/>
- <cd:constant type="CD"/>
- <cd:constant type="cd:name"/>
- <cd:constant type="nasirku"/>
- <cd:constant type="zrcadleno"/>
- <cd:constant type="otoceno"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="negativ"/>
- <cd:inherit name="nastavvelikostpapiru" n="1"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuparranging" file="page-imp.tex">
- <cd:sequence>
- <cd:string value="nastavusporadani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="zablokovat"/>
- <cd:constant type="2*16"/>
- <cd:constant type="2*8"/>
- <cd:constant type="2*4"/>
- <cd:constant type="2*2"/>
- <cd:constant type="2**2"/>
- <cd:constant type="2*2*4"/>
- <cd:constant type="2*4*2"/>
- <cd:constant type="2UP"/>
- <cd:constant type="2DOWN"/>
- <cd:constant type="2SIDE"/>
- <cd:constant type="2TOP"/>
- <cd:constant type="zrcadleno"/>
- <cd:constant type="otoceno"/>
- <cd:constant type="dvoustranny"/>
- <cd:constant type="negativ"/>
- <cd:constant type="pozadi"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showprint" file="page-run.tex"> <!-- page-lay.tex -->
- <cd:sequence>
- <cd:string value="ukazvytisk"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:inherit name="nastavvelikostpapiru" n="1"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:inherit name="nastavvelikostpapiru" n="2"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:inherit name="nastavvzhled" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definelogo" file="page-log.tex">
- <cd:sequence>
- <cd:string value="definujlogo"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="vrsek"/>
- <cd:constant type="zahlavi"/>
- <cd:constant type="upati"/>
- <cd:constant type="spodek"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="zadny"/>
- <cd:constant type="stranka"/>
- <cd:constant type="levahrana"/>
- <cd:constant type="levyokraj"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="pravyokraj"/>
- <cd:constant type="pravahrana"/>
- </cd:keywords>
- <cd:assignments n="4" list="yes">
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placelogos" file="page-log.tex">
- <cd:sequence>
- <cd:string value="umistiloga"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupwhitespace">
- <cd:sequence>
- <cd:string value="nastavbilamista"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="zadny" default="yes"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="radek"/>
- <cd:constant type="fixne"/>
- <cd:constant type="fixuj"/>
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupindenting">
- <cd:sequence>
- <cd:string value="nastavodsazovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:resolve name="indenting"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definesectionblock" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="definujbloksekce"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:inherit name="nastavbloksekce" n="1"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavbloksekce" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsectionblock" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="nastavbloksekce"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="cislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="ano"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definesection" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="definujsekci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsection" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="nastavsekci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="konverze">
- <cd:constant type="cisla"/>
- <cd:constant type="pismena"/>
- <cd:constant type="Pismena"/>
- <cd:constant type="rimskecislice"/>
- <cd:constant type="Rimskecislice"/>
- </cd:parameter>
- <cd:parameter name="predchozicislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuphead" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="nastavnadpis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:section"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="styltextu">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylcisla">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="barvatextu">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="barvacisla">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="cislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="vlastnicislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- <cd:parameter name="pokracovat">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zahlavi">
- <cd:constant type="zadny"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="zadny"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="upati">
- <cd:constant type="zadny"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="normalni"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="nastred"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="zaveseni">
- <cd:constant type="zadny"/>
- <cd:constant type="siroky"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="radek"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:twoarguments"/>
- </cd:parameter>
- <cd:parameter name="ciselnyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="textovyprikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="deepnumbercommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="deeptextcommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="umistihlavicku">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prazdne"/>
- </cd:parameter>
- <cd:parameter name="zvysujicicislo">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="cd:list"/>
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="resetnumber">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="soubor">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- <cd:parameter name="textmarginalie">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="seznam"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:inherit name="nastavnadpisy" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupheadnumber" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="nastavcislonadpisu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:section"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:number"/>
- <cd:constant type="+cd:number"/>
- <cd:constant type="-cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="headnumber">
- <cd:sequence>
- <cd:string value="cislonadpisu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:section"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="determineheadnumber" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="stanovcislonadpisu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:section"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="currentheadnumber" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="aktualnicislonadpisu"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="nextsection" generated="yes" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="dalsi"/>
- <cd:variable value="sekce"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="definehead" file="core-sec.tex">
- <cd:sequence>
- <cd:string value="definujnadpis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:section"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <!--
-
- <cd:feature name="itemgroups" file="strc-itm">
-
- <cd:description language="cs"> </cd:description>
-
- -->
-
- <cd:command name="defineitemgroup" file="strc-itm">
- <cd:sequence>
- <cd:string value="defineitemgroup"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupitemgroup" file="strc-itm">
- <!-- we mis a few experimental keys here, like alignsymbol and indentation -->
- <cd:sequence>
- <cd:string value="setupitemgroup"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:number"/>
- <cd:constant type="kazdy"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes" list="yes">
- <cd:constant type="standardni" default="yes"/>
- <cd:constant type="siroky"/>
- <cd:constant type="semknuto"/>
- <cd:constant type="zhustene"/>
- <cd:constant type="rozbalene"/>
- <cd:constant type="zadnabila"/>
- <cd:constant type="pred"/>
- <cd:constant type="po"/>
- <cd:constant type="predel"/>
- <cd:constant type="spojeno"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="autouvod"/>
- <cd:constant type="uvolnene"/>
- <cd:constant type="opakovat"/>
- <cd:constant type="cd:section"/>
- <cd:constant type="odstavec"/>
- <cd:constant type="dotextu"/>
- <cd:constant type="nahodny"/>
- <cd:constant type="reverse"/>
- </cd:keywords>
- <cd:assignments n="4" optional="yes" list="yes">
- <cd:parameter name="marginalie">
- <cd:constant type="ne"/>
- <cd:constant type="standardni"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="levyokraj">
- <cd:constant type="ne"/>
- <cd:constant type="standardni"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravyokraj">
- <cd:constant type="ne"/>
- <cd:constant type="standardni"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="krok">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="polozky">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="start">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="predhlavickou">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pohlavicce">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylsnacky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylsymboly">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="predel">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="symzarovnani">
- <cd:resolve name="symalign"/>
- </cd:parameter>
- <cd:parameter name="odsadpristi">
- <cd:resolve name="indentnext"/>
- </cd:parameter>
- <cd:parameter name="textdistance">
- <!-- maybe resolve here too -->
- <cd:constant type="zadny"/>
- <cd:constant type="velke"/>
- <cd:constant type="stredni"/>
- <cd:constant type="male"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="itemgroup" type="environment" generated="yes" file="strc-itm">
- <cd:sequence>
- <cd:variable value="itemgroup"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="a"/>
- <cd:constant type="A"/>
- <cd:constant type="KA"/>
- <cd:constant type="n"/>
- <cd:constant type="N"/>
- <cd:constant type="m"/>
- <cd:constant type="r"/>
- <cd:constant type="R"/>
- <cd:constant type="KR"/>
- <cd:constant type="cd:number"/>
- <cd:constant type="pokracovat"/>
- <cd:constant type="standardni" default="yes"/>
- <cd:constant type="siroky"/>
- <cd:constant type="semknuto"/>
- <cd:constant type="zhustene"/>
- <cd:constant type="predel"/>
- <cd:constant type="spojeno"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="uvod"/>
- <cd:constant type="sloupce"/>
- <cd:constant type="text"/>
- <cd:constant type="odstavec"/>
- <cd:constant type="opakovat"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="setupitemgroup" n="4"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="item" environment="yes" shortcut="yes" file="strc-itm">
- <cd:sequence>
- <cd:string value="polozka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <!--
- <cd:command name="item" file="core-itm.tex">
- <cd:sequence>
- <cd:string value="polozka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- </cd:arguments>
- </cd:command>
- -->
-
- <cd:command name="but">
- <cd:sequence>
- <cd:string value="spodek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" interactive="exclusive"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="its">
- <cd:sequence>
- <cd:string value="pol"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="ran">
- <cd:sequence>
- <cd:string value="ran"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="head">
- <cd:sequence>
- <cd:string value="nadpis"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="mar">
- <cd:sequence>
- <cd:string value="okr"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="sub">
- <cd:sequence>
- <cd:string value="sub"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="sym" file="core-itm.tex">
- <cd:sequence>
- <cd:string value="sym"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nop">
- <cd:sequence>
- <cd:string value="nop"/>
- </cd:sequence>
- </cd:command>
-
- <!-- </cd:feature> -->
-
- <cd:command name="defineregister" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="definujrejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupregister" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="nastavrejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="rovnovaha">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylstranky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="styltextu">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="indikator">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="propojeni">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="cd:sectionnumber">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="cd:section"/>
- <cd:constant type="lokalne"/>
- <cd:constant type="vse"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- <cd:constant type="..."/>
- <cd:constant type="n"/>
- <cd:constant type="a"/>
- <cd:constant type="..."/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="cislostranky"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- <cd:parameter name="odkazujici">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="maxsirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="neznamyodkaz">
- <cd:constant type="prazdne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="A"/>
- <cd:constant type="B"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="obe"/>
- <cd:constant type="prvni"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="compress">
- <cd:constant type="ne"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- <cd:parameter name="deeptextcommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="register" generated="yes" file="core-reg.tex">
- <cd:sequence>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:index n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="startregister" generated="yes" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="start"/>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:index n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="writetoregister" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="zapisdorejstriku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:index n="3" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="coupledregister" generated="yes">
- <cd:sequence>
- <cd:string value="propojene"/>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:index n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="coupleregister" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="propojenyrejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placeregister" variant="1" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="umistirejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavrejstrik" n="3"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="seeregister" generated="yes">
- <cd:sequence>
- <cd:string value="viz"/>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content n="2"/>
- <cd:index n="3" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="completeregister" generated="yes" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="uplny"/>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="yes" optional="yes" list="yes">
- <cd:inherit name="nastavrejstrik" n="3"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placeregister" variant="2" generated="yes" file="core-reg.tex">
- <cd:sequence>
- <cd:string value="umisti"/>
- <cd:variable value="rejstrik"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="yes" optional="yes" list="yes">
- <cd:inherit name="nastavrejstrik" n="3"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definesynonyms" file="core-syn.tex">
- <cd:sequence>
- <cd:string value="definujsynonyma"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:command"/>
- </cd:keywords>
- <cd:keywords n="4" optional="yes">
- <cd:constant type="cd:command"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsynonyms" file="core-syn.tex">
- <cd:sequence>
- <cd:string value="nastavsynonyma"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="styltextu">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="stylsynonyma">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="semknuto"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="ivlevo"/>
- <cd:constant type="ivpravo"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="vse"/>
- <cd:constant type="uzito"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:threearguments"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="synonym" generated="yes">
- <cd:sequence>
- <cd:variable value="synonym"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="completelistofsynonyms" generated="yes">
- <cd:sequence>
- <cd:string value="completelistof"/>
- <cd:variable value="synonyms"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="placelistofsynonyms" generated="yes">
- <cd:sequence>
- <cd:string value="placelistof"/>
- <cd:variable value="synonyms"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="loadsynonyms" generated="yes">
- <cd:sequence>
- <cd:string value="nacist"/>
- <cd:variable value="synonyms"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="definesorting" file="core-syn.tex">
- <cd:sequence>
- <cd:string value="definujtrideni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:constant type="cd:command"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsorting" file="core-syn.tex">
- <cd:sequence>
- <cd:string value="nastavtrideni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="kriterium">
- <cd:constant type="vse"/>
- <cd:constant type="uzito"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="expanzen">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prikaz"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="sort" generated="yes">
- <cd:sequence>
- <cd:variable value="sort"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="completelistofsorts" generated="yes">
- <cd:sequence>
- <cd:string value="completelistof"/>
- <cd:variable value="sorts"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="placelistofsorts" generated="yes">
- <cd:sequence>
- <cd:string value="placelistof"/>
- <cd:variable value="sorts"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="loadsorts" generated="yes">
- <cd:sequence>
- <cd:string value="nacist"/>
- <cd:variable value="sorts"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="definemakeup" file="page-mak.tex">
- <cd:sequence>
- <cd:string value="definujupravu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:inherit name="nastavupravu" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="makeup" type="environment">
- <cd:sequence>
- <cd:string value="zlom"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavupravu" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupmakeup" file="page-mak.tex">
- <cd:sequence>
- <cd:string value="nastavupravu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="vlevo"/>
- <cd:constant type="ano"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="prikazy">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="oboustranne">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="prazdne"/>
- </cd:parameter>
- <cd:parameter name="statuszahlavi">
- <cd:constant type="normalni"/>
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="zadny"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="statusupati">
- <cd:constant type="normalni"/>
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="zadny"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="statustextu">
- <cd:constant type="normalni"/>
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="zadny"/>
- <cd:constant type="zadneznaceni"/>
- </cd:parameter>
- <cd:parameter name="statusvrsku">
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- </cd:parameter>
- <cd:parameter name="statusspodku">
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- </cd:parameter>
- <cd:parameter name="pagestate">
- <cd:constant type="stop"/>
- <cd:constant type="start"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="namemakeup" type="environment" generated="yes">
- <cd:sequence>
- <cd:variable value="jmeno"/>
- <cd:string value="zlom"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="version">
- <cd:sequence>
- <cd:string value="verze"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="finalni" default="yes"/>
- <cd:constant type="koncept"/>
- <cd:constant type="docasne"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="currentdate">
- <cd:sequence>
- <cd:string value="aktualnidatum"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:inherit name="datum" n="2"/> <!-- or vice versa :) -->
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="date" file="core-con.tex">
- <cd:sequence>
- <cd:string value="datum"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes"> <!-- if not given, current date is used -->
- <cd:parameter name="d">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="m">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="y">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="den"/>
- <cd:constant type="mesic"/>
- <cd:constant type="rok"/>
- <cd:constant type="vsedniden"/>
- <cd:constant type="d"/>
- <cd:constant type="m"/>
- <cd:constant type="y"/> <!-- also j -->
- <cd:constant type="w"/>
- <cd:constant type="dd"/>
- <cd:constant type="mm"/>
- <cd:constant type="yy"/> <!-- also jj -->
- <cd:constant type="mezera"/>
- <cd:constant type="--"/>
- <cd:constant type="day+"/>
- <cd:constant type="d+"/>
- <cd:constant type="dd+"/>
- <cd:constant type="znacka"/>
- <cd:constant type="cd:text"/> <!-- any other text -->
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="referraldate" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="odkaznadatum"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="indenting" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="odsazovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:resolve name="indenting"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="noindenting" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zadneodsazovani"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="blank" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="preskoc"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke" default="yes"/>
- <cd:constant type="zadnabila"/>
- <cd:constant type="zpet"/>
- <cd:constant type="bily"/>
- <cd:constant type="zablokovat"/>
- <cd:constant type="sila"/>
- <cd:constant type="reset"/>
- <cd:constant type="radek"/>
- <cd:constant type="pulradku"/>
- <cd:constant type="cd:formula"/>
- <cd:constant type="fixne"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="zadny"/>
- <cd:constant type="vzdy"/>
- <cd:constant type="vnejsi"/>
- <cd:constant type="spojeno"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="packed" type="environment" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="zhustene"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="prazdny"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="unpacked" type="environment">
- <cd:sequence>
- <cd:string value="unpacked"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="linecorrection" type="environment">
- <cd:sequence>
- <cd:string value="linecorrection"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="correctwhitespace" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="korekcebilehomista"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="postponing" type="environment">
- <cd:sequence>
- <cd:string value="postponing"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="local" type="environment">
- <cd:sequence>
- <cd:string value="lokalne"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="narrower" type="environment">
- <cd:sequence>
- <cd:string value="narrower"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred" default="yes"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="-left"/>
- <cd:constant type="-middle"/>
- <cd:constant type="-right"/>
- <cd:constant type="-none"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="hiding" type="environment">
- <cd:sequence>
- <cd:string value="hiding"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupalign" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="nastavzarovnani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="sirka"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="uvnitr"/>
- <cd:constant type="vnejsi"/>
- <cd:constant type="siroce"/>
- <cd:constant type="siroky"/>
- <cd:constant type="vyska"/>
- <cd:constant type="spodek"/>
- <cd:constant type="radek"/>
- <cd:constant type="reset"/>
- <cd:constant type="visici"/>
- <cd:constant type="nothanging"/>
- <cd:constant type="hyphenated"/>
- <cd:constant type="nothyphenated"/>
- <cd:constant type="lesshyphenation"/>
- <cd:constant type="morehyphenation"/>
- <cd:constant type="novy"/>
- <cd:constant type="old"/>
- <cd:constant type="normalni"/>
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <cd:constant type="flushleft"/>
- <cd:constant type="flushright"/>
- <cd:constant type="flushouter"/>
- <cd:constant type="flushinner"/>
- <cd:constant type="center"/>
- <cd:constant type="hz"/>
- <cd:constant type="nohz"/>
- <cd:constant type="mezerovani"/>
- <cd:constant type="nospacing"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- <cd:constant type="natahnout"/>
- <cd:constant type="extremestretch"/>
- <cd:constant type="lefttoright"/>
- <cd:constant type="righttoleft"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
-
- <cd:command name="alignment" type="environment" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="alignment"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:inherit name="nastavzarovnani" n="1"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupspacing">
- <cd:sequence>
- <cd:string value="nastavradkovani"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="siroky"/>
- <cd:constant type="zhustene"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptolerance" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="nastavtoleranci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="horizontalne"/>
- <cd:constant type="vertikalne"/>
- <cd:constant type="natahnout"/>
- <cd:constant type="mezera"/>
- <cd:constant type="velmistriktni" default="yes"/>
- <cd:constant type="striktni"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <!-- cd:command name="pagetype" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="pagetype"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command -->
-
- <cd:command name="processpage" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="zpracujstranu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="ano" default="yes"/>
- <cd:constant type="ne"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="couplepage" file="page-ini.tex">
- <cd:sequence>
- <cd:string value="parovastrana"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="volba">
- <cd:constant type="dvoustranny"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="position" file="page-lyr.tex">
- <cd:sequence>
- <cd:string value="pozice"/>
- </cd:sequence>
- <cd:arguments>
- <cd:position n="1" list="yes"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupscreens" file="core-rul.tex">
- <cd:sequence>
- <cd:string value="nastavrastr"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="metoda">
- <cd:constant type="tecka"/>
- <cd:constant type="linka"/>
- <cd:constant type="externi"/>
- </cd:parameter>
- <cd:parameter name="rozliseni">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="rastr">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbackgrounds" file="page-bck.tex">
- <cd:sequence>
- <cd:string value="nastavpozadi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vrsek"/>
- <cd:constant type="zahlavi"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="upati"/>
- <cd:constant type="spodek"/>
- <cd:constant type="stranka"/>
- <cd:constant type="papir"/>
- <cd:constant type="levastranka"/>
- <cd:constant type="pravastranka"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="levahrana"/>
- <cd:constant type="levyokraj"/>
- <cd:constant type="cd:text"/>
- <cd:constant type="pravyokraj"/>
- <cd:constant type="pravahrana"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="cd:repeat"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="buffer" type="environment" generated="yes" file="core-buf.tex">
- <cd:sequence>
- <cd:variable value="buffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="buffer" type="environment" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="buffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="getbuffer">
- <cd:sequence>
- <cd:string value="ziskejbuffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="typebuffer" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="typebuffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definebuffer" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="definujbuffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbuffer" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="nastavbuffer"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="odstavec">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineblock" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="definujblok"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="nomoreblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="zadnedalsibloky"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="hideblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="schovejbloky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="keepblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="zachovejbloky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="vse"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="uzijbloky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="processblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="zpracujbloky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="bypassblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="bypassblocks"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="forceblocks">
- <cd:sequence>
- <cd:string value="forceblocks"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="selectblocks" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="vyberbloky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes">
- <cd:parameter name="kriterium">
- <cd:constant type="vse"/>
- <cd:constant type="cd:section"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupblock" file="core-buf.tex">
- <cd:sequence>
- <cd:string value="nastavblok"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vnitrni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="soubor">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="formula" type="environment" generated="yes">
- <cd:sequence>
- <cd:variable value="rovnice"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="mathematics" file="supp-mat.tex">
- <cd:sequence>
- <cd:string value="matematika"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placeformula" file="core-mat.tex">
- <cd:sequence>
- <cd:string value="umistirovnici"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2" optional="yes"/>
- <cd:displaymath n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placesubformula" file="core-mat.tex">
- <cd:sequence>
- <cd:string value="umistipodrovnici"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" optional="yes" list="yes"/>
- <cd:content n="2" optional="yes"/>
- <cd:displaymath n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placefloat" generated="yes" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="umisti"/>
- <cd:variable value="plvouciobjekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="zde" default="yes"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="ivlevo"/>
- <cd:constant type="ivpravo"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="marginalie"/>
- <cd:constant type="levyokraj"/>
- <cd:constant type="pravyokraj"/>
- <cd:constant type="levahrana"/>
- <cd:constant type="pravahrana"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="uvnitr"/>
- <cd:constant type="vnejsi"/>
- <cd:constant type="radek"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="nizko"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="stranka"/>
- <cd:constant type="levastranka"/>
- <cd:constant type="pravastranka"/>
- <cd:constant type="naproti"/>
- <cd:constant type="vzdy"/>
- <cd:constant type="auto"/>
- <cd:constant type="sila"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="reset"/>
- <cd:constant type="radek"/>
- <cd:constant type="vyska"/>
- <cd:constant type="podlehloubky"/>
- <cd:constant type="split"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes" list="yes"/>
- <cd:content n="3"/>
- <cd:content n="4"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="reservefloat" generated="yes">
- <cd:sequence>
- <cd:string value="rezervovat"/>
- <cd:variable value="plvouciobjekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="ramecek">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- </cd:assignments>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:reference n="3" optional="yes" list="yes"/>
- <cd:content n="4"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefloat" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="definujplvouciobjekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfloat" file="page-flt.tex">
- <cd:sequence>
- <cd:string value="nastavplvouciobjekt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="maxvyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="maxsirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="minsirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="implicitni">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="hranicestranky">
- <cd:constant type="cd:list"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostlevehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenostpravehookraje">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="floattext" type="environment" generated="yes">
- <cd:sequence>
- <cd:variable value="plvouciobjekt"/>
- <cd:string value="text"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="nastred"/>
- <cd:constant type="nizko"/>
- <cd:constant type="offset"/>
- <cd:constant type="vysoko"/>
- </cd:keywords>
- <cd:reference n="2" optional="yes"/>
- <cd:content n="3"/>
- <cd:content n="4"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placelistoffloats" generated="yes">
- <cd:sequence>
- <cd:string value="placelistof"/>
- <cd:variable value="floats"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="completelistoffloats" generated="yes">
- <cd:sequence>
- <cd:string value="completelistof"/>
- <cd:variable value="floats"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="referral" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="odkaz"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="bet">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="ken">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="dat">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="van">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="aan">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="ref">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="selectpaper">
- <cd:sequence>
- <cd:string value="vyberpapir"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="rodina">
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="couplepaper">
- <cd:sequence>
- <cd:string value="dvoustrannypapir"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="chem" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="chem"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fraction" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="zlomek"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="periods" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="tecky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="items">
- <cd:sequence>
- <cd:string value="polozky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavpolozky" n="1"/>
- </cd:assignments>
- <cd:content n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupitems" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavpolozky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="naokraji"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="1"/>
- <cd:constant type="2"/>
- <cd:constant type="..."/>
- <cd:constant type="n"/>
- <cd:constant type="a"/>
- <cd:constant type="..."/>
- <cd:constant type="cd:text"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- <cd:constant type="neznamy"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="quotation" type="environment" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="citace"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="nastred" default="yes"/>
- <cd:constant type="vpravo"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="quotation" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="citace"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="quote" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="citovat"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupquote" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavcitaci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="cd:text"/>
- <cd:constant type="marginalie"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineparagraphs" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="definujodstavce"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="linka">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="prizpusobive"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vnitrni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="tolerance">
- <cd:constant type="velmistriktni"/>
- <cd:constant type="striktni"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- <cd:constant type="natahnout"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="paragraph" generated="yes">
- <cd:sequence>
- <cd:variable value="odstavec"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="paragraph" type="environment" generated="yes">
- <cd:sequence>
- <cd:variable value="odstavec"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupparagraphs" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavodstavce"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:number"/>
- <cd:constant type="kazdy"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="tolerance">
- <cd:constant type="velmistriktni"/>
- <cd:constant type="striktni"/>
- <cd:constant type="tolerantni"/>
- <cd:constant type="velmitolerantni"/>
- <cd:constant type="natahnout"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vnitrni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="prikaz">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="linka">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptab" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavtab"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="vzor">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stylhlavicky">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="tab">
- <cd:sequence>
- <cd:string value="tab"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:nothing n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="document" type="environment">
- <cd:sequence>
- <cd:string value="document"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="labels">
- <cd:sequence>
- <cd:string value="popisky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definetabulate" file="core-tbl.tex">
- <cd:sequence>
- <cd:string value="definujtabelaci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="tabulate" type="environment" generated="yes">
- <cd:sequence>
- <cd:variable value="tabelator"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavexterniobrazy" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptabulate" file="core-tbl.tex">
- <cd:sequence>
- <cd:string value="nastavtabelaci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="jednotka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="odsazovani">
- <cd:resolve name="indenting"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vnitrni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="EQ">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="barvalinky">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="prazdny"/>
- <cd:constant type="mrizka"/>
- <cd:constant type="podlehloubky"/>
- <cd:constant type="cd:dimension"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="linka">
- <cd:constant type="normalni"/>
- <cd:constant type="radek"/>
- </cd:parameter>
- <cd:parameter name="split">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuptables" file="core-tab.tex">
- <cd:sequence>
- <cd:string value="nastavtabulky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="vzdalenost">
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="HL">
- <cd:constant type="cd:number"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="VL">
- <cd:constant type="cd:number"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:number"/>
- <cd:constant type="strut"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:number"/>
- <cd:constant type="strut"/>
- </cd:parameter>
- <cd:parameter name="tloustkalinky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barvalinky">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="prikazy">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="pozadi">
- <cd:constant type="rastr"/>
- <cd:constant type="barevne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="rastrpozadi">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="barvapozadi">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="table" type="environment">
- <cd:sequence>
- <cd:string value="table"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="tables" type="environment">
- <cd:sequence>
- <cd:string value="tables"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definetabletemplate" file="core-tab.tex">
- <cd:sequence>
- <cd:string value="definujsablonutabulky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="4" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useexternalfiles" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="uzijexternisoubory"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- <cd:parameter name="soubor">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useexternalfile" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="uzijexternisoubor"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- <cd:assignments n="4" list="yes">
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useexternalfigure" file="core-fig.tex">
- <cd:sequence>
- <cd:string value="uzijexterniobraz"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes">
- <cd:constant type="cd:name"/> <!-- parent -->
- </cd:keywords>
- <cd:assignments n="4" optional="yes" list="yes">
- <cd:inherit name="nastavexterniobrazy" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="externalfigure" file="core-fig.tex">
- <cd:sequence>
- <cd:string value="externiobraz"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavexterniobrazy" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupexternalfigures" file="core-fig.tex">
- <cd:sequence>
- <cd:string value="nastavexterniobrazy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1">
- <cd:parameter name="meritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ymeritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ymeritko">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="max"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- </cd:parameter>
- <cd:parameter name="sfaktor">
- <cd:constant type="cd:number"/>
- <cd:constant type="max"/>
- <cd:constant type="siroky"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="vfaktor">
- <cd:constant type="cd:number"/>
- <cd:constant type="max"/>
- <cd:constant type="siroky"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="ramecek">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="prednastaveni">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="obrazovka">
- <cd:constant type="cd:file"/>
- </cd:parameter>
- <cd:parameter name="nahled">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="opakovat">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="objekt">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="typ">
- <cd:constant type="eps"/>
- <cd:constant type="mps"/>
- <cd:constant type="pdf"/>
- <cd:constant type="tif"/>
- <cd:constant type="png"/>
- <cd:constant type="jpg"/>
- <cd:constant type="mov"/>
- <cd:constant type="cd:tex"/>
- </cd:parameter>
- <cd:parameter name="metoda">
- <cd:constant type="eps"/>
- <cd:constant type="mps"/>
- <cd:constant type="pdf"/>
- <cd:constant type="tif"/>
- <cd:constant type="png"/>
- <cd:constant type="jpg"/>
- <cd:constant type="mov"/>
- <cd:constant type="cd:tex"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="ramecek"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="test"/>
- </cd:parameter>
- <cd:parameter name="ramecky">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="ymax">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="xmax">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="adresar">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="lokalne"/>
- <cd:constant type="globalne"/>
- <cd:constant type="implicitni"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="maxsirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="maxvyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="konverze">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="prefix">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="interakce">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- <!-- more will follow -->
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showexternalfigures" file="core-fig.tex">
- <cd:sequence>
- <cd:string value="ukazexterniobrazy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useexternalsoundtrack" file="core-fig.tex">
- <cd:sequence>
- <cd:string value="uzijexternizvuk"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="name" file="syst-gen.tex">
- <cd:sequence>
- <cd:string value="name"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="legend" type="environment">
- <cd:sequence>
- <cd:string value="legend"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="dve"/>
- </cd:keywords>
- <cd:tex n="2" command="leg"/>
- <cd:nothing n="3"/>
- <cd:nothing n="4" separator="backslash"/>
- <cd:nothing n="5" separator="backslash"/>
- <cd:tex n="6" separator="backslash" command="leg"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fact" type="environment">
- <cd:sequence>
- <cd:string value="fakt"/>
- </cd:sequence>
- <cd:arguments>
- <cd:tex n="1" command="fact"/>
- <cd:nothing n="2"/>
- <cd:nothing n="3" separator="backslash"/>
- <cd:nothing n="4" separator="backslash"/>
- <cd:tex n="5" separator="backslash" command="fact"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="rotate" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="otocit"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavotoceni" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuprotate" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavotoceni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="rotace">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="normalni"/>
- <cd:constant type="vysoko"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="siroky"/>
- <cd:constant type="podlehloubky"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="mirror" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="zrcadlit"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="scale" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="meritko"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:parameter name="sx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sy">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupcombinations" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="nastavspojeni"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vrsek"/>
- <cd:constant type="nastred"/>
- <cd:constant type="spodek"/>
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="combination" type="environment">
- <cd:sequence>
- <cd:string value="combination"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:matrix"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placesidebyside" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="umistivedlesebe"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placeontopofeachother" file="core-mis.tex">
- <cd:sequence>
- <cd:string value="umistinadsebe"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overlay" type="environment">
- <cd:sequence>
- <cd:string value="overlay"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="overview" type="environment">
- <cd:sequence>
- <cd:string value="overview"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinteractionscreen" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavinterakcniobrazovku"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="max"/>
- </cd:parameter>
- <cd:parameter name="zpetnamezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="svrchnimezera">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="horoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsethlavicky">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="max"/>
- <cd:constant type="prizpusobive"/>
- <cd:constant type="dvoustranny"/>
- <cd:constant type="jednostranne"/>
- <cd:constant type="auto"/>
- <cd:constant type="zadny"/>
- <cd:constant type="zalozka"/>
- </cd:parameter>
- <cd:parameter name="prodleva">
- <cd:constant type="cd:number"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="screen" file="core-int.tex">
- <cd:sequence>
- <cd:string value="obrazovka"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setuppagetransitions" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavprechodstrany"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="reset"/>
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinteraction" file="core-nav.tex">
- <cd:sequence>
- <cd:string value="nastavinterakci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="menu">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- <cd:parameter name="stranka">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="klik">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="split">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="obrazovka">
- <cd:constant type="novy"/>
- </cd:parameter>
- <cd:parameter name="otevriakci">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="zavriakci">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="akceotevrenistranky">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="akcezavrenistranky">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="pocitat">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="strut">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="kontrastnibarva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="sadasymbolu">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="titul">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="podtitulek">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="autor">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="datum">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="keyword">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <!-- maybe this will move elsewhere -->
- <cd:parameter name="fieldlayer">
- <cd:constant type="auto"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinteractionmenu" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavinterakcnimenu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="stredni">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- <cd:constant type="zadny"/>
- <cd:constant type="lokalne"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="kontrastnibarva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="prekryv"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="stejnastranka">
- <cd:constant type="ano"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="ne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="neznamyodkaz">
- <cd:constant type="ano"/>
- <cd:constant type="prazdne"/>
- <cd:constant type="ne"/>
- <cd:constant type="zadny"/>
- </cd:parameter>
- <cd:parameter name="levyoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pravyoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetvrsku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offsetspodku">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="position">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/> <!-- maybe not all parameters from framed -->
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineinteractionmenu" variant="1" file="core-int.tex">
- <cd:sequence>
- <cd:string value="definujinterakcnimenu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive" list="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavinterakcnimenu" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineinteractionmenu" variant="2" file="core-int.tex">
- <cd:sequence>
- <cd:string value="definujinterakcnimenu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavinterakcnimenu" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="interactionmenu" type="environment">
- <cd:sequence>
- <cd:string value="interaktivnimenu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="disableinteractionmenu" file="core-int.tex">
- <cd:sequence>
- <cd:string value="zablokujinterakcnimenu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="vrsek"/>
- <cd:constant type="spodek"/>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:reference n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useexternaldocument" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="uzijexternidokument"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="soubor"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="useURL" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="uzijURL"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="soubor"/>
- </cd:keywords>
- <cd:keywords n="4">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="coupledocument" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="propojenydokument"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="soubor"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="from" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="zref"/>
- </cd:sequence>
- <cd:arguments>
- <cd:reference n="1" interactive="exclusive"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="interactionbar">
- <cd:sequence>
- <cd:string value="interakcnilista"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:inherit name="nastavinterakcnilistu" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="interactionbuttons" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="interakcnitlacitka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" optional="yes" list="yes">
- <cd:inherit name="nastavinterakcnilistu" n="1"/>
- </cd:assignments>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupinteractionbar" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavinterakcnilistu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="alternativa">
- <cd:constant type="a"/>
- <cd:constant type="b"/>
- <cd:constant type="c"/>
- <cd:constant type="d"/>
- <cd:constant type="e"/>
- <cd:constant type="f"/>
- <cd:constant type="g"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="vyska"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="vyska"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="hloubka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="krok">
- <cd:constant type="cd:number"/>
- <cd:constant type="male"/>
- <cd:constant type="stredni"/>
- <cd:constant type="velke"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="synchronize" file="core-int.tex">
- <cd:sequence>
- <cd:string value="synchronizovat"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="synchronization" type="environment">
- <cd:sequence>
- <cd:string value="synchronization"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupsynchronizationbar" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavsynchronizacnilistu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="stranka"/>
- <cd:constant type="lokalne"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="vyska"/>
- <cd:constant type="prizpusobive"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="synchronizationbar" file="core-int.tex">
- <cd:sequence>
- <cd:string value="synchronizacnilista"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="alternativa">
- <cd:constant type="stranka"/>
- <cd:constant type="lokalne"/>
- </cd:parameter>
- <cd:inherit name="nastavsynchronizacnilistu" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupsynchronization" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavsynchronizaci"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineprofile" file="core-int.tex">
- <cd:sequence>
- <cd:string value="definujprofil"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupprofiles" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavprofily"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="volba">
- <cd:constant type="test"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="profile" type="environment">
- <cd:sequence>
- <cd:string value="profile"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="followprofile" file="core-int.tex">
- <cd:sequence>
- <cd:string value="dodrzujprofil"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="exclusive"/>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placebookmarks" file="core-int.tex">
- <cd:sequence>
- <cd:string value="umistizalozky"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- <cd:constant type="vse"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:parameter name="sila">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="bookmark" file="core-int.tex">
- <cd:sequence>
- <cd:string value="zalozka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="version" type="environment">
- <cd:sequence>
- <cd:string value="verze"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive" list="yes">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupversions" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavverze"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="cislo">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="markversion" file="core-int.tex">
- <cd:sequence>
- <cd:string value="oznacverzi"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="selectversion" file="core-int.tex">
- <cd:sequence>
- <cd:string value="vyberverzi"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="defineversion" file="core-int.tex">
- <cd:sequence>
- <cd:string value="definujverzi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="followversion" file="core-int.tex">
- <cd:sequence>
- <cd:string value="dodrzujverzi"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="exclusive"/>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="followprofileversion" file="core-int.tex">
- <cd:sequence>
- <cd:string value="dodrzujverziprofilu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="exclusive"/>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="defineprogram" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="definujprogram"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupprograms" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="nastavprogramy"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" list="yes">
- <cd:parameter name="adresar">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="program" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="program"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="figure" type="environment">
- <cd:sequence>
- <cd:string value="figure"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" interactive="exclusive">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ramecek">
- <cd:constant type="zap"/>
- <cd:constant type="vyp"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <!-- referring*figure skipped -->
-
- <!-- marking*figure skipped -->
-
- <!-- remark skipped -->
-
- <cd:command name="goto" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="jdina"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="exclusive"/>
- <cd:content n="2" interactive="exclusive"/>
- <cd:reference n="3" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="gotobox" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="jdinabox"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1" interactive="exclusive"/>
- <cd:reference n="2" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="button" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="tlacitko"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" interactive="exclusive" optional="yes" list="yes">
- <cd:inherit name="nastavtlacitka" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- <cd:reference n="3" list="yes"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupbuttons" file="core-ref.tex">
- <cd:sequence>
- <cd:string value="nastavtlacitka"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <!-- menubutton skipped -->
-
- <cd:command name="setupcomment" file="core-int.tex">
- <cd:sequence>
- <cd:string value="nastavkomentar"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="titul">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="mezera">
- <cd:constant type="ano"/>
- <cd:constant type="ne"/>
- </cd:parameter>
- <cd:parameter name="symbol">
- <cd:constant type="normalni"/>
- <cd:constant type="Novy"/>
- <cd:constant type="Bublinka"/>
- <cd:constant type="Pridavek"/>
- <cd:constant type="Napoveda"/>
- <cd:constant type="Odstavec"/>
- <cd:constant type="Klavesa"/>
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="max"/>
- <cd:constant type="buffer"/>
- </cd:parameter>
- <cd:parameter name="marginalie">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="comment" type="environment">
- <cd:sequence>
- <cd:string value="comment"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavkomentar" n="1"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="comment">
- <cd:sequence>
- <cd:string value="comment"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2" optional="yes" list="yes">
- <cd:inherit name="nastavkomentar" n="1"/>
- </cd:assignments>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="definujpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1"> <!-- name -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2"> <!-- type -->
- <cd:constant type="text"/>
- <cd:constant type="radek"/> <!-- equal to text -->
- <cd:constant type="push"/>
- <cd:constant type="check"/>
- <cd:constant type="radio"/>
- <cd:constant type="combo"/>
- <cd:constant type="choice"/> <!-- equal to combo -->
- <cd:constant type="popup"/> <!-- equal to combo -->
- </cd:keywords>
- <cd:keywords n="3"> <!-- group -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="4" list="yes"> <!-- optional for text? -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="5" optional="yes"> <!-- default -->
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definesubfield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="definujpodpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="3" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="copyfield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="kopirujpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="clonefield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="klonujpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="4" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="field" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="pole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fitfield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="prizpusobivepole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fillinfield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="vyplnovepole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="tooltip" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="bublinkovanapoveda"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes">
- <cd:constant type="vlevo"/>
- <cd:constant type="vpravo"/>
- <cd:constant type="nastred"/>
- </cd:keywords>
- <cd:content n="2"/>
- <cd:content n="3"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="showfields" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="ukazpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="logfields" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="zaznamovepole"/>
- </cd:sequence>
- </cd:command>
-
- <cd:command name="setupfield" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="nastavpole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="popisek"/>
- <cd:constant type="horizontalne"/>
- <cd:constant type="vertikalne"/>
- <cd:constant type="ramecek"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:inherit name="nastavvsechnapole" n="2"/>
- </cd:assignments>
- <cd:assignments n="4" list="yes"> </cd:assignments>
- <cd:assignments n="5" list="yes"> </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfields" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="nastavvsechnapole"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes"> <!-- TODO: if it's reset, only a single argument, no list -->
- <cd:constant type="reset"/>
- <cd:constant type="popisek"/>
- <cd:constant type="horizontalne"/>
- <cd:constant type="vertikalne"/>
- <cd:constant type="ramecek"/>
- </cd:keywords>
- <cd:assignments n="2" list="yes">
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="pred">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="po">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="barva">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="pismeno">
- <cd:resolve name="style"/>
- </cd:parameter>
- <cd:parameter name="zarovnani">
- <cd:resolve name="align"/>
- </cd:parameter>
- <cd:parameter name="volba">
- <cd:constant type="pouzeprocteni"/>
- <cd:constant type="pozadovane"/>
- <cd:constant type="chranene"/>
- <cd:constant type="tridene"/>
- <cd:constant type="nedostupne"/>
- <cd:constant type="skryte"/>
- <cd:constant type="tisknutelne"/>
- </cd:parameter>
- <cd:parameter name="klikuvnitr">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="klikvne">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="oblastuvnitr">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="oblastvne">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="klavesapo">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="formatovat">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="validovat">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="pocitat">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- <cd:parameter name="offsetpole">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="barvarameckupole">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="barvapozadipole">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:inherit name="nastavoramovani" n="2"/>
- </cd:assignments>
- <cd:assignments n="3" list="yes">
- <cd:inherit name="nastavvsechnapole" n="2"/>
- </cd:assignments>
- <cd:assignments n="4" list="yes">
- <cd:inherit name="nastavvsechnapole" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupforms" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="setupforms"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="metoda">
- <cd:constant type="HTML"/>
- <cd:constant type="FDF"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefieldstack" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="definujzasobnikpoli"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" list="yes">
- <cd:inherit name="nastavvsechnapole" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="fieldstack" file="core-fld.tex">
- <cd:sequence>
- <cd:string value="zasobnikpoli"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes" list="yes">
- <cd:inherit name="nastavvsechnapole" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="clip" file="core-trf.tex">
- <cd:sequence>
- <cd:string value="orez"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" optional="yes" list="yes">
- <cd:inherit name="nastavorez" n="1"/>
- </cd:assignments>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupclipping" file="core-trf.tex">
- <cd:sequence>
- <cd:string value="nastavorez"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="status">
- <cd:constant type="start"/>
- <cd:constant type="stop"/>
- </cd:parameter>
- <cd:parameter name="n">
- <cd:constant type="cd:number" default="1"/>
- </cd:parameter>
- <cd:parameter name="nx">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="ny">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="x">
- <cd:constant type="cd:number" default="1"/>
- </cd:parameter>
- <cd:parameter name="y">
- <cd:constant type="cd:number" default="1"/>
- </cd:parameter>
- <cd:parameter name="sx">
- <cd:constant type="cd:number" default="1"/>
- </cd:parameter>
- <cd:parameter name="sy">
- <cd:constant type="cd:number" default="1"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="hoffset">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="voffset">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="levyoffset">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="pravyoffset">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="offsetvrsku">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="offsetspodku">
- <cd:constant type="cd:dimension" default="0pt"/>
- </cd:parameter>
- <cd:parameter name="mp">
- <cd:constant type="cd:name" default=""/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="placelegend">
- <cd:sequence>
- <cd:string value="umistilegendu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:content n="1"/>
- <cd:content n="2"/>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setuplegend">
- <cd:sequence>
- <cd:string value="nastavlegendu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments n="1" list="yes">
- <cd:parameter name="n">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="vzdalenost">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="mezi">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="sirka">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="vyska">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="misto">
- <cd:constant type="vpravo"/>
- <cd:constant type="spodek"/>
- </cd:parameter>
- <cd:parameter name="zakladnifont">
- <cd:resolve name="bodyfont"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupstrut" file="core-spa.tex">
- <cd:sequence>
- <cd:string value="setupstrut"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="ano" default="yes"/>
- <cd:constant type="ne"/>
- <cd:constant type="kap"/>
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usetypescriptfile" file="type-ini.tex">
- <cd:sequence>
- <cd:string value="usetypescriptfile"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:file"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="usetypescript" file="type-ini.tex">
- <cd:sequence>
- <cd:string value="usetypescript"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="3" optional="yes" list="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definetypeface" file="type-ini.tex">
- <cd:sequence>
- <cd:string value="definetypeface"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="rm"/>
- <cd:constant type="ss"/>
- <cd:constant type="tt"/>
- <cd:constant type="mm"/>
- <cd:constant type="hw"/>
- <cd:constant type="cg"/>
- </cd:keywords>
- <cd:keywords n="3">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="4">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="5" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="6" optional="yes">
- <cd:parameter name="features">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="rscale">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="encoding">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="text">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefontfeature" file="type-ini.tex">
- <cd:sequence>
- <cd:string value="definefontfeature"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="2" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="no">
- <cd:parameter name="compose">
- <cd:constant type="ne" default="yes"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- <cd:parameter name="mode">
- <cd:constant type="node"/>
- <cd:constant type="base" default="yes"/>
- </cd:parameter>
- <cd:parameter name="tlig">
- <cd:constant type="ne" default="yes"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- <cd:parameter name="trep">
- <cd:constant type="ne" default="yes"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- <cd:parameter name="script">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="language">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="..tag.."> <!-- can't use &gt; here, \showsetup gives an error -->
- <cd:constant type="ne" default="yes"/>
- <cd:constant type="ano"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="definefonthandling" file="hand-ini.mkii">
- <cd:sequence>
- <cd:string value="definefonthandling"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name" list="yes"/>
- </cd:keywords>
- <cd:assignments n="3">
- <cd:parameter name="typ">
- <cd:constant type="visici" default="yes"/>
- <cd:constant type="hz"/>
- <cd:constant type="mezerovani"/>
- <cd:constant type="tag"/>
- </cd:parameter>
- <cd:parameter name="vpravo">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="vlevo">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="faktor">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="min">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="max">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="krok">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <cd:command name="setupfonthandling" file="hand-ini.mkii">
- <cd:sequence>
- <cd:string value="setupfonthandling"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2">
- <cd:inherit name="definefonthandling" n="2"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- <!-- mkii:
-
- <cd:command name="definefontsynonym" file="font-ini.tex">
- <cd:sequence>
- <cd:string value="definujsynonumumfontu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes">
- <cd:parameter name="encoding">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="features">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="handling">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="mapping">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
-
- -->
+</cd:interface>
- <cd:command name="definefontsynonym" file="font-ini.tex">
- <cd:sequence>
- <cd:string value="definujsynonumumfontu"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:assignments n="3" optional="yes">
- <cd:parameter name="fallbacks">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="features">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="goodies">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
+<cd:interface>
- <cd:command name="setupfontsynonym" file="font-ini.tex">
- <cd:sequence>
- <cd:string value="setupfontsynonym"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments n="2">
- <cd:inherit name="definujsynonumumfontu" n="3"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
+<cd:interface>
- <cd:command name="mapfontsize" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="mapfontsize"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- <cd:keywords n="2">
- <cd:constant type="cd:dimension"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command name="definedfont" file="font-ini.tex" category="fonts">
- <cd:sequence>
- <cd:string value="definedfont"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords n="1">
- <cd:inherit name="definujfont" n="2"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
+</cd:interface>
</cd:interface>
diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml
index 54178696b..89702c0c7 100644
--- a/tex/context/interface/mkii/keys-cs.xml
+++ b/tex/context/interface/mkii/keys-cs.xml
@@ -191,6 +191,7 @@
<cd:variable name='enumeration' value='vycet'/>
<cd:variable name='environment' value='prostredi'/>
<cd:variable name='even' value='sude'/>
+ <cd:variable name='explicit' value='explicit'/>
<cd:variable name='export' value='export'/>
<cd:variable name='external' value='externi'/>
<cd:variable name='extremestretch' value='extremestretch'/>
diff --git a/tex/context/modules/mkiv/m-scite.mkiv b/tex/context/modules/mkiv/m-scite.mkiv
index 659d5f58d..a34d4921c 100644
--- a/tex/context/modules/mkiv/m-scite.mkiv
+++ b/tex/context/modules/mkiv/m-scite.mkiv
@@ -102,9 +102,9 @@ local function exportcolors()
local function black(f)
return (f[1] == f[2]) and (f[2] == f[3]) and (f[3] == 0)
end
--- local result, r = { f_mapping }, 1
-local result, r = { }, 0
- for k, v in table.sortedhash(lexer.context.styles) do
+ -- local result, r = { f_mapping }, 1
+ local result, r = { }, 0
+ for k, v in table.sortedhash(lexers.styles) do
local fore = v.fore
if fore and not black(fore) then
r = r + 1
@@ -113,7 +113,7 @@ local result, r = { }, 0
end
r = r + 1
result[r] = "%"
- for k, v in table.sortedhash(lexer.context.styles) do
+ for k, v in table.sortedhash(lexers.styles) do
local bold = v.bold
local fore = v.fore
r = r + 1
@@ -145,7 +145,7 @@ local function exportwhites()
end
local function exportstyled(lexer,text)
- local result = lexer.lex(lexer,text,0)
+ local result = lexers.lex(lexer,text,0)
local start = 1
local whites = exportwhites()
local buffer = { }
diff --git a/tex/context/modules/mkxl/m-openstreetmap.lmt b/tex/context/modules/mkxl/m-openstreetmap.lmt
index 2116ae236..39a1d34d4 100644
--- a/tex/context/modules/mkxl/m-openstreetmap.lmt
+++ b/tex/context/modules/mkxl/m-openstreetmap.lmt
@@ -31,7 +31,7 @@ local report = logs.reporter("openstreetmap")
--
-- https://github.com/openstreetmap/osm2pgsql/blob/master/docs/lua.md
--
--- I'm not sure where the script is used, and there are dead linsk on these pages but some
+-- I'm not sure where the script is used, and there are dead links on these pages but some
-- information can be found in that file so I could combine our findings with these. There
-- is a whole infrastructure out there with impressive machinery, style sheet generation
-- etc. but we don't need that here. Also, we don't need to play routes.
@@ -181,27 +181,71 @@ local colors = {
-- these concern details:
amenity = {
- arts_centre = true,
- bar = true,
- bicycle_parking = true,
- college = true,
- courthouse = true,
- fountain = true,
- hospital = true,
- kindergarten = true,
- marketplace = true,
- parking = true,
- parking_space = true,
- pharmacy = true,
- place_of_worship = true,
- police = true,
- restaurant = true,
- school = true,
- shower = true,
- social_facility = true,
- toilets = true,
- townhall = true,
- university = true,
+ arts_centre = true,
+ bar = true,
+ bicycle_parking = true,
+ college = true,
+ courthouse = true,
+ fountain = true,
+ hospital = true,
+ kindergarten = true,
+ marketplace = true,
+ parking = true,
+ parking_space = true,
+ pharmacy = true,
+ place_of_worship = true,
+ police = true,
+ restaurant = true,
+ school = true,
+ shower = true,
+ social_facility = true,
+ toilets = true,
+ townhall = true,
+
+ -- university = true, -- no, it will mark all red .. maybe some other color so we need stacking
+
+ -- atm = true,
+ bank = true,
+ -- bbq = true,
+ bicycle_parking = true,
+ bicycle_repair_station = true,
+ cafe = true,
+ -- car_sharing = true,
+ car_wash = true,
+ -- charging_station = true,
+ childcare = true,
+ clinic = true,
+ -- clock = true,
+ clubhouse = true,
+ college = true,
+ community_centre = true,
+ -- compressed_air = true,
+ computer_lab = true,
+ -- drinking_water = true,
+ events_venue = true,
+ fast_food = true,
+ fire_station = true,
+ fountain = true,
+ fuel = true,
+ -- ice_cream = true,
+ library = true,
+ mailroom = true,
+ -- microwave = true,
+ -- parking_entrance = true,
+ -- parking_space = true,
+ pharmacy = true,
+ place_of_worship = true,
+ -- post_box = true,
+ post_office = true,
+ recycling = true,
+ research_institute = true,
+ -- social_facility = true,
+ theatre = true,
+ -- vending_machine = true,
+ -- waste_basket = true,
+ -- waste_disposal = true,
+ wellness_centre = true,
+
},
-- these are basic:
@@ -235,6 +279,21 @@ local colors = {
shed = true,
townhall = true,
yes = true,
+
+ university = true,
+ dormitory = true,
+ barn = true,
+ bridge = true,
+ detached = true,
+ farm_auxiliary = true,
+ grandstand = true,
+ greenhouse = true,
+ kindergarten = true,
+ parking = true,
+ stable = true,
+ stadium = true,
+ toilets = true,
+
},
emergency = {
designated = true,
@@ -501,7 +560,8 @@ local f_nodraw_s = formatters['ND %--t;']
local f_nofill_s = formatters['NF %--t--C;']
local f_background = formatters['F %--t -- C W "osm:background";']
-local f_bounds = formatters['setbounds currentpicture to %--t--C ;']
+local f_bounds = formatters['setbounds currentpicture to %--t--C withstacking (0,250);']
+local f_clipped = formatters['clip currentpicture to %--t--C withstacking (0,250);']
-- For now no labels are printed, also because that's now what we use this for. At
-- some point I will provide some hooks to put text at coordinates.
@@ -622,8 +682,14 @@ function openstreetmap.convert(specification)
local deg_to_rad = math.pi / 180.0
local scale = 3600 -- vertical scale: 1" = 1cm
+ -- local function f_pair(lon, lat)
+ -- return formatters("(%.3Ncm,%.3Ncm)", (lon - minlon) * scale * cos(midlat * deg_to_rad), (lat-minlat) * scale)
+ -- end
+
+ local f_f_pair = formatters["(%.3Ncm,%.3Ncm)"]
+
local function f_pair(lon, lat)
- return formatters("(%.3Ncm,%.3Ncm)", (lon - minlon) * scale * cos(midlat * deg_to_rad), (lat-minlat) * scale)
+ return f_f_pair((lon - minlon) * scale * cos(midlat * deg_to_rad), (lat-minlat) * scale)
end
local rendering = table.tohash(order)
@@ -748,7 +814,7 @@ function openstreetmap.convert(specification)
end
end
- -- There are ways and relations. Relations can have members that poitn to
+ -- There are ways and relations. Relations can have members that point to
-- ways but also relations. My impression is that we can stick to way members
-- but I'll deal with that when needed.
@@ -834,7 +900,7 @@ function openstreetmap.convert(specification)
-- We add a background first and clip later. Beware: There can be substantial bits
-- outside the clip path (like rivers) but because paths are not that detailed we
- -- don't wast time on building a cycle. We could check if points are ouside the
+ -- don't waste time on building a cycle. We could check if points are outside the
-- boundingbox and then use the metapost buildpath macro .. some day.
local boundary = {
@@ -864,6 +930,8 @@ function openstreetmap.convert(specification)
if collected then
+ local f_flush = formatters[') W "%s" L %s;']
+
for stacking, colors in sortedhash(collected) do
for color, bunch in next, colors do
local draw = bunch.draw
@@ -872,20 +940,21 @@ function openstreetmap.convert(specification)
r = r + 1 result[r] = "draw image ("
r = r + 1 result[r] = concat(fill)
r = r + 1 result[r] = 'DF origin--cycle;'
- r = r + 1 result[r] = formatters[') W "%s" L %s;'](color,stacking) ;
+ r = r + 1 result[r] = f_flush(color,stacking) ;
end
if draw and #draw > 0 then
r = r + 1 result[r] = "draw image ("
r = r + 1 result[r] = concat(draw)
r = r + 1 result[r] = 'DD origin;'
- r = r + 1 result[r] = formatters[') W "%s" L %s;'](color,stacking+1) ;
+ r = r + 1 result[r] = f_flush(color,stacking+1) ;
end
end
end
end
- r = r + 1 result[r] = f_bounds(boundary)
+-- r = r + 1 result[r] = f_bounds(boundary)
+ r = r + 1 result[r] = f_clipped(boundary)
r = r + 1 result[r] = endmp
if missing then
diff --git a/tex/context/modules/mkxl/m-openstreetmap.mkxl b/tex/context/modules/mkxl/m-openstreetmap.mkxl
index 677a5a04d..f663bfd36 100644
--- a/tex/context/modules/mkxl/m-openstreetmap.mkxl
+++ b/tex/context/modules/mkxl/m-openstreetmap.mkxl
@@ -37,6 +37,8 @@
\definecolor [osm:residential] [s=.75]
\definecolor [osm:cemetery] [s=.50]
+\definecolor [osm:university] [s=.85]
+
\definecolor [osm:boat] [b=.25]
\definecolor [osm:water] [b=.75]
@@ -93,7 +95,34 @@
\definecolor[osm:amenity:social_facility] [osm:building:special]
\definecolor[osm:amenity:toilets] [osm:building:special]
\definecolor[osm:amenity:townhall] [osm:building:special]
-\definecolor[osm:amenity:university] [osm:building:special]
+
+\definecolor[osm:amenity:university] [osm:university] % what color ... (obscures buildings)
+
+\definecolor[osm-amenity:bank] [osm:building:special]
+\definecolor[osm-amenity:bicycle_parking] [osm:building:special]
+\definecolor[osm-amenity:bicycle_repair_station] [osm:building:special]
+\definecolor[osm-amenity:cafe] [osm:building:special]
+\definecolor[osm-amenity:car_wash] [osm:building:special]
+\definecolor[osm-amenity:childcare] [osm:building:special]
+\definecolor[osm-amenity:clinic] [osm:building:special]
+\definecolor[osm-amenity:clubhouse] [osm:building:special]
+\definecolor[osm-amenity:college] [osm:building:special]
+\definecolor[osm-amenity:community_centre] [osm:building:special]
+\definecolor[osm-amenity:computer_lab] [osm:building:special]
+\definecolor[osm-amenity:events_venue] [osm:building:special]
+\definecolor[osm-amenity:fast_food] [osm:building:special]
+\definecolor[osm-amenity:fire_station] [osm:building:special]
+\definecolor[osm-amenity:fountain] [osm:building:special]
+\definecolor[osm-amenity:fuel] [osm:building:special]
+\definecolor[osm-amenity:library] [osm:building:special]
+\definecolor[osm-amenity:mailroom] [osm:building:special]
+\definecolor[osm-amenity:pharmacy] [osm:building:special]
+\definecolor[osm-amenity:place_of_worship] [osm:building:special]
+\definecolor[osm-amenity:post_office] [osm:building:special]
+\definecolor[osm-amenity:recycling] [osm:building:special]
+\definecolor[osm-amenity:research_institute] [osm:building:special]
+\definecolor[osm-amenity:theatre] [osm:building:special]
+\definecolor[osm-amenity:wellness_centre] [osm:building:special]
\definecolor[osm:area:yes] [osm:unknown]
@@ -143,6 +172,20 @@
\definecolor[osm:building:townhall] [osm:building]
\definecolor[osm:building:yes] [osm:building]
+\definecolor[osm:building:university] [osm:building]
+\definecolor[osm:building:dormitory] [osm:building]
+\definecolor[osm:building:barn] [osm:building]
+\definecolor[osm:building:bridge] [osm:building:special]
+\definecolor[osm:building:detached] [osm:building]
+\definecolor[osm:building:farm_auxiliary] [osm:building]
+\definecolor[osm:building:grandstand] [osm:building]
+\definecolor[osm:building:greenhouse] [osm:building:special]
+\definecolor[osm:building:kindergarten] [osm:building]
+\definecolor[osm:building:parking] [osm:building:special]
+\definecolor[osm:building:stable] [osm:building]
+\definecolor[osm:building:stadium] [osm:building:special]
+\definecolor[osm:building:toilets] [osm:building:special]
+
\definecolor[osm:emergency:designated] [osm:unknown]
\definecolor[osm:emergency:destination] [osm:unknown]
\definecolor[osm:emergency:no] [osm:unknown]
@@ -287,9 +330,10 @@
\startMPpage
draw lmt_openstreetmap [
- filename = "hasselt.osm"
+% filename = "hasselt.osm"
+ filename = "e:/tmp/map.osm"
used = [
- boundary = false,
+ university = false,
],
] ;
\stopMPpage
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index ceb9fce8c..02f89ada1 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2021-09-26 16:48
+-- merge date : 2021-10-08 20:05
do -- begin closure to overcome local limits and interference
@@ -12633,6 +12633,7 @@ local function getinfo(maindata,sub,platformnames,rawfamilynames,metricstoo,inst
pfmwidth=metrics.widthclass or 5,
panosewidth=metrics.panosewidth,
panoseweight=metrics.panoseweight,
+ fstype=metrics.fstype or 0,
italicangle=postscript.italicangle or 0,
units=fontheader.units or 0,
designsize=fontdata.designsize,